@pie-lib/editable-html 10.0.0-beta.5 → 10.0.0-beta.7

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 (144) hide show
  1. package/CHANGELOG.md +255 -152
  2. package/lib/components.js +15 -39
  3. package/lib/components.js.map +1 -1
  4. package/lib/editor.js +200 -356
  5. package/lib/editor.js.map +1 -1
  6. package/lib/index.js +25 -49
  7. package/lib/index.js.map +1 -1
  8. package/lib/new-serialization.js +6 -67
  9. package/lib/new-serialization.js.map +1 -1
  10. package/lib/parse-html.js +7 -6
  11. package/lib/parse-html.js.map +1 -1
  12. package/lib/plugins/characters/custom-popper.js +3 -13
  13. package/lib/plugins/characters/custom-popper.js.map +1 -1
  14. package/lib/plugins/characters/index.js +20 -59
  15. package/lib/plugins/characters/index.js.map +1 -1
  16. package/lib/plugins/characters/utils.js +1 -1
  17. package/lib/plugins/characters/utils.js.map +1 -1
  18. package/lib/plugins/hotKeys/index.js +9 -16
  19. package/lib/plugins/hotKeys/index.js.map +1 -1
  20. package/lib/plugins/image/alt-dialog.js +6 -27
  21. package/lib/plugins/image/alt-dialog.js.map +1 -1
  22. package/lib/plugins/image/component.js +42 -99
  23. package/lib/plugins/image/component.js.map +1 -1
  24. package/lib/plugins/image/image-toolbar.js +14 -50
  25. package/lib/plugins/image/image-toolbar.js.map +1 -1
  26. package/lib/plugins/image/index.js +16 -59
  27. package/lib/plugins/image/index.js.map +1 -1
  28. package/lib/plugins/image/insert-image-handler.js +13 -25
  29. package/lib/plugins/image/insert-image-handler.js.map +1 -1
  30. package/lib/plugins/index.js +6 -36
  31. package/lib/plugins/index.js.map +1 -1
  32. package/lib/plugins/list/index.js +11 -46
  33. package/lib/plugins/list/index.js.map +1 -1
  34. package/lib/plugins/math/index.js +89 -93
  35. package/lib/plugins/math/index.js.map +1 -1
  36. package/lib/plugins/media/index.js +32 -109
  37. package/lib/plugins/media/index.js.map +1 -1
  38. package/lib/plugins/media/media-dialog.js +107 -195
  39. package/lib/plugins/media/media-dialog.js.map +1 -1
  40. package/lib/plugins/media/media-toolbar.js +7 -27
  41. package/lib/plugins/media/media-toolbar.js.map +1 -1
  42. package/lib/plugins/media/media-wrapper.js +9 -14
  43. package/lib/plugins/media/media-wrapper.js.map +1 -1
  44. package/lib/plugins/respArea/drag-in-the-blank/choice.js +13 -53
  45. package/lib/plugins/respArea/drag-in-the-blank/choice.js.map +1 -1
  46. package/lib/plugins/respArea/drag-in-the-blank/index.js +6 -20
  47. package/lib/plugins/respArea/drag-in-the-blank/index.js.map +1 -1
  48. package/lib/plugins/respArea/explicit-constructed-response/index.js +5 -10
  49. package/lib/plugins/respArea/explicit-constructed-response/index.js.map +1 -1
  50. package/lib/plugins/respArea/icons/index.js +16 -31
  51. package/lib/plugins/respArea/icons/index.js.map +1 -1
  52. package/lib/plugins/respArea/index.js +7 -54
  53. package/lib/plugins/respArea/index.js.map +1 -1
  54. package/lib/plugins/respArea/inline-dropdown/index.js +3 -10
  55. package/lib/plugins/respArea/inline-dropdown/index.js.map +1 -1
  56. package/lib/plugins/respArea/utils.js +6 -21
  57. package/lib/plugins/respArea/utils.js.map +1 -1
  58. package/lib/plugins/table/icons/index.js +1 -8
  59. package/lib/plugins/table/icons/index.js.map +1 -1
  60. package/lib/plugins/table/index.js +54 -187
  61. package/lib/plugins/table/index.js.map +1 -1
  62. package/lib/plugins/table/table-toolbar.js +12 -44
  63. package/lib/plugins/table/table-toolbar.js.map +1 -1
  64. package/lib/plugins/toolbar/default-toolbar.js +17 -46
  65. package/lib/plugins/toolbar/default-toolbar.js.map +1 -1
  66. package/lib/plugins/toolbar/done-button.js +2 -10
  67. package/lib/plugins/toolbar/done-button.js.map +1 -1
  68. package/lib/plugins/toolbar/editor-and-toolbar.js +134 -144
  69. package/lib/plugins/toolbar/editor-and-toolbar.js.map +1 -1
  70. package/lib/plugins/toolbar/index.js +2 -6
  71. package/lib/plugins/toolbar/index.js.map +1 -1
  72. package/lib/plugins/toolbar/toolbar-buttons.js +9 -40
  73. package/lib/plugins/toolbar/toolbar-buttons.js.map +1 -1
  74. package/lib/plugins/toolbar/toolbar.js +29 -83
  75. package/lib/plugins/toolbar/toolbar.js.map +1 -1
  76. package/lib/plugins/utils.js +8 -30
  77. package/lib/plugins/utils.js.map +1 -1
  78. package/lib/serialization.js +11 -69
  79. package/lib/serialization.js.map +1 -1
  80. package/lib/test-serializer.js +3 -46
  81. package/lib/test-serializer.js.map +1 -1
  82. package/lib/theme.js +1 -1
  83. package/lib/theme.js.map +1 -1
  84. package/package.json +7 -7
  85. package/playground/image/data.js +20 -20
  86. package/playground/image/index.html +20 -22
  87. package/playground/image/index.jsx +10 -12
  88. package/playground/index.html +23 -25
  89. package/playground/mathquill/index.html +20 -23
  90. package/playground/mathquill/index.jsx +22 -18
  91. package/playground/prod-test/index.html +20 -24
  92. package/playground/prod-test/index.jsx +3 -5
  93. package/playground/schema-override/data.js +10 -10
  94. package/playground/schema-override/image-plugin.jsx +4 -3
  95. package/playground/schema-override/index.html +19 -21
  96. package/playground/schema-override/index.jsx +14 -13
  97. package/playground/serialization/data.js +10 -10
  98. package/playground/serialization/image-plugin.jsx +4 -3
  99. package/playground/serialization/index.html +20 -22
  100. package/playground/table-examples.html +8 -5
  101. package/playground/webpack.config.js +10 -10
  102. package/src/components.js +7 -7
  103. package/src/editor.jsx +144 -155
  104. package/src/index.jsx +24 -17
  105. package/src/new-serialization.jsx +22 -22
  106. package/src/parse-html.js +1 -1
  107. package/src/plugins/characters/custom-popper.js +7 -7
  108. package/src/plugins/characters/index.jsx +36 -26
  109. package/src/plugins/characters/utils.js +81 -81
  110. package/src/plugins/hotKeys/index.js +3 -3
  111. package/src/plugins/image/alt-dialog.jsx +5 -4
  112. package/src/plugins/image/component.jsx +52 -53
  113. package/src/plugins/image/image-toolbar.jsx +19 -27
  114. package/src/plugins/image/index.jsx +41 -47
  115. package/src/plugins/image/insert-image-handler.js +23 -14
  116. package/src/plugins/index.jsx +8 -10
  117. package/src/plugins/list/index.jsx +21 -24
  118. package/src/plugins/math/index.jsx +93 -40
  119. package/src/plugins/media/index.jsx +42 -42
  120. package/src/plugins/media/media-dialog.js +63 -89
  121. package/src/plugins/media/media-toolbar.jsx +8 -8
  122. package/src/plugins/media/media-wrapper.jsx +10 -7
  123. package/src/plugins/respArea/drag-in-the-blank/choice.jsx +19 -21
  124. package/src/plugins/respArea/drag-in-the-blank/index.jsx +10 -12
  125. package/src/plugins/respArea/explicit-constructed-response/index.jsx +6 -5
  126. package/src/plugins/respArea/icons/index.jsx +14 -11
  127. package/src/plugins/respArea/index.jsx +32 -56
  128. package/src/plugins/respArea/inline-dropdown/index.jsx +6 -6
  129. package/src/plugins/respArea/utils.jsx +15 -11
  130. package/src/plugins/table/icons/index.jsx +11 -17
  131. package/src/plugins/table/index.jsx +69 -69
  132. package/src/plugins/table/table-toolbar.jsx +8 -13
  133. package/src/plugins/toolbar/default-toolbar.jsx +15 -17
  134. package/src/plugins/toolbar/done-button.jsx +4 -4
  135. package/src/plugins/toolbar/editor-and-toolbar.jsx +50 -54
  136. package/src/plugins/toolbar/index.jsx +3 -2
  137. package/src/plugins/toolbar/toolbar-buttons.jsx +11 -11
  138. package/src/plugins/toolbar/toolbar.jsx +43 -42
  139. package/src/plugins/utils.js +7 -8
  140. package/src/serialization.jsx +34 -32
  141. package/src/test-serializer.js +13 -13
  142. package/lib/old-serialization.js +0 -330
  143. package/lib/slate-editor.js +0 -302
  144. package/package-lock.json +0 -3762
