@pie-lib/editable-html 9.5.13 → 10.0.0-beta.1

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 +0 -302
  2. package/lib/components.js +116 -0
  3. package/lib/components.js.map +1 -0
  4. package/lib/editor.js +418 -103
  5. package/lib/editor.js.map +1 -1
  6. package/lib/index.js +101 -155
  7. package/lib/index.js.map +1 -1
  8. package/lib/new-serialization.js +320 -0
  9. package/lib/new-serialization.js.map +1 -0
  10. package/lib/old-serialization.js +330 -0
  11. package/lib/parse-html.js +1 -1
  12. package/lib/parse-html.js.map +1 -1
  13. package/lib/plugins/characters/custom-popper.js +1 -1
  14. package/lib/plugins/characters/custom-popper.js.map +1 -1
  15. package/lib/plugins/characters/index.js +21 -19
  16. package/lib/plugins/characters/index.js.map +1 -1
  17. package/lib/plugins/characters/utils.js +1 -1
  18. package/lib/plugins/characters/utils.js.map +1 -1
  19. package/lib/plugins/hotKeys/index.js +67 -0
  20. package/lib/plugins/hotKeys/index.js.map +1 -0
  21. package/lib/plugins/image/alt-dialog.js +1 -6
  22. package/lib/plugins/image/alt-dialog.js.map +1 -1
  23. package/lib/plugins/image/component.js +70 -53
  24. package/lib/plugins/image/component.js.map +1 -1
  25. package/lib/plugins/image/image-toolbar.js +7 -9
  26. package/lib/plugins/image/image-toolbar.js.map +1 -1
  27. package/lib/plugins/image/index.js +83 -27
  28. package/lib/plugins/image/index.js.map +1 -1
  29. package/lib/plugins/image/insert-image-handler.js +72 -33
  30. package/lib/plugins/image/insert-image-handler.js.map +1 -1
  31. package/lib/plugins/index.js +23 -41
  32. package/lib/plugins/index.js.map +1 -1
  33. package/lib/plugins/list/index.js +64 -100
  34. package/lib/plugins/list/index.js.map +1 -1
  35. package/lib/plugins/math/index.js +86 -60
  36. package/lib/plugins/math/index.js.map +1 -1
  37. package/lib/plugins/media/index.js +202 -132
  38. package/lib/plugins/media/index.js.map +1 -1
  39. package/lib/plugins/media/media-dialog.js +17 -16
  40. package/lib/plugins/media/media-dialog.js.map +1 -1
  41. package/lib/plugins/media/media-toolbar.js +3 -3
  42. package/lib/plugins/media/media-toolbar.js.map +1 -1
  43. package/lib/plugins/media/media-wrapper.js +21 -58
  44. package/lib/plugins/media/media-wrapper.js.map +1 -1
  45. package/lib/plugins/respArea/drag-in-the-blank/choice.js +3 -3
  46. package/lib/plugins/respArea/drag-in-the-blank/choice.js.map +1 -1
  47. package/lib/plugins/respArea/drag-in-the-blank/index.js +3 -2
  48. package/lib/plugins/respArea/drag-in-the-blank/index.js.map +1 -1
  49. package/lib/plugins/respArea/explicit-constructed-response/index.js +3 -2
  50. package/lib/plugins/respArea/explicit-constructed-response/index.js.map +1 -1
  51. package/lib/plugins/respArea/icons/index.js +13 -15
  52. package/lib/plugins/respArea/icons/index.js.map +1 -1
  53. package/lib/plugins/respArea/index.js +87 -53
  54. package/lib/plugins/respArea/index.js.map +1 -1
  55. package/lib/plugins/respArea/inline-dropdown/index.js +4 -3
  56. package/lib/plugins/respArea/inline-dropdown/index.js.map +1 -1
  57. package/lib/plugins/respArea/utils.js +17 -20
  58. package/lib/plugins/respArea/utils.js.map +1 -1
  59. package/lib/plugins/table/icons/index.js +1 -1
  60. package/lib/plugins/table/icons/index.js.map +1 -1
  61. package/lib/plugins/table/index.js +381 -212
  62. package/lib/plugins/table/index.js.map +1 -1
  63. package/lib/plugins/table/table-toolbar.js +5 -6
  64. package/lib/plugins/table/table-toolbar.js.map +1 -1
  65. package/lib/plugins/toolbar/default-toolbar.js +55 -11
  66. package/lib/plugins/toolbar/default-toolbar.js.map +1 -1
  67. package/lib/plugins/toolbar/done-button.js +1 -1
  68. package/lib/plugins/toolbar/done-button.js.map +1 -1
  69. package/lib/plugins/toolbar/editor-and-toolbar.js +186 -232
  70. package/lib/plugins/toolbar/editor-and-toolbar.js.map +1 -1
  71. package/lib/plugins/toolbar/index.js +1 -2
  72. package/lib/plugins/toolbar/index.js.map +1 -1
  73. package/lib/plugins/toolbar/toolbar-buttons.js +1 -1
  74. package/lib/plugins/toolbar/toolbar-buttons.js.map +1 -1
  75. package/lib/plugins/toolbar/toolbar.js +253 -239
  76. package/lib/plugins/toolbar/toolbar.js.map +1 -1
  77. package/lib/plugins/utils.js +27 -2
  78. package/lib/plugins/utils.js.map +1 -1
  79. package/lib/serialization.js +1 -1
  80. package/lib/serialization.js.map +1 -1
  81. package/lib/slate-editor.js +302 -0
  82. package/lib/test-serializer.js +189 -0
  83. package/lib/test-serializer.js.map +1 -0
  84. package/lib/theme.js +1 -1
  85. package/lib/theme.js.map +1 -1
  86. package/package.json +18 -14
  87. package/playground/image/data.js +20 -20
  88. package/playground/image/index.html +22 -20
  89. package/playground/image/index.jsx +12 -10
  90. package/playground/index.html +25 -23
  91. package/playground/mathquill/index.html +23 -20
  92. package/playground/mathquill/index.jsx +18 -22
  93. package/playground/prod-test/index.html +24 -20
  94. package/playground/prod-test/index.jsx +5 -3
  95. package/playground/schema-override/data.js +10 -10
  96. package/playground/schema-override/image-plugin.jsx +3 -4
  97. package/playground/schema-override/index.html +21 -19
  98. package/playground/schema-override/index.jsx +13 -14
  99. package/playground/serialization/data.js +10 -10
  100. package/playground/serialization/image-plugin.jsx +3 -4
  101. package/playground/serialization/index.html +22 -20
  102. package/playground/table-examples.html +5 -8
  103. package/playground/webpack.config.js +10 -10
  104. package/src/components.js +135 -0
  105. package/src/editor.jsx +478 -141
  106. package/src/index.jsx +71 -95
  107. package/src/new-serialization.jsx +291 -0
  108. package/src/parse-html.js +1 -1
  109. package/src/plugins/characters/custom-popper.js +7 -7
  110. package/src/plugins/characters/index.jsx +33 -34
  111. package/src/plugins/characters/utils.js +81 -81
  112. package/src/plugins/hotKeys/index.js +54 -0
  113. package/src/plugins/image/alt-dialog.jsx +4 -5
  114. package/src/plugins/image/component.jsx +106 -89
  115. package/src/plugins/image/image-toolbar.jsx +27 -19
  116. package/src/plugins/image/index.jsx +75 -43
  117. package/src/plugins/image/insert-image-handler.js +62 -27
  118. package/src/plugins/index.jsx +23 -41
  119. package/src/plugins/list/index.jsx +70 -95
  120. package/src/plugins/math/index.jsx +102 -82
  121. package/src/plugins/media/index.jsx +159 -124
  122. package/src/plugins/media/media-dialog.js +98 -71
  123. package/src/plugins/media/media-toolbar.jsx +8 -8
  124. package/src/plugins/media/media-wrapper.jsx +29 -30
  125. package/src/plugins/respArea/drag-in-the-blank/choice.jsx +21 -19
  126. package/src/plugins/respArea/drag-in-the-blank/index.jsx +14 -11
  127. package/src/plugins/respArea/explicit-constructed-response/index.jsx +7 -6
  128. package/src/plugins/respArea/icons/index.jsx +11 -14
  129. package/src/plugins/respArea/index.jsx +92 -52
  130. package/src/plugins/respArea/inline-dropdown/index.jsx +9 -8
  131. package/src/plugins/respArea/utils.jsx +26 -35
  132. package/src/plugins/table/icons/index.jsx +17 -11
  133. package/src/plugins/table/index.jsx +288 -231
  134. package/src/plugins/table/table-toolbar.jsx +15 -11
  135. package/src/plugins/toolbar/default-toolbar.jsx +65 -19
  136. package/src/plugins/toolbar/done-button.jsx +4 -4
  137. package/src/plugins/toolbar/editor-and-toolbar.jsx +150 -145
  138. package/src/plugins/toolbar/index.jsx +2 -3
  139. package/src/plugins/toolbar/toolbar-buttons.jsx +11 -11
  140. package/src/plugins/toolbar/toolbar.jsx +244 -221
  141. package/src/plugins/utils.js +21 -4
  142. package/src/serialization.jsx +32 -32
  143. package/src/test-serializer.js +139 -0
  144. package/src/test-serializer.js.rej +20 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/plugins/image/component.jsx"],"names":["log","size","s","Component","percent","multiplier","img","naturalWidth","naturalHeight","width","floored","parseInt","toFixed","props","node","editor","update","data","w","get","set","getPercentFromWidth","equals","change","c","setNodeByKey","key","window","addEventListener","startResizing","stopResizing","maxImageWidth","maxImageHeight","box","style","dimensions","height","updateImageDimensions","setState","e","bounds","target","getBoundingClientRect","clientX","left","clientY","top","hasMinimumWidth","hasDimensionsConstraints","removeEventListener","initialDim","nextDim","keepAspectRatio","resizeType","imageAspectRatio","applySizeData","resizeHandle","resize","initialiseResize","objectFit","classes","attributes","onFocus","active","value","isFocused","selection","hasEdgeIn","src","loaded","deleteStatus","alignment","alt","margin","justifyContent","getSize","className","root","loading","pendingDelete","progressClasses","progress","hideProgress","imageContainer","image","ref","loadImage","React","SlatePropTypes","isRequired","PropTypes","shape","func","object","onBlur","number","styles","theme","portal","position","opacity","transition","floatingButtonRow","backgroundColor","palette","background","paper","borderRadius","display","padding","border","grey","boxShadow","common","white","right","alignItems","primary","main","cursor","marginLeft","marginRight","drawableHeight","minHeight"],"mappings":"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","sourcesContent":["import LinearProgress from '@material-ui/core/LinearProgress';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport classNames from 'classnames';\nimport debug from 'debug';\nimport { withStyles } from '@material-ui/core/styles';\nimport SlatePropTypes from 'slate-prop-types';\n\nconst log = debug('@pie-lib:editable-html:plugins:image:component');\n\nconst size = (s) => (s ? `${s}px` : 'auto');\n\nexport class Component extends React.Component {\n static propTypes = {\n node: SlatePropTypes.node.isRequired,\n editor: PropTypes.shape({\n change: PropTypes.func.isRequired,\n value: PropTypes.object,\n }).isRequired,\n classes: PropTypes.object.isRequired,\n attributes: PropTypes.object,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n maxImageWidth: PropTypes.number,\n maxImageHeight: PropTypes.number,\n };\n\n getWidth = (percent) => {\n const multiplier = percent / 100;\n return this.img.naturalWidth * multiplier;\n };\n\n getHeight = (percent) => {\n const multiplier = percent / 100;\n return this.img.naturalHeight * multiplier;\n };\n\n getPercentFromWidth = (width) => {\n var floored = (width / this.img.naturalWidth) * 4;\n return parseInt(floored.toFixed(0) * 25, 10);\n };\n\n applySizeData = () => {\n const { node, editor } = this.props;\n\n let update = node.data;\n\n const w = update.get('width');\n if (w) {\n update = update.set('resizePercent', this.getPercentFromWidth(w));\n }\n\n log('[applySizeData] update: ', update);\n\n if (!update.equals(node.data)) {\n editor.change((c) => c.setNodeByKey(node.key, { data: update }));\n }\n };\n\n initialiseResize = () => {\n window.addEventListener('mousemove', this.startResizing, false);\n window.addEventListener('mouseup', this.stopResizing, false);\n };\n\n componentDidMount() {\n this.applySizeData();\n\n const resizeHandle = this.resize;\n\n if (resizeHandle) {\n resizeHandle.addEventListener('mousedown', this.initialiseResize, false);\n }\n }\n\n componentDidUpdate() {\n this.applySizeData();\n }\n\n getSize(data) {\n return {\n width: size(data.get('width')),\n height: size(data.get('height')),\n objectFit: 'contain',\n };\n }\n\n loadImage = () => {\n let { maxImageWidth, maxImageHeight } = this.props || {};\n maxImageWidth = maxImageWidth || 700;\n maxImageHeight = maxImageHeight || 900;\n\n const box = this.img;\n\n //on first load\n if (!box.style.width || box.style.width === 'auto') {\n const dimensions = {\n width: (box && box.naturalWidth) || 100,\n height: (box && box.naturalHeight) || 100,\n };\n\n const { width, height } = this.updateImageDimensions(\n dimensions,\n {\n width: dimensions.width < maxImageWidth ? dimensions.width : maxImageWidth,\n height: dimensions.height < maxImageHeight ? dimensions.height : maxImageHeight,\n },\n true,\n );\n\n box.style.width = `${width}px`;\n box.style.height = `${height}px`;\n\n this.setState({\n dimensions: { height: height, width: width },\n });\n\n const { node, editor } = this.props;\n\n let update = node.data;\n\n update = update.set('width', width);\n update = update.set('height', height);\n\n if (!update.equals(node.data)) {\n editor.change((c) => c.setNodeByKey(node.key, { data: update }));\n }\n }\n };\n\n startResizing = (e) => {\n const bounds = e.target.getBoundingClientRect();\n const box = this.img;\n const dimensions = {\n width: (box && box.naturalWidth) || 100,\n height: (box && box.naturalHeight) || 100,\n };\n\n const { width, height } = this.updateImageDimensions(\n dimensions,\n {\n width: e.clientX - bounds.left,\n height: e.clientY - bounds.top,\n },\n true,\n );\n\n const hasMinimumWidth = width > 50 && height > 50;\n const hasDimensionsConstraints = width <= 700 && height <= 900;\n\n if (hasMinimumWidth && hasDimensionsConstraints && box) {\n box.style.width = `${width}px`;\n box.style.height = `${height}px`;\n\n this.setState({\n dimensions: { height: height, width: width },\n });\n\n const { node, editor } = this.props;\n\n let update = node.data;\n\n update = update.set('width', width);\n update = update.set('height', height);\n\n if (!update.equals(node.data)) {\n editor.change((c) => c.setNodeByKey(node.key, { data: update }));\n }\n }\n };\n\n stopResizing = () => {\n window.removeEventListener('mousemove', this.startResizing, false);\n window.removeEventListener('mouseup', this.stopResizing, false);\n };\n\n updateImageDimensions = (initialDim, nextDim, keepAspectRatio, resizeType) => {\n // if we want to keep image aspect ratio\n if (keepAspectRatio) {\n const imageAspectRatio = initialDim.width / initialDim.height;\n\n if (resizeType === 'height') {\n // if we want to change image height => we update the width accordingly\n return {\n width: nextDim.height * imageAspectRatio,\n height: nextDim.height,\n };\n }\n\n // if we want to change image width => we update the height accordingly\n return {\n width: nextDim.width,\n height: nextDim.width / imageAspectRatio,\n };\n }\n\n // if we don't want to keep aspect ratio, we just update both values\n return {\n width: nextDim.width,\n height: nextDim.height,\n };\n };\n\n render() {\n const { node, editor, classes, attributes, onFocus } = this.props;\n const active = editor.value.isFocused && editor.value.selection.hasEdgeIn(node);\n const src = node.data.get('src');\n const loaded = node.data.get('loaded') !== false;\n const deleteStatus = node.data.get('deleteStatus');\n const alignment = node.data.get('alignment');\n const percent = node.data.get('percent');\n const alt = node.data.get('alt');\n let margin;\n let justifyContent;\n\n switch (alignment) {\n case 'left':\n justifyContent = 'flex-start';\n margin = '0';\n break;\n\n case 'center':\n justifyContent = 'center';\n margin = '0 auto';\n break;\n\n case 'right':\n justifyContent = 'flex-end';\n margin = 'auto 0 0 auto ';\n break;\n\n default:\n justifyContent = 'flex-start';\n margin = '0';\n break;\n }\n log('[render] node.data:', node.data);\n\n const size = this.getSize(node.data);\n\n log('[render] style:', size);\n\n const className = classNames(\n classes.root,\n !loaded && classes.loading,\n deleteStatus === 'pending' && classes.pendingDelete,\n );\n\n const progressClasses = classNames(classes.progress, loaded && classes.hideProgress);\n\n return [\n <span key={'sp1'}>&nbsp;</span>,\n <div key={'comp'} onFocus={onFocus} className={className} style={{ justifyContent }}>\n <LinearProgress mode=\"determinate\" value={percent > 0 ? percent : 0} className={progressClasses} />\n <div className={classes.imageContainer}>\n <img\n {...attributes}\n className={classNames(classes.image, active && classes.active)}\n ref={(ref) => {\n this.img = ref;\n }}\n src={src}\n style={size}\n onLoad={this.loadImage}\n alt={alt}\n />\n <div\n ref={(ref) => {\n this.resize = ref;\n }}\n className={classNames(classes.resize, 'resize')}\n />\n </div>\n </div>,\n <span key={'sp2'}>&nbsp;</span>,\n ];\n }\n}\n\nconst styles = (theme) => ({\n portal: {\n position: 'absolute',\n opacity: 0,\n transition: 'opacity 200ms linear',\n },\n floatingButtonRow: {\n backgroundColor: theme.palette.background.paper,\n borderRadius: '1px',\n display: 'flex',\n padding: '10px',\n border: `solid 1px ${theme.palette.grey[200]}`,\n boxShadow:\n '0px 1px 5px 0px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 3px 1px -2px rgba(0, 0, 0, 0.12)',\n },\n progress: {\n position: 'absolute',\n left: '0',\n width: 'fit-content',\n top: '0%',\n transition: 'opacity 200ms linear',\n },\n hideProgress: {\n opacity: 0,\n },\n loading: {\n opacity: 0.3,\n },\n pendingDelete: {\n opacity: 0.3,\n },\n root: {\n position: 'relative',\n border: `solid 1px ${theme.palette.common.white}`,\n display: 'flex',\n transition: 'opacity 200ms linear',\n },\n delete: {\n position: 'absolute',\n right: 0,\n },\n imageContainer: {\n position: 'relative',\n width: 'fit-content',\n display: 'flex',\n alignItems: 'center',\n\n '&&:hover > .resize': {\n display: 'block',\n },\n },\n active: {\n border: `solid 1px ${theme.palette.primary.main}`,\n },\n resize: {\n backgroundColor: theme.palette.primary.main,\n cursor: 'col-resize',\n height: '35px',\n width: '5px',\n borderRadius: 8,\n marginLeft: '5px',\n marginRight: '10px',\n display: 'none',\n },\n drawableHeight: {\n minHeight: 350,\n },\n});\n\nexport default withStyles(styles)(Component);\n"],"file":"component.js"}
1
+ {"version":3,"file":"component.js","names":["log","debug","size","s","Component","percent","multiplier","img","naturalWidth","naturalHeight","width","floored","parseInt","toFixed","props","node","editor","update","cloneDeep","data","w","resizePercent","getPercentFromWidth","isEqual","nodePath","Editor","path","selection","apply","type","properties","newProperties","window","addEventListener","startResizing","stopResizing","maxImageWidth","maxImageHeight","box","style","dimensions","height","updateImageDimensions","setState","e","bounds","target","getBoundingClientRect","clientX","left","clientY","top","hasMinimumWidth","hasDimensionsConstraints","set","equals","change","c","setNodeByKey","key","removeEventListener","initialDim","nextDim","keepAspectRatio","resizeType","imageAspectRatio","applySizeData","resizeHandle","resize","initialiseResize","objectFit","focused","classes","attributes","children","onFocus","active","alignment","alt","deleteStatus","loaded","src","isLoaded","justifyContent","getSize","className","classNames","root","loading","pendingDelete","progressClasses","progress","hideProgress","imageContainer","image","ref","loadImage","React","PropTypes","shape","string","array","object","isRequired","bool","func","value","onBlur","number","styles","theme","portal","position","opacity","transition","floatingButtonRow","backgroundColor","borderRadius","display","padding","border","boxShadow","right","alignItems","palette","primary","main","cursor","marginLeft","marginRight","drawableHeight","minHeight","withStyles"],"sources":["../../../src/plugins/image/component.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport debug from 'debug';\nimport isEqual from 'lodash/isEqual';\nimport cloneDeep from 'lodash/cloneDeep';\nimport LinearProgress from '@material-ui/core/LinearProgress';\nimport { withStyles } from '@material-ui/core/styles';\nimport { Editor } from 'slate';\n\nconst log = debug('@pie-lib:editable-html:plugins:image:component');\n\nconst size = s => (s ? `${s}px` : 'auto');\n\nexport class Component extends React.Component {\n static propTypes = {\n node: PropTypes.shape({\n type: PropTypes.string,\n children: PropTypes.array,\n data: PropTypes.object\n }).isRequired,\n focused: PropTypes.bool,\n editor: PropTypes.shape({\n change: PropTypes.func.isRequired,\n value: PropTypes.object\n }).isRequired,\n classes: PropTypes.object.isRequired,\n attributes: PropTypes.object,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n maxImageWidth: PropTypes.number,\n maxImageHeight: PropTypes.number\n };\n\n getWidth = percent => {\n const multiplier = percent / 100;\n return this.img.naturalWidth * multiplier;\n };\n\n getHeight = percent => {\n const multiplier = percent / 100;\n return this.img.naturalHeight * multiplier;\n };\n\n getPercentFromWidth = width => {\n var floored = (width / this.img.naturalWidth) * 4;\n return parseInt(floored.toFixed(0) * 25, 10);\n };\n\n applySizeData = () => {\n const { node, editor } = this.props;\n\n let update = cloneDeep(node.data);\n\n const w = update.width;\n\n if (w) {\n update = update.resizePercent = this.getPercentFromWidth(w);\n }\n\n log('[applySizeData] update: ', update);\n\n if (!isEqual(update, node.data)) {\n const nodePath = Editor.path(editor, editor.selection);\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 };\n\n initialiseResize = () => {\n window.addEventListener('mousemove', this.startResizing, false);\n window.addEventListener('mouseup', this.stopResizing, false);\n };\n\n componentDidMount() {\n this.applySizeData();\n\n const resizeHandle = this.resize;\n\n if (resizeHandle) {\n resizeHandle.addEventListener('mousedown', this.initialiseResize, false);\n }\n }\n\n componentDidUpdate() {\n this.applySizeData();\n }\n\n getSize(data) {\n return {\n width: size(data.width),\n height: size(data.height),\n objectFit: 'contain'\n };\n }\n\n loadImage = () => {\n let { maxImageWidth, maxImageHeight } = this.props || {};\n maxImageWidth = maxImageWidth || 700;\n maxImageHeight = maxImageHeight || 900;\n\n const box = this.img;\n\n //on first load\n if (!box.style.width || box.style.width === 'auto') {\n const dimensions = {\n width: (box && box.naturalWidth) || 100,\n height: (box && box.naturalHeight) || 100\n };\n\n const { width, height } = this.updateImageDimensions(\n dimensions,\n {\n width: dimensions.width < maxImageWidth ? dimensions.width : maxImageWidth,\n height: dimensions.height < maxImageHeight ? dimensions.height : maxImageHeight\n },\n true\n );\n\n box.style.width = `${width}px`;\n box.style.height = `${height}px`;\n\n this.setState({\n dimensions: { height: height, width: width }\n });\n\n const { node, editor } = this.props;\n\n const update = cloneDeep(node.data);\n\n update.width = width;\n update.height = height;\n\n if (!isEqual(update, node.data)) {\n const nodePath = Editor.path(editor, editor.selection);\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 }\n };\n\n startResizing = e => {\n const bounds = e.target.getBoundingClientRect();\n const box = this.img;\n const dimensions = {\n width: (box && box.naturalWidth) || 100,\n height: (box && box.naturalHeight) || 100\n };\n\n const { width, height } = this.updateImageDimensions(\n dimensions,\n {\n width: e.clientX - bounds.left,\n height: e.clientY - bounds.top\n },\n true\n );\n\n const hasMinimumWidth = width > 50 && height > 50;\n const hasDimensionsConstraints = width <= 700 && height <= 900;\n\n if (hasMinimumWidth && hasDimensionsConstraints && box) {\n box.style.width = `${width}px`;\n box.style.height = `${height}px`;\n\n this.setState({\n dimensions: { height: height, width: width }\n });\n\n const { node, editor } = this.props;\n\n let update = node.data;\n\n update = update.set('width', width);\n update = update.set('height', height);\n\n if (!update.equals(node.data)) {\n editor.change(c => c.setNodeByKey(node.key, { data: update }));\n }\n }\n };\n\n stopResizing = () => {\n window.removeEventListener('mousemove', this.startResizing, false);\n window.removeEventListener('mouseup', this.stopResizing, false);\n };\n\n updateImageDimensions = (initialDim, nextDim, keepAspectRatio, resizeType) => {\n // if we want to keep image aspect ratio\n if (keepAspectRatio) {\n const imageAspectRatio = initialDim.width / initialDim.height;\n\n if (resizeType === 'height') {\n // if we want to change image height => we update the width accordingly\n return {\n width: nextDim.height * imageAspectRatio,\n height: nextDim.height\n };\n }\n\n // if we want to change image width => we update the height accordingly\n return {\n width: nextDim.width,\n height: nextDim.width / imageAspectRatio\n };\n }\n\n // if we don't want to keep aspect ratio, we just update both values\n return {\n width: nextDim.width,\n height: nextDim.height\n };\n };\n\n render() {\n const { node, focused, classes, attributes, children, onFocus } = this.props;\n const active = focused;\n const { alignment, alt, deleteStatus, loaded, percent, src } = node.data;\n const isLoaded = loaded !== false;\n let justifyContent;\n\n switch (alignment) {\n case 'left':\n justifyContent = 'flex-start';\n break;\n case 'center':\n justifyContent = 'center';\n break;\n case 'right':\n justifyContent = 'flex-end';\n break;\n default:\n justifyContent = 'flex-start';\n break;\n }\n log('[render] node.data:', node.data);\n\n const size = this.getSize(node.data);\n\n log('[render] style:', size);\n\n const className = classNames(classes.root, {\n [classes.loading]: !isLoaded,\n [classes.pendingDelete]: deleteStatus === 'pending'\n });\n\n const progressClasses = classNames(classes.progress, {\n [classes.hideProgress]: isLoaded\n });\n\n return (\n <div onFocus={onFocus} className={className} style={{ justifyContent }} {...attributes}>\n {children}\n <LinearProgress\n mode=\"determinate\"\n value={percent > 0 ? percent : 0}\n className={progressClasses}\n />\n <div className={classes.imageContainer}>\n <img\n className={classNames(classes.image, { [classes.active]: active })}\n ref={ref => {\n this.img = ref;\n }}\n src={src}\n style={size}\n onLoad={this.loadImage}\n alt={alt}\n />\n <div\n ref={ref => {\n this.resize = ref;\n }}\n className={classNames(classes.resize, 'resize')}\n />\n </div>\n </div>\n );\n }\n}\n\nconst styles = theme => ({\n portal: {\n position: 'absolute',\n opacity: 0,\n transition: 'opacity 200ms linear'\n },\n floatingButtonRow: {\n backgroundColor: 'white',\n borderRadius: '1px',\n display: 'flex',\n padding: '10px',\n border: 'solid 1px #eeeeee',\n boxShadow:\n '0px 1px 5px 0px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 3px 1px -2px rgba(0, 0, 0, 0.12)'\n },\n progress: {\n position: 'absolute',\n left: '0',\n width: 'fit-content',\n top: '0%',\n transition: 'opacity 200ms linear'\n },\n hideProgress: {\n opacity: 0\n },\n loading: {\n opacity: 0.3\n },\n pendingDelete: {\n opacity: 0.3\n },\n root: {\n position: 'relative',\n border: 'solid 1px white',\n display: 'flex',\n transition: 'opacity 200ms linear'\n },\n delete: {\n position: 'absolute',\n right: 0\n },\n imageContainer: {\n position: 'relative',\n width: 'fit-content',\n display: 'flex',\n alignItems: 'center',\n\n '&&:hover > .resize': {\n display: 'block'\n }\n },\n active: {\n border: `solid 1px ${theme.palette.primary.main}`\n },\n resize: {\n backgroundColor: theme.palette.primary.main,\n cursor: 'col-resize',\n height: '35px',\n width: '5px',\n borderRadius: 8,\n marginLeft: '5px',\n marginRight: '10px',\n display: 'none'\n },\n drawableHeight: {\n minHeight: 350\n }\n});\n\nexport default withStyles(styles)(Component);\n"],"mappings":"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"}
@@ -82,7 +82,7 @@ var ImageToolbar = /*#__PURE__*/function (_React$Component) {
82
82
 
83
83
  _this.props.onChange({
84
84
  alt: newAlt
85
- }, true);
85
+ });
86
86
  });
