Răsfoiți Sursa

Improve detection of pasted Excel table in Safari (#20374)

GitOrigin-RevId: 92b9c485b57f753f4fe161e582817f72244436e1
Alf Eaton 2 ani în urmă
părinte
comite
ca72351c8e

+ 16 - 1
services/web/frontend/js/features/source-editor/extensions/visual/paste-html.ts

@@ -53,7 +53,11 @@ export const pasteHtml = [
           // fall back to creating a figure when there's an image on the clipoard,
           // fall back to creating a figure when there's an image on the clipoard,
           // unless the HTML indicates that it came from an Office application
           // unless the HTML indicates that it came from an Office application
           // (which also puts an image on the clipboard)
           // (which also puts an image on the clipboard)
-          if (clipboardData.files.length > 0 && !hasProgId(documentElement)) {
+          if (
+            clipboardData.files.length > 0 &&
+            !hasProgId(documentElement) &&
+            !isOnlyTable(documentElement)
+          ) {
             return false
             return false
           }
           }
 
 
@@ -135,6 +139,17 @@ const hasProgId = (documentElement: HTMLElement) => {
   return meta && meta.content.trim().length > 0
   return meta && meta.content.trim().length > 0
 }
 }
 
 
+// detect a table (probably pasted from desktop Excel)
+const isOnlyTable = (documentElement: HTMLElement) => {
+  const body = documentElement.querySelector<HTMLBodyElement>('body')
+
+  return (
+    body &&
+    body.childElementCount === 1 &&
+    body.firstElementChild!.nodeName === 'TABLE'
+  )
+}
+
 const htmlToLaTeX = (bodyElement: HTMLElement) => {
 const htmlToLaTeX = (bodyElement: HTMLElement) => {
   // remove style elements
   // remove style elements
   removeUnwantedElements(bodyElement, 'style')
   removeUnwantedElements(bodyElement, 'style')