@@ -1 +1 @@
1
- {"version":3,"file":"serialization.js","names":["log","debug","BLOCK_TAGS","div","span","p","blockquote","pre","h1","h2","h3","h4","h5","h6","MARK_TAGS","b","em","u","s","code","strong","parseStyleString","regex","match","result","exec","trim","getBase64","file","Promise","resolve","reject","reader","FileReader","readAsDataURL","onload","onerror","error","reactAttributes","o","toStyleObject","camelize","addUnits","attributesToMap","el","acc","attribute","value","getAttribute","styleString","reactStyleObject","attributes","blocks","deserialize","next","block","tagName","toLowerCase","childNodes","length","cn","object","type","data","reduce","nodes","serialize","children","jsonData","toJSON","key","Tag","marks","mark","Mark","isMark","findPreviousText","nodeName","previousSibling","TEXT_RULE","normalize","leaves","text","nodeValue","obj","split","array","i","push","RULES","listSerialization","mathSerialization","mediaSerialization","imgSerialization","tableSerialization","responseAreaSerialization","allWhitespace","node","test","textContent","defaultParseHtml","html","DOMParser","Error","parsed","parseFromString","body","textNodes","document","createTreeWalker","NodeFilter","SHOW_TEXT","n","nextNode","parentNode","removeChild","parseHtml","window","serializer","Html","defaultBlock","rules","_extends","Object","assign","target","arguments","source","prototype","hasOwnProperty","call","options","undefined","_options$toJSON","fragment","Array","from","deserializeElements","memo","original","_block","isVoid","json","schema","ret","Value","fromJSON","htmlToValue","e","console","valueToHtml"],"sources":["../src/serialization.jsx"],"sourcesContent":["import Html from 'slate-html-serializer';\nimport React from 'react';\nimport debug from 'debug';\nimport { object as toStyleObject } from 'to-style';\n\nimport { serialization as imgSerialization } from './plugins/image';\nimport { serialization as mathSerialization } from './plugins/math';\nimport { serialization as mediaSerialization } from './plugins/media';\nimport { serialization as listSerialization } from './plugins/list';\nimport { serialization as tableSerialization } from './plugins/table';\nimport { serialization as responseAreaSerialization } from './plugins/respArea';\nimport { Mark, Value } from 'slate';\n\nconst log = debug('@pie-lib:editable-html:serialization');\n\n/**\n * Tags to blocks.\n *\n * @type {Object}\n */\n\nexport const BLOCK_TAGS = {\n div: 'div',\n span: 'span',\n p: 'paragraph',\n blockquote: 'quote',\n pre: 'code',\n h1: 'heading-one',\n h2: 'heading-two',\n h3: 'heading-three',\n h4: 'heading-four',\n h5: 'heading-five',\n h6: 'heading-six'\n};\n\n/**\n * Tags to marks.\n *\n * @type {Object}\n */\n\nconst MARK_TAGS = {\n b: 'bold',\n em: 'italic',\n u: 'underline',\n s: 'strikethrough',\n code: 'code',\n strong: 'bold'\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 getBase64 = file => {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = () => resolve(reader.result);\n reader.onerror = error => reject(error);\n });\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 attributes = ['border', 'cellpadding', 'cellspacing', 'class', 'style'];\n\n/**\n * Serializer rules.\n *\n * @type {Array}\n */\n\nconst blocks = {\n deserialize(el, next) {\n log('[blocks:deserialize] block: ', el);\n const block = BLOCK_TAGS[el.tagName.toLowerCase()];\n if (!block) return;\n log('[blocks:deserialize] block: ', block);\n\n if (el.childNodes.length === 1) {\n const cn = el.childNodes[0];\n if (cn && cn.tagName && cn.tagName.toLowerCase() === block) {\n log('[we have a child node of the same]...');\n return;\n }\n }\n\n return {\n object: 'block',\n type: block,\n /**\n * Here for rendering styles for all block elements\n */\n data: { attributes: attributes.reduce(attributesToMap(el), {}) },\n nodes: next(el.childNodes)\n };\n },\n serialize: (object, children) => {\n if (object.object !== 'block') return;\n\n const jsonData = object.data.toJSON();\n\n log('[blocks:serialize] object: ', object, children);\n let key;\n\n for (key in BLOCK_TAGS) {\n if (BLOCK_TAGS[key] === object.type) {\n const Tag = key;\n\n return <Tag {...jsonData.attributes}>{children}</Tag>;\n }\n }\n }\n};\n\nconst marks = {\n deserialize(el, next) {\n const mark = MARK_TAGS[el.tagName.toLowerCase()];\n if (!mark) return;\n log('[deserialize] mark: ', mark);\n return {\n object: 'mark',\n type: mark,\n nodes: next(el.childNodes)\n };\n },\n serialize(object, children) {\n if (Mark.isMark(object)) {\n for (var key in MARK_TAGS) {\n if (MARK_TAGS[key] === object.type) {\n const Tag = key;\n return <Tag>{children}</Tag>;\n }\n }\n }\n }\n};\n\nconst findPreviousText = el => {\n if (el.nodeName === '#text') {\n return el;\n }\n\n if (el.previousSibling) {\n return findPreviousText(el.previousSibling);\n }\n\n return null;\n};\n\nexport const TEXT_RULE = {\n deserialize(el) {\n /**\n * This needs to be called on the dom element in order to merge the adjacent text nodes together\n * */\n el.normalize();\n\n if (el.tagName && el.tagName.toLowerCase() === 'br') {\n return {\n object: 'text',\n leaves: [\n {\n object: 'leaf',\n text: '\\n'\n }\n ]\n };\n }\n\n if (el.nodeName === '#text') {\n if (el.nodeValue && el.nodeValue.match(/<!--.*?-->/)) return;\n\n log('[text:deserialize] return text object..');\n return {\n object: 'text',\n leaves: [\n {\n object: 'leaf',\n text: el.nodeValue\n }\n ]\n };\n }\n },\n\n serialize(obj, children) {\n if (obj.object === 'string') {\n return children.split('\\n').reduce((array, text, i) => {\n if (i !== 0) array.push(<br />);\n array.push(text);\n return array;\n }, []);\n }\n }\n};\n\nconst RULES = [\n listSerialization,\n mathSerialization,\n mediaSerialization,\n imgSerialization,\n tableSerialization,\n responseAreaSerialization,\n TEXT_RULE,\n blocks,\n marks\n];\n\nfunction allWhitespace(node) {\n // Use ECMA-262 Edition 3 String and RegExp features\n return !/[^\\t\\n\\r ]/.test(node.textContent);\n}\n\nfunction defaultParseHtml(html) {\n if (typeof DOMParser === 'undefined') {\n throw new Error(\n 'The native `DOMParser` global which the `Html` serializer uses by default is not present in this environment. You must supply the `options.parseHtml` function instead.'\n );\n }\n\n const parsed = new DOMParser().parseFromString(html, 'text/html');\n\n const { body } = parsed;\n var textNodes = document.createTreeWalker(body, NodeFilter.SHOW_TEXT, null, null);\n var n = textNodes.nextNode();\n\n while (n) {\n if (allWhitespace(n) || n.nodeValue === '\\u200B') {\n n.parentNode.removeChild(n);\n }\n n = textNodes.nextNode();\n }\n\n return body;\n}\n\n/** If this lib is used on the server side, we need to bypass using the DOMParser - just put in a stub. */\nconst parseHtml =\n typeof window === 'undefined'\n ? () => ({\n childNodes: []\n })\n : defaultParseHtml;\n\nconst serializer = new Html({\n defaultBlock: 'div',\n rules: RULES,\n parseHtml\n});\n\nconst _extends =\n Object.assign ||\n function(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n/**\n * This is needed in order to override the function that eventually leads\n * to the max iteration of 12, which in most cases it's not enough. The newer versions\n * have a different way to calculate this, but updating to a newer version of slate\n * requires a lot of work fixing other issues. So we just increase the rules by 1000,\n * which means a lot of iterations.\n * Below is the code that calculates the max iterations.\n * var max = schema.stack.plugins.length + schema.rules.length + 1;\n */\nserializer.deserialize = function deserialize(html) {\n const options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const _options$toJSON = options.toJSON;\n const toJSON = _options$toJSON === undefined ? false : _options$toJSON;\n const defaultBlock = this.defaultBlock;\n const parseHtml = this.parseHtml;\n\n const fragment = parseHtml(html);\n const children = Array.from(fragment.childNodes);\n let nodes = this.deserializeElements(children);\n\n // COMPAT: ensure that all top-level inline nodes are wrapped into a block.\n nodes = nodes.reduce(function(memo, node, i, original) {\n if (node.object === 'block') {\n memo.push(node);\n return memo;\n }\n\n if (i > 0 && original[i - 1].object !== 'block') {\n const _block = memo[memo.length - 1];\n\n _block.nodes.push(node);\n return memo;\n }\n\n const block = _extends({ object: 'block', data: {}, isVoid: false }, defaultBlock, {\n nodes: [node]\n });\n\n memo.push(block);\n return memo;\n }, []);\n\n if (nodes.length === 0) {\n nodes = [\n _extends({ object: 'block', data: {}, isVoid: false }, defaultBlock, {\n nodes: [{ object: 'text', leaves: [{ object: 'leaf', text: '', marks: [] }] }]\n })\n ];\n }\n\n const json = {\n object: 'value',\n document: {\n object: 'document',\n data: {},\n nodes: nodes\n },\n schema: {\n rules: []\n }\n };\n\n let i;\n\n for (i = 0; i < 3000; i++) {\n json.schema.rules.push({\n match: { object: 'document' },\n nodes: [{ match: { object: 'block' } }]\n });\n }\n\n const ret = toJSON ? json : Value.fromJSON(json);\n\n if (ret) {\n return ret;\n }\n\n return null;\n};\n\nexport const htmlToValue = html => {\n try {\n return serializer.deserialize(html);\n } catch (e) {\n console.log(\"Couldn't parse html: \", e);\n return {};\n }\n};\n\nexport const valueToHtml = value => serializer.serialize(value);\n\n/**\n *\n * <div><div>a</div></div> -> <div>a</div>\n *\n * <div><div>a</div><div>b</div></div> -> <div>a</div><div>b</div>\n * <div><div>a</div>4444<div>b</div></div> -> <div>a</div>4444<div>b</div>\n */\n"],"mappings":"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"}
1
+ {"version":3,"file":"serialization.js","names":["_slateHtmlSerializer","_interopRequireDefault","require","_react","_debug","_toStyle","_image","_math","_media","_list","_table","_respArea","_slate","log","debug","BLOCK_TAGS","div","span","p","blockquote","pre","h1","h2","h3","h4","h5","h6","exports","MARK_TAGS","b","em","u","s","code","strong","parseStyleString","regex","match","result","exec","trim","getBase64","file","Promise","resolve","reject","reader","FileReader","readAsDataURL","onload","onerror","error","reactAttributes","o","toStyleObject","camelize","addUnits","attributesToMap","el","acc","attribute","value","getAttribute","styleString","reactStyleObject","attributes","blocks","deserialize","next","block","tagName","toLowerCase","childNodes","length","cn","object","type","data","reduce","nodes","serialize","children","jsonData","key","Tag","createElement","marks","mark","Mark","isMark","findPreviousText","nodeName","previousSibling","TEXT_RULE","normalize","leaves","text","nodeValue","obj","split","array","i","push","RULES","listSerialization","mathSerialization","mediaSerialization","imgSerialization","tableSerialization","responseAreaSerialization","allWhitespace","node","test","textContent","defaultParseHtml","html","DOMParser","Error","parsed","parseFromString","body","textNodes","document","createTreeWalker","NodeFilter","SHOW_TEXT","n","nextNode","parentNode","removeChild","parseHtml","window","serializer","Html","defaultBlock","rules","_extends","Object","assign","target","arguments","source","prototype","hasOwnProperty","call","options","undefined","_options$toJSON","toJSON","fragment","Array","from","deserializeElements","memo","original","_block","isVoid","json","schema","ret","Value","fromJSON","htmlToValue","e","console","valueToHtml"],"sources":["../src/serialization.jsx"],"sourcesContent":["import Html from 'slate-html-serializer';\nimport React from 'react';\nimport debug from 'debug';\nimport { object as toStyleObject } from 'to-style';\n\nimport { serialization as imgSerialization } from './plugins/image';\nimport { serialization as mathSerialization } from './plugins/math';\nimport { serialization as mediaSerialization } from './plugins/media';\nimport { serialization as listSerialization } from './plugins/list';\nimport { serialization as tableSerialization } from './plugins/table';\nimport { serialization as responseAreaSerialization } from './plugins/respArea';\nimport { Mark, Value } from 'slate';\n\nconst log = debug('@pie-lib:editable-html:serialization');\n\n/**\n * Tags to blocks.\n *\n * @type {Object}\n */\n\nexport const BLOCK_TAGS = {\n div: 'div',\n span: 'span',\n p: 'paragraph',\n blockquote: 'quote',\n pre: 'code',\n h1: 'heading-one',\n h2: 'heading-two',\n h3: 'heading-three',\n h4: 'heading-four',\n h5: 'heading-five',\n h6: 'heading-six',\n};\n\n/**\n * Tags to marks.\n *\n * @type {Object}\n */\n\nconst MARK_TAGS = {\n b: 'bold',\n em: 'italic',\n u: 'underline',\n s: 'strikethrough',\n code: 'code',\n strong: 'bold',\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 getBase64 = (file) => {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = () => resolve(reader.result);\n reader.onerror = (error) => reject(error);\n });\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 attributes = ['border', 'cellpadding', 'cellspacing', 'class', 'style'];\n\n/**\n * Serializer rules.\n *\n * @type {Array}\n */\n\nconst blocks = {\n deserialize(el, next) {\n log('[blocks:deserialize] block: ', el);\n const block = BLOCK_TAGS[el.tagName.toLowerCase()];\n if (!block) return;\n log('[blocks:deserialize] block: ', block);\n\n if (el.childNodes.length === 1) {\n const cn = el.childNodes[0];\n if (cn && cn.tagName && cn.tagName.toLowerCase() === block) {\n log('[we have a child node of the same]...');\n return;\n }\n }\n\n return {\n object: 'block',\n type: block,\n /**\n * Here for rendering styles for all block elements\n */\n data: { attributes: attributes.reduce(attributesToMap(el), {}) },\n nodes: next(el.childNodes),\n };\n },\n serialize: (object, children) => {\n if (object.object !== 'block') return;\n\n const jsonData = object.data;\n\n log('[blocks:serialize] object: ', object, children);\n let key;\n\n for (key in BLOCK_TAGS) {\n if (BLOCK_TAGS[key] === object.type) {\n const Tag = key;\n\n return <Tag {...jsonData.attributes}>{children}</Tag>;\n }\n }\n },\n};\n\nconst marks = {\n deserialize(el, next) {\n const mark = MARK_TAGS[el.tagName.toLowerCase()];\n if (!mark) return;\n log('[deserialize] mark: ', mark);\n return {\n object: 'mark',\n type: mark,\n nodes: next(el.childNodes),\n };\n },\n serialize(object, children) {\n if (Mark.isMark(object)) {\n for (var key in MARK_TAGS) {\n if (MARK_TAGS[key] === object.type) {\n const Tag = key;\n return <Tag>{children}</Tag>;\n }\n }\n }\n },\n};\n\n// eslint-disable-next-line no-unused-vars\nconst findPreviousText = (el) => {\n if (el.nodeName === '#text') {\n return el;\n }\n\n if (el.previousSibling) {\n return findPreviousText(el.previousSibling);\n }\n\n return null;\n};\n\nexport const TEXT_RULE = {\n deserialize(el) {\n /**\n * This needs to be called on the dom element in order to merge the adjacent text nodes together\n * */\n el.normalize();\n\n if (el.tagName && el.tagName.toLowerCase() === 'br') {\n return {\n object: 'text',\n leaves: [\n {\n object: 'leaf',\n text: '\\n',\n },\n ],\n };\n }\n\n if (el.nodeName === '#text') {\n if (el.nodeValue && el.nodeValue.match(/<!--.*?-->/)) return;\n\n log('[text:deserialize] return text object..');\n return {\n object: 'text',\n leaves: [\n {\n object: 'leaf',\n text: el.nodeValue,\n },\n ],\n };\n }\n },\n\n serialize(obj, children) {\n if (obj.object === 'string') {\n return children.split('\\n').reduce((array, text, i) => {\n if (i !== 0) array.push(<br />);\n array.push(text);\n return array;\n }, []);\n }\n },\n};\n\nconst RULES = [\n listSerialization,\n mathSerialization,\n mediaSerialization,\n imgSerialization,\n tableSerialization,\n responseAreaSerialization,\n TEXT_RULE,\n blocks,\n marks,\n];\n\nfunction allWhitespace(node) {\n // Use ECMA-262 Edition 3 String and RegExp features\n return !/[^\\t\\n\\r ]/.test(node.textContent);\n}\n\nfunction defaultParseHtml(html) {\n if (typeof DOMParser === 'undefined') {\n throw new Error(\n 'The native `DOMParser` global which the `Html` serializer uses by default is not present in this environment. You must supply the `options.parseHtml` function instead.',\n );\n }\n\n const parsed = new DOMParser().parseFromString(html, 'text/html');\n\n const { body } = parsed;\n var textNodes = document.createTreeWalker(body, NodeFilter.SHOW_TEXT, null, null);\n var n = textNodes.nextNode();\n\n while (n) {\n if (allWhitespace(n) || n.nodeValue === '\\u200B') {\n n.parentNode.removeChild(n);\n }\n n = textNodes.nextNode();\n }\n\n return body;\n}\n\n/** If this lib is used on the server side, we need to bypass using the DOMParser - just put in a stub. */\nconst parseHtml =\n typeof window === 'undefined'\n ? () => ({\n childNodes: [],\n })\n : defaultParseHtml;\n\nconst serializer = new Html({\n defaultBlock: 'div',\n rules: RULES,\n parseHtml,\n});\n\nconst _extends =\n Object.assign ||\n function(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n/**\n * This is needed in order to override the function that eventually leads\n * to the max iteration of 12, which in most cases it's not enough. The newer versions\n * have a different way to calculate this, but updating to a newer version of slate\n * requires a lot of work fixing other issues. So we just increase the rules by 1000,\n * which means a lot of iterations.\n * Below is the code that calculates the max iterations.\n * var max = schema.stack.plugins.length + schema.rules.length + 1;\n */\nserializer.deserialize = function deserialize(html) {\n const options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const _options$toJSON = options.toJSON;\n const toJSON = _options$toJSON === undefined ? false : _options$toJSON;\n const defaultBlock = this.defaultBlock;\n const parseHtml = this.parseHtml;\n\n const fragment = parseHtml(html);\n const children = Array.from(fragment.childNodes);\n let nodes = this.deserializeElements(children);\n\n // COMPAT: ensure that all top-level inline nodes are wrapped into a block.\n nodes = nodes.reduce(function(memo, node, i, original) {\n if (node.object === 'block') {\n memo.push(node);\n return memo;\n }\n\n if (i > 0 && original[i - 1].object !== 'block') {\n const _block = memo[memo.length - 1];\n\n _block.nodes.push(node);\n return memo;\n }\n\n const block = _extends({ object: 'block', data: {}, isVoid: false }, defaultBlock, {\n nodes: [node],\n });\n\n memo.push(block);\n return memo;\n }, []);\n\n if (nodes.length === 0) {\n nodes = [\n _extends({ object: 'block', data: {}, isVoid: false }, defaultBlock, {\n nodes: [{ object: 'text', leaves: [{ object: 'leaf', text: '', marks: [] }] }],\n }),\n ];\n }\n\n const json = {\n object: 'value',\n document: {\n object: 'document',\n data: {},\n nodes: nodes,\n },\n schema: {\n rules: [],\n },\n };\n\n let i;\n\n for (i = 0; i < 3000; i++) {\n json.schema.rules.push({\n match: { object: 'document' },\n nodes: [{ match: { object: 'block' } }],\n });\n }\n\n const ret = toJSON ? json : Value.fromJSON(json);\n\n if (ret) {\n return ret;\n }\n\n return null;\n};\n\nexport const htmlToValue = (html) => {\n try {\n return serializer.deserialize(html);\n } catch (e) {\n // eslint-disable-next-line no-console\n console.log(\"Couldn't parse html: \", e);\n return {};\n }\n};\n\nexport const valueToHtml = (value) => serializer.serialize(value);\n\n/**\n *\n * <div><div>a</div></div> -> <div>a</div>\n *\n * <div><div>a</div><div>b</div></div> -> <div>a</div><div>b</div>\n * <div><div>a</div>4444<div>b</div></div> -> <div>a</div>4444<div>b</div>\n */\n"],"mappings":"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"}
@@ -1,173 +1,130 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports["default"] = void 0;
9
-
10
8
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
11
-
12
9
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
-
14
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
-
16
11
  var _react = _interopRequireDefault(require("react"));