87
87
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onAlignmentClick", function (alignment) {
88
88
  log('[onAlignmentClick]: alignment:', alignment);
@@ -116,11 +116,10 @@ var ImageToolbar = /*#__PURE__*/function (_React$Component) {
116
116
  var _this$props = this.props,
117
117
  classes = _this$props.classes,
118
118
  alignment = _this$props.alignment,
119
- imageLoaded = _this$props.imageLoaded,
120
- disableImageAlignmentButtons = _this$props.disableImageAlignmentButtons;
119
+ imageLoaded = _this$props.imageLoaded;
121
120
  return /*#__PURE__*/_react["default"].createElement("div", {
122
121
  className: classes.holder
123
- }, !disableImageAlignmentButtons && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(AlignmentButton, {
122
+ }, /*#__PURE__*/_react["default"].createElement(AlignmentButton, {
124
123
  alignment: 'left',
125
124
  active: alignment === 'left',
126
125
  onClick: this.onAlignmentClick
@@ -132,8 +131,8 @@ var ImageToolbar = /*#__PURE__*/function (_React$Component) {
132
131
  alignment: 'right',
133
132
  active: alignment === 'right',
134
133
  onClick: this.onAlignmentClick
135
- })), /*#__PURE__*/_react["default"].createElement("span", {
136
- className: (0, _classnames["default"])((_classNames = {}, (0, _defineProperty2["default"])(_classNames, classes.disabled, !imageLoaded), (0, _defineProperty2["default"])(_classNames, classes.altButton, !disableImageAlignmentButtons), _classNames)),
134
+ }), /*#__PURE__*/_react["default"].createElement("span", {
135
+ className: (0, _classnames["default"])((_classNames = {}, (0, _defineProperty2["default"])(_classNames, classes.disabled, !imageLoaded), (0, _defineProperty2["default"])(_classNames, classes.altButton, true), _classNames)),
137
136
  onMouseDown: function onMouseDown(event) {
138
137
  return imageLoaded && _this2.renderDialog(event);
139
138
  }
@@ -149,8 +148,7 @@ exports.ImageToolbar = ImageToolbar;
149
148
  classes: _propTypes["default"].object.isRequired,
150
149
  alignment: _propTypes["default"].string,
151
150
  alt: _propTypes["default"].string,
152
- imageLoaded: _propTypes["default"].bool,
153
- disableImageAlignmentButtons: _propTypes["default"].bool
151
+ imageLoaded: _propTypes["default"].bool
154
152
  });
155
153
 
156
154
  var styles = function styles(theme) {
@@ -174,4 +172,4 @@ var styles = function styles(theme) {
174
172
  var _default = (0, _styles.withStyles)(styles)(ImageToolbar);
175
173
 
176
174
  exports["default"] = _default;
177
- //# sourceMappingURL=image-toolbar.js.map
175
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJsb2ciLCJkZWJ1ZyIsIkFsaWdubWVudEJ1dHRvbiIsImFsaWdubWVudCIsImFjdGl2ZSIsIm9uQ2xpY2siLCJwcm9wVHlwZXMiLCJQcm9wVHlwZXMiLCJzdHJpbmciLCJpc1JlcXVpcmVkIiwiYm9vbCIsImZ1bmMiLCJJbWFnZVRvb2xiYXIiLCJuZXdBbHQiLCJwcm9wcyIsIm9uQ2hhbmdlIiwiYWx0IiwicG9wb3ZlckVsIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwiZWwiLCJvbkFsdFRleHREb25lIiwiUmVhY3RET00iLCJyZW5kZXIiLCJib2R5IiwiYXBwZW5kQ2hpbGQiLCJjbGFzc2VzIiwiaW1hZ2VMb2FkZWQiLCJob2xkZXIiLCJvbkFsaWdubWVudENsaWNrIiwiY2xhc3NOYW1lcyIsImRpc2FibGVkIiwiYWx0QnV0dG9uIiwiZXZlbnQiLCJyZW5kZXJEaWFsb2ciLCJSZWFjdCIsIkNvbXBvbmVudCIsIm9iamVjdCIsInN0eWxlcyIsInRoZW1lIiwicGFkZGluZ0xlZnQiLCJzcGFjaW5nIiwidW5pdCIsImRpc3BsYXkiLCJhbGlnbkl0ZW1zIiwib3BhY2l0eSIsImJvcmRlckxlZnQiLCJtYXJnaW5MZWZ0Iiwid2l0aFN0eWxlcyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wbHVnaW5zL2ltYWdlL2ltYWdlLXRvb2xiYXIuanN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCBSZWFjdERPTSBmcm9tICdyZWFjdC1kb20nO1xuaW1wb3J0IHsgd2l0aFN0eWxlcyB9IGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL3N0eWxlcyc7XG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcblxuaW1wb3J0IHsgTWFya0J1dHRvbiB9IGZyb20gJy4uL3Rvb2xiYXIvdG9vbGJhci1idXR0b25zJztcbmltcG9ydCBBbHREaWFsb2cgZnJvbSAnLi9hbHQtZGlhbG9nJztcblxuY29uc3QgbG9nID0gZGVidWcoJ0BwaWUtbGliOmVkaXRhYmxlLWh0bWw6cGx1Z2luczppbWFnZTppbWFnZS10b29sYmFyJyk7XG5cbmNvbnN0IEFsaWdubWVudEJ1dHRvbiA9ICh7IGFsaWdubWVudCwgYWN0aXZlLCBvbkNsaWNrIH0pID0+IHtcbiAgcmV0dXJuIChcbiAgICA8TWFya0J1dHRvbiBhY3RpdmU9e2FjdGl2ZX0gb25Ub2dnbGU9eygpID0+IG9uQ2xpY2soYWxpZ25tZW50KX0gbGFiZWw9e2FsaWdubWVudH0+XG4gICAgICB7YWxpZ25tZW50fVxuICAgIDwvTWFya0J1dHRvbj5cbiAgKTtcbn07XG5cbkFsaWdubWVudEJ1dHRvbi5wcm9wVHlwZXMgPSB7XG4gIGFsaWdubWVudDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICBhY3RpdmU6IFByb3BUeXBlcy5ib29sLmlzUmVxdWlyZWQsXG4gIG9uQ2xpY2s6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWRcbn07XG5cbmV4cG9ydCBjbGFzcyBJbWFnZVRvb2xiYXIgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgIG9uQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgIGNsYXNzZXM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICBhbGlnbm1lbnQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgYWx0OiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGltYWdlTG9hZGVkOiBQcm9wVHlwZXMuYm9vbFxuICB9O1xuXG4gIG9uQWx0VGV4dERvbmUgPSBuZXdBbHQgPT4ge1xuICAgIGxvZygnW29uQWx0VGV4dERvbmVdOiBhbHQ6JywgbmV3QWx0KTtcblxuICAgIHRoaXMucHJvcHMub25DaGFuZ2UoeyBhbHQ6IG5ld0FsdCB9KTtcbiAgfTtcblxuICBvbkFsaWdubWVudENsaWNrID0gYWxpZ25tZW50ID0+IHtcbiAgICBsb2coJ1tvbkFsaWdubWVudENsaWNrXTogYWxpZ25tZW50OicsIGFsaWdubWVudCk7XG4gICAgdGhpcy5wcm9wcy5vbkNoYW5nZSh7IGFsaWdubWVudCB9KTtcbiAgfTtcblxuICByZW5kZXJEaWFsb2cgPSAoKSA9PiB7XG4gICAgY29uc3QgeyBhbHQgfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3QgcG9wb3ZlckVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cbiAgICBjb25zdCBlbCA9IDxBbHREaWFsb2cgYWx0PXthbHR9IG9uRG9uZT17dGhpcy5vbkFsdFRleHREb25lfSAvPjtcblxuICAgIFJlYWN0RE9NLnJlbmRlcihlbCwgcG9wb3ZlckVsKTtcblxuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQocG9wb3ZlckVsKTtcbiAgfTtcblxuICByZW5kZXIoKSB7XG4gICAgY29uc3QgeyBjbGFzc2VzLCBhbGlnbm1lbnQsIGltYWdlTG9hZGVkIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc2VzLmhvbGRlcn0+XG4gICAgICAgIDxBbGlnbm1lbnRCdXR0b25cbiAgICAgICAgICBhbGlnbm1lbnQ9eydsZWZ0J31cbiAgICAgICAgICBhY3RpdmU9e2FsaWdubWVudCA9PT0gJ2xlZnQnfVxuICAgICAgICAgIG9uQ2xpY2s9e3RoaXMub25BbGlnbm1lbnRDbGlja31cbiAgICAgICAgLz5cbiAgICAgICAgPEFsaWdubWVudEJ1dHRvblxuICAgICAgICAgIGFsaWdubWVudD17J2NlbnRlcid9XG4gICAgICAgICAgYWN0aXZlPXthbGlnbm1lbnQgPT09ICdjZW50ZXInfVxuICAgICAgICAgIG9uQ2xpY2s9e3RoaXMub25BbGlnbm1lbnRDbGlja31cbiAgICAgICAgLz5cbiAgICAgICAgPEFsaWdubWVudEJ1dHRvblxuICAgICAgICAgIGFsaWdubWVudD17J3JpZ2h0J31cbiAgICAgICAgICBhY3RpdmU9e2FsaWdubWVudCA9PT0gJ3JpZ2h0J31cbiAgICAgICAgICBvbkNsaWNrPXt0aGlzLm9uQWxpZ25tZW50Q2xpY2t9XG4gICAgICAgIC8+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKHtcbiAgICAgICAgICAgIFtjbGFzc2VzLmRpc2FibGVkXTogIWltYWdlTG9hZGVkLFxuICAgICAgICAgICAgW2NsYXNzZXMuYWx0QnV0dG9uXTogdHJ1ZVxuICAgICAgICAgIH0pfVxuICAgICAgICAgIG9uTW91c2VEb3duPXtldmVudCA9PiBpbWFnZUxvYWRlZCAmJiB0aGlzLnJlbmRlckRpYWxvZyhldmVudCl9XG4gICAgICAgID5cbiAgICAgICAgICBBbHQgdGV4dFxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG59XG5cbmNvbnN0IHN0eWxlcyA9IHRoZW1lID0+ICh7XG4gIGhvbGRlcjoge1xuICAgIHBhZGRpbmdMZWZ0OiB0aGVtZS5zcGFjaW5nLnVuaXQsXG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGFsaWduSXRlbXM6ICdjZW50ZXInXG4gIH0sXG4gIGRpc2FibGVkOiB7XG4gICAgb3BhY2l0eTogMC41XG4gIH0sXG4gIGFsdEJ1dHRvbjoge1xuICAgIGJvcmRlckxlZnQ6ICcxcHggc29saWQgZ3JleScsXG4gICAgcGFkZGluZ0xlZnQ6IDgsXG4gICAgbWFyZ2luTGVmdDogNCxcbiAgfSxcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCB3aXRoU3R5bGVzKHN0eWxlcykoSW1hZ2VUb29sYmFyKTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFDQTs7Ozs7O0FBRUEsSUFBTUEsR0FBRyxHQUFHLElBQUFDLGlCQUFBLEVBQU0sb0RBQU4sQ0FBWjs7QUFFQSxJQUFNQyxlQUFlLEdBQUcsU0FB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
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/plugins/image/image-toolbar.jsx"],"names":["log","AlignmentButton","alignment","active","onClick","propTypes","PropTypes","string","isRequired","bool","func","ImageToolbar","newAlt","props","onChange","alt","popoverEl","document","createElement","el","onAltTextDone","ReactDOM","render","body","appendChild","classes","imageLoaded","disableImageAlignmentButtons","holder","onAlignmentClick","disabled","altButton","event","renderDialog","React","Component","object","styles","theme","paddingLeft","spacing","unit","display","alignItems","opacity","borderLeft","marginLeft"],"mappings":"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","sourcesContent":["import PropTypes from 'prop-types';\nimport React from 'react';\nimport debug from 'debug';\nimport ReactDOM from 'react-dom';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\n\nimport { MarkButton } from '../toolbar/toolbar-buttons';\nimport AltDialog from './alt-dialog';\n\nconst log = debug('@pie-lib:editable-html:plugins:image:image-toolbar');\n\nconst AlignmentButton = ({ alignment, active, onClick }) => {\n return (\n <MarkButton active={active} onToggle={() => onClick(alignment)} label={alignment}>\n {alignment}\n </MarkButton>\n );\n};\n\nAlignmentButton.propTypes = {\n alignment: PropTypes.string.isRequired,\n active: PropTypes.bool.isRequired,\n onClick: PropTypes.func.isRequired,\n};\n\nexport class ImageToolbar extends React.Component {\n static propTypes = {\n onChange: PropTypes.func.isRequired,\n classes: PropTypes.object.isRequired,\n alignment: PropTypes.string,\n alt: PropTypes.string,\n imageLoaded: PropTypes.bool,\n disableImageAlignmentButtons: PropTypes.bool,\n };\n\n onAltTextDone = (newAlt) => {\n log('[onAltTextDone]: alt:', newAlt);\n\n this.props.onChange({ alt: newAlt }, true);\n };\n\n onAlignmentClick = (alignment) => {\n log('[onAlignmentClick]: alignment:', alignment);\n this.props.onChange({ alignment });\n };\n\n renderDialog = () => {\n const { alt } = this.props;\n const popoverEl = document.createElement('div');\n\n const el = <AltDialog alt={alt} onDone={this.onAltTextDone} />;\n\n ReactDOM.render(el, popoverEl);\n\n document.body.appendChild(popoverEl);\n };\n\n render() {\n const { classes, alignment, imageLoaded, disableImageAlignmentButtons } = this.props;\n return (\n <div className={classes.holder}>\n {!disableImageAlignmentButtons && (\n <>\n <AlignmentButton alignment={'left'} active={alignment === 'left'} onClick={this.onAlignmentClick} />\n <AlignmentButton alignment={'center'} active={alignment === 'center'} onClick={this.onAlignmentClick} />\n <AlignmentButton alignment={'right'} active={alignment === 'right'} onClick={this.onAlignmentClick} />\n </>\n )}\n <span\n className={classNames({\n [classes.disabled]: !imageLoaded,\n [classes.altButton]: !disableImageAlignmentButtons,\n })}\n onMouseDown={(event) => imageLoaded && this.renderDialog(event)}\n >\n Alt text\n </span>\n </div>\n );\n }\n}\n\nconst styles = (theme) => ({\n holder: {\n paddingLeft: theme.spacing.unit,\n display: 'flex',\n alignItems: 'center',\n },\n disabled: {\n opacity: 0.5,\n },\n altButton: {\n borderLeft: '1px solid grey',\n paddingLeft: 8,\n marginLeft: 4,\n },\n});\n\nexport default withStyles(styles)(ImageToolbar);\n"],"file":"image-toolbar.js"}
1
+ {"version":3,"file":"image-toolbar.js","names":["log","debug","AlignmentButton","alignment","active","onClick","propTypes","PropTypes","string","isRequired","bool","func","ImageToolbar","newAlt","props","onChange","alt","popoverEl","document","createElement","el","onAltTextDone","ReactDOM","render","body","appendChild","classes","imageLoaded","holder","onAlignmentClick","classNames","disabled","altButton","event","renderDialog","React","Component","object","styles","theme","paddingLeft","spacing","unit","display","alignItems","opacity","borderLeft","marginLeft","withStyles"],"sources":["../../../src/plugins/image/image-toolbar.jsx"],"sourcesContent":["import PropTypes from 'prop-types';\nimport React from 'react';\nimport debug from 'debug';\nimport ReactDOM from 'react-dom';\nimport { withStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\n\nimport { MarkButton } from '../toolbar/toolbar-buttons';\nimport AltDialog from './alt-dialog';\n\nconst log = debug('@pie-lib:editable-html:plugins:image:image-toolbar');\n\nconst AlignmentButton = ({ alignment, active, onClick }) => {\n return (\n <MarkButton active={active} onToggle={() => onClick(alignment)} label={alignment}>\n {alignment}\n </MarkButton>\n );\n};\n\nAlignmentButton.propTypes = {\n alignment: PropTypes.string.isRequired,\n active: PropTypes.bool.isRequired,\n onClick: PropTypes.func.isRequired\n};\n\nexport class ImageToolbar extends React.Component {\n static propTypes = {\n onChange: PropTypes.func.isRequired,\n classes: PropTypes.object.isRequired,\n alignment: PropTypes.string,\n alt: PropTypes.string,\n imageLoaded: PropTypes.bool\n };\n\n onAltTextDone = newAlt => {\n log('[onAltTextDone]: alt:', newAlt);\n\n this.props.onChange({ alt: newAlt });\n };\n\n onAlignmentClick = alignment => {\n log('[onAlignmentClick]: alignment:', alignment);\n this.props.onChange({ alignment });\n };\n\n renderDialog = () => {\n const { alt } = this.props;\n const popoverEl = document.createElement('div');\n\n const el = <AltDialog alt={alt} onDone={this.onAltTextDone} />;\n\n ReactDOM.render(el, popoverEl);\n\n document.body.appendChild(popoverEl);\n };\n\n render() {\n const { classes, alignment, imageLoaded } = this.props;\n\n return (\n <div className={classes.holder}>\n <AlignmentButton\n alignment={'left'}\n active={alignment === 'left'}\n onClick={this.onAlignmentClick}\n />\n <AlignmentButton\n alignment={'center'}\n active={alignment === 'center'}\n onClick={this.onAlignmentClick}\n />\n <AlignmentButton\n alignment={'right'}\n active={alignment === 'right'}\n onClick={this.onAlignmentClick}\n />\n <span\n className={classNames({\n [classes.disabled]: !imageLoaded,\n [classes.altButton]: true\n })}\n onMouseDown={event => imageLoaded && this.renderDialog(event)}\n >\n Alt text\n </span>\n </div>\n );\n }\n}\n\nconst styles = theme => ({\n holder: {\n paddingLeft: theme.spacing.unit,\n display: 'flex',\n alignItems: 'center'\n },\n disabled: {\n opacity: 0.5\n },\n altButton: {\n borderLeft: '1px solid grey',\n paddingLeft: 8,\n marginLeft: 4,\n },\n});\n\nexport default withStyles(styles)(ImageToolbar);\n"],"mappings":"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"}
@@ -10,6 +10,14 @@ exports.serialization = void 0;
10
10
 
11
11
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
12
12
 
13
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
14
+
15
+ var _react = _interopRequireDefault(require("react"));
16
+
17
+ var _debug = _interopRequireDefault(require("debug"));
18
+
19
+ var _get = _interopRequireDefault(require("lodash/get"));
20
+
13
21
  var _slate = require("slate");
14
22
 
15
23
  var _Image = _interopRequireDefault(require("@material-ui/icons/Image"));
@@ -20,57 +28,88 @@ var _imageToolbar = _interopRequireDefault(require("./image-toolbar"));
20
28
 
21
29
  var _insertImageHandler = _interopRequireDefault(require("./insert-image-handler"));
22
30
 
23
- var _react = _interopRequireDefault(require("react"));
24
-
25
- var _debug = _interopRequireDefault(require("debug"));
26
-
27
31
  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; }
28
32
 
29
33
  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; }
30
34
 
35
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
36
+
37
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
38
+
39
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
40
+
31
41
  var log = (0, _debug["default"])('@pie-lib:editable-html:plugins:image');
32
42
 
43
+ var getNodeBy = function getNodeBy(editor, callback) {
44
+ var descendants = _slate.Node.descendants(editor, {
45
+ reverse: true
46
+ });
47
+
48
+ var _iterator = _createForOfIteratorHelper(descendants),
49
+ _step;
50
+
51
+ try {
52
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
53
+ var _step$value = (0, _slicedToArray2["default"])(_step.value, 2),
54
+ descendant = _step$value[0],
55
+ descendantPath = _step$value[1];
56
+
57
+ if (callback(descendant, descendantPath)) {
58
+ return [descendant, descendantPath];
59
+ }
60
+ }
61
+ } catch (err) {
62
+ _iterator.e(err);
63
+ } finally {
64
+ _iterator.f();
65
+ }
66
+ };
67
+
33
68
  function ImagePlugin(opts) {
34
69
  var toolbar = opts.insertImageRequested && {
35
70
  icon: /*#__PURE__*/_react["default"].createElement(_Image["default"], null),
36
- onClick: function onClick(value, onChange) {
71
+ onClick: function onClick(editor) {
37
72
  log('[toolbar] onClick');
38
-
39
- var inline = _slate.Inline.create({
73
+ var inline = {
40
74
  type: 'image',
41
- isVoid: true,
42
75
  data: {
76
+ newImage: true,
43
77
  loaded: false,
44
78
  src: undefined
45
- }
46
- });
79
+ },
80
+ children: [{
81
+ text: ''
82
+ }]
83
+ };
84
+ editor.insertNode(inline);
47
85
 
48
- var change = value.change().insertInline(inline);
49
- onChange(change);
50
- opts.insertImageRequested(function (getValue) {
51
- return new _insertImageHandler["default"](inline, getValue, onChange);
86
+ var _getNodeBy = getNodeBy(editor, function (descendant) {
87
+ return descendant.type === 'image' && (0, _get["default"])(descendant, 'data.newImage');
88
+ }),
89
+ _getNodeBy2 = (0, _slicedToArray2["default"])(_getNodeBy, 2),
90
+ node = _getNodeBy2[0],
91
+ nodePath = _getNodeBy2[1];
92
+
93
+ opts.insertImageRequested(function () {
94
+ return new _insertImageHandler["default"](node, nodePath, editor);
52
95
  });
53
96
  },
54
- supports: function supports(node) {
55
- return node.object === 'inline' && node.type === 'image';
56
- },
57
- customToolbar: function customToolbar(node, value, onToolbarDone) {
58
- var alignment = node.data.get('alignment');
59
- var alt = node.data.get('alt');
60
- var imageLoaded = node.data.get('loaded') !== false;
97
+ customToolbar: function customToolbar(node, value, editor, onToolbarDone) {
98
+ var alignment = node.data.alignment;
99
+ var alt = node.data.alt;
100
+ var imageLoaded = node.data.loaded !== false;
61
101
 
62
- var onChange = function onChange(newValues, done) {
102
+ var onChange = function onChange(newValues) {
63
103
  var update = _objectSpread(_objectSpread({}, node.data.toObject()), newValues);
64
104
 
65
105
  var change = value.change().setNodeByKey(node.key, {
66
106
  data: update
67
107
  });
68
- onToolbarDone(change, done);
108
+ onToolbarDone(change, false);
69
109
  };
70
110
 
71
111
  var Tb = function Tb() {
72
112
  return /*#__PURE__*/_react["default"].createElement(_imageToolbar["default"], {
73
- disableImageAlignmentButtons: opts.disableImageAlignmentButtons,
74
113
  alt: alt,
75
114
  imageLoaded: imageLoaded,
76
115
  alignment: alignment || 'left',
@@ -85,6 +124,23 @@ function ImagePlugin(opts) {
85
124
  return {
86
125
  name: 'image',
87
126
  toolbar: toolbar,
127
+ rules: function rules(editor) {
128
+ var isVoid = editor.isVoid,
129
+ isInline = editor.isInline;
130
+
131
+ editor.isVoid = function (element) {
132
+ return element.type === 'image' ? true : isVoid(element);
133
+ };
134
+
135
+ editor.isInline = function (element) {
136
+ return element.type === 'image' ? true : isInline(element);
137
+ };
138
+
139
+ return editor;
140
+ },
141
+ supports: function supports(node) {
142
+ return node.type === 'image';
143
+ },
88
144
  deleteNode: function deleteNode(e, node, value, onChange) {
89
145
  e.preventDefault();
90
146
 
@@ -135,7 +191,7 @@ function ImagePlugin(opts) {
135
191
  maxImageWidth: opts.maxImageWidth,
136
192
  maxImageHeight: opts.maxImageHeight
137
193
  }, props);
138
- return /*#__PURE__*/_react["default"].createElement(_component["default"], all);
194
+ return /*#__PURE__*/_react["default"].createElement(_component["default"], all, props.children);
139
195
  }
140
196
  },
141
197
  normalizeNode: function normalizeNode(node) {
@@ -208,7 +264,7 @@ var serialization = {
208
264
  var src = data.get('src');
209
265
  var width = data.get('width');
210
266
  var height = data.get('height');
211
- var alignment = data.get('alignment') || 'left';
267
+ var alignment = data.get('alignment');
212
268
  var margin = data.get('margin');
213
269
  var justifyContent = data.get('margin');
214
270
  var alt = data.get('alt');
@@ -259,4 +315,4 @@ var serialization = {
259
315
  }
260
316
  };
261
317
  exports.serialization = serialization;
262
- //# sourceMappingURL=index.js.map
318
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJsb2ciLCJkZWJ1ZyIsImdldE5vZGVCeSIsImVkaXRvciIsImNhbGxiYWNrIiwiZGVzY2VuZGFudHMiLCJTbGF0ZU5vZGUiLCJyZXZlcnNlIiwiZGVzY2VuZGFudCIsImRlc2NlbmRhbnRQYXRoIiwiSW1hZ2VQbHVnaW4iLCJvcHRzIiwidG9vbGJhciIsImluc2VydEltYWdlUmVxdWVzdGVkIiwiaWNvbiIsIm9uQ2xpY2siLCJpbmxpbmUiLCJ0eXBlIiwiZGF0YSIsIm5ld0ltYWdlIiwibG9hZGVkIiwic3JjIiwidW5kZWZpbmVkIiwiY2hpbGRyZW4iLCJ0ZXh0IiwiaW5zZXJ0Tm9kZSIsImdldCIsIm5vZGUiLCJub2RlUGF0aCIsIkluc2VydEltYWdlSGFuZGxlciIsImN1c3RvbVRvb2xiYXIiLCJ2YWx1ZSIsIm9uVG9vbGJhckRvbmUiLCJhbGlnbm1lbnQiLCJhbHQiLCJpbWFnZUxvYWRlZCIsIm9uQ2hhbmdlIiwibmV3VmFsdWVzIiwidXBkYXRlIiwidG9PYmplY3QiLCJjaGFuZ2UiLCJzZXROb2RlQnlLZXkiLCJrZXkiLCJUYiIsInNob3dEb25lIiwibmFtZSIsInJ1bGVzIiwiaXNWb2lkIiwiaXNJbmxpbmUiLCJlbGVtZW50Iiwic3VwcG9ydHMiLCJkZWxldGVOb2RlIiwiZSIsInByZXZlbnREZWZhdWx0Iiwib25EZWxldGUiLCJtZXJnZSIsIkRhdGEiLCJjcmVhdGUiLCJkZWxldGVTdGF0dXMiLCJlcnIiLCJ2IiwicmVtb3ZlTm9kZUJ5S2V5Iiwic3RvcFJlc2V0IiwiaW1nUGVuZGluZ0luc2VydGlvbiIsImRvY3VtZW50IiwiZmluZERlc2NlbmRhbnQiLCJuIiwicmVuZGVyTm9kZSIsInByb3BzIiwiYWxsIiwiT2JqZWN0IiwiYXNzaWduIiwib25Gb2N1cyIsIm9uQmx1ciIsIm1heEltYWdlV2lkdGgiLCJtYXhJbWFnZUhlaWdodCIsIm5vcm1hbGl6ZU5vZGUiLCJ0ZXh0Tm9kZU1hcCIsInVwZGF0ZU5vZGVzQXJyYXkiLCJpbmRleCIsIm9iamVjdCIsImQiLCJwdXNoIiwibGVuZ3RoIiwid2l0aG91dE5vcm1hbGl6YXRpb24iLCJmb3JFYWNoIiwiaW5zZXJ0VGV4dEJ5S2V5Iiwic2VyaWFsaXphdGlvbiIsImRlc2VyaWFsaXplIiwiZWwiLCJ0YWdOYW1lIiwidG9Mb3dlckNhc2UiLCJzdHlsZSIsIndpZHRoIiwiaGVpZ2h0IiwibWFyZ2luIiwianVzdGlmeUNvbnRlbnQiLCJwYXJzZUludCIsInJlcGxhY2UiLCJvdXQiLCJnZXRBdHRyaWJ1dGUiLCJzZXJpYWxpemUiLCJvYmplY3RGaXQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcGx1Z2lucy9pbWFnZS9pbmRleC5qc3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgZ2V0IGZyb20gJ2xvZGFzaC9nZXQnO1xuaW1wb3J0IHsgRGF0YSwgRWRpdG9yLCBJbmxpbmUsIE5vZGUgYXMgU2xhdGVOb2RlIH0gZnJvbSAnc2xhdGUnO1xuXG5pbXBvcnQgSW1hZ2UgZnJvbSAnQG1hdGVyaWFsLXVpL2ljb25zL0ltYWdlJztcbmltcG9ydCBJbWFnZUNvbXBvbmVudCBmcm9tICcuL2NvbXBvbmVudCc7XG5pbXBvcnQgSW1hZ2VUb29sYmFyIGZyb20gJy4vaW1hZ2UtdG9vbGJhcic7XG5pbXBvcnQgSW5zZXJ0SW1hZ2VIYW5kbGVyIGZyb20gJy4vaW5zZXJ0LWltYWdlLWhhbmRsZXInO1xuXG5jb25zdCBsb2cgPSBkZWJ1ZygnQHBpZS1saWI6ZWRpdGFibGUtaHRtbDpwbHVnaW5zOmltYWdlJyk7XG5cbmNvbnN0IGdldE5vZGVCeSA9IChlZGl0b3IsIGNhbGxiYWNrKSA9PiB7XG4gIGNvbnN0IGRlc2NlbmRhbnRzID0gU2xhdGVOb2RlLmRlc2NlbmRhbnRzKGVkaXRvciwge1xuICAgIHJldmVyc2U6IHRydWVcbiAgfSk7XG5cbiAgZm9yIChjb25zdCBbZGVzY2VuZGFudCwgZGVzY2VuZGFudFBhdGhdIG9mIGRlc2NlbmRhbnRzKSB7XG4gICAgaWYgKGNhbGxiYWNrKGRlc2NlbmRhbnQsIGRlc2NlbmRhbnRQYXRoKSkge1xuICAgICAgcmV0dXJuIFtkZXNjZW5kYW50LCBkZXNjZW5kYW50UGF0aF07XG4gICAgfVxuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBJbWFnZVBsdWdpbihvcHRzKSB7XG4gIGNvbnN0IHRvb2xiYXIgPSBvcHRzLmluc2VydEltYWdlUmVxdWVzdGVkICYmIHtcbiAgICBpY29uOiA8SW1hZ2UgLz4sXG4gICAgb25DbGljazogZWRpdG9yID0+IHtcbiAgICAgIGxvZygnW3Rvb2xiYXJdIG9uQ2xpY2snKTtcbiAgICAgIGNvbnN0IGlubGluZSA9IHtcbiAgICAgICAgdHlwZTogJ2ltYWdlJyxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIG5ld0ltYWdlOiB0cnVlLFxuICAgICAgICAgIGxvYWRlZDogZmFsc2UsXG4gICAgICAgICAgc3JjOiB1bmRlZmluZWRcbiAgICAgICAgfSxcbiAgICAgICAgY2hpbGRyZW46IFt7IHRleHQ6ICcnIH1dXG4gICAgICB9O1xuXG4gICAgICBlZGl0b3IuaW5zZXJ0Tm9kZShpbmxpbmUpO1xuXG4gICAgICBjb25zdCBbbm9kZSwgbm9kZVBhdGhdID0gZ2V0Tm9kZUJ5KFxuICAgICAgICBlZGl0b3IsXG4gICAgICAgIGRlc2NlbmRhbnQgPT4gZGVzY2VuZGFudC50eXBlID09PSAnaW1hZ2UnICYmIGdldChkZXNjZW5kYW50LCAnZGF0YS5uZXdJbWFnZScpXG4gICAgICApO1xuXG4gICAgICBvcHRzLmluc2VydEltYWdlUmVxdWVzdGVkKCgpID0+IG5ldyBJbnNlcnRJbWFnZUhhbmRsZXIobm9kZSwgbm9kZVBhdGgsIGVkaXRvcikpO1xuICAgIH0sXG4gICAgY3VzdG9tVG9vbGJhcjogKG5vZGUsIHZhbHVlLCBlZGl0b3IsIG9uVG9vbGJhckRvbmUpID0+IHtcbiAgICAgIGNvbnN0IGFsaWdubWVudCA9IG5vZGUuZGF0YS5hbGlnbm1lbnQ7XG4gICAgICBjb25zdCBhbHQgPSBub2RlLmRhdGEuYWx0O1xuICAgICAgY29uc3QgaW1hZ2VMb2FkZWQgPSBub2RlLmRhdGEubG9hZGVkICE9PSBmYWxzZTtcbiAgICAgIGNvbnN0IG9uQ2hhbmdlID0gbmV3VmFsdWVzID0+IHtcbiAgICAgICAgY29uc3QgdXBkYXRlID0ge1xuICAgICAgICAgIC4uLm5vZGUuZGF0YS50b09iamVjdCgpLFxuICAgICAgICAgIC4uLm5ld1ZhbHVlc1xuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IGNoYW5nZSA9IHZhbHVlLmNoYW5nZSgpLnNldE5vZGVCeUtleShub2RlLmtleSwgeyBkYXRhOiB1cGRhdGUgfSk7XG4gICAgICAgIG9uVG9vbGJhckRvbmUoY2hhbmdlLCBmYWxzZSk7XG4gICAgICB9O1xuXG4gICAgICBjb25zdCBUYiA9ICgpID0+IChcbiAgICAgICAgPEltYWdlVG9vbGJhciBhbHQ9e2FsdH0gaW1hZ2VMb2FkZWQ9e2ltYWdlTG9hZGVkfSBhbGlnbm1lbnQ9e2FsaWdubWVudCB8fCAnbGVmdCd9IG9uQ2hhbmdlPXtvbkNoYW5nZX0gLz5cbiAgICAgICk7XG4gICAgICByZXR1cm4gVGI7XG4gICAgfSxcbiAgICBzaG93RG9uZTogdHJ1ZVxuICB9O1xuXG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2ltYWdlJyxcbiAgICB0b29sYmFyLFxuICAgIHJ1bGVzOiBlZGl0b3IgPT4ge1xuICAgICAgY29uc3QgeyBpc1ZvaWQsIGlzSW5saW5lIH0gPSBlZGl0b3I7XG5cbiAgICAgIGVkaXRvci5pc1ZvaWQgPSBlbGVtZW50ID0+IHtcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQudHlwZSA9PT0gJ2ltYWdlJyA/IHRydWUgOiBpc1ZvaWQoZWxlbWVudCk7XG4gICAgICB9O1xuXG4gICAgICBlZGl0b3IuaXNJbmxpbmUgPSBlbGVtZW50ID0+IHtcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQudHlwZSA9PT0gJ2ltYWdlJyA/IHRydWUgOiBpc0lubGluZShlbGVtZW50KTtcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiBlZGl0b3I7XG4gICAgfSxcbiAgICBzdXBwb3J0czogbm9kZSA9PiBub2RlLnR5cGUgPT09ICdpbWFnZScsXG4gICAgZGVsZXRlTm9kZTogKGUsIG5vZGUsIHZhbHVlLCBvbkNoYW5nZSkgPT4ge1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgaWYgKG9wdHMub25EZWxldGUpIHtcbiAgICAgICAgY29uc3QgdXBkYXRlID0gbm9kZS5kYXRhLm1lcmdlKERhdGEuY3JlYXRlKHsgZGVsZXRlU3RhdHVzOiAncGVuZGluZycgfSkpO1xuXG4gICAgICAgIGxldCBjaGFuZ2UgPSB2YWx1ZS5jaGFuZ2UoKS5zZXROb2RlQnlLZXkobm9kZS5rZXksIHsgZGF0YTogdXBkYXRlIH0pO1xuXG4gICAgICAgIG9uQ2hhbmdlKGNoYW5nZSk7XG4gICAgICAgIG9wdHMub25EZWxldGUobm9kZS5kYXRhLmdldCgnc3JjJyksIChlcnIsIHYpID0+IHtcbiAgICAgICAgICBpZiAoIWVycikge1xuICAgICAgICAgICAgY2hhbmdlID0gdi5jaGFuZ2UoKS5yZW1vdmVOb2RlQnlLZXkobm9kZS5rZXkpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsb2coJ1tlcnJvcl06ICcsIGVycik7XG4gICAgICAgICAgICBjaGFuZ2UgPSB2XG4gICAgICAgICAgICAgIC5jaGFuZ2UoKVxuICAgICAgICAgICAgICAuc2V0Tm9kZUJ5S2V5KG5vZGUua2V5LCBub2RlLmRhdGEubWVyZ2UoRGF0YS5jcmVhdGUoeyBkZWxldGVTdGF0dXM6ICdmYWlsZWQnIH0pKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIG9uQ2hhbmdlKGNoYW5nZSk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IGNoYW5nZSA9IHZhbHVlLmNoYW5nZSgpLnJlbW92ZU5vZGVCeUtleShub2RlLmtleSk7XG4gICAgICAgIG9uQ2hhbmdlKGNoYW5nZSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBzdG9wUmVzZXQ6IHZhbHVlID0+IHtcbiAgICAgIGNvbnN0IGltZ1BlbmRpbmdJbnNlcnRpb24gPSB2YWx1ZS5kb2N1bWVudC5maW5kRGVzY2VuZGFudChuID0+IHtcbiAgICAgICAgaWYgKG4udHlwZSAhPT0gJ2ltYWdlJykge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbi5kYXRhLmdldCgnbG9hZGVkJykgPT09IGZhbHNlO1xuICAgICAgfSk7XG4gICAgICAvKiogZG9uJ3QgcmVzZXQgaWYgdGhlcmUgaXMgYW4gaW1hZ2UgcGVuZGluZyBpbnNlcnRpb24gKi9cbiAgICAgIHJldHVybiBpbWdQZW5kaW5nSW5zZXJ0aW9uICE9PSB1bmRlZmluZWQgJiYgaW1nUGVuZGluZ0luc2VydGlvbiAhPT0gbnVsbDtcbiAgICB9LFxuICAgIHJlbmRlck5vZGUocHJvcHMpIHtcbiAgICAgIGlmIChwcm9wcy5ub2RlLnR5cGUgPT09ICdpbWFnZScpIHtcbiAgICAgICAgY29uc3QgYWxsID0gT2JqZWN0LmFzc2lnbihcbiAgICAgICAgICB7XG4gICAgICAgICAgICBvbkRlbGV0ZTogb3B0cy5vbkRlbGV0ZSxcbiAgICAgICAgICAgIG9uRm9jdXM6IG9wdHMub25Gb2N1cyxcbiAgICAgICAgICAgIG9uQmx1cjogb3B0cy5vbkJsdXIsXG4gICAgICAgICAgICBtYXhJbWFnZVdpZHRoOiBvcHRzLm1heEltYWdlV2lkdGgsXG4gICAgICAgICAgICBtYXhJbWFnZUhlaWdodDogb3B0cy5tYXhJbWFnZUhlaWdodFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcHJvcHNcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICA8SW1hZ2VDb21wb25lbnQgey4uLmFsbH0+XG4gICAgICAgICAgICB7cHJvcHMuY2hpbGRyZW59XG4gICAgICAgICAgPC9JbWFnZUNvbXBvbmVudD5cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIG5vcm1hbGl6ZU5vZGU6IG5vZGUgPT4ge1xuICAgICAgY29uc3QgdGV4dE5vZGVNYXAgPSB7fTtcbiAgICAgIGNvbnN0IHVwZGF0ZU5vZGVzQXJyYXkgPSBbXTtcbiAgICAgIGxldCBpbmRleCA9IDA7XG5cbiAgICAgIGlmIChub2RlLm9iamVjdCAhPT0gJ2RvY3VtZW50JykgcmV0dXJuO1xuXG4gICAgICBub2RlLmZpbmREZXNjZW5kYW50KGQgPT4ge1xuICAgICAgICBpZiAoZC5vYmplY3QgPT09ICd0ZXh0Jykge1xuICAgICAgICAgIHRleHROb2RlTWFwW2luZGV4XSA9IGQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZC50eXBlID09PSAnaW1hZ2UnKSB7XG4gICAgICAgICAgaWYgKGluZGV4ID4gMCAmJiB0ZXh0Tm9kZU1hcFtpbmRleCAtIDFdICYmIHRleHROb2RlTWFwW2luZGV4IC0gMV0udGV4dCA9PT0gJycpIHtcbiAgICAgICAgICAgIHVwZGF0ZU5vZGVzQXJyYXkucHVzaCh0ZXh0Tm9kZU1hcFtpbmRleCAtIDFdKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpbmRleCsrO1xuICAgICAgfSk7XG5cbiAgICAgIGlmICghdXBkYXRlTm9kZXNBcnJheS5sZW5ndGgpIHJldHVybjtcblxuICAgICAgcmV0dXJuIGNoYW5nZSA9PiB7XG4gICAgICAgIGNoYW5nZS53aXRob3V0Tm9ybWFsaXphdGlvbigoKSA9PiB7XG4gICAgICAgICAgdXBkYXRlTm9kZXNBcnJheS5mb3JFYWNoKG4gPT4gY2hhbmdlLmluc2VydFRleHRCeUtleShuLmtleSwgMCwgJyAnKSk7XG4gICAgICAgIH0pO1xuICAgICAgfTtcbiAgICB9XG4gIH07XG59XG5cbmV4cG9ydCBjb25zdCBzZXJpYWxpemF0aW9uID0ge1xuICBkZXNlcmlhbGl6ZShlbCAvKiwgbmV4dCovKSB7XG4gICAgY29uc3QgbmFtZSA9IGVsLnRhZ05hbWUudG9Mb3dlckNhc2UoKTtcbiAgICBpZiAobmFtZSAhPT0gJ2ltZycpIHJldHVybjtcblxuICAgIGxvZygnZGVzZXJpYWxpemU6ICcsIG5hbWUpO1xuICAgIGNvbnN0IHN0eWxlID0gZWwuc3R5bGUgfHwgeyB3aWR0aDogJycsIGhlaWdodDogJycsIG1hcmdpbjogJycsIGp1c3RpZnlDb250ZW50OiAnJyB9O1xuICAgIGNvbnN0IHdpZHRoID0gcGFyc2VJbnQoc3R5bGUud2lkdGgucmVwbGFjZSgncHgnLCAnJyksIDEwKSB8fCBudWxsO1xuICAgIGNvbnN0IGhlaWdodCA9IHBhcnNlSW50KHN0eWxlLmhlaWdodC5yZXBsYWNlKCdweCcsICcnKSwgMTApIHx8IG51bGw7XG5cbiAgICBjb25zdCBvdXQgPSB7XG4gICAgICBvYmplY3Q6ICdpbmxpbmUnLFxuICAgICAgdHlwZTogJ2ltYWdlJyxcbiAgICAgIGlzVm9pZDogdHJ1ZSxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgc3JjOiBlbC5nZXRBdHRyaWJ1dGUoJ3NyYycpLFxuICAgICAgICB3aWR0aCxcbiAgICAgICAgaGVpZ2h0LFxuICAgICAgICBtYXJnaW46IGVsLnN0eWxlLm1hcmdpbixcbiAgICAgICAganVzdGlmeUNvbnRlbnQ6IGVsLnN0eWxlLmp1c3RpZnlDb250ZW50LFxuICAgICAgICBhbGlnbm1lbnQ6IGVsLmdldEF0dHJpYnV0ZSgnYWxpZ25tZW50JyksXG4gICAgICAgIGFsdDogZWwuZ2V0QXR0cmlidXRlKCdhbHQnKVxuICAgICAgfVxuICAgIH07XG4gICAgbG9nKCdyZXR1cm4gb2JqZWN0OiAnLCBvdXQpO1xuICAgIHJldHVybiBvdXQ7XG4gIH0sXG4gIHNlcmlhbGl6ZShvYmplY3QgLyosIGNoaWxkcmVuKi8pIHtcbiAgICBpZiAob2JqZWN0LnR5cGUgIT09ICdpbWFnZScpIHJldHVybjtcblxuICAgIGNvbnN0IHsgZGF0YSB9ID0gb2JqZWN0O1xuICAgIGNvbnN0IHNyYyA9IGRhdGEuZ2V0KCdzcmMnKTtcbiAgICBjb25zdCB3aWR0aCA9IGRhdGEuZ2V0KCd3aWR0aCcpO1xuICAgIGNvbnN0IGhlaWdodCA9IGRhdGEuZ2V0KCdoZWlnaHQnKTtcbiAgICBjb25zdCBhbGlnbm1lbnQgPSBkYXRhLmdldCgnYWxpZ25tZW50Jyk7XG4gICAgY29uc3QgbWFyZ2luID0gZGF0YS5nZXQoJ21hcmdpbicpO1xuICAgIGNvbnN0IGp1c3RpZnlDb250ZW50ID0gZGF0YS5nZXQoJ21hcmdpbicpO1xuICAgIGNvbnN0IGFsdCA9IGRhdGEuZ2V0KCdhbHQnKTtcbiAgICBjb25zdCBzdHlsZSA9IHt9O1xuICAgIGlmICh3aWR0aCkge1xuICAgICAgc3R5bGUud2lkdGggPSBgJHt3aWR0aH1weGA7XG4gICAgfVxuXG4gICAgaWYgKGhlaWdodCkge1xuICAgICAgc3R5bGUuaGVpZ2h0ID0gYCR7aGVpZ2h0fXB4YDtcbiAgICB9XG5cbiAgICBzdHlsZS5tYXJnaW4gPSBtYXJnaW47XG4gICAgc3R5bGUuanVzdGlmeUNvbnRlbnQgPSBqdXN0aWZ5Q29udGVudDtcblxuICAgIGlmIChhbGlnbm1lbnQpIHtcbiAgICAgIHN3aXRjaCAoYWxpZ25tZW50KSB7XG4gICAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICAgIHN0eWxlLmp1c3RpZnlDb250ZW50ID0gJ2ZsZXgtc3RhcnQnO1xuICAgICAgICAgIHN0eWxlLm1hcmdpbiA9ICcwJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnY2VudGVyJzpcbiAgICAgICAgICBzdHlsZS5qdXN0aWZ5Q29udGVudCA9ICdjZW50ZXInO1xuICAgICAgICAgIHN0eWxlLm1hcmdpbiA9ICcwIGF1dG8nO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdyaWdodCc6XG4gICAgICAgICAgc3R5bGUuanVzdGlmeUNvbnRlbnQgPSAnZmxleC1lbmQnO1xuICAgICAgICAgIHN0eWxlLm1hcmdpbiA9ICdhdXRvIDAgMCBhdXRvJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBzdHlsZS5qdXN0aWZ5Q29udGVudCA9ICdmbGV4LXN0YXJ0JztcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBzdHlsZS5vYmplY3RGaXQgPSAnY29udGFpbic7XG5cbiAgICBjb25zdCBwcm9wcyA9IHtcbiAgICAgIHNyYyxcbiAgICAgIHN0eWxlLFxuICAgICAgYWxpZ25tZW50LFxuICAgICAgYWx0XG4gICAgfTtcblxuICAgIHJldHVybiA8aW1nIHsuLi5wcm9wc30gLz47XG4gIH1cbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7Ozs7Ozs7OztBQUVBLElBQU1BLEdBQUcsR0FBRyxJQUFBQyxpQkFBQSxFQUFNLHNDQUFOLENBQVo7O0FBRUEsSUFBTUMsU0FBUyxHQUFHLFNBQVpBLFNBQVksQ0FBQ0MsTUFBRCxFQUFTQyxRQUFULEVBQXNCO0VBQ3RDLElBQU1DLFdBQVcsR0FBR0MsV0FBQSxDQUFVRCxXQUFWLENBQXNCRixNQUF0QixFQUE4QjtJQUNoREksT0FBTyxFQUFFO0VBRHVDLENBQTlCLENBQXBCOztFQURzQywyQ0FLS0YsV0FMTDtFQUFBOztFQUFBO0lBS3RDLG9EQUF3RDtNQUFBO01BQUEsSUFBNUNHLFVBQTRDO01BQUEsSUFBaENDLGNBQWdDOztNQUN0RCxJQUFJTCxRQUFRLENBQUNJLFVBQUQsRUFBYUMsY0FBYixDQUFaLEVBQTBDO1FBQ3hDLE9BQU8sQ0FBQ0QsVUFBRCxFQUFhQyxjQUFiLENBQVA7TUFDRDtJQUNGO0VBVHFDO0lBQUE7RUFBQTtJQUFBO0VBQUE7QUFVdkMsQ0FWRDs7QUFZZSxTQUFTQyxXQUFULENBQXFCQyxJQUFyQixFQUEyQjtFQUN4QyxJQUFNQyxPQUFPLEdBQUdELElBQUksQ0FBQ0Usb0JBQUwsSUFBNkI7SUFDM0NDLElBQUksZUFBRSxnQ0FBQyxpQkFBRCxPQURxQztJQUUzQ0MsT0FBTyxFQUFFLGlCQUFBWixNQUFNLEVBQUk7TUFDakJILEdBQUcsQ0FBQyxtQkFBRCxDQUFIO01BQ0Es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
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/plugins/image/index.jsx"],"names":["log","ImagePlugin","opts","toolbar","insertImageRequested","icon","onClick","value","onChange","inline","Inline","create","type","isVoid","data","loaded","src","undefined","change","insertInline","getValue","InsertImageHandler","supports","node","object","customToolbar","onToolbarDone","alignment","get","alt","imageLoaded","newValues","done","update","toObject","setNodeByKey","key","Tb","disableImageAlignmentButtons","showDone","name","deleteNode","e","preventDefault","onDelete","merge","Data","deleteStatus","err","v","removeNodeByKey","stopReset","imgPendingInsertion","document","findDescendant","n","renderNode","props","all","Object","assign","onFocus","onBlur","maxImageWidth","maxImageHeight","normalizeNode","textNodeMap","updateNodesArray","index","d","text","push","length","withoutNormalization","forEach","insertTextByKey","serialization","deserialize","el","tagName","toLowerCase","style","width","height","margin","justifyContent","parseInt","replace","out","getAttribute","serialize","objectFit"],"mappings":"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","sourcesContent":["import { Data, Inline } from 'slate';\n\nimport Image from '@material-ui/icons/Image';\nimport ImageComponent from './component';\nimport ImageToolbar from './image-toolbar';\nimport InsertImageHandler from './insert-image-handler';\nimport React from 'react';\nimport debug from 'debug';\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: (value, onChange) => {\n log('[toolbar] onClick');\n const inline = Inline.create({\n type: 'image',\n isVoid: true,\n data: {\n loaded: false,\n src: undefined,\n },\n });\n\n const change = value.change().insertInline(inline);\n onChange(change);\n opts.insertImageRequested((getValue) => new InsertImageHandler(inline, getValue, onChange));\n },\n supports: (node) => node.object === 'inline' && node.type === 'image',\n customToolbar: (node, value, onToolbarDone) => {\n const alignment = node.data.get('alignment');\n const alt = node.data.get('alt');\n const imageLoaded = node.data.get('loaded') !== false;\n const onChange = (newValues, done) => {\n const update = {\n ...node.data.toObject(),\n ...newValues,\n };\n\n const change = value.change().setNodeByKey(node.key, { data: update });\n onToolbarDone(change, done);\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 deleteNode: (e, node, value, onChange) => {\n e.preventDefault();\n if (opts.onDelete) {\n const update = node.data.merge(Data.create({ deleteStatus: 'pending' }));\n\n let change = value.change().setNodeByKey(node.key, { data: update });\n\n onChange(change);\n opts.onDelete(node.data.get('src'), (err, v) => {\n if (!err) {\n change = v.change().removeNodeByKey(node.key);\n } else {\n log('[error]: ', err);\n change = v.change().setNodeByKey(node.key, node.data.merge(Data.create({ deleteStatus: 'failed' })));\n }\n onChange(change);\n });\n } else {\n let change = value.change().removeNodeByKey(node.key);\n onChange(change);\n }\n },\n stopReset: (value) => {\n const imgPendingInsertion = value.document.findDescendant((n) => {\n if (n.type !== 'image') {\n return;\n }\n return n.data.get('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 <ImageComponent {...all} />;\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 = {\n object: 'inline',\n type: 'image',\n isVoid: true,\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 { data } = object;\n const src = data.get('src');\n const width = data.get('width');\n const height = data.get('height');\n const alignment = data.get('alignment') || 'left';\n const margin = data.get('margin');\n const justifyContent = data.get('margin');\n const alt = data.get('alt');\n const style = {};\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 src,\n style,\n alignment,\n alt,\n };\n\n return <img {...props} />;\n },\n};\n"],"file":"index.js"}
1
+ {"version":3,"file":"index.js","names":["log","debug","getNodeBy","editor","callback","descendants","SlateNode","reverse","descendant","descendantPath","ImagePlugin","opts","toolbar","insertImageRequested","icon","onClick","inline","type","data","newImage","loaded","src","undefined","children","text","insertNode","get","node","nodePath","InsertImageHandler","customToolbar","value","onToolbarDone","alignment","alt","imageLoaded","onChange","newValues","update","toObject","change","setNodeByKey","key","Tb","showDone","name","rules","isVoid","isInline","element","supports","deleteNode","e","preventDefault","onDelete","merge","Data","create","deleteStatus","err","v","removeNodeByKey","stopReset","imgPendingInsertion","document","findDescendant","n","renderNode","props","all","Object","assign","onFocus","onBlur","maxImageWidth","maxImageHeight","normalizeNode","textNodeMap","updateNodesArray","index","object","d","push","length","withoutNormalization","forEach","insertTextByKey","serialization","deserialize","el","tagName","toLowerCase","style","width","height","margin","justifyContent","parseInt","replace","out","getAttribute","serialize","objectFit"],"sources":["../../../src/plugins/image/index.jsx"],"sourcesContent":["import React from 'react';\nimport debug from 'debug';\nimport get from 'lodash/get';\nimport { Data, Editor, Inline, Node as SlateNode } from 'slate';\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\nconst getNodeBy = (editor, callback) => {\n const descendants = SlateNode.descendants(editor, {\n reverse: true\n });\n\n for (const [descendant, descendantPath] of descendants) {\n if (callback(descendant, descendantPath)) {\n return [descendant, descendantPath];\n }\n }\n};\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 const [node, nodePath] = getNodeBy(\n editor,\n descendant => descendant.type === 'image' && get(descendant, 'data.newImage')\n );\n\n opts.insertImageRequested(() => new InsertImageHandler(node, nodePath, editor));\n },\n customToolbar: (node, value, 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.toObject(),\n ...newValues\n };\n\n const change = value.change().setNodeByKey(node.key, { data: update });\n onToolbarDone(change, false);\n };\n\n const Tb = () => (\n <ImageToolbar alt={alt} imageLoaded={imageLoaded} alignment={alignment || 'left'} onChange={onChange} />\n );\n return Tb;\n },\n showDone: true\n };\n\n return {\n name: 'image',\n toolbar,\n rules: editor => {\n const { 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 return editor;\n },\n supports: node => node.type === 'image',\n deleteNode: (e, node, value, onChange) => {\n e.preventDefault();\n if (opts.onDelete) {\n const update = node.data.merge(Data.create({ deleteStatus: 'pending' }));\n\n let change = value.change().setNodeByKey(node.key, { data: update });\n\n onChange(change);\n opts.onDelete(node.data.get('src'), (err, v) => {\n if (!err) {\n change = v.change().removeNodeByKey(node.key);\n } else {\n log('[error]: ', err);\n change = v\n .change()\n .setNodeByKey(node.key, node.data.merge(Data.create({ deleteStatus: 'failed' })));\n }\n onChange(change);\n });\n } else {\n let change = value.change().removeNodeByKey(node.key);\n onChange(change);\n }\n },\n stopReset: value => {\n const imgPendingInsertion = value.document.findDescendant(n => {\n if (n.type !== 'image') {\n return;\n }\n return n.data.get('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}>\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 = {\n object: 'inline',\n type: 'image',\n isVoid: true,\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 { data } = object;\n const src = data.get('src');\n const width = data.get('width');\n const height = data.get('height');\n const alignment = data.get('alignment');\n const margin = data.get('margin');\n const justifyContent = data.get('margin');\n const alt = data.get('alt');\n const style = {};\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 src,\n style,\n alignment,\n alt\n };\n\n return <img {...props} />;\n }\n};\n"],"mappings":"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"}