@pie-element/complex-rubric 2.10.2-next.29 → 2.10.2-next.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (24) hide show
  1. package/configure/node_modules/@pie-element/rubric/node_modules/@pie-lib/pie-toolbox/code/editable-html/editor.js +9 -12
  2. package/configure/node_modules/@pie-element/rubric/node_modules/@pie-lib/pie-toolbox/code/editable-html/editor.js.map +1 -1
  3. package/configure/node_modules/@pie-element/rubric/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/customPlugin/index.js +32 -11
  4. package/configure/node_modules/@pie-element/rubric/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/customPlugin/index.js.map +1 -1
  5. package/configure/node_modules/@pie-element/rubric/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/image/index.js +2 -4
  6. package/configure/node_modules/@pie-element/rubric/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/image/index.js.map +1 -1
  7. package/configure/node_modules/@pie-element/rubric/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/math/index.js +4 -4
  8. package/configure/node_modules/@pie-element/rubric/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/math/index.js.map +1 -1
  9. package/configure/node_modules/@pie-element/rubric/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/table/index.js +3 -5
  10. package/configure/node_modules/@pie-element/rubric/node_modules/@pie-lib/pie-toolbox/code/editable-html/plugins/table/index.js.map +1 -1
  11. package/configure/node_modules/@pie-element/rubric/node_modules/@pie-lib/pie-toolbox/code/editable-html/test-serializer.js +1 -1
  12. package/configure/node_modules/@pie-element/rubric/node_modules/@pie-lib/pie-toolbox/code/editable-html/test-serializer.js.map +1 -1
  13. package/configure/node_modules/@pie-element/rubric/node_modules/@pie-lib/pie-toolbox/package.json +2 -2
  14. package/configure/node_modules/@pie-element/rubric/node_modules/@pie-lib/pie-toolbox/src/code/editable-html/editor.jsx +10 -13
  15. package/configure/node_modules/@pie-element/rubric/node_modules/@pie-lib/pie-toolbox/src/code/editable-html/plugins/customPlugin/index.jsx +14 -11
  16. package/configure/node_modules/@pie-element/rubric/node_modules/@pie-lib/pie-toolbox/src/code/editable-html/plugins/image/index.jsx +16 -12
  17. package/configure/node_modules/@pie-element/rubric/node_modules/@pie-lib/pie-toolbox/src/code/editable-html/plugins/math/index.jsx +30 -18
  18. package/configure/node_modules/@pie-element/rubric/node_modules/@pie-lib/pie-toolbox/src/code/editable-html/plugins/table/index.jsx +3 -4
  19. package/configure/node_modules/@pie-element/rubric/node_modules/@pie-lib/pie-toolbox/src/code/editable-html/test-serializer.js +1 -1
  20. package/module/configure.js +2 -2
  21. package/module/element.js +2 -2
  22. package/module/manifest.json +2 -2
  23. package/module/print.js +2 -2
  24. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/code/editable-html/plugins/image/index.jsx"],"names":["log","ImagePlugin","opts","toolbar","insertImageRequested","icon","onClick","editor","inline","type","data","newImage","loaded","src","undefined","children","text","insertNode","Editor","parent","selection","node","nodePath","onFinish","InsertImageHandler","customToolbar","onToolbarDone","alignment","alt","imageLoaded","onChange","newValues","update","apply","path","properties","newProperties","Tb","disableImageAlignmentButtons","showDone","name","rules","insertData","isVoid","isInline","element","isImageUrl","url","ext","URL","pathname","split","pop","imageExtensions","includes","insertImage","fileProvided","image","getData","files","length","file","respAreaDrag","supports","deleteNode","e","preventDefault","onDelete","deleteStatus","err","setTimeout","ReactEditor","focus","stopReset","value","imgPendingInsertion","document","findDescendant","n","renderNode","props","all","Object","assign","onFocus","onBlur","maxImageWidth","maxImageHeight","normalizeNode","textNodeMap","updateNodesArray","index","object","d","push","change","withoutNormalization","forEach","insertTextByKey","key","serialization","deserialize","el","tagName","toLowerCase","style","width","height","margin","justifyContent","parseInt","replace","out","getAttribute","serialize","findKey","objectFit"],"mappings":"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","sourcesContent":["import React from 'react';\nimport imageExtensions from 'image-extensions';\nimport isUrl from 'is-url';\nimport { jsx } from 'slate-hyperscript';\nimport debug from 'debug';\nimport { Editor, Transforms } from 'slate';\nimport { ReactEditor } from 'slate-react';\n\nimport Image from '@material-ui/icons/Image';\nimport ImageComponent from './component';\nimport ImageToolbar from './image-toolbar';\nimport InsertImageHandler from './insert-image-handler';\n\nconst log = debug('@pie-lib:editable-html:plugins:image');\n\nexport default function ImagePlugin(opts) {\n const toolbar = opts.insertImageRequested && {\n icon: <Image />,\n onClick: (editor) => {\n log('[toolbar] onClick');\n const inline = {\n type: 'image',\n data: {\n newImage: true,\n loaded: false,\n src: undefined,\n },\n children: [{ text: '' }],\n };\n\n editor.insertNode(inline);\n\n // get the element just inserted, needed because it focuses on the empty leaf inside\n const [node, nodePath] = Editor.parent(editor, editor.selection);\n\n opts.insertImageRequested(node, (onFinish) => new InsertImageHandler(node, nodePath, onFinish, editor));\n },\n customToolbar: (node, nodePath, editor, onToolbarDone) => {\n const alignment = node.data.alignment;\n const alt = node.data.alt;\n const imageLoaded = node.data.loaded !== false;\n const onChange = (newValues) => {\n const update = {\n ...node.data,\n ...newValues,\n };\n\n editor.apply({\n type: 'set_node',\n path: nodePath,\n properties: {\n data: node.data,\n },\n newProperties: { data: update },\n });\n\n onToolbarDone(false);\n };\n\n const Tb = () => (\n <ImageToolbar\n disableImageAlignmentButtons={opts.disableImageAlignmentButtons}\n alt={alt}\n imageLoaded={imageLoaded}\n alignment={alignment || 'left'}\n onChange={onChange}\n />\n );\n return Tb;\n },\n showDone: true,\n };\n\n return {\n name: 'image',\n toolbar,\n rules: (editor) => {\n const { insertData, isVoid, isInline } = editor;\n\n editor.isVoid = (element) => {\n return element.type === 'image' ? true : isVoid(element);\n };\n\n editor.isInline = (element) => {\n return element.type === 'image' ? true : isInline(element);\n };\n\n const isImageUrl = (url) => {\n if (!url || !isUrl(url)) {\n return false;\n }\n\n const ext = new URL(url).pathname.split('.').pop();\n\n return imageExtensions.includes(ext);\n };\n\n const insertImage = (editor, fileProvided) => {\n const image = {\n type: 'image',\n data: {\n loaded: false,\n src: '',\n },\n children: [{ text: '' }],\n };\n\n editor.insertNode(image);\n\n // get the element just inserted, needed because it focuses on the empty leaf inside\n const [node, nodePath] = Editor.parent(editor, editor.selection);\n\n opts.insertImageRequested(\n node,\n (onFinish) => new InsertImageHandler(node, nodePath, onFinish, editor, true),\n fileProvided,\n );\n };\n\n editor.insertData = (data) => {\n const text = data.getData('text/plain');\n const { files } = data;\n\n if (files && files.length > 0) {\n for (const file of files) {\n insertImage(editor, file);\n }\n } else if (isImageUrl(text)) {\n insertImage(editor, text);\n } else if (!editor.respAreaDrag) {\n insertData(data);\n }\n };\n\n return editor;\n },\n supports: (node) => node.type === 'image',\n deleteNode: (e, node, nodePath, editor, onChange) => {\n e.preventDefault();\n\n if (opts.onDelete) {\n const update = {\n ...node.data,\n deleteStatus: 'pending',\n };\n\n editor.apply({\n type: 'set_node',\n path: nodePath,\n properties: {\n data: node.data,\n },\n newProperties: { data: update },\n });\n\n editor.selection = null;\n onChange(editor);\n opts.onDelete(node, (err) => {\n if (!err) {\n editor.apply({\n type: 'remove_node',\n path: nodePath,\n });\n } else {\n log('[error]: ', err);\n editor.apply({\n type: 'set_node',\n path: nodePath,\n properties: {\n data: node.data,\n },\n newProperties: { data: { ...node.data, deleteStatus: 'failed' } },\n });\n }\n\n editor.selection = null;\n onChange(editor, () => {\n setTimeout(() => ReactEditor.focus(editor), 50);\n });\n });\n } else {\n editor.selection = null;\n editor.apply({\n type: 'remove_node',\n path: nodePath,\n });\n onChange(editor, () => {\n setTimeout(() => ReactEditor.focus(editor), 50);\n });\n }\n },\n stopReset: (value) => {\n const imgPendingInsertion = value.document.findDescendant((n) => {\n if (n.type !== 'image') {\n return;\n }\n return n.data.loaded === false;\n });\n /** don't reset if there is an image pending insertion */\n return imgPendingInsertion !== undefined && imgPendingInsertion !== null;\n },\n renderNode(props) {\n if (props.node.type === 'image') {\n const all = Object.assign(\n {\n onDelete: opts.onDelete,\n onFocus: opts.onFocus,\n onBlur: opts.onBlur,\n maxImageWidth: opts.maxImageWidth,\n maxImageHeight: opts.maxImageHeight,\n },\n props,\n );\n return (\n <ImageComponent {...all} contentEditable={false}>\n {props.children}\n </ImageComponent>\n );\n }\n },\n normalizeNode: (node) => {\n const textNodeMap = {};\n const updateNodesArray = [];\n let index = 0;\n\n if (node.object !== 'document') return;\n\n node.findDescendant((d) => {\n if (d.object === 'text') {\n textNodeMap[index] = d;\n }\n\n if (d.type === 'image') {\n if (index > 0 && textNodeMap[index - 1] && textNodeMap[index - 1].text === '') {\n updateNodesArray.push(textNodeMap[index - 1]);\n }\n }\n\n index++;\n });\n\n if (!updateNodesArray.length) return;\n\n return (change) => {\n change.withoutNormalization(() => {\n updateNodesArray.forEach((n) => change.insertTextByKey(n.key, 0, ' '));\n });\n };\n },\n };\n}\n\nexport const serialization = {\n deserialize(el /*, next*/) {\n const name = el.tagName.toLowerCase();\n if (name !== 'img') return;\n\n log('deserialize: ', name);\n const style = el.style || { width: '', height: '', margin: '', justifyContent: '' };\n const width = parseInt(style.width.replace('px', ''), 10) || null;\n const height = parseInt(style.height.replace('px', ''), 10) || null;\n\n const out = jsx('element', {\n type: 'image',\n data: {\n src: el.getAttribute('src'),\n width,\n height,\n margin: el.style.margin,\n justifyContent: el.style.justifyContent,\n alignment: el.getAttribute('alignment'),\n alt: el.getAttribute('alt'),\n },\n });\n log('return object: ', out);\n return out;\n },\n serialize(object /*, children*/) {\n if (object.type !== 'image') return;\n\n const key = ReactEditor.findKey(undefined, object);\n const { data } = object;\n const { alignment, alt, src, height, margin, justifyContent, width } = data;\n const style = {};\n\n if (width) {\n style.width = `${width}px`;\n }\n\n if (height) {\n style.height = `${height}px`;\n }\n\n style.margin = margin;\n style.justifyContent = justifyContent;\n\n if (alignment) {\n switch (alignment) {\n case 'left':\n style.justifyContent = 'flex-start';\n style.margin = '0';\n break;\n case 'center':\n style.justifyContent = 'center';\n style.margin = '0 auto';\n break;\n case 'right':\n style.justifyContent = 'flex-end';\n style.margin = 'auto 0 0 auto';\n break;\n default:\n style.justifyContent = 'flex-start';\n break;\n }\n }\n\n style.objectFit = 'contain';\n\n const props = {\n key,\n src,\n style,\n alignment,\n alt,\n };\n\n return <img {...props} />;\n },\n};\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../../../src/code/editable-html/plugins/image/index.jsx"],"names":["log","ImagePlugin","opts","toolbar","insertImageRequested","icon","onClick","editor","inline","type","data","newImage","loaded","src","undefined","children","text","insertNode","Editor","parent","selection","node","nodePath","onFinish","InsertImageHandler","customToolbar","onToolbarDone","alignment","alt","imageLoaded","onChange","newValues","update","apply","path","properties","newProperties","Tb","disableImageAlignmentButtons","showDone","name","rules","insertData","isVoid","isInline","element","isImageUrl","url","ext","URL","pathname","split","pop","imageExtensions","includes","insertImage","fileProvided","image","getData","files","length","file","respAreaDrag","supports","deleteNode","e","preventDefault","onDelete","deleteStatus","err","setTimeout","ReactEditor","focus","stopReset","value","imgPendingInsertion","document","findDescendant","n","renderNode","props","all","Object","assign","onFocus","onBlur","maxImageWidth","maxImageHeight","normalizeNode","textNodeMap","updateNodesArray","index","object","d","push","change","withoutNormalization","forEach","insertTextByKey","key","serialization","deserialize","el","next","tagName","toLowerCase","style","width","height","margin","justifyContent","parseInt","replace","out","getAttribute","Array","from","serialize","findKey","objectFit"],"mappings":"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","sourcesContent":["import React from 'react';\nimport imageExtensions from 'image-extensions';\nimport isUrl from 'is-url';\nimport { jsx } from 'slate-hyperscript';\nimport debug from 'debug';\nimport { Editor, Transforms } from 'slate';\nimport { ReactEditor } from 'slate-react';\n\nimport Image from '@material-ui/icons/Image';\nimport ImageComponent from './component';\nimport ImageToolbar from './image-toolbar';\nimport InsertImageHandler from './insert-image-handler';\n\nconst log = debug('@pie-lib:editable-html:plugins:image');\n\nexport default function ImagePlugin(opts) {\n const toolbar = opts.insertImageRequested && {\n icon: <Image />,\n onClick: (editor) => {\n log('[toolbar] onClick');\n const inline = {\n type: 'image',\n data: {\n newImage: true,\n loaded: false,\n src: undefined,\n },\n children: [{ text: '' }],\n };\n\n editor.insertNode(inline);\n\n // get the element just inserted, needed because it focuses on the empty leaf inside\n const [node, nodePath] = Editor.parent(editor, editor.selection);\n\n opts.insertImageRequested(node, (onFinish) => new InsertImageHandler(node, nodePath, onFinish, editor));\n },\n customToolbar: (node, nodePath, editor, onToolbarDone) => {\n const alignment = node.data.alignment;\n const alt = node.data.alt;\n const imageLoaded = node.data.loaded !== false;\n const onChange = (newValues) => {\n const update = {\n ...node.data,\n ...newValues,\n };\n\n editor.apply({\n type: 'set_node',\n path: nodePath,\n properties: {\n data: node.data,\n },\n newProperties: { data: update },\n });\n\n onToolbarDone(false);\n };\n\n const Tb = () => (\n <ImageToolbar\n disableImageAlignmentButtons={opts.disableImageAlignmentButtons}\n alt={alt}\n imageLoaded={imageLoaded}\n alignment={alignment || 'left'}\n onChange={onChange}\n />\n );\n return Tb;\n },\n showDone: true,\n };\n\n return {\n name: 'image',\n toolbar,\n rules: (editor) => {\n const { insertData, isVoid, isInline } = editor;\n\n editor.isVoid = (element) => {\n return element.type === 'image' ? true : isVoid(element);\n };\n\n editor.isInline = (element) => {\n return element.type === 'image' ? true : isInline(element);\n };\n\n const isImageUrl = (url) => {\n if (!url || !isUrl(url)) {\n return false;\n }\n\n const ext = new URL(url).pathname.split('.').pop();\n\n return imageExtensions.includes(ext);\n };\n\n const insertImage = (editor, fileProvided) => {\n const image = {\n type: 'image',\n data: {\n loaded: false,\n src: '',\n },\n children: [{ text: '' }],\n };\n\n editor.insertNode(image);\n\n // get the element just inserted, needed because it focuses on the empty leaf inside\n const [node, nodePath] = Editor.parent(editor, editor.selection);\n\n opts.insertImageRequested(\n node,\n (onFinish) => new InsertImageHandler(node, nodePath, onFinish, editor, true),\n fileProvided,\n );\n };\n\n editor.insertData = (data) => {\n const text = data.getData('text/plain');\n const { files } = data;\n\n if (files && files.length > 0) {\n for (const file of files) {\n insertImage(editor, file);\n }\n } else if (isImageUrl(text)) {\n insertImage(editor, text);\n } else if (!editor.respAreaDrag) {\n insertData(data);\n }\n };\n\n return editor;\n },\n supports: (node) => node.type === 'image',\n deleteNode: (e, node, nodePath, editor, onChange) => {\n e.preventDefault();\n\n if (opts.onDelete) {\n const update = {\n ...node.data,\n deleteStatus: 'pending',\n };\n\n editor.apply({\n type: 'set_node',\n path: nodePath,\n properties: {\n data: node.data,\n },\n newProperties: { data: update },\n });\n\n editor.selection = null;\n onChange(editor);\n opts.onDelete(node, (err) => {\n if (!err) {\n editor.apply({\n type: 'remove_node',\n path: nodePath,\n });\n } else {\n log('[error]: ', err);\n editor.apply({\n type: 'set_node',\n path: nodePath,\n properties: {\n data: node.data,\n },\n newProperties: { data: { ...node.data, deleteStatus: 'failed' } },\n });\n }\n\n editor.selection = null;\n onChange(editor, () => {\n setTimeout(() => ReactEditor.focus(editor), 50);\n });\n });\n } else {\n editor.selection = null;\n editor.apply({\n type: 'remove_node',\n path: nodePath,\n });\n onChange(editor, () => {\n setTimeout(() => ReactEditor.focus(editor), 50);\n });\n }\n },\n stopReset: (value) => {\n const imgPendingInsertion = value.document.findDescendant((n) => {\n if (n.type !== 'image') {\n return;\n }\n return n.data.loaded === false;\n });\n /** don't reset if there is an image pending insertion */\n return imgPendingInsertion !== undefined && imgPendingInsertion !== null;\n },\n renderNode(props) {\n if (props.node.type === 'image') {\n const all = Object.assign(\n {\n onDelete: opts.onDelete,\n onFocus: opts.onFocus,\n onBlur: opts.onBlur,\n maxImageWidth: opts.maxImageWidth,\n maxImageHeight: opts.maxImageHeight,\n },\n props,\n );\n return (\n <ImageComponent {...all} contentEditable={false}>\n {props.children}\n </ImageComponent>\n );\n }\n },\n normalizeNode: (node) => {\n const textNodeMap = {};\n const updateNodesArray = [];\n let index = 0;\n\n if (node.object !== 'document') return;\n\n node.findDescendant((d) => {\n if (d.object === 'text') {\n textNodeMap[index] = d;\n }\n\n if (d.type === 'image') {\n if (index > 0 && textNodeMap[index - 1] && textNodeMap[index - 1].text === '') {\n updateNodesArray.push(textNodeMap[index - 1]);\n }\n }\n\n index++;\n });\n\n if (!updateNodesArray.length) return;\n\n return (change) => {\n change.withoutNormalization(() => {\n updateNodesArray.forEach((n) => change.insertTextByKey(n.key, 0, ' '));\n });\n };\n },\n };\n}\n\nexport const serialization = {\n deserialize(el , next) {\n const name = el.tagName.toLowerCase();\n if (name !== 'img') return;\n\n log('deserialize: ', name);\n const style = el.style || { width: '', height: '', margin: '', justifyContent: '' };\n const width = parseInt(style.width.replace('px', ''), 10) || null;\n const height = parseInt(style.height.replace('px', ''), 10) || null;\n\n const out = jsx(\n 'element',\n {\n type: 'image',\n data: {\n src: el.getAttribute('src'),\n width,\n height,\n margin: el.style.margin,\n justifyContent: el.style.justifyContent,\n alignment: el.getAttribute('alignment'),\n alt: el.getAttribute('alt'),\n },\n },\n next(Array.from(el.children)),\n );\n log('return object: ', out);\n return out;\n },\n serialize(object /*, children*/) {\n if (object.type !== 'image') return;\n\n const key = ReactEditor.findKey(undefined, object);\n const { data } = object;\n const { alignment, alt, src, height, margin, justifyContent, width } = data;\n const style = {};\n\n if (width) {\n style.width = `${width}px`;\n }\n\n if (height) {\n style.height = `${height}px`;\n }\n\n style.margin = margin;\n style.justifyContent = justifyContent;\n\n if (alignment) {\n switch (alignment) {\n case 'left':\n style.justifyContent = 'flex-start';\n style.margin = '0';\n break;\n case 'center':\n style.justifyContent = 'center';\n style.margin = '0 auto';\n break;\n case 'right':\n style.justifyContent = 'flex-end';\n style.margin = 'auto 0 0 auto';\n break;\n default:\n style.justifyContent = 'flex-start';\n break;\n }\n }\n\n style.objectFit = 'contain';\n\n const props = {\n key,\n src,\n style,\n alignment,\n alt,\n };\n\n return <img {...props} />;\n },\n};\n"],"file":"index.js"}
@@ -301,7 +301,7 @@ function fixLatexExpression(latexInput) {
301
301
  }
302
302
 
303
303
  var serialization = {
304
- deserialize: function deserialize(el) {
304
+ deserialize: function deserialize(el, next) {
305
305
  var tagName = getTagName(el);
306
306
  log('[deserialize] name: ', tagName);
307
307
  /**
@@ -329,7 +329,7 @@ var serialization = {
329
329
  latex: unwrapped,
330
330
  wrapper: wrapType
331
331
  }
332
- });
332
+ }, next(Array.from(el.children)));
333
333
  }
334
334
 
335
335
  return (0, _slateHyperscript.jsx)('element', {
@@ -337,7 +337,7 @@ var serialization = {
337
337
  data: {
338
338
  html: newHtml
339
339
  }
340
- });
340
+ }, next(Array.from(el.children)));
341
341
  }
342
342
 
343
343
  if (el.nodeType === TEXT_NODE) {
@@ -364,7 +364,7 @@ var serialization = {
364
364
  latex: _unwrapped,
365
365
  wrapper: _wrapType
366
366
  }
367
- });
367
+ }, next(Array.from(el.children)));
368
368
  }
369
369
  },
370
370
  serialize: function serialize(object) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/code/editable-html/plugins/math/index.jsx"],"names":["log","TEXT_NODE","generateAdditionalKeys","keyData","map","key","name","latex","write","label","CustomToolbarComp","React","memo","props","node","nodePath","onFocus","onBlur","onClick","editor","pluginProps","math","keypadMode","customKeys","controlledKeypadMode","onDone","update","data","apply","type","path","properties","newProperties","ReactEditor","focus","Transforms","move","distance","unit","prev","next","nodeNext","keypadModeNext","controlledKeypadModeNext","keypadModeChanged","controlledKeypadModeChanged","equal","propTypes","PropTypes","object","shape","string","children","array","isRequired","value","arrayOf","onToolbarDone","func","mathTypes","MathPlugin","opts","mathMlOptions","mmlOutput","mmlEditing","toolbar","icon","inlineMath","insertNode","rules","isVoid","isInline","element","includes","supports","schema","document","match","pluginStyles","parentNode","p","position","top","renderNode","html","attributes","__html","ROUND_BRACKETS","SQUARE_BRACKETS","DOLLAR","DOUBLE_DOLLAR","text","htmlDecode","input","doc","DOMParser","parseFromString","documentElement","textContent","getTagName","el","tagName","toLowerCase","lessThanHandling","arrowSplit","split","length","reduce","st","part","fixLatexExpression","latexInput","replace","serialization","deserialize","dataset","newHtml","outerHTML","htmlWithRemovedSpaces","replaceAll","htmlToUse","correctedLatex","unwrapped","wrapType","wrapper","nodeType","hasLatex","hasAttribute","innerHTML","serialize","findKey","undefined","decoded","res","skipWaitForMathRenderingLib","newLatex","strippedL","strippedNewL","console","initialLatex","mathML"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { Transforms } from 'slate';\nimport { ReactEditor } from 'slate-react';\nimport { jsx } from 'slate-hyperscript';\nimport Functions from '@material-ui/icons/Functions';\nimport { MathPreview, MathToolbar } from '../../../math-toolbar';\nimport { wrapMath, unWrapMath, mmlToLatex, renderMath } from '../../../math-rendering-accessible';\nimport debug from 'debug';\nimport PropTypes from 'prop-types';\nimport isEqual from 'lodash/isEqual';\nimport { BLOCK_TAGS } from '../../new-serialization';\n\nconst log = debug('@pie-lib:editable-html:plugins:math');\n\nconst TEXT_NODE = 3;\n\nfunction generateAdditionalKeys(keyData = []) {\n return keyData.map((key) => ({\n name: key,\n latex: key,\n write: key,\n label: key,\n }));\n}\n\n// eslint-disable-next-line react/display-name\nexport const CustomToolbarComp = React.memo(\n (props) => {\n const { node, nodePath, onFocus, onBlur, onClick, editor } = props;\n const { pluginProps } = props || {};\n const { math } = pluginProps || {};\n const { keypadMode, customKeys, controlledKeypadMode = true } = math || {};\n\n const onDone = (latex) => {\n const update = {\n ...node.data,\n latex,\n };\n editor.apply({\n type: 'set_node',\n path: nodePath,\n properties: {\n data: node.data,\n },\n newProperties: { data: update },\n });\n ReactEditor.focus(editor);\n Transforms.move(editor, { distance: 1, unit: 'offset' });\n };\n\n const latex = node.data.latex;\n\n return (\n <MathToolbar\n autoFocus\n additionalKeys={generateAdditionalKeys(customKeys)}\n latex={latex}\n onDone={onDone}\n onBlur={onBlur}\n onFocus={onFocus}\n onClick={onClick}\n keypadMode={keypadMode}\n controlledKeypadMode={controlledKeypadMode}\n />\n );\n },\n (prev, next) => {\n const { node, pluginProps: { math: { keypadMode, controlledKeypadMode } = {} } = {} } = prev;\n const {\n node: nodeNext,\n pluginProps: { math: { keypadMode: keypadModeNext, controlledKeypadMode: controlledKeypadModeNext } = {} } = {},\n } = next;\n const keypadModeChanged = keypadMode !== keypadModeNext;\n const controlledKeypadModeChanged = controlledKeypadMode !== controlledKeypadModeNext;\n\n const equal = isEqual(node, nodeNext);\n return equal && !keypadModeChanged && !controlledKeypadModeChanged;\n },\n);\n\nCustomToolbarComp.propTypes = {\n editor: PropTypes.object,\n node: PropTypes.shape({\n type: PropTypes.string,\n children: PropTypes.array,\n data: PropTypes.object,\n }).isRequired,\n value: PropTypes.arrayOf(\n PropTypes.shape({\n type: PropTypes.string,\n children: PropTypes.array,\n data: PropTypes.object,\n }),\n ).isRequired,\n onToolbarDone: PropTypes.func,\n onFocus: PropTypes.func,\n onClick: PropTypes.func,\n onBlur: PropTypes.func,\n};\n\nconst mathTypes = ['math', 'mathml'];\n\nexport default function MathPlugin(opts) {\n MathPlugin.mathMlOptions = {\n mmlOutput: opts.mmlOutput,\n mmlEditing: opts.mmlEditing,\n };\n\n return {\n name: 'math',\n toolbar: {\n icon: <Functions />,\n onClick: (editor) => {\n log('[insertMath]');\n const math = inlineMath();\n\n editor.insertNode(math);\n },\n /**\n * Return a react component function\n * @param node {Slate.Node}\n * @param value {Slate.Value}\n * @param onDone {(change?: Slate.Change, finishEditing :boolea) => void} - a function to call once the toolbar\n * has made any changes, call with the node.key and a data object.\n */\n CustomToolbarComp,\n },\n rules: (editor) => {\n const { isVoid, isInline } = editor;\n\n editor.isVoid = (element) => {\n return mathTypes.includes(element.type) ? true : isVoid(element);\n };\n\n editor.isInline = (element) => {\n return mathTypes.includes(element.type) ? true : isInline(element);\n };\n\n return editor;\n },\n supports: (node) => mathTypes.includes(node.type),\n schema: {\n document: { match: [{ type: 'math' }] },\n },\n\n pluginStyles: (node, parentNode, p) => {\n if (p) {\n return {\n position: 'absolute',\n top: 'initial',\n };\n }\n },\n\n renderNode: (props) => {\n if (props.node.type === 'math') {\n log('[renderNode]: data:', props.node.data);\n return <MathPreview {...props} />;\n }\n\n /**\n * Here for rendering mathml content\n */\n if (props.node.type === 'mathml') {\n const {\n data: { html },\n } = props.node;\n\n return (\n <span>\n <span {...props.attributes} contentEditable={false} dangerouslySetInnerHTML={{ __html: html }} />\n {props.children}\n </span>\n );\n }\n },\n };\n}\n\nMathPlugin.ROUND_BRACKETS = 'round_brackets';\nMathPlugin.SQUARE_BRACKETS = 'square_brackets';\nMathPlugin.DOLLAR = 'dollar';\nMathPlugin.DOUBLE_DOLLAR = 'double_dollar';\nMathPlugin.mathMlOptions = {};\n\nMathPlugin.propTypes = {\n attributes: PropTypes.object,\n node: PropTypes.node,\n};\n\nexport const inlineMath = () => ({\n type: 'math',\n data: {\n latex: '',\n },\n children: [{ text: '' }],\n});\n\nconst htmlDecode = (input) => {\n const doc = new DOMParser().parseFromString(input, 'text/html');\n\n return doc.documentElement.textContent;\n};\n\nconst getTagName = (el) => {\n return ((el && el.tagName) || '').toLowerCase();\n};\n\n/**\n * Makes sure that strings that contain stuff like:\n * x<y are not transformed into x by the DOMParser because it thinks\n * that <y is the start of a dom element tag\n * @param input\n * @returns {*}\n */\nconst lessThanHandling = (input) => {\n const arrowSplit = input.split('<');\n\n // if we don't have at least 2 characters there's no point in checking\n if (input.length > 2) {\n return arrowSplit.reduce((st, part) => {\n /*\n We check if this element resulted is:\n div - continuation of a beginning of a HTML element\n /div - closing of a HTML tag\n br/> - beginning and closing of a html TAG\n */\n if (part.match(/<[a-zA-Z/][\\s\\S]*>/gi)) {\n return `${st}${st ? '<' : ''}${part}`;\n }\n\n return `${st}${st ? '&lt;' : ''}${part}`;\n }, '');\n }\n\n return input;\n};\n\nfunction fixLatexExpression(latexInput) {\n // for some reason, mmlToLatex parses () incorrectly - or at least in a way that our interpreter can not use them\n // Replace '\\\\left.' and '\\\\right.' with an empty string\n return latexInput.replace(/\\\\left\\.\\s*|\\\\right\\.\\s*/g, '');\n}\n\nexport const serialization = {\n deserialize(el) {\n const tagName = getTagName(el);\n log('[deserialize] name: ', tagName);\n\n /**\n * This is here in order to be able to render mathml content\n */\n if (tagName === 'math' || (el.dataset && el.dataset.type === 'mathml')) {\n const newHtml = el.outerHTML;\n\n if (MathPlugin.mathMlOptions.mmlEditing) {\n // todo fix this in mathml-to-latex\n const htmlWithRemovedSpaces = newHtml.replaceAll('&nbsp;', ' ');\n const htmlToUse = mmlToLatex(htmlWithRemovedSpaces);\n const latex = htmlDecode(htmlToUse);\n // todo fix this in mathml-to-latex\n const correctedLatex = fixLatexExpression(latex);\n const { unwrapped, wrapType } = unWrapMath(correctedLatex);\n\n return jsx('element', {\n type: 'math',\n data: {\n latex: unwrapped,\n wrapper: wrapType,\n },\n });\n }\n\n return jsx('element', {\n type: 'mathml',\n data: {\n html: newHtml,\n },\n });\n }\n\n if (el.nodeType === TEXT_NODE) {\n return;\n }\n\n if (tagName !== 'span') {\n return;\n }\n\n const hasLatex = el.hasAttribute('data-latex') || el.hasAttribute('latex');\n\n if (hasLatex) {\n const latex = htmlDecode(el.innerHTML);\n const { unwrapped, wrapType } = unWrapMath(latex);\n log('[deserialize]: noBrackets: ', unwrapped, wrapType);\n\n return jsx('element', {\n type: 'math',\n data: {\n latex: unwrapped,\n wrapper: wrapType,\n },\n });\n }\n },\n serialize(object) {\n const key = ReactEditor.findKey(undefined, object);\n\n if (object.type === 'math') {\n const { latex, wrapper } = object.data || {};\n log('[serialize] latex: ', latex);\n const decoded = htmlDecode(lessThanHandling(latex));\n\n if (MathPlugin.mathMlOptions.mmlOutput) {\n const res = renderMath(`<span data-latex=\"\" data-raw=\"${decoded}\">${wrapMath(decoded, wrapper)}</span>`, {\n skipWaitForMathRenderingLib: true,\n });\n const newLatex = res ? mmlToLatex(res) : '';\n\n // we need to remove all the spaces from the latex to be able to compare it\n const strippedL = latex.replace(/\\s/g, '');\n const strippedNewL = newLatex.replace(/\\s/g, '');\n\n // we check if the latex keeps his form after being converted to mathml and back to latex\n // if it does we can safely convert it to mathml\n if (!isEqual(strippedL, strippedNewL)) {\n const correctedLatex = fixLatexExpression(newLatex);\n\n // As George requested in PD-3167, I will set the new mathML anyway, and also log differences\n // if it doesn't we keep the latex version\n console.log('This latex can not be safely converted to mathml so we will keep the latex version!!!', {\n initialLatex: '',\n newLatex: newLatex,\n correctedLatex,\n mathML: res,\n });\n }\n\n return <span key={key} data-type=\"mathml\" dangerouslySetInnerHTML={{ __html: res }} />;\n }\n\n return (\n <span key={key} data-latex=\"\" data-raw={decoded}>\n {wrapMath(decoded, wrapper)}\n </span>\n );\n }\n\n /**\n * Here for rendering mathml content\n */\n if (object.type === 'mathml') {\n const { html } = object.data || {};\n\n return <span key={key} data-type=\"mathml\" dangerouslySetInnerHTML={{ __html: html }} />;\n }\n },\n};\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../../../src/code/editable-html/plugins/math/index.jsx"],"names":["log","TEXT_NODE","generateAdditionalKeys","keyData","map","key","name","latex","write","label","CustomToolbarComp","React","memo","props","node","nodePath","onFocus","onBlur","onClick","editor","pluginProps","math","keypadMode","customKeys","controlledKeypadMode","onDone","update","data","apply","type","path","properties","newProperties","ReactEditor","focus","Transforms","move","distance","unit","prev","next","nodeNext","keypadModeNext","controlledKeypadModeNext","keypadModeChanged","controlledKeypadModeChanged","equal","propTypes","PropTypes","object","shape","string","children","array","isRequired","value","arrayOf","onToolbarDone","func","mathTypes","MathPlugin","opts","mathMlOptions","mmlOutput","mmlEditing","toolbar","icon","inlineMath","insertNode","rules","isVoid","isInline","element","includes","supports","schema","document","match","pluginStyles","parentNode","p","position","top","renderNode","html","attributes","__html","ROUND_BRACKETS","SQUARE_BRACKETS","DOLLAR","DOUBLE_DOLLAR","text","htmlDecode","input","doc","DOMParser","parseFromString","documentElement","textContent","getTagName","el","tagName","toLowerCase","lessThanHandling","arrowSplit","split","length","reduce","st","part","fixLatexExpression","latexInput","replace","serialization","deserialize","dataset","newHtml","outerHTML","htmlWithRemovedSpaces","replaceAll","htmlToUse","correctedLatex","unwrapped","wrapType","wrapper","Array","from","nodeType","hasLatex","hasAttribute","innerHTML","serialize","findKey","undefined","decoded","res","skipWaitForMathRenderingLib","newLatex","strippedL","strippedNewL","console","initialLatex","mathML"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { Transforms } from 'slate';\nimport { ReactEditor } from 'slate-react';\nimport { jsx } from 'slate-hyperscript';\nimport Functions from '@material-ui/icons/Functions';\nimport { MathPreview, MathToolbar } from '../../../math-toolbar';\nimport { wrapMath, unWrapMath, mmlToLatex, renderMath } from '../../../math-rendering-accessible';\nimport debug from 'debug';\nimport PropTypes from 'prop-types';\nimport isEqual from 'lodash/isEqual';\nimport { BLOCK_TAGS } from '../../new-serialization';\n\nconst log = debug('@pie-lib:editable-html:plugins:math');\n\nconst TEXT_NODE = 3;\n\nfunction generateAdditionalKeys(keyData = []) {\n return keyData.map((key) => ({\n name: key,\n latex: key,\n write: key,\n label: key,\n }));\n}\n\n// eslint-disable-next-line react/display-name\nexport const CustomToolbarComp = React.memo(\n (props) => {\n const { node, nodePath, onFocus, onBlur, onClick, editor } = props;\n const { pluginProps } = props || {};\n const { math } = pluginProps || {};\n const { keypadMode, customKeys, controlledKeypadMode = true } = math || {};\n\n const onDone = (latex) => {\n const update = {\n ...node.data,\n latex,\n };\n editor.apply({\n type: 'set_node',\n path: nodePath,\n properties: {\n data: node.data,\n },\n newProperties: { data: update },\n });\n ReactEditor.focus(editor);\n Transforms.move(editor, { distance: 1, unit: 'offset' });\n };\n\n const latex = node.data.latex;\n\n return (\n <MathToolbar\n autoFocus\n additionalKeys={generateAdditionalKeys(customKeys)}\n latex={latex}\n onDone={onDone}\n onBlur={onBlur}\n onFocus={onFocus}\n onClick={onClick}\n keypadMode={keypadMode}\n controlledKeypadMode={controlledKeypadMode}\n />\n );\n },\n (prev, next) => {\n const { node, pluginProps: { math: { keypadMode, controlledKeypadMode } = {} } = {} } = prev;\n const {\n node: nodeNext,\n pluginProps: { math: { keypadMode: keypadModeNext, controlledKeypadMode: controlledKeypadModeNext } = {} } = {},\n } = next;\n const keypadModeChanged = keypadMode !== keypadModeNext;\n const controlledKeypadModeChanged = controlledKeypadMode !== controlledKeypadModeNext;\n\n const equal = isEqual(node, nodeNext);\n return equal && !keypadModeChanged && !controlledKeypadModeChanged;\n },\n);\n\nCustomToolbarComp.propTypes = {\n editor: PropTypes.object,\n node: PropTypes.shape({\n type: PropTypes.string,\n children: PropTypes.array,\n data: PropTypes.object,\n }).isRequired,\n value: PropTypes.arrayOf(\n PropTypes.shape({\n type: PropTypes.string,\n children: PropTypes.array,\n data: PropTypes.object,\n }),\n ).isRequired,\n onToolbarDone: PropTypes.func,\n onFocus: PropTypes.func,\n onClick: PropTypes.func,\n onBlur: PropTypes.func,\n};\n\nconst mathTypes = ['math', 'mathml'];\n\nexport default function MathPlugin(opts) {\n MathPlugin.mathMlOptions = {\n mmlOutput: opts.mmlOutput,\n mmlEditing: opts.mmlEditing,\n };\n\n return {\n name: 'math',\n toolbar: {\n icon: <Functions />,\n onClick: (editor) => {\n log('[insertMath]');\n const math = inlineMath();\n\n editor.insertNode(math);\n },\n /**\n * Return a react component function\n * @param node {Slate.Node}\n * @param value {Slate.Value}\n * @param onDone {(change?: Slate.Change, finishEditing :boolea) => void} - a function to call once the toolbar\n * has made any changes, call with the node.key and a data object.\n */\n CustomToolbarComp,\n },\n rules: (editor) => {\n const { isVoid, isInline } = editor;\n\n editor.isVoid = (element) => {\n return mathTypes.includes(element.type) ? true : isVoid(element);\n };\n\n editor.isInline = (element) => {\n return mathTypes.includes(element.type) ? true : isInline(element);\n };\n\n return editor;\n },\n supports: (node) => mathTypes.includes(node.type),\n schema: {\n document: { match: [{ type: 'math' }] },\n },\n\n pluginStyles: (node, parentNode, p) => {\n if (p) {\n return {\n position: 'absolute',\n top: 'initial',\n };\n }\n },\n\n renderNode: (props) => {\n if (props.node.type === 'math') {\n log('[renderNode]: data:', props.node.data);\n return <MathPreview {...props} />;\n }\n\n /**\n * Here for rendering mathml content\n */\n if (props.node.type === 'mathml') {\n const {\n data: { html },\n } = props.node;\n\n return (\n <span>\n <span {...props.attributes} contentEditable={false} dangerouslySetInnerHTML={{ __html: html }} />\n {props.children}\n </span>\n );\n }\n },\n };\n}\n\nMathPlugin.ROUND_BRACKETS = 'round_brackets';\nMathPlugin.SQUARE_BRACKETS = 'square_brackets';\nMathPlugin.DOLLAR = 'dollar';\nMathPlugin.DOUBLE_DOLLAR = 'double_dollar';\nMathPlugin.mathMlOptions = {};\n\nMathPlugin.propTypes = {\n attributes: PropTypes.object,\n node: PropTypes.node,\n};\n\nexport const inlineMath = () => ({\n type: 'math',\n data: {\n latex: '',\n },\n children: [{ text: '' }],\n});\n\nconst htmlDecode = (input) => {\n const doc = new DOMParser().parseFromString(input, 'text/html');\n\n return doc.documentElement.textContent;\n};\n\nconst getTagName = (el) => {\n return ((el && el.tagName) || '').toLowerCase();\n};\n\n/**\n * Makes sure that strings that contain stuff like:\n * x<y are not transformed into x by the DOMParser because it thinks\n * that <y is the start of a dom element tag\n * @param input\n * @returns {*}\n */\nconst lessThanHandling = (input) => {\n const arrowSplit = input.split('<');\n\n // if we don't have at least 2 characters there's no point in checking\n if (input.length > 2) {\n return arrowSplit.reduce((st, part) => {\n /*\n We check if this element resulted is:\n div - continuation of a beginning of a HTML element\n /div - closing of a HTML tag\n br/> - beginning and closing of a html TAG\n */\n if (part.match(/<[a-zA-Z/][\\s\\S]*>/gi)) {\n return `${st}${st ? '<' : ''}${part}`;\n }\n\n return `${st}${st ? '&lt;' : ''}${part}`;\n }, '');\n }\n\n return input;\n};\n\nfunction fixLatexExpression(latexInput) {\n // for some reason, mmlToLatex parses () incorrectly - or at least in a way that our interpreter can not use them\n // Replace '\\\\left.' and '\\\\right.' with an empty string\n return latexInput.replace(/\\\\left\\.\\s*|\\\\right\\.\\s*/g, '');\n}\n\nexport const serialization = {\n deserialize(el, next) {\n const tagName = getTagName(el);\n log('[deserialize] name: ', tagName);\n\n /**\n * This is here in order to be able to render mathml content\n */\n if (tagName === 'math' || (el.dataset && el.dataset.type === 'mathml')) {\n const newHtml = el.outerHTML;\n\n if (MathPlugin.mathMlOptions.mmlEditing) {\n // todo fix this in mathml-to-latex\n const htmlWithRemovedSpaces = newHtml.replaceAll('&nbsp;', ' ');\n const htmlToUse = mmlToLatex(htmlWithRemovedSpaces);\n const latex = htmlDecode(htmlToUse);\n // todo fix this in mathml-to-latex\n const correctedLatex = fixLatexExpression(latex);\n const { unwrapped, wrapType } = unWrapMath(correctedLatex);\n\n return jsx(\n 'element',\n {\n type: 'math',\n data: {\n latex: unwrapped,\n wrapper: wrapType,\n },\n },\n next(Array.from(el.children)),\n );\n }\n\n return jsx(\n 'element',\n {\n type: 'mathml',\n data: {\n html: newHtml,\n },\n },\n next(Array.from(el.children)),\n );\n }\n\n if (el.nodeType === TEXT_NODE) {\n return;\n }\n\n if (tagName !== 'span') {\n return;\n }\n\n const hasLatex = el.hasAttribute('data-latex') || el.hasAttribute('latex');\n\n if (hasLatex) {\n const latex = htmlDecode(el.innerHTML);\n const { unwrapped, wrapType } = unWrapMath(latex);\n log('[deserialize]: noBrackets: ', unwrapped, wrapType);\n\n return jsx(\n 'element',\n {\n type: 'math',\n data: {\n latex: unwrapped,\n wrapper: wrapType,\n },\n },\n next(Array.from(el.children)),\n );\n }\n },\n serialize(object) {\n const key = ReactEditor.findKey(undefined, object);\n\n if (object.type === 'math') {\n const { latex, wrapper } = object.data || {};\n log('[serialize] latex: ', latex);\n const decoded = htmlDecode(lessThanHandling(latex));\n\n if (MathPlugin.mathMlOptions.mmlOutput) {\n const res = renderMath(`<span data-latex=\"\" data-raw=\"${decoded}\">${wrapMath(decoded, wrapper)}</span>`, {\n skipWaitForMathRenderingLib: true,\n });\n const newLatex = res ? mmlToLatex(res) : '';\n\n // we need to remove all the spaces from the latex to be able to compare it\n const strippedL = latex.replace(/\\s/g, '');\n const strippedNewL = newLatex.replace(/\\s/g, '');\n\n // we check if the latex keeps his form after being converted to mathml and back to latex\n // if it does we can safely convert it to mathml\n if (!isEqual(strippedL, strippedNewL)) {\n const correctedLatex = fixLatexExpression(newLatex);\n\n // As George requested in PD-3167, I will set the new mathML anyway, and also log differences\n // if it doesn't we keep the latex version\n console.log('This latex can not be safely converted to mathml so we will keep the latex version!!!', {\n initialLatex: '',\n newLatex: newLatex,\n correctedLatex,\n mathML: res,\n });\n }\n\n return <span key={key} data-type=\"mathml\" dangerouslySetInnerHTML={{ __html: res }} />;\n }\n\n return (\n <span key={key} data-latex=\"\" data-raw={decoded}>\n {wrapMath(decoded, wrapper)}\n </span>\n );\n }\n\n /**\n * Here for rendering mathml content\n */\n if (object.type === 'mathml') {\n const { html } = object.data || {};\n\n return <span key={key} data-type=\"mathml\" dangerouslySetInnerHTML={{ __html: html }} />;\n }\n },\n};\n"],"file":"index.js"}
@@ -43,8 +43,6 @@ var _omit = _interopRequireDefault(require("lodash/omit"));
43
43
 
44
44
  var _reduce = _interopRequireDefault(require("lodash/reduce"));
45
45
 
46
- var _list = require("../list");
47
-
48
46
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
49
47
 
50
48
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
@@ -207,12 +205,12 @@ var _default = function _default(opts, toolbarPlugins
207
205
  tableNode = _entry[0],
208
206
  tablePath = _entry[1];
209
207
 
210
- var tableParent = _slate.Node.get(editor, tablePath.slice(0, -1)); // If the element is a paragraph, ensure its children are valid.
208
+ var tableParent = _slate.Node.get(editor, tablePath.slice(0, -1)); // If the element is a table, ensure its children are valid.
211
209
 
212
210
 
213
211
  if (_slate.Element.isElement(tableNode) && tableNode.type === 'table') {
214
212
  var emptyBlock = {
215
- type: 'paragraph',
213
+ type: 'div',
216
214
  children: [{
217
215
  text: ''
218
216
  }]
@@ -344,7 +342,7 @@ var _default = function _default(opts, toolbarPlugins
344
342
 
345
343
  if (_slate.Text.isText(nodeAtSelection)) {
346
344
  var block = {
347
- type: 'paragraph',
345
+ type: 'div',
348
346
  children: []
349
347
  };
350
348
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/code/editable-html/plugins/table/index.jsx"],"names":["log","Table","React","forwardRef","props","nodeAttributes","dataToAttributes","element","data","attrs","attributes","onFocus","onBlur","children","propTypes","PropTypes","object","func","node","shape","type","string","array","oneOfType","arrayOf","isRequired","TableRow","TableBody","useCellStyles","td","minWidth","TableCell","classes","Tag","header","getAncestorByType","editor","ancestors","SlateNode","Editor","path","selection","reverse","ancestor","ancestorPath","moveToBeginningOfTable","tableBlock","tablePath","firstTdPath","descendants","descendant","descendantPath","Transforms","select","TABLE_TYPES","opts","toolbarPlugins","core","utils","rules","normalizeNode","entry","tableNode","tableParent","get","slice","SlateElement","isElement","emptyBlock","text","tableIndex","beforeTablePath","apply","continueNormalization","length","afterTablePath","tBodyNode","wrapNodes","at","anchor","offset","focus","createTable","row","columns","tableRows","rowLength","Array","fill","columnsLength","i","tableRow","j","push","getTableBlock","isSelectionInTable","createTableWithOptions","extra","createdTable","newTable","toolbar","icon","onClick","border","nodeAtSelection","nodePath","Text","isText","block","insertNode","customToolbar","onToolbarDone","hasBorder","addRow","trNode","trPath","newTr","insertNodes","removeRow","tBodyPath","removeNodes","addColumn","emptyTd","trElements","nodes","match","removeColumn","currentPath","columnIndex","removeTable","toggleBorder","update","properties","newProperties","onDone","Tb","c","supports","includes","onKeyDown","event","key","parent","currentNode","preventDefault","Node","renderNode","parseStyleString","s","regex","result","exec","trim","reactAttributes","o","camelize","addUnits","attributesToMap","el","acc","attribute","value","getAttribute","styleString","reactStyleObject","v","name","cellAttributes","serialization","deserialize","next","tag","tagName","toLowerCase","from","reduce","childNodes","serialize","ReactEditor","findKey","undefined"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { Node as SlateNode, Element as SlateElement, Editor, Transforms, Text } from 'slate';\nimport { ReactEditor } from 'slate-react';\nimport debug from 'debug';\nimport GridOn from '@material-ui/icons/GridOn';\nimport TableToolbar from './table-toolbar';\nimport PropTypes from 'prop-types';\nimport { jsx } from 'slate-hyperscript';\nimport { makeStyles } from '@material-ui/styles';\nimport convert from 'react-attr-converter';\nimport { object as toStyleObject } from 'to-style';\nimport get from 'lodash/get';\nimport omit from 'lodash/omit';\nimport reduce from 'lodash/reduce';\nimport { LIST_TYPES } from \"../list\";\n\nconst log = debug('@pie-lib:editable-html:plugins:table');\n\nconst Table = React.forwardRef((props) => {\n const nodeAttributes = omit(dataToAttributes(props.element.data), 'newTable');\n const attrs = omit(props.attributes, 'newTable');\n\n return (\n <table {...attrs} {...nodeAttributes} onFocus={props.onFocus} onBlur={props.onBlur}>\n {props.children}\n </table>\n );\n});\n\nTable.propTypes = {\n attributes: PropTypes.object,\n element: PropTypes.object,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n node: PropTypes.shape({\n type: PropTypes.string,\n children: PropTypes.array,\n data: PropTypes.object,\n }),\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired,\n};\n\nconst TableRow = React.forwardRef((props) => <tr {...props.attributes}>{props.children}</tr>);\n\nTableRow.propTypes = {\n attributes: PropTypes.object,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired,\n};\n\nconst TableBody = React.forwardRef((props) => <tbody {...props.attributes}>{props.children}</tbody>);\n\nTableBody.propTypes = {\n attributes: PropTypes.object,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired,\n};\n\nconst useCellStyles = makeStyles({\n td: {\n minWidth: '25px',\n },\n});\n\nconst TableCell = React.forwardRef((props) => {\n const classes = useCellStyles();\n const { node } = props;\n const Tag = get(node, 'data.header') ? 'th' : 'td';\n\n const nodeAttributes = dataToAttributes(props.element.data);\n delete nodeAttributes.header;\n\n return (\n <Tag\n {...props.attributes}\n {...nodeAttributes}\n colSpan={get(node, 'data.colspan')}\n className={classes[Tag]}\n onFocus={props.onFocus}\n onBlur={props.onBlur}\n >\n {props.children}\n </Tag>\n );\n});\n\nTableCell.propTypes = {\n node: PropTypes.object,\n element: PropTypes.object,\n attributes: PropTypes.object,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired,\n};\n\nconst getAncestorByType = (editor, type) => {\n if (!editor || !type) {\n return null;\n }\n\n const ancestors = SlateNode.ancestors(editor, Editor.path(editor, editor.selection), {\n reverse: true,\n });\n\n for (const [ancestor, ancestorPath] of ancestors) {\n if (ancestor.type === type) {\n return [ancestor, ancestorPath];\n }\n }\n\n return null;\n};\n\nconst moveToBeginningOfTable = (editor) => {\n const [tableBlock, tablePath] = getAncestorByType(editor, 'table');\n let firstTdPath;\n\n for (const [descendant, descendantPath] of SlateNode.descendants(tableBlock, { reverse: true })) {\n if (descendant.type === 'td') {\n firstTdPath = descendantPath;\n }\n }\n\n Transforms.select(editor, [...tablePath, ...firstTdPath]);\n};\n\nconst TABLE_TYPES = ['tbody', 'tr', 'td', 'table'];\n\nexport default (opts, toolbarPlugins /* : {toolbar: {}}[] */) => {\n const core = {\n utils: {},\n rules: (editor) => {\n const { normalizeNode } = editor;\n\n editor.normalizeNode = (entry) => {\n const [tableNode, tablePath] = entry;\n const tableParent = SlateNode.get(editor, tablePath.slice(0, -1));\n\n // If the element is a paragraph, ensure its children are valid.\n if (SlateElement.isElement(tableNode) && tableNode.type === 'table') {\n const emptyBlock = {\n type: 'paragraph',\n children: [{ text: '' }],\n };\n const tableIndex = tablePath.slice(-1)[0];\n\n // if table is the first element, we need to add a space before\n // so users can focus before the table\n if (tableIndex === 0) {\n const beforeTablePath = [...tablePath.slice(0, -1), 0];\n\n editor.apply({\n type: 'insert_node',\n path: beforeTablePath,\n node: emptyBlock,\n });\n editor.continueNormalization();\n return;\n }\n\n // if table is the last element, we add element after it\n if (tableParent.children.length - 1 === tableIndex) {\n const afterTablePath = [...tablePath.slice(0, -1), tableIndex + 1];\n\n editor.apply({\n type: 'insert_node',\n path: afterTablePath,\n node: emptyBlock,\n });\n editor.continueNormalization();\n return;\n }\n\n // if table does not have a tbody, we add it\n if (tableNode.children[0].type !== 'tbody') {\n const tBodyNode = { type: 'tbody', children: [] };\n\n Transforms.wrapNodes(editor, tBodyNode, {\n at: {\n anchor: { path: [...tablePath, 0], offset: 0 },\n focus: { path: [...tablePath, tableNode.children.length], offset: 0 },\n },\n });\n editor.continueNormalization();\n return;\n }\n }\n\n // Fall back to the original `normalizeNode` to enforce other constraints.\n normalizeNode(entry);\n };\n\n return editor;\n },\n };\n\n core.utils.createTable = (row = 2, columns = 2) => {\n const tableRows = [];\n const rowLength = new Array(row).fill(0).length;\n const columnsLength = new Array(columns).fill(0).length;\n\n for (let i = 0; i < rowLength; i++) {\n const tableRow = { type: 'tr', children: [] };\n\n for (let j = 0; j < columnsLength; j++) {\n tableRow.children.push({\n type: 'td',\n children: [\n {\n text: '',\n },\n ],\n });\n }\n\n tableRows.push(tableRow);\n }\n\n return {\n type: 'table',\n children: [\n {\n type: 'tbody',\n children: tableRows,\n },\n ],\n };\n };\n\n core.utils.getTableBlock = (editor) => getAncestorByType(editor, 'table');\n\n core.utils.isSelectionInTable = (editor) => !!core.utils.getTableBlock(editor);\n\n core.utils.createTableWithOptions = (row, columns, extra) => {\n const createdTable = core.utils.createTable(row, columns);\n const newTable = { ...createdTable, ...extra };\n\n return newTable;\n };\n\n core.toolbar = {\n icon: <GridOn />,\n onClick: (editor) => {\n log('insert table');\n const newTable = core.utils.createTableWithOptions(2, 2, {\n data: {\n border: '1',\n newTable: true,\n },\n });\n\n const [nodeAtSelection, nodePath] = Editor.node(editor, editor.selection);\n\n if (Text.isText(nodeAtSelection)) {\n const block = { type: 'paragraph', children: [] };\n\n Transforms.wrapNodes(editor, block, { at: nodePath });\n }\n\n editor.insertNode(newTable);\n moveToBeginningOfTable(editor, newTable);\n },\n /**\n * Note - the node may not be a table node - it may be a node inside a table.\n */\n customToolbar: (node, nodePath, editor, onToolbarDone) => {\n log('[customToolbar] node.data: ', node.data);\n\n const [tableBlock] = core.utils.getTableBlock(editor);\n log('[customToolbar] tableBlock: ', tableBlock);\n\n const hasBorder = () => get(tableBlock, 'data.border') !== '0';\n const addRow = () => {\n const [trNode, trPath] = getAncestorByType(editor, 'tr');\n\n log('[addRow]');\n\n if (trNode) {\n const newTr = { type: 'tr', children: [] };\n const columnsLength = trNode.children.length;\n\n for (let i = 0; i < columnsLength; i++) {\n newTr.children.push({\n type: 'td',\n children: [\n {\n text: '',\n },\n ],\n });\n }\n\n Transforms.insertNodes(editor, [newTr], { at: trPath });\n }\n };\n\n const removeRow = () => {\n const [tBodyNode, tBodyPath] = getAncestorByType(editor, 'tbody');\n\n log('[removeRow]');\n\n if (tBodyPath) {\n if (tBodyNode.children.length > 1) {\n const [, trPath] = getAncestorByType(editor, 'tr');\n\n log('[removeRow]');\n\n if (trPath) {\n Transforms.removeNodes(editor, { at: trPath });\n }\n }\n }\n };\n\n const addColumn = () => {\n const [tBodyNode, tBodyPath] = getAncestorByType(editor, 'tbody');\n\n log('[addColumn]');\n\n if (tBodyNode) {\n const emptyTd = {\n type: 'td',\n children: [{ text: '' }],\n };\n const trElements = Editor.nodes(editor, {\n at: tBodyPath, // Path of Editor\n match: (node) => 'tr' === node.type,\n });\n\n for (const [trNode, nodePath] of trElements) {\n Transforms.insertNodes(editor, [emptyTd], {\n at: [...nodePath, trNode.children.length],\n });\n }\n }\n };\n\n const removeColumn = () => {\n const [tBodyNode, tBodyPath] = getAncestorByType(editor, 'tbody');\n\n log('[addColumn]');\n\n if (tBodyNode) {\n const currentPath = Editor.path(editor, editor.selection);\n const columnIndex = currentPath[currentPath.length - 2];\n const trElements = Editor.nodes(editor, {\n at: tBodyPath, // Path of Editor\n match: (node) => 'tr' === node.type,\n });\n\n for (const [trNode, nodePath] of trElements) {\n if (trNode.children.length > 1) {\n Transforms.removeNodes(editor, { at: [...nodePath, columnIndex] });\n }\n }\n }\n };\n\n const removeTable = () => {\n const [tableNode, tablePath] = getAncestorByType(editor, 'table');\n\n editor.apply({\n type: 'remove_node',\n path: tablePath,\n node: tableNode,\n });\n };\n\n const toggleBorder = () => {\n const { data } = tableBlock;\n const update = {\n ...data,\n border: hasBorder() ? '0' : '1',\n };\n const [, tablePath] = getAncestorByType(editor, 'table');\n\n log('[toggleBorder] update: ', update);\n\n editor.apply({\n type: 'set_node',\n path: tablePath,\n properties: {\n data: node.data,\n },\n newProperties: { data: update },\n });\n };\n\n const onDone = () => {\n log('[onDone] call onToolbarDone...');\n onToolbarDone(true);\n };\n\n const Tb = () => (\n <TableToolbar\n editor={editor}\n plugins={toolbarPlugins}\n onChange={(c) => onToolbarDone(c, false)}\n onAddRow={addRow}\n onRemoveRow={removeRow}\n onAddColumn={addColumn}\n onRemoveColumn={removeColumn}\n onRemoveTable={removeTable}\n hasBorder={hasBorder()}\n onToggleBorder={toggleBorder}\n onDone={onDone}\n />\n );\n return Tb;\n },\n };\n\n core.supports = (node) => TABLE_TYPES.includes(node.type);\n\n core.onKeyDown = (editor, event) => {\n if (event.key === 'Backspace') {\n const [currentNode] = editor.parent(editor.selection.anchor.path);\n\n if (currentNode.type === 'td' && editor.selection.anchor.offset === 0) {\n // user unable to delete td\n event.preventDefault();\n }\n }\n };\n\n const Node = (props) => {\n switch (props.node.type) {\n case 'table':\n return <Table {...props} onFocus={opts.onFocus} onBlur={opts.onBlur} />;\n case 'tbody':\n return <TableBody {...props} onFocus={opts.onFocus} onBlur={opts.onBlur} />;\n case 'tr':\n return <TableRow {...props} />;\n case 'td':\n return <TableCell {...props} onFocus={opts.onFocus} onBlur={opts.onBlur} />;\n default:\n return null;\n }\n };\n Node.propTypes = {\n node: PropTypes.object,\n };\n\n core.renderNode = Node;\n\n return core;\n};\n\nexport const parseStyleString = (s) => {\n const regex = /([\\w-]*)\\s*:\\s*([^;]*)/g;\n let match;\n const result = {};\n while ((match = regex.exec(s))) {\n result[match[1]] = match[2].trim();\n }\n return result;\n};\n\nexport const reactAttributes = (o) => toStyleObject(o, { camelize: true, addUnits: false });\n\nconst attributesToMap = (el) => (acc, attribute) => {\n const value = el.getAttribute(attribute);\n if (value) {\n if (attribute === 'style') {\n const styleString = el.getAttribute(attribute);\n const reactStyleObject = reactAttributes(parseStyleString(styleString));\n acc['style'] = reactStyleObject;\n } else {\n acc[attribute] = el.getAttribute(attribute);\n }\n }\n return acc;\n};\n\nconst dataToAttributes = (data) => {\n return reduce(\n data,\n (acc, v, name) => {\n if (v) {\n acc[convert(name)] = v;\n }\n return acc;\n },\n {},\n );\n};\n\nconst attributes = ['border', 'cellpadding', 'cellspacing', 'class', 'style'];\n\nconst cellAttributes = ['colspan', 'rowspan', 'class', 'style'];\n\nexport const serialization = {\n deserialize(el, next) {\n const tag = el.tagName.toLowerCase();\n\n switch (tag) {\n case 'table': {\n const children =\n el.children.length === 1 && el.children[0].tagName.toLowerCase() === 'tbody'\n ? el.children[0].children\n : el.children;\n const c = Array.from(children);\n\n return jsx(\n 'element',\n {\n type: 'table',\n data: attributes.reduce(attributesToMap(el), {}),\n },\n next(c),\n );\n }\n case 'tbody': {\n return jsx(\n 'element',\n {\n type: 'tbody',\n },\n next(el.childNodes),\n );\n }\n\n case 'th': {\n return jsx(\n 'element',\n {\n type: 'th',\n data: cellAttributes.reduce(attributesToMap(el), { header: true }),\n },\n next(el.childNodes),\n );\n }\n\n case 'tr': {\n return jsx(\n 'element',\n {\n type: 'tr',\n },\n next(Array.from(el.children)),\n );\n }\n\n case 'td': {\n return jsx(\n 'element',\n {\n type: 'td',\n data: cellAttributes.reduce(attributesToMap(el), { header: true }),\n },\n next(el.childNodes),\n );\n }\n }\n },\n serialize(object, children) {\n const key = ReactEditor.findKey(undefined, object);\n\n switch (object.type) {\n case 'table': {\n const attributes = dataToAttributes(object.data);\n\n return (\n <table key={key} {...attributes}>\n {children}\n </table>\n );\n }\n case 'tbody': {\n return <tbody key={key}>{children}</tbody>;\n }\n case 'tr': {\n return <tr key={key}>{children}</tr>;\n }\n case 'td': {\n const attributes = dataToAttributes(object.data);\n return (\n <td key={key} {...attributes}>\n {children}\n </td>\n );\n }\n case 'th': {\n const attributes = dataToAttributes(object.data);\n return (\n <th key={key} {...attributes}>\n {children}\n </th>\n );\n }\n }\n },\n};\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../../../src/code/editable-html/plugins/table/index.jsx"],"names":["log","Table","React","forwardRef","props","nodeAttributes","dataToAttributes","element","data","attrs","attributes","onFocus","onBlur","children","propTypes","PropTypes","object","func","node","shape","type","string","array","oneOfType","arrayOf","isRequired","TableRow","TableBody","useCellStyles","td","minWidth","TableCell","classes","Tag","header","getAncestorByType","editor","ancestors","SlateNode","Editor","path","selection","reverse","ancestor","ancestorPath","moveToBeginningOfTable","tableBlock","tablePath","firstTdPath","descendants","descendant","descendantPath","Transforms","select","TABLE_TYPES","opts","toolbarPlugins","core","utils","rules","normalizeNode","entry","tableNode","tableParent","get","slice","SlateElement","isElement","emptyBlock","text","tableIndex","beforeTablePath","apply","continueNormalization","length","afterTablePath","tBodyNode","wrapNodes","at","anchor","offset","focus","createTable","row","columns","tableRows","rowLength","Array","fill","columnsLength","i","tableRow","j","push","getTableBlock","isSelectionInTable","createTableWithOptions","extra","createdTable","newTable","toolbar","icon","onClick","border","nodeAtSelection","nodePath","Text","isText","block","insertNode","customToolbar","onToolbarDone","hasBorder","addRow","trNode","trPath","newTr","insertNodes","removeRow","tBodyPath","removeNodes","addColumn","emptyTd","trElements","nodes","match","removeColumn","currentPath","columnIndex","removeTable","toggleBorder","update","properties","newProperties","onDone","Tb","c","supports","includes","onKeyDown","event","key","parent","currentNode","preventDefault","Node","renderNode","parseStyleString","s","regex","result","exec","trim","reactAttributes","o","camelize","addUnits","attributesToMap","el","acc","attribute","value","getAttribute","styleString","reactStyleObject","v","name","cellAttributes","serialization","deserialize","next","tag","tagName","toLowerCase","from","reduce","childNodes","serialize","ReactEditor","findKey","undefined"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { Node as SlateNode, Element as SlateElement, Editor, Transforms, Text } from 'slate';\nimport { ReactEditor } from 'slate-react';\nimport debug from 'debug';\nimport GridOn from '@material-ui/icons/GridOn';\nimport TableToolbar from './table-toolbar';\nimport PropTypes from 'prop-types';\nimport { jsx } from 'slate-hyperscript';\nimport { makeStyles } from '@material-ui/styles';\nimport convert from 'react-attr-converter';\nimport { object as toStyleObject } from 'to-style';\nimport get from 'lodash/get';\nimport omit from 'lodash/omit';\nimport reduce from 'lodash/reduce';\n\nconst log = debug('@pie-lib:editable-html:plugins:table');\n\nconst Table = React.forwardRef((props) => {\n const nodeAttributes = omit(dataToAttributes(props.element.data), 'newTable');\n const attrs = omit(props.attributes, 'newTable');\n\n return (\n <table {...attrs} {...nodeAttributes} onFocus={props.onFocus} onBlur={props.onBlur}>\n {props.children}\n </table>\n );\n});\n\nTable.propTypes = {\n attributes: PropTypes.object,\n element: PropTypes.object,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n node: PropTypes.shape({\n type: PropTypes.string,\n children: PropTypes.array,\n data: PropTypes.object,\n }),\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired,\n};\n\nconst TableRow = React.forwardRef((props) => <tr {...props.attributes}>{props.children}</tr>);\n\nTableRow.propTypes = {\n attributes: PropTypes.object,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired,\n};\n\nconst TableBody = React.forwardRef((props) => <tbody {...props.attributes}>{props.children}</tbody>);\n\nTableBody.propTypes = {\n attributes: PropTypes.object,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired,\n};\n\nconst useCellStyles = makeStyles({\n td: {\n minWidth: '25px',\n },\n});\n\nconst TableCell = React.forwardRef((props) => {\n const classes = useCellStyles();\n const { node } = props;\n const Tag = get(node, 'data.header') ? 'th' : 'td';\n\n const nodeAttributes = dataToAttributes(props.element.data);\n delete nodeAttributes.header;\n\n return (\n <Tag\n {...props.attributes}\n {...nodeAttributes}\n colSpan={get(node, 'data.colspan')}\n className={classes[Tag]}\n onFocus={props.onFocus}\n onBlur={props.onBlur}\n >\n {props.children}\n </Tag>\n );\n});\n\nTableCell.propTypes = {\n node: PropTypes.object,\n element: PropTypes.object,\n attributes: PropTypes.object,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired,\n};\n\nconst getAncestorByType = (editor, type) => {\n if (!editor || !type) {\n return null;\n }\n\n const ancestors = SlateNode.ancestors(editor, Editor.path(editor, editor.selection), {\n reverse: true,\n });\n\n for (const [ancestor, ancestorPath] of ancestors) {\n if (ancestor.type === type) {\n return [ancestor, ancestorPath];\n }\n }\n\n return null;\n};\n\nconst moveToBeginningOfTable = (editor) => {\n const [tableBlock, tablePath] = getAncestorByType(editor, 'table');\n let firstTdPath;\n\n for (const [descendant, descendantPath] of SlateNode.descendants(tableBlock, { reverse: true })) {\n if (descendant.type === 'td') {\n firstTdPath = descendantPath;\n }\n }\n\n Transforms.select(editor, [...tablePath, ...firstTdPath]);\n};\n\nconst TABLE_TYPES = ['tbody', 'tr', 'td', 'table'];\n\nexport default (opts, toolbarPlugins /* : {toolbar: {}}[] */) => {\n const core = {\n utils: {},\n rules: (editor) => {\n const { normalizeNode } = editor;\n\n editor.normalizeNode = (entry) => {\n const [tableNode, tablePath] = entry;\n const tableParent = SlateNode.get(editor, tablePath.slice(0, -1));\n\n // If the element is a table, ensure its children are valid.\n if (SlateElement.isElement(tableNode) && tableNode.type === 'table') {\n const emptyBlock = {\n type: 'div',\n children: [{ text: '' }],\n };\n const tableIndex = tablePath.slice(-1)[0];\n\n // if table is the first element, we need to add a space before\n // so users can focus before the table\n if (tableIndex === 0) {\n const beforeTablePath = [...tablePath.slice(0, -1), 0];\n\n editor.apply({\n type: 'insert_node',\n path: beforeTablePath,\n node: emptyBlock,\n });\n editor.continueNormalization();\n return;\n }\n\n // if table is the last element, we add element after it\n if (tableParent.children.length - 1 === tableIndex) {\n const afterTablePath = [...tablePath.slice(0, -1), tableIndex + 1];\n\n editor.apply({\n type: 'insert_node',\n path: afterTablePath,\n node: emptyBlock,\n });\n editor.continueNormalization();\n return;\n }\n\n // if table does not have a tbody, we add it\n if (tableNode.children[0].type !== 'tbody') {\n const tBodyNode = { type: 'tbody', children: [] };\n\n Transforms.wrapNodes(editor, tBodyNode, {\n at: {\n anchor: { path: [...tablePath, 0], offset: 0 },\n focus: { path: [...tablePath, tableNode.children.length], offset: 0 },\n },\n });\n editor.continueNormalization();\n return;\n }\n }\n\n // Fall back to the original `normalizeNode` to enforce other constraints.\n normalizeNode(entry);\n };\n\n return editor;\n },\n };\n\n core.utils.createTable = (row = 2, columns = 2) => {\n const tableRows = [];\n const rowLength = new Array(row).fill(0).length;\n const columnsLength = new Array(columns).fill(0).length;\n\n for (let i = 0; i < rowLength; i++) {\n const tableRow = { type: 'tr', children: [] };\n\n for (let j = 0; j < columnsLength; j++) {\n tableRow.children.push({\n type: 'td',\n children: [\n {\n text: '',\n },\n ],\n });\n }\n\n tableRows.push(tableRow);\n }\n\n return {\n type: 'table',\n children: [\n {\n type: 'tbody',\n children: tableRows,\n },\n ],\n };\n };\n\n core.utils.getTableBlock = (editor) => getAncestorByType(editor, 'table');\n\n core.utils.isSelectionInTable = (editor) => !!core.utils.getTableBlock(editor);\n\n core.utils.createTableWithOptions = (row, columns, extra) => {\n const createdTable = core.utils.createTable(row, columns);\n const newTable = { ...createdTable, ...extra };\n\n return newTable;\n };\n\n core.toolbar = {\n icon: <GridOn />,\n onClick: (editor) => {\n log('insert table');\n const newTable = core.utils.createTableWithOptions(2, 2, {\n data: {\n border: '1',\n newTable: true,\n },\n });\n\n const [nodeAtSelection, nodePath] = Editor.node(editor, editor.selection);\n\n if (Text.isText(nodeAtSelection)) {\n const block = { type: 'div', children: [] };\n\n Transforms.wrapNodes(editor, block, { at: nodePath });\n }\n\n editor.insertNode(newTable);\n moveToBeginningOfTable(editor, newTable);\n },\n /**\n * Note - the node may not be a table node - it may be a node inside a table.\n */\n customToolbar: (node, nodePath, editor, onToolbarDone) => {\n log('[customToolbar] node.data: ', node.data);\n\n const [tableBlock] = core.utils.getTableBlock(editor);\n log('[customToolbar] tableBlock: ', tableBlock);\n\n const hasBorder = () => get(tableBlock, 'data.border') !== '0';\n const addRow = () => {\n const [trNode, trPath] = getAncestorByType(editor, 'tr');\n\n log('[addRow]');\n\n if (trNode) {\n const newTr = { type: 'tr', children: [] };\n const columnsLength = trNode.children.length;\n\n for (let i = 0; i < columnsLength; i++) {\n newTr.children.push({\n type: 'td',\n children: [\n {\n text: '',\n },\n ],\n });\n }\n\n Transforms.insertNodes(editor, [newTr], { at: trPath });\n }\n };\n\n const removeRow = () => {\n const [tBodyNode, tBodyPath] = getAncestorByType(editor, 'tbody');\n\n log('[removeRow]');\n\n if (tBodyPath) {\n if (tBodyNode.children.length > 1) {\n const [, trPath] = getAncestorByType(editor, 'tr');\n\n log('[removeRow]');\n\n if (trPath) {\n Transforms.removeNodes(editor, { at: trPath });\n }\n }\n }\n };\n\n const addColumn = () => {\n const [tBodyNode, tBodyPath] = getAncestorByType(editor, 'tbody');\n\n log('[addColumn]');\n\n if (tBodyNode) {\n const emptyTd = {\n type: 'td',\n children: [{ text: '' }],\n };\n const trElements = Editor.nodes(editor, {\n at: tBodyPath, // Path of Editor\n match: (node) => 'tr' === node.type,\n });\n\n for (const [trNode, nodePath] of trElements) {\n Transforms.insertNodes(editor, [emptyTd], {\n at: [...nodePath, trNode.children.length],\n });\n }\n }\n };\n\n const removeColumn = () => {\n const [tBodyNode, tBodyPath] = getAncestorByType(editor, 'tbody');\n\n log('[addColumn]');\n\n if (tBodyNode) {\n const currentPath = Editor.path(editor, editor.selection);\n const columnIndex = currentPath[currentPath.length - 2];\n const trElements = Editor.nodes(editor, {\n at: tBodyPath, // Path of Editor\n match: (node) => 'tr' === node.type,\n });\n\n for (const [trNode, nodePath] of trElements) {\n if (trNode.children.length > 1) {\n Transforms.removeNodes(editor, { at: [...nodePath, columnIndex] });\n }\n }\n }\n };\n\n const removeTable = () => {\n const [tableNode, tablePath] = getAncestorByType(editor, 'table');\n\n editor.apply({\n type: 'remove_node',\n path: tablePath,\n node: tableNode,\n });\n };\n\n const toggleBorder = () => {\n const { data } = tableBlock;\n const update = {\n ...data,\n border: hasBorder() ? '0' : '1',\n };\n const [, tablePath] = getAncestorByType(editor, 'table');\n\n log('[toggleBorder] update: ', update);\n\n editor.apply({\n type: 'set_node',\n path: tablePath,\n properties: {\n data: node.data,\n },\n newProperties: { data: update },\n });\n };\n\n const onDone = () => {\n log('[onDone] call onToolbarDone...');\n onToolbarDone(true);\n };\n\n const Tb = () => (\n <TableToolbar\n editor={editor}\n plugins={toolbarPlugins}\n onChange={(c) => onToolbarDone(c, false)}\n onAddRow={addRow}\n onRemoveRow={removeRow}\n onAddColumn={addColumn}\n onRemoveColumn={removeColumn}\n onRemoveTable={removeTable}\n hasBorder={hasBorder()}\n onToggleBorder={toggleBorder}\n onDone={onDone}\n />\n );\n return Tb;\n },\n };\n\n core.supports = (node) => TABLE_TYPES.includes(node.type);\n\n core.onKeyDown = (editor, event) => {\n if (event.key === 'Backspace') {\n const [currentNode] = editor.parent(editor.selection.anchor.path);\n\n if (currentNode.type === 'td' && editor.selection.anchor.offset === 0) {\n // user unable to delete td\n event.preventDefault();\n }\n }\n };\n\n const Node = (props) => {\n switch (props.node.type) {\n case 'table':\n return <Table {...props} onFocus={opts.onFocus} onBlur={opts.onBlur} />;\n case 'tbody':\n return <TableBody {...props} onFocus={opts.onFocus} onBlur={opts.onBlur} />;\n case 'tr':\n return <TableRow {...props} />;\n case 'td':\n return <TableCell {...props} onFocus={opts.onFocus} onBlur={opts.onBlur} />;\n default:\n return null;\n }\n };\n Node.propTypes = {\n node: PropTypes.object,\n };\n\n core.renderNode = Node;\n\n return core;\n};\n\nexport const parseStyleString = (s) => {\n const regex = /([\\w-]*)\\s*:\\s*([^;]*)/g;\n let match;\n const result = {};\n while ((match = regex.exec(s))) {\n result[match[1]] = match[2].trim();\n }\n return result;\n};\n\nexport const reactAttributes = (o) => toStyleObject(o, { camelize: true, addUnits: false });\n\nconst attributesToMap = (el) => (acc, attribute) => {\n const value = el.getAttribute(attribute);\n if (value) {\n if (attribute === 'style') {\n const styleString = el.getAttribute(attribute);\n const reactStyleObject = reactAttributes(parseStyleString(styleString));\n acc['style'] = reactStyleObject;\n } else {\n acc[attribute] = el.getAttribute(attribute);\n }\n }\n return acc;\n};\n\nconst dataToAttributes = (data) => {\n return reduce(\n data,\n (acc, v, name) => {\n if (v) {\n acc[convert(name)] = v;\n }\n return acc;\n },\n {},\n );\n};\n\nconst attributes = ['border', 'cellpadding', 'cellspacing', 'class', 'style'];\n\nconst cellAttributes = ['colspan', 'rowspan', 'class', 'style'];\n\nexport const serialization = {\n deserialize(el, next) {\n const tag = el.tagName.toLowerCase();\n\n switch (tag) {\n case 'table': {\n const children =\n el.children.length === 1 && el.children[0].tagName.toLowerCase() === 'tbody'\n ? el.children[0].children\n : el.children;\n const c = Array.from(children);\n\n return jsx(\n 'element',\n {\n type: 'table',\n data: attributes.reduce(attributesToMap(el), {}),\n },\n next(c),\n );\n }\n case 'tbody': {\n return jsx(\n 'element',\n {\n type: 'tbody',\n },\n next(el.childNodes),\n );\n }\n\n case 'th': {\n return jsx(\n 'element',\n {\n type: 'th',\n data: cellAttributes.reduce(attributesToMap(el), { header: true }),\n },\n next(el.childNodes),\n );\n }\n\n case 'tr': {\n return jsx(\n 'element',\n {\n type: 'tr',\n },\n next(Array.from(el.children)),\n );\n }\n\n case 'td': {\n return jsx(\n 'element',\n {\n type: 'td',\n data: cellAttributes.reduce(attributesToMap(el), { header: true }),\n },\n next(el.childNodes),\n );\n }\n }\n },\n serialize(object, children) {\n const key = ReactEditor.findKey(undefined, object);\n\n switch (object.type) {\n case 'table': {\n const attributes = dataToAttributes(object.data);\n\n return (\n <table key={key} {...attributes}>\n {children}\n </table>\n );\n }\n case 'tbody': {\n return <tbody key={key}>{children}</tbody>;\n }\n case 'tr': {\n return <tr key={key}>{children}</tr>;\n }\n case 'td': {\n const attributes = dataToAttributes(object.data);\n return (\n <td key={key} {...attributes}>\n {children}\n </td>\n );\n }\n case 'th': {\n const attributes = dataToAttributes(object.data);\n return (\n <th key={key} {...attributes}>\n {children}\n </th>\n );\n }\n }\n },\n};\n"],"file":"index.js"}
@@ -83,7 +83,7 @@ var Html = /*#__PURE__*/(0, _createClass2["default"])(function Html(props) {
83
83
  var body = _this.parseHtml(html);
84
84
 
85
85
  if (!body.firstChild || body.firstChild.nodeType === Node.TEXT_NODE || !Object.keys(_blockTags.BLOCK_TAGS).includes(body.firstChild.tagName.toLowerCase()) || Object.keys(_newSerialization.MARK_TAGS).includes(body.firstChild.tagName.toLowerCase())) {
86
- body = _this.parseHtml("<p>".concat(html, "</p>"));
86
+ body = _this.parseHtml("<div>".concat(html, "</div>"));
87
87
  }
88
88
 
89
89
  return _this.deserializeEls(body);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/code/editable-html/test-serializer.js"],"names":["Html","props","node","children","map","n","serializeEls","correctRule","rules","reduce","res","rule","serialize","key","ReactEditor","findKey","undefined","type","url","deserialized","html","ReactServer","renderToStaticMarkup","React","createElement","inner","slice","body","parseHtml","firstChild","nodeType","Node","TEXT_NODE","Object","keys","BLOCK_TAGS","includes","tagName","toLowerCase","MARK_TAGS","deserializeEls","element","markAttributes","textContent","ELEMENT_NODE","nodeAttributes","nodeName","bold","nextFn","nodes","childNodes","Array","from","flat","length","push","deserialize","getAttribute","defaultBlock"],"mappings":"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","sourcesContent":["import React from 'react';\nimport ReactServer from 'react-dom/server';\nimport escapeHtml from 'escape-html';\nimport { ReactEditor } from 'slate-react';\nimport { jsx } from 'slate-hyperscript';\nimport { MARK_TAGS } from './new-serialization';\nimport { BLOCK_TAGS } from './block-tags';\n\nclass Html {\n constructor(props) {\n this.defaultBlock = props.defaultBlock;\n this.parseHtml = props.parseHtml;\n this.rules = props.rules;\n }\n\n serializeEls = (node) => {\n let children = (node.children || []).map((n) => this.serializeEls(n));\n\n const correctRule = this.rules.reduce((res, rule) => {\n return res || rule.serialize(node, children);\n }, null);\n\n if (correctRule) {\n return correctRule;\n }\n\n const key = ReactEditor.findKey(undefined, node);\n\n switch (node.type) {\n case 'quote':\n return (\n <blockquote key={key}>\n <p>{children}</p>\n </blockquote>\n );\n case 'paragraph':\n return <p key={key}>{children}</p>;\n case 'link':\n return (\n <a key={key} href={escapeHtml(node.url)}>\n {children}\n </a>\n );\n default:\n return children;\n }\n };\n\n serialize = (node) => {\n const deserialized = this.serializeEls(node);\n const html = ReactServer.renderToStaticMarkup(React.createElement('body', null, deserialized));\n const inner = html.slice(6, -7);\n return inner;\n };\n\n deserialize = (html) => {\n let body = this.parseHtml(html);\n\n if (\n !body.firstChild ||\n body.firstChild.nodeType === Node.TEXT_NODE ||\n !Object.keys(BLOCK_TAGS).includes(body.firstChild.tagName.toLowerCase()) ||\n Object.keys(MARK_TAGS).includes(body.firstChild.tagName.toLowerCase())\n ) {\n body = this.parseHtml(`<p>${html}</p>`);\n }\n\n return this.deserializeEls(body);\n };\n\n deserializeEls = (element, markAttributes = {}) => {\n if (element.nodeType === Node.TEXT_NODE) {\n return jsx('text', markAttributes, element.textContent);\n } else if (element.nodeType !== Node.ELEMENT_NODE) {\n return null;\n }\n\n const nodeAttributes = { ...markAttributes };\n\n // define attributes for text nodes\n if (element.nodeName === 'STRONG') {\n nodeAttributes.bold = true;\n }\n\n const nextFn = (nodes) => {\n const childNodes = Array.from(nodes);\n const children = Array.from(childNodes)\n .map((node) => this.deserializeEls(node, nodeAttributes))\n .flat();\n\n if (children.length === 0) {\n children.push(jsx('text', nodeAttributes, ''));\n }\n\n return children;\n };\n\n const correctRule = this.rules.reduce((res, rule) => {\n return res || rule.deserialize(element, nextFn);\n }, null);\n\n if (correctRule) {\n return correctRule;\n }\n\n const childNodes = Array.from(element.childNodes);\n const children = Array.from(childNodes)\n .map((node) => this.deserializeEls(node, nodeAttributes))\n .flat();\n\n if (children.length === 0) {\n children.push(jsx('text', nodeAttributes, ''));\n }\n\n switch (element.nodeName) {\n case 'TABLE':\n return jsx('element', { type: 'table' }, children);\n case 'TBODY':\n return jsx('element', { type: 'tbody' }, children);\n case 'TR':\n return jsx('element', { type: 'tr' }, children);\n case 'TD':\n return jsx('element', { type: 'td' }, children);\n case 'BODY':\n return jsx('fragment', {}, children);\n case 'BR':\n return '\\n';\n case 'BLOCKQUOTE':\n return jsx('element', { type: 'quote' }, children);\n case 'P':\n return jsx('element', { type: 'paragraph' }, children);\n case 'A':\n return jsx('element', { type: 'link', url: element.getAttribute('href') }, children);\n default:\n return children;\n }\n };\n}\n\nexport default Html;\n"],"file":"test-serializer.js"}
1
+ {"version":3,"sources":["../../src/code/editable-html/test-serializer.js"],"names":["Html","props","node","children","map","n","serializeEls","correctRule","rules","reduce","res","rule","serialize","key","ReactEditor","findKey","undefined","type","url","deserialized","html","ReactServer","renderToStaticMarkup","React","createElement","inner","slice","body","parseHtml","firstChild","nodeType","Node","TEXT_NODE","Object","keys","BLOCK_TAGS","includes","tagName","toLowerCase","MARK_TAGS","deserializeEls","element","markAttributes","textContent","ELEMENT_NODE","nodeAttributes","nodeName","bold","nextFn","nodes","childNodes","Array","from","flat","length","push","deserialize","getAttribute","defaultBlock"],"mappings":"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","sourcesContent":["import React from 'react';\nimport ReactServer from 'react-dom/server';\nimport escapeHtml from 'escape-html';\nimport { ReactEditor } from 'slate-react';\nimport { jsx } from 'slate-hyperscript';\nimport { MARK_TAGS } from './new-serialization';\nimport { BLOCK_TAGS } from './block-tags';\n\nclass Html {\n constructor(props) {\n this.defaultBlock = props.defaultBlock;\n this.parseHtml = props.parseHtml;\n this.rules = props.rules;\n }\n\n serializeEls = (node) => {\n let children = (node.children || []).map((n) => this.serializeEls(n));\n\n const correctRule = this.rules.reduce((res, rule) => {\n return res || rule.serialize(node, children);\n }, null);\n\n if (correctRule) {\n return correctRule;\n }\n\n const key = ReactEditor.findKey(undefined, node);\n\n switch (node.type) {\n case 'quote':\n return (\n <blockquote key={key}>\n <p>{children}</p>\n </blockquote>\n );\n case 'paragraph':\n return <p key={key}>{children}</p>;\n case 'link':\n return (\n <a key={key} href={escapeHtml(node.url)}>\n {children}\n </a>\n );\n default:\n return children;\n }\n };\n\n serialize = (node) => {\n const deserialized = this.serializeEls(node);\n const html = ReactServer.renderToStaticMarkup(React.createElement('body', null, deserialized));\n const inner = html.slice(6, -7);\n return inner;\n };\n\n deserialize = (html) => {\n let body = this.parseHtml(html);\n\n if (\n !body.firstChild ||\n body.firstChild.nodeType === Node.TEXT_NODE ||\n !Object.keys(BLOCK_TAGS).includes(body.firstChild.tagName.toLowerCase()) ||\n Object.keys(MARK_TAGS).includes(body.firstChild.tagName.toLowerCase())\n ) {\n body = this.parseHtml(`<div>${html}</div>`);\n }\n\n return this.deserializeEls(body);\n };\n\n deserializeEls = (element, markAttributes = {}) => {\n if (element.nodeType === Node.TEXT_NODE) {\n return jsx('text', markAttributes, element.textContent);\n } else if (element.nodeType !== Node.ELEMENT_NODE) {\n return null;\n }\n\n const nodeAttributes = { ...markAttributes };\n\n // define attributes for text nodes\n if (element.nodeName === 'STRONG') {\n nodeAttributes.bold = true;\n }\n\n const nextFn = (nodes) => {\n const childNodes = Array.from(nodes);\n const children = Array.from(childNodes)\n .map((node) => this.deserializeEls(node, nodeAttributes))\n .flat();\n\n if (children.length === 0) {\n children.push(jsx('text', nodeAttributes, ''));\n }\n\n return children;\n };\n\n const correctRule = this.rules.reduce((res, rule) => {\n return res || rule.deserialize(element, nextFn);\n }, null);\n\n if (correctRule) {\n return correctRule;\n }\n\n const childNodes = Array.from(element.childNodes);\n const children = Array.from(childNodes)\n .map((node) => this.deserializeEls(node, nodeAttributes))\n .flat();\n\n if (children.length === 0) {\n children.push(jsx('text', nodeAttributes, ''));\n }\n\n switch (element.nodeName) {\n case 'TABLE':\n return jsx('element', { type: 'table' }, children);\n case 'TBODY':\n return jsx('element', { type: 'tbody' }, children);\n case 'TR':\n return jsx('element', { type: 'tr' }, children);\n case 'TD':\n return jsx('element', { type: 'td' }, children);\n case 'BODY':\n return jsx('fragment', {}, children);\n case 'BR':\n return '\\n';\n case 'BLOCKQUOTE':\n return jsx('element', { type: 'quote' }, children);\n case 'P':\n return jsx('element', { type: 'paragraph' }, children);\n case 'A':\n return jsx('element', { type: 'link', url: element.getAttribute('href') }, children);\n default:\n return children;\n }\n };\n}\n\nexport default Html;\n"],"file":"test-serializer.js"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pie-lib/pie-toolbox",
3
- "version": "1.16.5-next.50+82ece7a5",
3
+ "version": "1.16.5-next.55+55cf0cde",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -86,5 +86,5 @@
86
86
  "react": "^16.8.1",
87
87
  "react-dom": "^16.8.1"
88
88
  },
89
- "gitHead": "82ece7a5ca803dacb183c46479df7c8dd11b0478"
89
+ "gitHead": "55cf0cdec9f22bcb0f6218c9eebd21a0b52f5355"
90
90
  }