17
-
18
12
  var _server = _interopRequireDefault(require("react-dom/server"));
19
-
20
13
  var _escapeHtml = _interopRequireDefault(require("escape-html"));
21
-
22
14
  var _slate = require("slate");
23
-
24
15
  var _slateHyperscript = require("slate-hyperscript");
25
-
26
16
  var _newSerialization = require("./new-serialization");
27
-
28
17
  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; }
29
-
30
18
  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; }
31
-
32
19
  var Html = /*#__PURE__*/(0, _createClass2["default"])(function Html(props) {
33
20
  var _this = this;
34
-
35
21
  (0, _classCallCheck2["default"])(this, Html);
36
22
  (0, _defineProperty2["default"])(this, "serializeEls", function (node) {
37
23
  var children = (node.children || []).map(function (n) {
38
24
  return _this.serializeEls(n);
39
25
  });
40
-
41
26
  var correctRule = _this.rules.reduce(function (res, rule) {
42
27
  return res || rule.serialize(node, children);
43
28
  }, null);
44
-
45
29
  if (correctRule) {
46
30
  return correctRule;
47
31
  }
48
-
49
32
  switch (node.type) {
50
33
  case 'quote':
51
34
  return /*#__PURE__*/_react["default"].createElement("blockquote", null, /*#__PURE__*/_react["default"].createElement("p", null, children));
52
-
53
35
  case 'paragraph':
54
36
  return /*#__PURE__*/_react["default"].createElement("p", null, children);
55
-
56
37
  case 'link':
57
38
  return /*#__PURE__*/_react["default"].createElement("a", {
58
39
  href: (0, _escapeHtml["default"])(node.url)
59
40
  }, children);
60
-
61
41
  default:
62
42
  return children;
63
43
  }
64
44
  });
65
45
  (0, _defineProperty2["default"])(this, "serialize", function (node) {
66
46
  var deserialized = _this.serializeEls(node);
67
-
68
47
  var html = _server["default"].renderToStaticMarkup( /*#__PURE__*/_react["default"].createElement('body', null, deserialized));
69
-
70
48
  var inner = html.slice(6, -7);
71
49
  return inner;
72
50
  });
73
51
  (0, _defineProperty2["default"])(this, "deserialize", function (html) {
74
52
  var body = _this.parseHtml(html);
75
-
76
53
  if (!body.firstChild || body.firstChild.nodeType === Node.TEXT_NODE || Object.keys(_newSerialization.MARK_TAGS).includes(body.firstChild.tagName.toLowerCase())) {
77
54
  body = _this.parseHtml("<span>".concat(html, "</span>"));
78
55
  }
79
-
80
56
  return _this.deserializeEls(body);
81
57
  });
82
58
  (0, _defineProperty2["default"])(this, "deserializeEls", function (element) {
83
59
  var markAttributes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
84
-
85
60
  if (element.nodeType === Node.TEXT_NODE) {
86
61
  return (0, _slateHyperscript.jsx)('text', markAttributes, element.textContent);
87
62
  } else if (element.nodeType !== Node.ELEMENT_NODE) {
88
63
  return null;
89
64
  }
65
+ var nodeAttributes = _objectSpread({}, markAttributes);
90
66
 
91
- var nodeAttributes = _objectSpread({}, markAttributes); // define attributes for text nodes
92
-
93
-
67
+ // define attributes for text nodes
94
68
  if (element.nodeName === 'STRONG') {
95
69
  nodeAttributes.bold = true;
96
70
  }
97
-
98
71
  var nextFn = function nextFn(nodes) {
99
72
  var childNodes = Array.from(nodes);
100
73
  var children = Array.from(childNodes).map(function (node) {
101
74
  return _this.deserializeEls(node, nodeAttributes);
102
75
  }).flat();
103
-
104
76
  if (children.length === 0) {
105
77
  children.push((0, _slateHyperscript.jsx)('text', nodeAttributes, ''));
106
78
  }
107
-
108
79
  return children;
109
80
  };
110
-
111
81
  var correctRule = _this.rules.reduce(function (res, rule) {
112
82
  return res || rule.deserialize(element, nextFn);
113
83
  }, null);
114
-
115
84
  if (correctRule) {
116
85
  return correctRule;
117
86
  }
118
-
119
87
  var childNodes = Array.from(element.childNodes);
120
88
  var children = Array.from(childNodes).map(function (node) {
121
89
  return _this.deserializeEls(node, nodeAttributes);
122
90
  }).flat();
123
-
124
91
  if (children.length === 0) {
125
92
  children.push((0, _slateHyperscript.jsx)('text', nodeAttributes, ''));
126
93
  }
127
-
128
94
  switch (element.nodeName) {
129
95
  case 'TABLE':
130
96
  return (0, _slateHyperscript.jsx)('element', {
131
97
  type: 'table'
132
98
  }, children);
133
-
134
99
  case 'TBODY':
135
100
  return (0, _slateHyperscript.jsx)('element', {
136
101
  type: 'tbody'
137
102
  }, children);
138
-
139
103
  case 'TR':
140
104
  return (0, _slateHyperscript.jsx)('element', {
141
105
  type: 'tr'
142
106
  }, children);
143
-
144
107
  case 'TD':
145
108
  return (0, _slateHyperscript.jsx)('element', {
146
109
  type: 'td'
147
110
  }, children);
148
-
149
111
  case 'BODY':
150
112
  return (0, _slateHyperscript.jsx)('fragment', {}, children);
151
-
152
113
  case 'BR':
153
114
  return '\n';
154
-
155
115
  case 'BLOCKQUOTE':
156
116
  return (0, _slateHyperscript.jsx)('element', {
157
117
  type: 'quote'
158
118
  }, children);
159
-
160
119
  case 'P':
161
120
  return (0, _slateHyperscript.jsx)('element', {
162
121
  type: 'paragraph'
163
122
  }, children);
164
-
165
123
  case 'A':
166
124
  return (0, _slateHyperscript.jsx)('element', {
167
125
  type: 'link',
168
126
  url: element.getAttribute('href')
169
127
  }, children);
170
-
171
128
  default:
172
129
  return children;
173
130
  }
@@ -178,4 +135,4 @@ var Html = /*#__PURE__*/(0, _createClass2["default"])(function Html(props) {
178
135
  });
179
136
  var _default = Html;
180
137
  exports["default"] = _default;
181
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJIdG1sIiwicHJvcHMiLCJub2RlIiwiY2hpbGRyZW4iLCJtYXAiLCJuIiwic2VyaWFsaXplRWxzIiwiY29ycmVjdFJ1bGUiLCJydWxlcyIsInJlZHVjZSIsInJlcyIsInJ1bGUiLCJzZXJpYWxpemUiLCJ0eXBlIiwiZXNjYXBlSHRtbCIsInVybCIsImRlc2VyaWFsaXplZCIsImh0bWwiLCJSZWFjdFNlcnZlciIsInJlbmRlclRvU3RhdGljTWFya3VwIiwiUmVhY3QiLCJjcmVhdGVFbGVtZW50IiwiaW5uZXIiLCJzbGljZSIsImJvZHkiLCJwYXJzZUh0bWwiLCJmaXJzdENoaWxkIiwibm9kZVR5cGUiLCJOb2RlIiwiVEVYVF9OT0RFIiwiT2JqZWN0Iiwia2V5cyIsIk1BUktfVEFHUyIsImluY2x1ZGVzIiwidGFnTmFtZSIsInRvTG93ZXJDYXNlIiwiZGVzZXJpYWxpemVFbHMiLCJlbGVtZW50IiwibWFya0F0dHJpYnV0ZXMiLCJqc3giLCJ0ZXh0Q29udGVudCIsIkVMRU1FTlRfTk9ERSIsIm5vZGVBdHRyaWJ1dGVzIiwibm9kZU5hbWUiLCJib2xkIiwibmV4dEZuIiwibm9kZXMiLCJjaGlsZE5vZGVzIiwiQXJyYXkiLCJmcm9tIiwiZmxhdCIsImxlbmd0aCIsInB1c2giLCJkZXNlcmlhbGl6ZSIsImdldEF0dHJpYnV0ZSIsImRlZmF1bHRCbG9jayJdLCJzb3VyY2VzIjpbIi4uL3NyYy90ZXN0LXNlcmlhbGl6ZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBSZWFjdFNlcnZlciBmcm9tICdyZWFjdC1kb20vc2VydmVyJztcbmltcG9ydCBlc2NhcGVIdG1sIGZyb20gJ2VzY2FwZS1odG1sJztcbmltcG9ydCB7IFRleHQgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBqc3ggfSBmcm9tICdzbGF0ZS1oeXBlcnNjcmlwdCc7XG5pbXBvcnQgeyBNQVJLX1RBR1MgfSBmcm9tICcuL25ldy1zZXJpYWxpemF0aW9uJztcblxuY2xhc3MgSHRtbCB7XG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgdGhpcy5kZWZhdWx0QmxvY2sgPSBwcm9wcy5kZWZhdWx0QmxvY2s7XG4gICAgdGhpcy5wYXJzZUh0bWwgPSBwcm9wcy5wYXJzZUh0bWw7XG4gICAgdGhpcy5ydWxlcyA9IHByb3BzLnJ1bGVzO1xuICB9XG5cbiAgc2VyaWFsaXplRWxzID0gbm9kZSA9PiB7XG4gICAgbGV0IGNoaWxkcmVuID0gKG5vZGUuY2hpbGRyZW4gfHwgW10pLm1hcChuID0+IHRoaXMuc2VyaWFsaXplRWxzKG4pKTtcblxuICAgIGNvbnN0IGNvcnJlY3RSdWxlID0gdGhpcy5ydWxlcy5yZWR1Y2UoKHJlcywgcnVsZSkgPT4ge1xuICAgICAgcmV0dXJuIHJlcyB8fCBydWxlLnNlcmlhbGl6ZShub2RlLCBjaGlsZHJlbik7XG4gICAgfSwgbnVsbCk7XG5cbiAgICBpZiAoY29ycmVjdFJ1bGUpIHtcbiAgICAgIHJldHVybiBjb3JyZWN0UnVsZTtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKG5vZGUudHlwZSkge1xuICAgICAgY2FzZSAncXVvdGUnOlxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIDxibG9ja3F1b3RlPlxuICAgICAgICAgICAgPHA+e2NoaWxkcmVufTwvcD5cbiAgICAgICAgICA8L2Jsb2NrcXVvdGU+XG4gICAgICAgICk7XG4gICAgICBjYXNlICdwYXJhZ3JhcGgnOlxuICAgICAgICByZXR1cm4gPHA+e2NoaWxkcmVufTwvcD47XG4gICAgICBjYXNlICdsaW5rJzpcbiAgICAgICAgcmV0dXJuIDxhIGhyZWY9e2VzY2FwZUh0bWwobm9kZS51cmwpfT57Y2hpbGRyZW59PC9hPjtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBjaGlsZHJlbjtcbiAgICB9XG4gIH07XG5cbiAgc2VyaWFsaXplID0gbm9kZSA9PiB7XG4gICAgY29uc3QgZGVzZXJpYWxpemVkID0gdGhpcy5zZXJpYWxpemVFbHMobm9kZSk7XG4gICAgY29uc3QgaHRtbCA9IFJlYWN0U2VydmVyLnJlbmRlclRvU3RhdGljTWFya3VwKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXG4gICAgICAnYm9keScsXG4gICAgICBudWxsLFxuICAgICAgZGVzZXJpYWxpemVkXG4gICAgKSk7XG4gICAgY29uc3QgaW5uZXIgPSBodG1sLnNsaWNlKDYsIC03KTtcbiAgICByZXR1cm4gaW5uZXI7XG4gIH07XG5cbiAgZGVzZXJpYWxpemUgPSBodG1sID0+IHtcbiAgICBsZXQgYm9keSA9IHRoaXMucGFyc2VIdG1sKGh0bWwpO1xuXG4gICAgaWYgKCFib2R5LmZpcnN0Q2hpbGQgfHwgKGJvZHkuZmlyc3RDaGlsZC5ub2RlVHlwZSA9PT0gTm9kZS5URVhUX05PREUgfHwgT2JqZWN0LmtleXMoTUFSS19UQUdTKS5pbmNsdWRlcyhib2R5LmZpcnN0Q2hpbGQudGFnTmFtZS50b0xvd2VyQ2FzZSgpKSkpIHtcbiAgICAgIGJvZHkgPSB0aGlzLnBhcnNlSHRtbChgPHNwYW4+JHtodG1sfTwvc3Bhbj5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5kZXNlcmlhbGl6ZUVscyhib2R5KTtcbiAgfTtcblxuICBkZXNlcmlhbGl6ZUVscyA9IChlbGVtZW50LCBtYXJrQXR0cmlidXRlcyA9IHt9KSA9PiB7XG4gICAgaWYgKGVsZW1lbnQubm9kZVR5cGUgPT09IE5vZGUuVEVYVF9OT0RFKSB7XG4gICAgICByZXR1cm4ganN4KCd0ZXh0JywgbWFya0F0dHJpYnV0ZXMsIGVsZW1lbnQudGV4dENvbnRlbnQpO1xuICAgIH0gZWxzZSBpZiAoZWxlbWVudC5ub2RlVHlwZSAhPT0gTm9kZS5FTEVNRU5UX05PREUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IG5vZGVBdHRyaWJ1dGVzID0geyAuLi5tYXJrQXR0cmlidXRlcyB9O1xuXG4gICAgLy8gZGVmaW5lIGF0dHJpYnV0ZXMgZm9yIHRleHQgbm9kZXNcbiAgICBpZiAoZWxlbWVudC5ub2RlTmFtZSA9PT0gJ1NUUk9ORycpIHtcbiAgICAgIG5vZGVBdHRyaWJ1dGVzLmJvbGQgPSB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0IG5leHRGbiA9IG5vZGVzID0+IHtcbiAgICAgIGNvbnN0IGNoaWxkTm9kZXMgPSBBcnJheS5mcm9tKG5vZGVzKTtcbiAgICAgIGNvbnN0IGNoaWxkcmVuID0gQXJyYXkuZnJvbShjaGlsZE5vZGVzKVxuICAgICAgICAubWFwKG5vZGUgPT4gdGhpcy5kZXNlcmlhbGl6ZUVscyhub2RlLCBub2RlQXR0cmlidXRlcykpXG4gICAgICAgIC5mbGF0KCk7XG5cbiAgICAgIGlmIChjaGlsZHJlbi5sZW5ndGggPT09IDApIHtcbiAgICAgICAgY2hpbGRyZW4ucHVzaChqc3goJ3RleHQnLCBub2RlQXR0cmlidXRlcywgJycpKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNoaWxkcmVuO1xuICAgIH07XG5cbiAgICBjb25zdCBjb3JyZWN0UnVsZSA9IHRoaXMucnVsZXMucmVkdWNlKChyZXMsIHJ1bGUpID0+IHtcbiAgICAgIHJldHVybiByZXMgfHwgcnVsZS5kZXNlcmlhbGl6ZShlbGVtZW50LCBuZXh0Rm4pO1xuICAgIH0sIG51bGwpO1xuXG4gICAgaWYgKGNvcnJlY3RSdWxlKSB7XG4gICAgICByZXR1cm4gY29ycmVjdFJ1bGU7XG4gICAgfVxuXG4gICAgY29uc3QgY2hpbGROb2RlcyA9IEFycmF5LmZyb20oZWxlbWVudC5jaGlsZE5vZGVzKTtcbiAgICBjb25zdCBjaGlsZHJlbiA9IEFycmF5LmZyb20oY2hpbGROb2RlcylcbiAgICAgIC5tYXAobm9kZSA9PiB0aGlzLmRlc2VyaWFsaXplRWxzKG5vZGUsIG5vZGVBdHRyaWJ1dGVzKSlcbiAgICAgIC5mbGF0KCk7XG5cbiAgICBpZiAoY2hpbGRyZW4ubGVuZ3RoID09PSAwKSB7XG4gICAgICBjaGlsZHJlbi5wdXNoKGpzeCgndGV4dCcsIG5vZGVBdHRyaWJ1dGVzLCAnJykpO1xuICAgIH1cblxuICAgIHN3aXRjaCAoZWxlbWVudC5ub2RlTmFtZSkge1xuICAgICAgY2FzZSAnVEFCTEUnOlxuICAgICAgICByZXR1cm4ganN4KCdlbGVtZW50JywgeyB0eXBlOiAndGFibGUnIH0sIGNoaWxkcmVuKTtcbiAgICAgIGNhc2UgJ1RCT0RZJzpcbiAgICAgICAgcmV0dXJuIGpzeCgnZWxlbWVudCcsIHsgdHlwZTogJ3Rib2R5JyB9LCBjaGlsZHJlbik7XG4gICAgICBjYXNlICdUUic6XG4gICAgICAgIHJldHVybiBqc3goJ2VsZW1lbnQnLCB7IHR5cGU6ICd0cicgfSwgY2hpbGRyZW4pO1xuICAgICAgY2FzZSAnVEQnOlxuICAgICAgICByZXR1cm4ganN4KCdlbGVtZW50JywgeyB0eXBlOiAndGQnIH0sIGNoaWxkcmVuKTtcbiAgICAgIGNhc2UgJ0JPRFknOlxuICAgICAgICByZXR1cm4ganN4KCdmcmFnbWVudCcsIHt9LCBjaGlsZHJlbik7XG4gICAgICBjYXNlICdCUic6XG4gICAgICAgIHJldHVybiAnXFxuJztcbiAgICAgIGNhc2UgJ0JMT0NLUVVPVEUnOlxuICAgICAgICByZXR1cm4ganN4KCdlbGVtZW50JywgeyB0eXBlOiAncXVvdGUnIH0sIGNoaWxkcmVuKTtcbiAgICAgIGNhc2UgJ1AnOlxuICAgICAgICByZXR1cm4ganN4KCdlbGVtZW50JywgeyB0eXBlOiAncGFyYWdyYXBoJyB9LCBjaGlsZHJlbik7XG4gICAgICBjYXNlICdBJzpcbiAgICAgICAgcmV0dXJuIGpzeCgnZWxlbWVudCcsIHsgdHlwZTogJ2xpbmsnLCB1cmw6IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCdocmVmJykgfSwgY2hpbGRyZW4pO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGNoaWxkcmVuO1xuICAgIH1cbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgSHRtbDtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7OztJQUVNQSxJLDhDQUNKLGNBQVlDLEtBQVosRUFBbUI7RUFBQTs7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
138
+ //# sourceMappingURL=test-serializer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"test-serializer.js","names":["Html","props","node","Text","isText","string","escapeHtml","text","bold","children","map","n","serializeEls","correctRule","rules","reduce","res","rule","serialize","type","url","deserialized","html","ReactServer","renderToStaticMarkup","React","createElement","inner","slice","body","parseHtml","deserializeEls","element","markAttributes","nodeType","Node","TEXT_NODE","jsx","textContent","ELEMENT_NODE","nodeAttributes","nodeName","nextFn","nodes","childNodes","Array","from","flat","length","push","deserialize","getAttribute","defaultBlock"],"sources":["../src/test-serializer.js"],"sourcesContent":["import React from 'react';\nimport ReactServer from 'react-dom/server';\nimport escapeHtml from 'escape-html';\nimport { Text } from 'slate';\nimport { jsx } from 'slate-hyperscript';\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 if (Text.isText(node)) {\n let string = escapeHtml(node.text);\n if (node.bold) {\n string = <strong>{string}</strong>;\n }\n return string;\n }\n\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 switch (node.type) {\n case 'quote':\n return (\n <blockquote>\n <p>{children}</p>\n </blockquote>\n );\n case 'paragraph':\n return <p>{children}</p>;\n case 'link':\n return <a href={escapeHtml(node.url)}>{children}</a>;\n default:\n return children;\n }\n };\n\n serialize = node => {\n const deserialized = this.serializeEls(node);\n const html = ReactServer.renderToStaticMarkup(React.createElement(\n 'body',\n null,\n deserialized\n ));\n const inner = html.slice(6, -7);\n return inner;\n };\n\n deserialize = html => {\n const body = this.parseHtml(html);\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"],"mappings":"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"}
1
+ {"version":3,"file":"test-serializer.js","names":["_react","_interopRequireDefault","require","_server","_escapeHtml","_slate","_slateHyperscript","_newSerialization","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","Html","_createClass2","props","_this","_classCallCheck2","node","children","map","n","serializeEls","correctRule","rules","reduce","res","rule","serialize","type","createElement","href","escapeHtml","url","deserialized","html","ReactServer","renderToStaticMarkup","React","inner","slice","body","parseHtml","firstChild","nodeType","Node","TEXT_NODE","MARK_TAGS","includes","tagName","toLowerCase","concat","deserializeEls","element","markAttributes","undefined","jsx","textContent","ELEMENT_NODE","nodeAttributes","nodeName","bold","nextFn","nodes","childNodes","Array","from","flat","deserialize","getAttribute","defaultBlock","_default","exports"],"sources":["../src/test-serializer.js"],"sourcesContent":["import React from 'react';\nimport ReactServer from 'react-dom/server';\nimport escapeHtml from 'escape-html';\nimport { Text } from 'slate';\nimport { jsx } from 'slate-hyperscript';\nimport { MARK_TAGS } from './new-serialization';\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 switch (node.type) {\n case 'quote':\n return (\n <blockquote>\n <p>{children}</p>\n </blockquote>\n );\n case 'paragraph':\n return <p>{children}</p>;\n case 'link':\n return <a href={escapeHtml(node.url)}>{children}</a>;\n default:\n return children;\n }\n };\n\n serialize = node => {\n const deserialized = this.serializeEls(node);\n const html = ReactServer.renderToStaticMarkup(React.createElement(\n 'body',\n null,\n deserialized\n ));\n const inner = html.slice(6, -7);\n return inner;\n };\n\n deserialize = html => {\n let body = this.parseHtml(html);\n\n if (!body.firstChild || (body.firstChild.nodeType === Node.TEXT_NODE || Object.keys(MARK_TAGS).includes(body.firstChild.tagName.toLowerCase()))) {\n body = this.parseHtml(`<span>${html}</span>`);\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"],"mappings":"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"}
package/lib/theme.js CHANGED
@@ -6,4 +6,4 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.primary = void 0;
7
7
  var primary = '#304ffe';
8
8
  exports.primary = primary;
9
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJwcmltYXJ5Il0sInNvdXJjZXMiOlsiLi4vc3JjL3RoZW1lLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBwcmltYXJ5ID0gJyMzMDRmZmUnO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBTyxJQUFNQSxPQUFPLEdBQUcsU0FBaEIifQ==
9
+ //# sourceMappingURL=theme.js.map
package/lib/theme.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"theme.js","names":["primary"],"sources":["../src/theme.js"],"sourcesContent":["export const primary = '#304ffe';\n"],"mappings":";;;;;;AAAO,IAAMA,OAAO,GAAG,SAAhB"}
1
+ {"version":3,"file":"theme.js","names":["primary","exports"],"sources":["../src/theme.js"],"sourcesContent":["export const primary = '#304ffe';\n"],"mappings":";;;;;;AAAO,IAAMA,OAAO,GAAG,SAAS;AAACC,OAAA,CAAAD,OAAA,GAAAA,OAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pie-lib/editable-html",
3
- "version": "10.0.0-beta.5",
3
+ "version": "10.0.0-beta.7",
4
4
  "description": "",
5
5
  "license": "ISC",
6
6
  "main": "lib/index.js",
@@ -11,10 +11,10 @@
11
11
  "@material-ui/core": "^3.8.3",
12
12
  "@material-ui/icons": "^3.0.2",
13
13
  "@material-ui/styles": "^3.0.0-alpha.10",
14
- "@pie-lib/drag": "^1.1.52",
15
- "@pie-lib/math-rendering": "^2.5.0",
14
+ "@pie-lib/drag": "^2.2.1",
15
+ "@pie-lib/math-rendering": "^2.5.17",
16
16
  "@pie-lib/math-toolbar": "2.0.0-beta.2",
17
- "@pie-lib/render-ui": "^4.13.4",
17
+ "@pie-lib/render-ui": "^4.14.28",
18
18
  "change-case": "^3.0.2",
19
19
  "classnames": "^2.2.6",
20
20
  "debug": "^4.1.1",
@@ -27,14 +27,14 @@
27
27
  "react-attr-converter": "^0.3.1",
28
28
  "react-jss": "^8.6.1",
29
29
  "react-portal": "^4.2.0",
30
- "slate": "^0.82.1",
30
+ "slate": "^0.94.1",
31
31
  "slate-dev-environment": "^0.2.5",
32
- "slate-history": "^0.66.0",
32
+ "slate-history": "^0.93.0",
33
33
  "slate-html-serializer": "^0.8.13",
34
34
  "slate-hyperscript": "^0.77.0",
35
35
  "slate-plain-serializer": "^0.7.13",
36
36
  "slate-prop-types": "^0.5.44",
37
- "slate-react": "^0.92.0",
37
+ "slate-react": "^0.97.2",
38
38
  "slate-schema-violations": "^0.1.39",
39
39
  "slate-soft-break": "^0.9.0",
40
40
  "to-style": "^1.3.3"
@@ -13,9 +13,9 @@ module.exports = {
13
13
  object: 'text',
14
14
  leaves: [
15
15
  {
16
- text: 'foo'
17
- }
18
- ]
16
+ text: 'foo',
17
+ },
18
+ ],
19
19
  },
20
20
 
21
21
  {
@@ -24,21 +24,21 @@ module.exports = {
24
24
  isVoid: true,
25
25
  data: {
26
26
  src:
27
- 'https://img.washingtonpost.com/wp-apps/imrs.php?src=https://img.washingtonpost.com/news/speaking-of-science/wp-content/uploads/sites/36/2015/10/as12-49-7278-1024x1024.jpg&w=1484'
28
- }
27
+ 'https://img.washingtonpost.com/wp-apps/imrs.php?src=https://img.washingtonpost.com/news/speaking-of-science/wp-content/uploads/sites/36/2015/10/as12-49-7278-1024x1024.jpg&w=1484',
28
+ },
29
29
  },
30
30
 
31
31
  {
32
32
  object: 'text',
33
33
  leaves: [
34
34
  {
35
- text: 'bar'
36
- }
37
- ]
38
- }
39
- ]
40
- }
41
- ]
35
+ text: 'bar',
36
+ },
37
+ ],
38
+ },
39
+ ],
40
+ },
41
+ ],
42
42
  },
43
43
  {
44
44
  object: 'block',
@@ -48,12 +48,12 @@ module.exports = {
48
48
  object: 'text',
49
49
  leaves: [
50
50
  {
51
- text: 'text'
52
- }
53
- ]
54
- }
55
- ]
56
- }
57
- ]
58
- }
51
+ text: 'text',
52
+ },
53
+ ],
54
+ },
55
+ ],
56
+ },
57
+ ],
58
+ },
59
59
  };
@@ -1,24 +1,22 @@
1
- <!doctype html>
1
+ <!DOCTYPE html>
2
2
  <html>
3
+ <head>
4
+ <script crossorigin src="https://unpkg.com/react@16/umd/react.production.min.js"></script>
5
+ <script crossorigin src="https://unpkg.com/react-dom@16/umd/react-dom.production.min.js"></script>
6
+ <script crossorigin src="https://unpkg.com/react-dom@16/umd/react-dom-server.browser.production.min.js"></script>
7
+ <link href="https://fonts.googleapis.com/css?family=Roboto" rel="stylesheet" />
8
+ <style>
9
+ body,
10
+ span,
11
+ div,
12
+ p {
13
+ font-family: 'Roboto', sans-serif;
14
+ }
15
+ </style>
16
+ <script src="bundle.js" type="text/javascript"></script>
17
+ </head>
3
18
 
4
- <head>
5
- <script crossorigin src="https://unpkg.com/react@16/umd/react.production.min.js"></script>
6
- <script crossorigin src="https://unpkg.com/react-dom@16/umd/react-dom.production.min.js"></script>
7
- <script crossorigin src="https://unpkg.com/react-dom@16/umd/react-dom-server.browser.production.min.js"></script>
8
- <link href="https://fonts.googleapis.com/css?family=Roboto" rel="stylesheet">
9
- <style>
10
- body,
11
- span,
12
- div,
13
- p {
14
- font-family: 'Roboto', sans-serif;
15
- }
16
- </style>
17
- <script src="bundle.js" type="text/javascript"></script>
18
- </head>
19
-
20
- <body>
21
- <div id="app"></div>
22
- </body>
23
-
24
- </html>
19
+ <body>
20
+ <div id="app"></div>
21
+ </body>
22
+ </html>
@@ -9,13 +9,14 @@ class Img extends React.Component {
9
9
  render() {
10
10
  const { data } = this.props.node;
11
11
  const src = data.get('src');
12
+
12
13
  return <img src={src} width={100} />;
13
14
  }
14
15
  }
15
16
 
16
17
  const ImgPlugin = () => {
17
18
  return {
18
- renderNode: props => {
19
+ renderNode: (props) => {
19
20
  if (props.node.type === 'image') {
20
21
  return <Img {...props} />;
21
22
  }
@@ -33,11 +34,11 @@ const ImgPlugin = () => {
33
34
  focusKey: block.key,
34
35
  focusOffset: 0,
35
36
  isFocused: true,
36
- isBackward: false
37
+ isBackward: false,
37
38
  });
38
39
  change.insertBlockAtRange(change.value.selection, block).select(range);
39
40
  }
40
- }
41
+ },
41
42
  };
42
43
  };
43
44
 
@@ -47,7 +48,7 @@ class ImageDemo extends React.Component {
47
48
  constructor(props) {
48
49
  super(props);
49
50
  this.state = {
50
- value: Value.fromJSON(imageData)
51
+ value: Value.fromJSON(imageData),
51
52
  };
52
53
 
53
54
  this.plugins = [ImgPlugin()];
@@ -55,21 +56,17 @@ class ImageDemo extends React.Component {
55
56
 
56
57
  render() {
57
58
  const { value } = this.state;
59
+
58
60
  return (
59
61
  <div>
60
62
  ImageDemo
61
63
  <hr />
62
- This demo tests adding text between images. click on the image and type
63
- some text...
64
+ This demo tests adding text between images. click on the image and type some text...
64
65
  <hr />
65
- <Editor
66
- value={value}
67
- onChange={change => this.setState({ value: change.value })}
68
- plugins={this.plugins}
69
- />
66
+ <Editor value={value} onChange={(change) => this.setState({ value: change.value })} plugins={this.plugins} />
70
67
  <EditableEditor
71
68
  value={value}
72
- onChange={change => this.setState({ value: change.value })}
69
+ onChange={(change) => this.setState({ value: change.value })}
73
70
  plugins={this.plugins}
74
71
  />
75
72
  </div>
@@ -79,5 +76,6 @@ class ImageDemo extends React.Component {
79
76
 
80
77
  document.addEventListener('DOMContentLoaded', () => {
81
78
  const el = React.createElement(ImageDemo, {});
79
+
82
80
  ReactDOM.render(el, document.querySelector('#app'));
83
81
  });