@pie-lib/editable-html 11.1.1 → 11.1.2-next.1595
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.
- package/CHANGELOG.json +12 -3322
- package/CHANGELOG.md +170 -100
- package/NEXT.CHANGELOG.json +1 -0
- package/lib/block-tags.js +25 -0
- package/lib/block-tags.js.map +1 -0
- package/lib/constants.js +16 -0
- package/lib/constants.js.map +1 -0
- package/lib/editor.js +352 -90
- package/lib/editor.js.map +1 -1
- package/lib/index.js +25 -9
- package/lib/index.js.map +1 -1
- package/lib/plugins/characters/index.js +8 -3
- package/lib/plugins/characters/index.js.map +1 -1
- package/lib/plugins/characters/utils.js +12 -12
- package/lib/plugins/characters/utils.js.map +1 -1
- package/lib/plugins/css/icons/index.js +37 -0
- package/lib/plugins/css/icons/index.js.map +1 -0
- package/lib/plugins/css/index.js +397 -0
- package/lib/plugins/css/index.js.map +1 -0
- package/lib/plugins/customPlugin/index.js +114 -0
- package/lib/plugins/customPlugin/index.js.map +1 -0
- package/lib/plugins/html/index.js +11 -7
- package/lib/plugins/html/index.js.map +1 -1
- package/lib/plugins/image/index.js +2 -1
- package/lib/plugins/image/index.js.map +1 -1
- package/lib/plugins/image/insert-image-handler.js +13 -4
- package/lib/plugins/image/insert-image-handler.js.map +1 -1
- package/lib/plugins/index.js +270 -11
- package/lib/plugins/index.js.map +1 -1
- package/lib/plugins/list/index.js +130 -0
- package/lib/plugins/list/index.js.map +1 -1
- package/lib/plugins/math/index.js +91 -56
- package/lib/plugins/math/index.js.map +1 -1
- package/lib/plugins/media/index.js +5 -2
- package/lib/plugins/media/index.js.map +1 -1
- package/lib/plugins/media/media-dialog.js +98 -57
- package/lib/plugins/media/media-dialog.js.map +1 -1
- package/lib/plugins/rendering/index.js +46 -0
- package/lib/plugins/rendering/index.js.map +1 -0
- package/lib/plugins/respArea/drag-in-the-blank/choice.js +45 -7
- package/lib/plugins/respArea/drag-in-the-blank/choice.js.map +1 -1
- package/lib/plugins/respArea/explicit-constructed-response/index.js +11 -9
- package/lib/plugins/respArea/explicit-constructed-response/index.js.map +1 -1
- package/lib/plugins/respArea/index.js +69 -21
- package/lib/plugins/respArea/index.js.map +1 -1
- package/lib/plugins/respArea/inline-dropdown/index.js +9 -4
- package/lib/plugins/respArea/inline-dropdown/index.js.map +1 -1
- package/lib/plugins/respArea/math-templated/index.js +130 -0
- package/lib/plugins/respArea/math-templated/index.js.map +1 -0
- package/lib/plugins/respArea/utils.js +16 -1
- package/lib/plugins/respArea/utils.js.map +1 -1
- package/lib/plugins/table/CustomTablePlugin.js +133 -0
- package/lib/plugins/table/CustomTablePlugin.js.map +1 -0
- package/lib/plugins/table/index.js +43 -59
- package/lib/plugins/table/index.js.map +1 -1
- package/lib/plugins/table/table-toolbar.js +33 -4
- package/lib/plugins/table/table-toolbar.js.map +1 -1
- package/lib/plugins/textAlign/icons/index.js +226 -0
- package/lib/plugins/textAlign/icons/index.js.map +1 -0
- package/lib/plugins/textAlign/index.js +34 -0
- package/lib/plugins/textAlign/index.js.map +1 -0
- package/lib/plugins/toolbar/default-toolbar.js +82 -27
- package/lib/plugins/toolbar/default-toolbar.js.map +1 -1
- package/lib/plugins/toolbar/done-button.js +5 -2
- package/lib/plugins/toolbar/done-button.js.map +1 -1
- package/lib/plugins/toolbar/editor-and-toolbar.js +18 -19
- package/lib/plugins/toolbar/editor-and-toolbar.js.map +1 -1
- package/lib/plugins/toolbar/toolbar-buttons.js +44 -11
- package/lib/plugins/toolbar/toolbar-buttons.js.map +1 -1
- package/lib/plugins/toolbar/toolbar.js +35 -11
- package/lib/plugins/toolbar/toolbar.js.map +1 -1
- package/lib/serialization.js +233 -44
- package/lib/serialization.js.map +1 -1
- package/lib/shared/alert-dialog.js +75 -0
- package/package.json +7 -6
- package/src/__tests__/editor.test.jsx +363 -0
- package/src/__tests__/serialization.test.js +291 -0
- package/src/__tests__/utils.js +36 -0
- package/src/block-tags.js +17 -0
- package/src/constants.js +7 -0
- package/src/editor.jsx +307 -52
- package/src/index.jsx +19 -10
- package/src/plugins/characters/index.jsx +11 -3
- package/src/plugins/characters/utils.js +12 -12
- package/src/plugins/css/icons/index.jsx +17 -0
- package/src/plugins/css/index.jsx +346 -0
- package/src/plugins/customPlugin/index.jsx +85 -0
- package/src/plugins/html/index.jsx +9 -6
- package/src/plugins/image/__tests__/__snapshots__/component.test.jsx.snap +51 -0
- package/src/plugins/image/__tests__/__snapshots__/image-toolbar-logic.test.jsx.snap +27 -0
- package/src/plugins/image/__tests__/__snapshots__/image-toolbar.test.jsx.snap +44 -0
- package/src/plugins/image/__tests__/component.test.jsx +41 -0
- package/src/plugins/image/__tests__/image-toolbar-logic.test.jsx +42 -0
- package/src/plugins/image/__tests__/image-toolbar.test.jsx +11 -0
- package/src/plugins/image/__tests__/index.test.js +95 -0
- package/src/plugins/image/__tests__/insert-image-handler.test.js +113 -0
- package/src/plugins/image/__tests__/mock-change.js +15 -0
- package/src/plugins/image/index.jsx +2 -1
- package/src/plugins/image/insert-image-handler.js +13 -6
- package/src/plugins/index.jsx +248 -5
- package/src/plugins/list/__tests__/index.test.js +54 -0
- package/src/plugins/list/index.jsx +130 -0
- package/src/plugins/math/__tests__/__snapshots__/index.test.jsx.snap +48 -0
- package/src/plugins/math/__tests__/index.test.jsx +245 -0
- package/src/plugins/math/index.jsx +87 -56
- package/src/plugins/media/__tests__/index.test.js +75 -0
- package/src/plugins/media/index.jsx +3 -2
- package/src/plugins/media/media-dialog.js +106 -57
- package/src/plugins/rendering/index.js +31 -0
- package/src/plugins/respArea/drag-in-the-blank/choice.jsx +35 -5
- package/src/plugins/respArea/explicit-constructed-response/index.jsx +10 -8
- package/src/plugins/respArea/index.jsx +53 -7
- package/src/plugins/respArea/inline-dropdown/index.jsx +12 -5
- package/src/plugins/respArea/math-templated/index.jsx +104 -0
- package/src/plugins/respArea/utils.jsx +11 -0
- package/src/plugins/table/CustomTablePlugin.js +113 -0
- package/src/plugins/table/__tests__/__snapshots__/table-toolbar.test.jsx.snap +44 -0
- package/src/plugins/table/__tests__/index.test.jsx +401 -0
- package/src/plugins/table/__tests__/table-toolbar.test.jsx +42 -0
- package/src/plugins/table/index.jsx +46 -59
- package/src/plugins/table/table-toolbar.jsx +39 -2
- package/src/plugins/textAlign/icons/index.jsx +139 -0
- package/src/plugins/textAlign/index.jsx +23 -0
- package/src/plugins/toolbar/__tests__/__snapshots__/default-toolbar.test.jsx.snap +923 -0
- package/src/plugins/toolbar/__tests__/__snapshots__/editor-and-toolbar.test.jsx.snap +20 -0
- package/src/plugins/toolbar/__tests__/__snapshots__/toolbar-buttons.test.jsx.snap +36 -0
- package/src/plugins/toolbar/__tests__/__snapshots__/toolbar.test.jsx.snap +46 -0
- package/src/plugins/toolbar/__tests__/default-toolbar.test.jsx +94 -0
- package/src/plugins/toolbar/__tests__/editor-and-toolbar.test.jsx +37 -0
- package/src/plugins/toolbar/__tests__/toolbar-buttons.test.jsx +51 -0
- package/src/plugins/toolbar/__tests__/toolbar.test.jsx +106 -0
- package/src/plugins/toolbar/default-toolbar.jsx +82 -20
- package/src/plugins/toolbar/done-button.jsx +3 -1
- package/src/plugins/toolbar/editor-and-toolbar.jsx +18 -13
- package/src/plugins/toolbar/toolbar-buttons.jsx +52 -11
- package/src/plugins/toolbar/toolbar.jsx +31 -8
- package/src/serialization.jsx +213 -38
- package/README.md +0 -45
- package/deploy.sh +0 -16
- package/playground/image/data.js +0 -59
- package/playground/image/index.html +0 -22
- package/playground/image/index.jsx +0 -81
- package/playground/index.html +0 -25
- package/playground/mathquill/index.html +0 -22
- package/playground/mathquill/index.jsx +0 -155
- package/playground/package.json +0 -15
- package/playground/prod-test/index.html +0 -22
- package/playground/prod-test/index.jsx +0 -28
- package/playground/schema-override/data.js +0 -29
- package/playground/schema-override/image-plugin.jsx +0 -41
- package/playground/schema-override/index.html +0 -21
- package/playground/schema-override/index.jsx +0 -97
- package/playground/serialization/data.js +0 -29
- package/playground/serialization/image-plugin.jsx +0 -41
- package/playground/serialization/index.html +0 -22
- package/playground/serialization/index.jsx +0 -12
- package/playground/static.json +0 -3
- package/playground/table-examples.html +0 -70
- package/playground/webpack.config.js +0 -42
- package/static.json +0 -1
|
@@ -33,6 +33,7 @@ var log = (0, _debug["default"])('@pie-lib:editable-html:plugins:image');
|
|
|
33
33
|
function ImagePlugin(opts) {
|
|
34
34
|
var toolbar = opts.insertImageRequested && {
|
|
35
35
|
icon: /*#__PURE__*/_react["default"].createElement(_Image["default"], null),
|
|
36
|
+
ariaLabel: 'Insert Image',
|
|
36
37
|
onClick: function onClick(value, onChange) {
|
|
37
38
|
log('[toolbar] onClick');
|
|
38
39
|
|
|
@@ -96,7 +97,7 @@ function ImagePlugin(opts) {
|
|
|
96
97
|
data: update
|
|
97
98
|
});
|
|
98
99
|
onChange(change);
|
|
99
|
-
opts.onDelete(node
|
|
100
|
+
opts.onDelete(node, function (err, v) {
|
|
100
101
|
if (!err) {
|
|
101
102
|
change = v.change().removeNodeByKey(node.key);
|
|
102
103
|
} else {
|
|
@@ -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","onFinish","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\n onChange(change);\n opts.insertImageRequested(\n inline,\n (onFinish, getValue) => new InsertImageHandler(inline, onFinish, getValue, onChange),\n );\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,"sources":["../../../src/plugins/image/index.jsx"],"names":["log","ImagePlugin","opts","toolbar","insertImageRequested","icon","ariaLabel","onClick","value","onChange","inline","Inline","create","type","isVoid","data","loaded","src","undefined","change","insertInline","onFinish","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 ariaLabel: 'Insert 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\n onChange(change);\n opts.insertImageRequested(\n inline,\n (onFinish, getValue) => new InsertImageHandler(inline, onFinish, getValue, onChange),\n );\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, (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"}
|
|
@@ -52,7 +52,7 @@ var InsertImageHandler = /*#__PURE__*/function () {
|
|
|
52
52
|
if (child) {
|
|
53
53
|
return child;
|
|
54
54
|
} else {
|
|
55
|
-
//eslint-disable-next-line
|
|
55
|
+
// eslint-disable-next-line
|
|
56
56
|
throw new Error("insert-image: Can't find placeholder!");
|
|
57
57
|
}
|
|
58
58
|
}
|
|
@@ -60,9 +60,18 @@ var InsertImageHandler = /*#__PURE__*/function () {
|
|
|
60
60
|
key: "cancel",
|
|
61
61
|
value: function cancel() {
|
|
62
62
|
log('insert cancelled');
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
63
|
+
|
|
64
|
+
try {
|
|
65
|
+
var value = this.getValue();
|
|
66
|
+
var child = this.getPlaceholderInDocument(value);
|
|
67
|
+
|
|
68
|
+
if (child) {
|
|
69
|
+
var c = value.change().removeNodeByKey(child.key);
|
|
70
|
+
this.onChange(c);
|
|
71
|
+
this.onFinish(false);
|
|
72
|
+
}
|
|
73
|
+
} catch (err) {//
|
|
74
|
+
}
|
|
66
75
|
}
|
|
67
76
|
}, {
|
|
68
77
|
key: "done",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/plugins/image/insert-image-handler.js"],"names":["log","InsertImageHandler","placeholderBlock","onFinish","getValue","onChange","isPasted","chosenFile","value","document","directChild","getChild","key","child","getDescendant","Error","c","change","removeNodeByKey","err","src","console","
|
|
1
|
+
{"version":3,"sources":["../../../src/plugins/image/insert-image-handler.js"],"names":["log","InsertImageHandler","placeholderBlock","onFinish","getValue","onChange","isPasted","chosenFile","value","document","directChild","getChild","key","child","getDescendant","Error","getPlaceholderInDocument","c","change","removeNodeByKey","err","src","console","data","merge","Data","create","loaded","percent","setNodeByKey","file","reader","FileReader","onload","dataURL","result","set","readAsDataURL","bytes","total"],"mappings":"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","sourcesContent":["import { Data } from 'slate';\nimport debug from 'debug';\n\nconst log = debug('@pie-lib:editable-html:image:insert-image-handler');\n\n/**\n * Handles user selection, insertion (or cancellation) of an image into the editor.\n * @param {Block} placeholderBlock - a block that has been added to the editor as a place holder for the image\n * @param {Function} onFinish - a function to call if uploading fails or succeeds\n * @param {Function} getValue - a function to return the value of the editor\n * @param {Function} onChange - callback to notify changes applied by the handler\n * @param {Boolean} isPasted - a boolean that keeps track if the file is pasted\n */\nclass InsertImageHandler {\n constructor(placeholderBlock, onFinish, getValue, onChange, isPasted = false) {\n this.placeholderBlock = placeholderBlock;\n this.getValue = getValue;\n this.onFinish = onFinish;\n this.onChange = onChange;\n this.isPasted = isPasted;\n this.chosenFile = null;\n }\n\n getPlaceholderInDocument(value) {\n const { document } = value;\n const directChild = document.getChild(this.placeholderBlock.key);\n\n if (directChild) {\n return directChild;\n }\n\n const child = document.getDescendant(this.placeholderBlock.key);\n\n if (child) {\n return child;\n } else {\n // eslint-disable-next-line\n throw new Error(\"insert-image: Can't find placeholder!\");\n }\n }\n\n cancel() {\n log('insert cancelled');\n\n try {\n const value = this.getValue();\n const child = this.getPlaceholderInDocument(value);\n\n if (child) {\n const c = value.change().removeNodeByKey(child.key);\n this.onChange(c);\n this.onFinish(false);\n }\n } catch (err) {\n //\n }\n }\n\n done(err, src) {\n log('done: err:', err);\n if (err) {\n //eslint-disable-next-line\n console.log(err);\n this.onFinish(false);\n } else {\n const value = this.getValue();\n const child = this.getPlaceholderInDocument(value);\n const data = child.data.merge(Data.create({ loaded: true, src, percent: 100 }));\n\n const change = value.change().setNodeByKey(this.placeholderBlock.key, { data });\n this.onChange(change);\n this.onFinish(true);\n }\n }\n\n /**\n * Notify handler that the user chose a file - will create a change with a preview in the editor.\n *\n * @param {File} file - the file that the user chose using a file input.\n */\n fileChosen(file) {\n if (!file) {\n return;\n }\n\n // Save the chosen file to this.chosenFile\n this.chosenFile = file;\n\n log('[fileChosen] file: ', file);\n const reader = new FileReader();\n reader.onload = () => {\n const value = this.getValue();\n const dataURL = reader.result;\n const child = this.getPlaceholderInDocument(value);\n const data = child.data.set('src', dataURL);\n const change = value.change().setNodeByKey(this.placeholderBlock.key, { data });\n this.onChange(change);\n };\n reader.readAsDataURL(file);\n }\n\n progress(percent, bytes, total) {\n log('progress: ', percent, bytes, total);\n const value = this.getValue();\n const child = this.getPlaceholderInDocument(value);\n const data = child.data.set('percent', percent);\n const change = value.change().setNodeByKey(this.placeholderBlock.key, { data });\n this.onChange(change);\n }\n\n // Add a getter method to retrieve the chosen file\n getChosenFile() {\n return this.chosenFile;\n }\n}\n\nexport default InsertImageHandler;\n"],"file":"insert-image-handler.js"}
|
package/lib/plugins/index.js
CHANGED
|
@@ -9,12 +9,26 @@ exports.buildPlugins = exports.DEFAULT_PLUGINS = exports.ALL_PLUGINS = void 0;
|
|
|
9
9
|
|
|
10
10
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
11
11
|
|
|
12
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
13
|
+
|
|
14
|
+
var _slateHotkeys = _interopRequireDefault(require("slate-hotkeys"));
|
|
15
|
+
|
|
16
|
+
var _slateDevEnvironment = require("slate-dev-environment");
|
|
17
|
+
|
|
18
|
+
var _slate = require("slate");
|
|
19
|
+
|
|
12
20
|
var _FormatBold = _interopRequireDefault(require("@material-ui/icons/FormatBold"));
|
|
13
21
|
|
|
22
|
+
var _FormatQuote = _interopRequireDefault(require("@material-ui/icons/FormatQuote"));
|
|
23
|
+
|
|
14
24
|
var _FormatListBulleted = _interopRequireDefault(require("@material-ui/icons/FormatListBulleted"));
|
|
15
25
|
|
|
16
26
|
var _FormatListNumbered = _interopRequireDefault(require("@material-ui/icons/FormatListNumbered"));
|
|
17
27
|
|
|
28
|
+
var _Redo = _interopRequireDefault(require("@material-ui/icons/Redo"));
|
|
29
|
+
|
|
30
|
+
var _Undo = _interopRequireDefault(require("@material-ui/icons/Undo"));
|
|
31
|
+
|
|
18
32
|
var _image = _interopRequireDefault(require("./image"));
|
|
19
33
|
|
|
20
34
|
var _media = _interopRequireDefault(require("./media"));
|
|
@@ -35,6 +49,8 @@ var _FormatUnderlined = _interopRequireDefault(require("@material-ui/icons/Forma
|
|
|
35
49
|
|
|
36
50
|
var _compact = _interopRequireDefault(require("lodash/compact"));
|
|
37
51
|
|
|
52
|
+
var _isEmpty = _interopRequireDefault(require("lodash/isEmpty"));
|
|
53
|
+
|
|
38
54
|
var _slateSoftBreak = _interopRequireDefault(require("slate-soft-break"));
|
|
39
55
|
|
|
40
56
|
var _debug = _interopRequireDefault(require("debug"));
|
|
@@ -47,9 +63,76 @@ var _respArea = _interopRequireDefault(require("./respArea"));
|
|
|
47
63
|
|
|
48
64
|
var _html = _interopRequireDefault(require("./html"));
|
|
49
65
|
|
|
50
|
-
|
|
66
|
+
var _css = _interopRequireDefault(require("./css"));
|
|
67
|
+
|
|
68
|
+
var _customPlugin = _interopRequireDefault(require("./customPlugin"));
|
|
69
|
+
|
|
70
|
+
var _rendering = _interopRequireDefault(require("./rendering"));
|
|
71
|
+
|
|
72
|
+
var _textAlign = _interopRequireDefault(require("./textAlign"));
|
|
73
|
+
|
|
74
|
+
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; }
|
|
75
|
+
|
|
76
|
+
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; }
|
|
77
|
+
|
|
51
78
|
var log = (0, _debug["default"])('@pie-lib:editable-html:plugins');
|
|
52
79
|
|
|
80
|
+
var SuperscriptIcon = function SuperscriptIcon() {
|
|
81
|
+
return /*#__PURE__*/_react["default"].createElement("svg", {
|
|
82
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
83
|
+
height: "24px",
|
|
84
|
+
viewBox: "0 0 24 24",
|
|
85
|
+
width: "24px",
|
|
86
|
+
fill: "none"
|
|
87
|
+
}, /*#__PURE__*/_react["default"].createElement("path", {
|
|
88
|
+
d: "M22,7h-2v1h3v1h-4V7c0-0.55,0.45-1,1-1h2V5h-3V4h3c0.55,0,1,0.45,1,1v1C23,6.55,22.55,7,22,7z M5.88,20h2.66l3.4-5.42h0.12 l3.4,5.42h2.66l-4.65-7.27L17.81,6h-2.68l-3.07,4.99h-0.12L8.85,6H6.19l4.32,6.73L5.88,20z",
|
|
89
|
+
fill: "currentColor"
|
|
90
|
+
}));
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
var SubscriptIcon = function SubscriptIcon() {
|
|
94
|
+
return /*#__PURE__*/_react["default"].createElement("svg", {
|
|
95
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
96
|
+
height: "24px",
|
|
97
|
+
viewBox: "0 0 24 24",
|
|
98
|
+
width: "24px",
|
|
99
|
+
fill: "none"
|
|
100
|
+
}, /*#__PURE__*/_react["default"].createElement("path", {
|
|
101
|
+
d: "M22,18h-2v1h3v1h-4v-2c0-0.55,0.45-1,1-1h2v-1h-3v-1h3c0.55,0,1,0.45,1,1v1C23,17.55,22.55,18,22,18z M5.88,18h2.66 l3.4-5.42h0.12l3.4,5.42h2.66l-4.65-7.27L17.81,4h-2.68l-3.07,4.99h-0.12L8.85,4H6.19l4.32,6.73L5.88,18z",
|
|
102
|
+
fill: "currentColor"
|
|
103
|
+
}));
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
var HeadingIcon = function HeadingIcon() {
|
|
107
|
+
return /*#__PURE__*/_react["default"].createElement("svg", {
|
|
108
|
+
width: "30",
|
|
109
|
+
height: "28",
|
|
110
|
+
viewBox: "0 0 30 28",
|
|
111
|
+
fill: "none",
|
|
112
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
113
|
+
style: {
|
|
114
|
+
width: '20px',
|
|
115
|
+
height: '18px'
|
|
116
|
+
}
|
|
117
|
+
}, /*#__PURE__*/_react["default"].createElement("path", {
|
|
118
|
+
d: "M27 4V24H29C29.5 24 30 24.5 30 25V27C30 27.5625 29.5 28 29 28H19C18.4375 28 18 27.5625 18 27V25C18 24.5 18.4375 24 19 24H21V16H9V24H11C11.5 24 12 24.5 12 25V27C12 27.5625 11.5 28 11 28H1C0.4375 28 0 27.5625 0 27V25C0 24.5 0.4375 24 1 24H3V4H1C0.4375 4 0 3.5625 0 3V1C0 0.5 0.4375 0 1 0H11C11.5 0 12 0.5 12 1V3C12 3.5625 11.5 4 11 4H9V12H21V4H19C18.4375 4 18 3.5625 18 3V1C18 0.5 18.4375 0 19 0H29C29.5 0 30 0.5 30 1V3C30 3.5625 29.5 4 29 4H27Z",
|
|
119
|
+
fill: "currentColor"
|
|
120
|
+
}));
|
|
121
|
+
};
|
|
122
|
+
|
|
123
|
+
var STYLES_MAP = {
|
|
124
|
+
h3: {
|
|
125
|
+
fontSize: 'inherit',
|
|
126
|
+
fontWeight: 'inherit'
|
|
127
|
+
},
|
|
128
|
+
blockquote: {
|
|
129
|
+
background: '#f9f9f9',
|
|
130
|
+
borderLeft: '5px solid #ccc',
|
|
131
|
+
margin: '1.5em 10px',
|
|
132
|
+
padding: '.5em 10px'
|
|
133
|
+
}
|
|
134
|
+
};
|
|
135
|
+
|
|
53
136
|
function MarkHotkey(options) {
|
|
54
137
|
var type = options.type,
|
|
55
138
|
key = options.key,
|
|
@@ -57,19 +140,83 @@ function MarkHotkey(options) {
|
|
|
57
140
|
tag = options.tag; // Return our "plugin" object, containing the `onKeyDown` handler.
|
|
58
141
|
|
|
59
142
|
return {
|
|
143
|
+
name: type,
|
|
60
144
|
toolbar: {
|
|
61
145
|
isMark: true,
|
|
62
146
|
type: type,
|
|
63
147
|
icon: icon,
|
|
64
148
|
onToggle: function onToggle(change) {
|
|
65
149
|
log('[onToggleMark] type: ', type);
|
|
150
|
+
var selection = change.value.selection;
|
|
151
|
+
|
|
152
|
+
if (['blockquote', 'h3'].includes(type)) {
|
|
153
|
+
var texts = change.value.document.getTextsAtRangeAsArray(selection);
|
|
154
|
+
var onlyOneText = texts.length === 1;
|
|
155
|
+
var hasMark = false;
|
|
156
|
+
var sameMark = true;
|
|
157
|
+
texts.forEach(function (t) {
|
|
158
|
+
var marks = t.getMarksAsArray();
|
|
159
|
+
var markIsThere = marks.find(function (m) {
|
|
160
|
+
return m.type === type;
|
|
161
|
+
});
|
|
162
|
+
|
|
163
|
+
if (!markIsThere) {
|
|
164
|
+
// not all texts have this mark
|
|
165
|
+
sameMark = false;
|
|
166
|
+
} else {
|
|
167
|
+
// at least one mark
|
|
168
|
+
hasMark = true;
|
|
169
|
+
}
|
|
170
|
+
});
|
|
171
|
+
var shouldContinue = onlyOneText || sameMark || !hasMark;
|
|
172
|
+
|
|
173
|
+
if (!shouldContinue) {
|
|
174
|
+
return change;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
if (selection.startKey === selection.endKey && selection.anchorOffset === selection.focusOffset) {
|
|
178
|
+
var textNode = change.value.document.getNode(selection.startKey); // select the whole line if there is no selection
|
|
179
|
+
|
|
180
|
+
change.moveFocusTo(textNode.key, 0).moveAnchorTo(textNode.key, textNode.text.length); // remove toggle
|
|
181
|
+
|
|
182
|
+
var _hasMark = change.value.activeMarks.find(function (entry) {
|
|
183
|
+
return entry.type === type;
|
|
184
|
+
});
|
|
185
|
+
|
|
186
|
+
if (_hasMark) {
|
|
187
|
+
change.removeMark(_hasMark);
|
|
188
|
+
} else {
|
|
189
|
+
var newMark = _slate.Mark.create(type);
|
|
190
|
+
|
|
191
|
+
change.addMark(newMark);
|
|
192
|
+
} // move focus to end of text
|
|
193
|
+
|
|
194
|
+
|
|
195
|
+
return change.moveFocusTo(textNode.key, textNode.text.length).moveAnchorTo(textNode.key, textNode.text.length);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
|
|
66
199
|
return change.toggleMark(type);
|
|
67
200
|
}
|
|
68
201
|
},
|
|
69
202
|
renderMark: function renderMark(props) {
|
|
70
203
|
if (props.mark.type === type) {
|
|
204
|
+
var _ref = props.node || {},
|
|
205
|
+
data = _ref.data;
|
|
206
|
+
|
|
207
|
+
var jsonData = (data === null || data === void 0 ? void 0 : data.toJSON()) || {};
|
|
71
208
|
var K = tag || type;
|
|
72
|
-
|
|
209
|
+
var additionalStyles = STYLES_MAP[K];
|
|
210
|
+
|
|
211
|
+
if (additionalStyles) {
|
|
212
|
+
if (!jsonData.attributes) {
|
|
213
|
+
jsonData.attributes = {};
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
jsonData.attributes.style = _objectSpread(_objectSpread({}, jsonData.attributes.style), additionalStyles);
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
return /*#__PURE__*/_react["default"].createElement(K, jsonData.attributes, props.children);
|
|
73
220
|
}
|
|
74
221
|
},
|
|
75
222
|
onKeyDown: function onKeyDown(event, change) {
|
|
@@ -85,14 +232,61 @@ function MarkHotkey(options) {
|
|
|
85
232
|
}
|
|
86
233
|
|
|
87
234
|
var ALL_PLUGINS = ['bold', // 'code',
|
|
88
|
-
'html', 'italic', 'underline', 'strikethrough', 'bulleted-list', 'numbered-list', 'image', 'math', 'languageCharacters', 'table', 'video', 'audio', 'responseArea'];
|
|
235
|
+
'html', 'extraCSSRules', 'italic', 'underline', 'strikethrough', 'bulleted-list', 'numbered-list', 'image', 'math', 'languageCharacters', 'text-align', 'blockquote', 'h3', 'table', 'video', 'audio', 'responseArea', 'redo', 'undo', 'superscript', 'subscript'];
|
|
89
236
|
exports.ALL_PLUGINS = ALL_PLUGINS;
|
|
90
237
|
var DEFAULT_PLUGINS = ALL_PLUGINS.filter(function (plug) {
|
|
91
|
-
return
|
|
238
|
+
return !['responseArea', 'h3', 'blockquote'].includes(plug);
|
|
92
239
|
});
|
|
93
240
|
exports.DEFAULT_PLUGINS = DEFAULT_PLUGINS;
|
|
241
|
+
var ICON_MAP = {
|
|
242
|
+
undo: _Undo["default"],
|
|
243
|
+
redo: _Redo["default"]
|
|
244
|
+
};
|
|
94
245
|
|
|
95
|
-
|
|
246
|
+
function UndoRedo(type) {
|
|
247
|
+
var IconToUse = ICON_MAP[type];
|
|
248
|
+
return {
|
|
249
|
+
name: type,
|
|
250
|
+
toolbar: {
|
|
251
|
+
type: type,
|
|
252
|
+
icon: /*#__PURE__*/_react["default"].createElement(IconToUse, null),
|
|
253
|
+
ariaLabel: type === 'undo' ? 'Undo (revert the last action)' : 'Redo (reapply the last undone action)',
|
|
254
|
+
onClick: function onClick(value, onChange) {
|
|
255
|
+
var change = value.change();
|
|
256
|
+
onChange(change[type]());
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
};
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
function EnterHandlingPlugin() {
|
|
263
|
+
return {
|
|
264
|
+
name: 'enterHandling',
|
|
265
|
+
onKeyDown: function onKeyDown(event, change) {
|
|
266
|
+
if (_slateHotkeys["default"].isSplitBlock(event) && !_slateDevEnvironment.IS_IOS) {
|
|
267
|
+
if (change.value.isInVoid) {
|
|
268
|
+
return change.collapseToStartOfNextText();
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
change.splitBlock();
|
|
272
|
+
var range = change.value.selection;
|
|
273
|
+
var newBlock = change.value.document.getClosestBlock(range.startKey);
|
|
274
|
+
|
|
275
|
+
if (newBlock.type !== 'paragraph') {
|
|
276
|
+
change.setNodeByKey(newBlock.key, {
|
|
277
|
+
type: 'paragraph'
|
|
278
|
+
});
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
return change;
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
return undefined;
|
|
285
|
+
}
|
|
286
|
+
};
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
var buildPlugins = function buildPlugins(activePlugins, customPlugins, opts) {
|
|
96
290
|
log('[buildPlugins] opts: ', opts);
|
|
97
291
|
activePlugins = activePlugins || DEFAULT_PLUGINS;
|
|
98
292
|
|
|
@@ -103,7 +297,52 @@ var buildPlugins = function buildPlugins(activePlugins, opts) {
|
|
|
103
297
|
var imagePlugin = opts.image && opts.image.onDelete && (0, _image["default"])(opts.image);
|
|
104
298
|
var mathPlugin = (0, _math["default"])(opts.math);
|
|
105
299
|
var respAreaPlugin = opts.responseArea && opts.responseArea.type && (0, _respArea["default"])(opts.responseArea, (0, _compact["default"])([mathPlugin]));
|
|
106
|
-
|
|
300
|
+
var cssPlugin = !(0, _isEmpty["default"])(opts.extraCSSRules) && (0, _css["default"])(opts.extraCSSRules);
|
|
301
|
+
var languageCharactersPlugins = ((opts === null || opts === void 0 ? void 0 : opts.languageCharacters) || []).map(function (config) {
|
|
302
|
+
return (0, _characters["default"])(_objectSpread(_objectSpread({}, config), {}, {
|
|
303
|
+
keyPadCharacterRef: opts.keyPadCharacterRef,
|
|
304
|
+
setKeypadInteraction: opts.setKeypadInteraction
|
|
305
|
+
}));
|
|
306
|
+
});
|
|
307
|
+
var tablePlugins = [imagePlugin, mathPlugin, respAreaPlugin].concat((0, _toConsumableArray2["default"])(languageCharactersPlugins));
|
|
308
|
+
|
|
309
|
+
if (opts.responseArea && opts.responseArea.type === 'math-templated') {
|
|
310
|
+
tablePlugins.push(respAreaPlugin);
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
var builtCustomPlugins = [];
|
|
314
|
+
customPlugins.forEach(function (customPlugin) {
|
|
315
|
+
var _ref2 = customPlugin || {},
|
|
316
|
+
event = _ref2.event,
|
|
317
|
+
icon = _ref2.icon,
|
|
318
|
+
iconType = _ref2.iconType,
|
|
319
|
+
iconAlt = _ref2.iconAlt;
|
|
320
|
+
|
|
321
|
+
function isValidEventName(eventName) {
|
|
322
|
+
// Check if eventName is a non-empty string
|
|
323
|
+
if (typeof eventName !== 'string' || eventName.length === 0) {
|
|
324
|
+
return false;
|
|
325
|
+
} // Regular expression to match valid event names (only alphanumeric characters and underscore)
|
|
326
|
+
|
|
327
|
+
|
|
328
|
+
var regex = /^[a-zA-Z0-9_]+$/; // Check if the eventName matches the regular expression
|
|
329
|
+
|
|
330
|
+
return regex.test(eventName);
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
if (!isValidEventName(event)) {
|
|
334
|
+
console.error("The event name: ".concat(event, " is not a valid event name!"));
|
|
335
|
+
return;
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
if (!icon && !iconType && !iconAlt) {
|
|
339
|
+
console.error('Your custom button requires icon, iconType and iconAlt');
|
|
340
|
+
return;
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
builtCustomPlugins.push((0, _customPlugin["default"])('custom-plugin', customPlugin));
|
|
344
|
+
});
|
|
345
|
+
return (0, _compact["default"])([addIf('table', (0, _table["default"])(opts.table, (0, _compact["default"])(tablePlugins))), addIf('bold', MarkHotkey({
|
|
107
346
|
key: 'b',
|
|
108
347
|
type: 'bold',
|
|
109
348
|
icon: /*#__PURE__*/_react["default"].createElement(_FormatBold["default"], null),
|
|
@@ -124,9 +363,29 @@ var buildPlugins = function buildPlugins(activePlugins, opts) {
|
|
|
124
363
|
type: 'underline',
|
|
125
364
|
icon: /*#__PURE__*/_react["default"].createElement(_FormatUnderlined["default"], null),
|
|
126
365
|
tag: 'u'
|
|
127
|
-
})),
|
|
128
|
-
|
|
129
|
-
|
|
366
|
+
})), // icon should be modifies accordingly
|
|
367
|
+
addIf('superscript', MarkHotkey({
|
|
368
|
+
type: 'sup',
|
|
369
|
+
icon: /*#__PURE__*/_react["default"].createElement(SuperscriptIcon, null),
|
|
370
|
+
tag: 'sup'
|
|
371
|
+
})), // icon should be modifies accordingly
|
|
372
|
+
addIf('subscript', MarkHotkey({
|
|
373
|
+
type: 'sub',
|
|
374
|
+
icon: /*#__PURE__*/_react["default"].createElement(SubscriptIcon, null),
|
|
375
|
+
tag: 'sub'
|
|
376
|
+
})), addIf('image', imagePlugin), addIf('video', (0, _media["default"])('video', opts.media)), addIf('audio', (0, _media["default"])('audio', opts.media)), addIf('math', mathPlugin)].concat((0, _toConsumableArray2["default"])(languageCharactersPlugins.map(function (plugin) {
|
|
377
|
+
return addIf('languageCharacters', plugin);
|
|
378
|
+
})), [addIf('text-align', (0, _textAlign["default"])(opts.textAlign)), addIf('blockquote', MarkHotkey({
|
|
379
|
+
key: 'q',
|
|
380
|
+
type: 'blockquote',
|
|
381
|
+
icon: /*#__PURE__*/_react["default"].createElement(_FormatQuote["default"], null),
|
|
382
|
+
tag: 'blockquote'
|
|
383
|
+
})), addIf('h3', MarkHotkey({
|
|
384
|
+
key: 'h3',
|
|
385
|
+
type: 'h3',
|
|
386
|
+
icon: /*#__PURE__*/_react["default"].createElement(HeadingIcon, null),
|
|
387
|
+
tag: 'h3'
|
|
388
|
+
})), addIf('bulleted-list', (0, _list["default"])({
|
|
130
389
|
key: 'l',
|
|
131
390
|
type: 'ul_list',
|
|
132
391
|
icon: /*#__PURE__*/_react["default"].createElement(_FormatListBulleted["default"], null)
|
|
@@ -134,9 +393,9 @@ var buildPlugins = function buildPlugins(activePlugins, opts) {
|
|
|
134
393
|
key: 'n',
|
|
135
394
|
type: 'ol_list',
|
|
136
395
|
icon: /*#__PURE__*/_react["default"].createElement(_FormatListNumbered["default"], null)
|
|
137
|
-
})), (0, _toolbar["default"])(opts.toolbar), (0, _slateSoftBreak["default"])({
|
|
396
|
+
})), addIf('undo', UndoRedo('undo')), addIf('redo', UndoRedo('redo')), (0, _toolbar["default"])(opts.toolbar), (0, _slateSoftBreak["default"])({
|
|
138
397
|
shift: true
|
|
139
|
-
}), addIf('responseArea', respAreaPlugin), addIf('html', (0, _html["default"])(opts.html))]));
|
|
398
|
+
})], builtCustomPlugins, [addIf('responseArea', respAreaPlugin), cssPlugin, addIf('html', (0, _html["default"])(opts.html)), EnterHandlingPlugin(), (0, _rendering["default"])()]));
|
|
140
399
|
};
|
|
141
400
|
|
|
142
401
|
exports.buildPlugins = buildPlugins;
|
package/lib/plugins/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/plugins/index.jsx"],"names":["log","MarkHotkey","options","type","key","icon","tag","toolbar","isMark","onToggle","change","toggleMark","renderMark","props","mark","K","children","onKeyDown","event","metaKey","preventDefault","ALL_PLUGINS","DEFAULT_PLUGINS","filter","plug","buildPlugins","activePlugins","opts","addIf","p","includes","imagePlugin","image","onDelete","mathPlugin","math","respAreaPlugin","responseArea","table","media","languageCharacters","map","config","shift","html"],"mappings":";;;;;;;;;;;AAAA;;AAEA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAlBA;AAoBA,IAAMA,GAAG,GAAG,uBAAM,gCAAN,CAAZ;;AAEA,SAASC,UAAT,CAAoBC,OAApB,EAA6B;AAC3B,MAAQC,IAAR,GAAiCD,OAAjC,CAAQC,IAAR;AAAA,MAAcC,GAAd,GAAiCF,OAAjC,CAAcE,GAAd;AAAA,MAAmBC,IAAnB,GAAiCH,OAAjC,CAAmBG,IAAnB;AAAA,MAAyBC,GAAzB,GAAiCJ,OAAjC,CAAyBI,GAAzB,CAD2B,CAG3B;;AACA,SAAO;AACLC,IAAAA,OAAO,EAAE;AACPC,MAAAA,MAAM,EAAE,IADD;AAEPL,MAAAA,IAAI,EAAJA,IAFO;AAGPE,MAAAA,IAAI,EAAJA,IAHO;AAIPI,MAAAA,QAAQ,EAAE,kBAACC,MAAD,EAAY;AACpBV,QAAAA,GAAG,CAAC,uBAAD,EAA0BG,IAA1B,CAAH;AACA,eAAOO,MAAM,CAACC,UAAP,CAAkBR,IAAlB,CAAP;AACD;AAPM,KADJ;AAULS,IAAAA,UAVK,sBAUMC,KAVN,EAUa;AAChB,UAAIA,KAAK,CAACC,IAAN,CAAWX,IAAX,KAAoBA,IAAxB,EAA8B;AAC5B,YAAMY,CAAC,GAAGT,GAAG,IAAIH,IAAjB;AAEA,4BAAO,gCAAC,CAAD,QAAIU,KAAK,CAACG,QAAV,CAAP;AACD;AACF,KAhBI;AAiBLC,IAAAA,SAjBK,qBAiBKC,KAjBL,EAiBYR,MAjBZ,EAiBoB;AACvB;AACA,UAAI,CAACQ,KAAK,CAACC,OAAP,IAAkBD,KAAK,CAACd,GAAN,IAAaA,GAAnC,EAAwC,OAFjB,CAIvB;;AACAc,MAAAA,KAAK,CAACE,cAAN,GALuB,CAOvB;;AACAV,MAAAA,MAAM,CAACC,UAAP,CAAkBR,IAAlB;AACA,aAAO,IAAP;AACD;AA3BI,GAAP;AA6BD;;AAEM,IAAMkB,WAAW,GAAG,CACzB,MADyB,EAEzB;AACA,MAHyB,EAIzB,QAJyB,EAKzB,WALyB,EAMzB,eANyB,EAOzB,eAPyB,EAQzB,eARyB,EASzB,OATyB,EAUzB,MAVyB,EAWzB,oBAXyB,EAYzB,OAZyB,EAazB,OAbyB,EAczB,OAdyB,EAezB,cAfyB,CAApB;;AAkBA,IAAMC,eAAe,GAAGD,WAAW,CAACE,MAAZ,CAAmB,UAACC,IAAD;AAAA,SAAUA,IAAI,KAAK,cAAnB;AAAA,CAAnB,CAAxB;;;AAEA,IAAMC,YAAY,GAAG,SAAfA,YAAe,CAACC,aAAD,EAAgBC,IAAhB,EAAyB;AACnD3B,EAAAA,GAAG,CAAC,uBAAD,EAA0B2B,IAA1B,CAAH;AAEAD,EAAAA,aAAa,GAAGA,aAAa,IAAIJ,eAAjC;;AAEA,MAAMM,KAAK,GAAG,SAARA,KAAQ,CAACxB,GAAD,EAAMyB,CAAN;AAAA,WAAYH,aAAa,CAACI,QAAd,CAAuB1B,GAAvB,KAA+ByB,CAA3C;AAAA,GAAd;;AACA,MAAME,WAAW,GAAGJ,IAAI,CAACK,KAAL,IAAcL,IAAI,CAACK,KAAL,CAAWC,QAAzB,IAAqC,uBAAYN,IAAI,CAACK,KAAjB,CAAzD;AACA,MAAME,UAAU,GAAG,sBAAWP,IAAI,CAACQ,IAAhB,CAAnB;AACA,MAAMC,cAAc,GAClBT,IAAI,CAACU,YAAL,IAAqBV,IAAI,CAACU,YAAL,CAAkBlC,IAAvC,IAA+C,0BAAewB,IAAI,CAACU,YAApB,EAAkC,yBAAQ,CAACH,UAAD,CAAR,CAAlC,CADjD;AAGA,SAAO,0BACLN,KAAK,CAAC,OAAD,EAAU,uBAAYD,IAAI,CAACW,KAAjB,EAAwB,yBAAQ,CAACP,WAAD,EAAcG,UAAd,EAA0BE,cAA1B,CAAR,CAAxB,CAAV,CADA,EAELR,KAAK,CAAC,MAAD,EAAS3B,UAAU,CAAC;AAAEG,IAAAA,GAAG,EAAE,GAAP;AAAYD,IAAAA,IAAI,EAAE,MAAlB;AAA0BE,IAAAA,IAAI,eAAE,gCAAC,sBAAD,OAAhC;AAA0CC,IAAAA,GAAG,EAAE;AAA/C,GAAD,CAAnB,CAFA,EAGL;AACAsB,EAAAA,KAAK,CAAC,QAAD,EAAW3B,UAAU,CAAC;AAAEG,IAAAA,GAAG,EAAE,GAAP;AAAYD,IAAAA,IAAI,EAAE,QAAlB;AAA4BE,IAAAA,IAAI,eAAE,gCAAC,wBAAD,OAAlC;AAA8CC,IAAAA,GAAG,EAAE;AAAnD,GAAD,CAArB,CAJA,EAKLsB,KAAK,CACH,eADG,EAEH3B,UAAU,CAAC;AACTG,IAAAA,GAAG,EAAE,GADI;AAETD,IAAAA,IAAI,EAAE,eAFG;AAGTE,IAAAA,IAAI,eAAE,gCAAC,+BAAD,OAHG;AAITC,IAAAA,GAAG,EAAE;AAJI,GAAD,CAFP,CALA,EAcLsB,KAAK,CAAC,WAAD,EAAc3B,UAAU,CAAC;AAAEG,IAAAA,GAAG,EAAE,GAAP;AAAYD,IAAAA,IAAI,EAAE,WAAlB;AAA+BE,IAAAA,IAAI,eAAE,gCAAC,4BAAD,OAArC;AAAoDC,IAAAA,GAAG,EAAE;AAAzD,GAAD,CAAxB,CAdA,EAeLsB,KAAK,CAAC,OAAD,EAAUG,WAAV,CAfA,EAgBLH,KAAK,CAAC,OAAD,EAAU,uBAAY,OAAZ,EAAqBD,IAAI,CAACY,KAA1B,CAAV,CAhBA,EAiBLX,KAAK,CAAC,OAAD,EAAU,uBAAY,OAAZ,EAAqBD,IAAI,CAACY,KAA1B,CAAV,CAjBA,EAkBLX,KAAK,CAAC,MAAD,EAASM,UAAT,CAlBA,6CAmBFP,IAAI,CAACa,kBAAL,CAAwBC,GAAxB,CAA4B,UAACC,MAAD;AAAA,WAAYd,KAAK,CAAC,oBAAD,EAAuB,4BAAiBc,MAAjB,CAAvB,CAAjB;AAAA,GAA5B,CAnBE,IAoBLd,KAAK,CAAC,eAAD,EAAkB,sBAAK;AAAExB,IAAAA,GAAG,EAAE,GAAP;AAAYD,IAAAA,IAAI,EAAE,SAAlB;AAA6BE,IAAAA,IAAI,eAAE,gCAAC,8BAAD;AAAnC,GAAL,CAAlB,CApBA,EAqBLuB,KAAK,CAAC,eAAD,EAAkB,sBAAK;AAAExB,IAAAA,GAAG,EAAE,GAAP;AAAYD,IAAAA,IAAI,EAAE,SAAlB;AAA6BE,IAAAA,IAAI,eAAE,gCAAC,8BAAD;AAAnC,GAAL,CAAlB,CArBA,EAsBL,yBAAcsB,IAAI,CAACpB,OAAnB,CAtBK,EAuBL,gCAAgB;AAAEoC,IAAAA,KAAK,EAAE;AAAT,GAAhB,CAvBK,EAwBLf,KAAK,CAAC,cAAD,EAAiBQ,cAAjB,CAxBA,EAyBLR,KAAK,CAAC,MAAD,EAAS,sBAAWD,IAAI,CAACiB,IAAhB,CAAT,CAzBA,GAAP;AA2BD,CAtCM","sourcesContent":["import Bold from '@material-ui/icons/FormatBold';\n//import Code from '@material-ui/icons/Code';\nimport BulletedListIcon from '@material-ui/icons/FormatListBulleted';\nimport NumberedListIcon from '@material-ui/icons/FormatListNumbered';\nimport ImagePlugin from './image';\nimport MediaPlugin from './media';\nimport CharactersPlugin from './characters';\nimport Italic from '@material-ui/icons/FormatItalic';\nimport MathPlugin from './math';\nimport React from 'react';\nimport Strikethrough from '@material-ui/icons/FormatStrikethrough';\nimport ToolbarPlugin from './toolbar';\nimport Underline from '@material-ui/icons/FormatUnderlined';\nimport compact from 'lodash/compact';\nimport SoftBreakPlugin from 'slate-soft-break';\nimport debug from 'debug';\nimport List from './list';\nimport TablePlugin from './table';\nimport RespAreaPlugin from './respArea';\nimport HtmlPlugin from './html';\n\nconst log = debug('@pie-lib:editable-html:plugins');\n\nfunction MarkHotkey(options) {\n const { type, key, icon, tag } = options;\n\n // Return our \"plugin\" object, containing the `onKeyDown` handler.\n return {\n toolbar: {\n isMark: true,\n type,\n icon,\n onToggle: (change) => {\n log('[onToggleMark] type: ', type);\n return change.toggleMark(type);\n },\n },\n renderMark(props) {\n if (props.mark.type === type) {\n const K = tag || type;\n\n return <K>{props.children}</K>;\n }\n },\n onKeyDown(event, change) {\n // Check that the key pressed matches our `key` option.\n if (!event.metaKey || event.key != key) return;\n\n // Prevent the default characters from being inserted.\n event.preventDefault();\n\n // Toggle the mark `type`.\n change.toggleMark(type);\n return true;\n },\n };\n}\n\nexport const ALL_PLUGINS = [\n 'bold',\n // 'code',\n 'html',\n 'italic',\n 'underline',\n 'strikethrough',\n 'bulleted-list',\n 'numbered-list',\n 'image',\n 'math',\n 'languageCharacters',\n 'table',\n 'video',\n 'audio',\n 'responseArea',\n];\n\nexport const DEFAULT_PLUGINS = ALL_PLUGINS.filter((plug) => plug !== 'responseArea');\n\nexport const buildPlugins = (activePlugins, opts) => {\n log('[buildPlugins] opts: ', opts);\n\n activePlugins = activePlugins || DEFAULT_PLUGINS;\n\n const addIf = (key, p) => activePlugins.includes(key) && p;\n const imagePlugin = opts.image && opts.image.onDelete && ImagePlugin(opts.image);\n const mathPlugin = MathPlugin(opts.math);\n const respAreaPlugin =\n opts.responseArea && opts.responseArea.type && RespAreaPlugin(opts.responseArea, compact([mathPlugin]));\n\n return compact([\n addIf('table', TablePlugin(opts.table, compact([imagePlugin, mathPlugin, respAreaPlugin]))),\n addIf('bold', MarkHotkey({ key: 'b', type: 'bold', icon: <Bold />, tag: 'strong' })),\n // addIf('code', MarkHotkey({ key: '`', type: 'code', icon: <Code /> })),\n addIf('italic', MarkHotkey({ key: 'i', type: 'italic', icon: <Italic />, tag: 'em' })),\n addIf(\n 'strikethrough',\n MarkHotkey({\n key: '~',\n type: 'strikethrough',\n icon: <Strikethrough />,\n tag: 'del',\n }),\n ),\n addIf('underline', MarkHotkey({ key: 'u', type: 'underline', icon: <Underline />, tag: 'u' })),\n addIf('image', imagePlugin),\n addIf('video', MediaPlugin('video', opts.media)),\n addIf('audio', MediaPlugin('audio', opts.media)),\n addIf('math', mathPlugin),\n ...opts.languageCharacters.map((config) => addIf('languageCharacters', CharactersPlugin(config))),\n addIf('bulleted-list', List({ key: 'l', type: 'ul_list', icon: <BulletedListIcon /> })),\n addIf('numbered-list', List({ key: 'n', type: 'ol_list', icon: <NumberedListIcon /> })),\n ToolbarPlugin(opts.toolbar),\n SoftBreakPlugin({ shift: true }),\n addIf('responseArea', respAreaPlugin),\n addIf('html', HtmlPlugin(opts.html)),\n ]);\n};\n"],"file":"index.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/plugins/index.jsx"],"names":["log","SuperscriptIcon","SubscriptIcon","HeadingIcon","width","height","STYLES_MAP","h3","fontSize","fontWeight","blockquote","background","borderLeft","margin","padding","MarkHotkey","options","type","key","icon","tag","name","toolbar","isMark","onToggle","change","selection","value","includes","texts","document","getTextsAtRangeAsArray","onlyOneText","length","hasMark","sameMark","forEach","t","marks","getMarksAsArray","markIsThere","find","m","shouldContinue","startKey","endKey","anchorOffset","focusOffset","textNode","getNode","moveFocusTo","moveAnchorTo","text","activeMarks","entry","removeMark","newMark","Mark","create","addMark","toggleMark","renderMark","props","mark","node","data","jsonData","toJSON","K","additionalStyles","attributes","style","children","onKeyDown","event","metaKey","preventDefault","ALL_PLUGINS","DEFAULT_PLUGINS","filter","plug","ICON_MAP","undo","Undo","redo","Redo","UndoRedo","IconToUse","ariaLabel","onClick","onChange","EnterHandlingPlugin","Hotkeys","isSplitBlock","IS_IOS","isInVoid","collapseToStartOfNextText","splitBlock","range","newBlock","getClosestBlock","setNodeByKey","undefined","buildPlugins","activePlugins","customPlugins","opts","addIf","p","imagePlugin","image","onDelete","mathPlugin","math","respAreaPlugin","responseArea","cssPlugin","extraCSSRules","languageCharactersPlugins","languageCharacters","map","config","keyPadCharacterRef","setKeypadInteraction","tablePlugins","push","builtCustomPlugins","customPlugin","iconType","iconAlt","isValidEventName","eventName","regex","test","console","error","table","media","plugin","textAlign","shift","html"],"mappings":"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","sourcesContent":["import Hotkeys from 'slate-hotkeys';\nimport { IS_IOS } from 'slate-dev-environment';\nimport { Mark } from 'slate';\nimport Bold from '@material-ui/icons/FormatBold';\nimport FormatQuote from '@material-ui/icons/FormatQuote';\n//import Code from '@material-ui/icons/Code';\nimport BulletedListIcon from '@material-ui/icons/FormatListBulleted';\nimport NumberedListIcon from '@material-ui/icons/FormatListNumbered';\nimport Redo from '@material-ui/icons/Redo';\nimport Undo from '@material-ui/icons/Undo';\nimport ImagePlugin from './image';\nimport MediaPlugin from './media';\nimport CharactersPlugin from './characters';\nimport Italic from '@material-ui/icons/FormatItalic';\nimport MathPlugin from './math';\nimport React from 'react';\nimport Strikethrough from '@material-ui/icons/FormatStrikethrough';\nimport ToolbarPlugin from './toolbar';\nimport Underline from '@material-ui/icons/FormatUnderlined';\nimport compact from 'lodash/compact';\nimport isEmpty from 'lodash/isEmpty';\nimport SoftBreakPlugin from 'slate-soft-break';\nimport debug from 'debug';\nimport List from './list';\nimport TablePlugin from './table';\nimport RespAreaPlugin from './respArea';\nimport HtmlPlugin from './html';\nimport CSSPlugin from './css';\nimport CustomPlugin from './customPlugin';\nimport RenderingPlugin from './rendering';\nimport TextAlign from './textAlign';\n\nconst log = debug('@pie-lib:editable-html:plugins');\n\nconst SuperscriptIcon = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\" fill=\"none\">\n <path\n d=\"M22,7h-2v1h3v1h-4V7c0-0.55,0.45-1,1-1h2V5h-3V4h3c0.55,0,1,0.45,1,1v1C23,6.55,22.55,7,22,7z M5.88,20h2.66l3.4-5.42h0.12 l3.4,5.42h2.66l-4.65-7.27L17.81,6h-2.68l-3.07,4.99h-0.12L8.85,6H6.19l4.32,6.73L5.88,20z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n\nconst SubscriptIcon = () => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\" fill=\"none\">\n <path\n d=\"M22,18h-2v1h3v1h-4v-2c0-0.55,0.45-1,1-1h2v-1h-3v-1h3c0.55,0,1,0.45,1,1v1C23,17.55,22.55,18,22,18z M5.88,18h2.66 l3.4-5.42h0.12l3.4,5.42h2.66l-4.65-7.27L17.81,4h-2.68l-3.07,4.99h-0.12L8.85,4H6.19l4.32,6.73L5.88,18z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n\nconst HeadingIcon = () => (\n <svg\n width=\"30\"\n height=\"28\"\n viewBox=\"0 0 30 28\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n style={{ width: '20px', height: '18px' }}\n >\n <path\n d=\"M27 4V24H29C29.5 24 30 24.5 30 25V27C30 27.5625 29.5 28 29 28H19C18.4375 28 18 27.5625 18 27V25C18 24.5 18.4375 24 19 24H21V16H9V24H11C11.5 24 12 24.5 12 25V27C12 27.5625 11.5 28 11 28H1C0.4375 28 0 27.5625 0 27V25C0 24.5 0.4375 24 1 24H3V4H1C0.4375 4 0 3.5625 0 3V1C0 0.5 0.4375 0 1 0H11C11.5 0 12 0.5 12 1V3C12 3.5625 11.5 4 11 4H9V12H21V4H19C18.4375 4 18 3.5625 18 3V1C18 0.5 18.4375 0 19 0H29C29.5 0 30 0.5 30 1V3C30 3.5625 29.5 4 29 4H27Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\nconst STYLES_MAP = {\n h3: {\n fontSize: 'inherit',\n fontWeight: 'inherit',\n },\n blockquote: {\n background: '#f9f9f9',\n borderLeft: '5px solid #ccc',\n margin: '1.5em 10px',\n padding: '.5em 10px',\n },\n};\n\nfunction MarkHotkey(options) {\n const { type, key, icon, tag } = options;\n\n // Return our \"plugin\" object, containing the `onKeyDown` handler.\n return {\n name: type,\n toolbar: {\n isMark: true,\n type,\n icon,\n onToggle: (change) => {\n log('[onToggleMark] type: ', type);\n const { selection } = change.value;\n\n if (['blockquote', 'h3'].includes(type)) {\n const texts = change.value.document.getTextsAtRangeAsArray(selection);\n const onlyOneText = texts.length === 1;\n let hasMark = false;\n let sameMark = true;\n\n texts.forEach((t) => {\n const marks = t.getMarksAsArray();\n const markIsThere = marks.find((m) => m.type === type);\n\n if (!markIsThere) {\n // not all texts have this mark\n sameMark = false;\n } else {\n // at least one mark\n hasMark = true;\n }\n });\n\n const shouldContinue = onlyOneText || sameMark || !hasMark;\n\n if (!shouldContinue) {\n return change;\n }\n\n if (selection.startKey === selection.endKey && selection.anchorOffset === selection.focusOffset) {\n const textNode = change.value.document.getNode(selection.startKey);\n\n // select the whole line if there is no selection\n change.moveFocusTo(textNode.key, 0).moveAnchorTo(textNode.key, textNode.text.length);\n\n // remove toggle\n const hasMark = change.value.activeMarks.find((entry) => {\n return entry.type === type;\n });\n\n if (hasMark) {\n change.removeMark(hasMark);\n } else {\n const newMark = Mark.create(type);\n\n change.addMark(newMark);\n }\n\n // move focus to end of text\n return change\n .moveFocusTo(textNode.key, textNode.text.length)\n .moveAnchorTo(textNode.key, textNode.text.length);\n }\n }\n\n return change.toggleMark(type);\n },\n },\n renderMark(props) {\n if (props.mark.type === type) {\n const { data } = props.node || {};\n const jsonData = data?.toJSON() || {};\n const K = tag || type;\n const additionalStyles = STYLES_MAP[K];\n\n if (additionalStyles) {\n if (!jsonData.attributes) {\n jsonData.attributes = {};\n }\n\n jsonData.attributes.style = {\n ...jsonData.attributes.style,\n ...additionalStyles,\n };\n }\n\n return <K {...jsonData.attributes}>{props.children}</K>;\n }\n },\n onKeyDown(event, change) {\n // Check that the key pressed matches our `key` option.\n if (!event.metaKey || event.key != key) return;\n\n // Prevent the default characters from being inserted.\n event.preventDefault();\n\n // Toggle the mark `type`.\n change.toggleMark(type);\n return true;\n },\n };\n}\n\nexport const ALL_PLUGINS = [\n 'bold',\n // 'code',\n 'html',\n 'extraCSSRules',\n 'italic',\n 'underline',\n 'strikethrough',\n 'bulleted-list',\n 'numbered-list',\n 'image',\n 'math',\n 'languageCharacters',\n 'text-align',\n 'blockquote',\n 'h3',\n 'table',\n 'video',\n 'audio',\n 'responseArea',\n 'redo',\n 'undo',\n 'superscript',\n 'subscript',\n];\n\nexport const DEFAULT_PLUGINS = ALL_PLUGINS.filter((plug) => !['responseArea', 'h3', 'blockquote'].includes(plug));\n\nconst ICON_MAP = {\n undo: Undo,\n redo: Redo,\n};\nfunction UndoRedo(type) {\n const IconToUse = ICON_MAP[type];\n\n return {\n name: type,\n toolbar: {\n type,\n icon: <IconToUse />,\n ariaLabel: type === 'undo' ? 'Undo (revert the last action)' : 'Redo (reapply the last undone action)',\n onClick: (value, onChange) => {\n const change = value.change();\n\n onChange(change[type]());\n },\n },\n };\n}\n\nfunction EnterHandlingPlugin() {\n return {\n name: 'enterHandling',\n onKeyDown: (event, change) => {\n if (Hotkeys.isSplitBlock(event) && !IS_IOS) {\n if (change.value.isInVoid) {\n return change.collapseToStartOfNextText();\n }\n\n change.splitBlock();\n\n const range = change.value.selection;\n const newBlock = change.value.document.getClosestBlock(range.startKey);\n\n if (newBlock.type !== 'paragraph') {\n change.setNodeByKey(newBlock.key, {\n type: 'paragraph',\n });\n }\n\n return change;\n }\n\n return undefined;\n },\n };\n}\n\nexport const buildPlugins = (activePlugins, customPlugins, opts) => {\n log('[buildPlugins] opts: ', opts);\n\n activePlugins = activePlugins || DEFAULT_PLUGINS;\n\n const addIf = (key, p) => activePlugins.includes(key) && p;\n\n const imagePlugin = opts.image && opts.image.onDelete && ImagePlugin(opts.image);\n const mathPlugin = MathPlugin(opts.math);\n const respAreaPlugin =\n opts.responseArea && opts.responseArea.type && RespAreaPlugin(opts.responseArea, compact([mathPlugin]));\n const cssPlugin = !isEmpty(opts.extraCSSRules) && CSSPlugin(opts.extraCSSRules);\n\n const languageCharactersPlugins = (opts?.languageCharacters || []).map((config) =>\n CharactersPlugin({\n ...config,\n keyPadCharacterRef: opts.keyPadCharacterRef,\n setKeypadInteraction: opts.setKeypadInteraction,\n }),\n );\n\n const tablePlugins = [imagePlugin, mathPlugin, respAreaPlugin, ...languageCharactersPlugins];\n\n if (opts.responseArea && opts.responseArea.type === 'math-templated') {\n tablePlugins.push(respAreaPlugin);\n }\n\n let builtCustomPlugins = [];\n\n customPlugins.forEach((customPlugin) => {\n const { event, icon, iconType, iconAlt } = customPlugin || {};\n\n function isValidEventName(eventName) {\n // Check if eventName is a non-empty string\n if (typeof eventName !== 'string' || eventName.length === 0) {\n return false;\n }\n\n // Regular expression to match valid event names (only alphanumeric characters and underscore)\n const regex = /^[a-zA-Z0-9_]+$/;\n\n // Check if the eventName matches the regular expression\n return regex.test(eventName);\n }\n\n if (!isValidEventName(event)) {\n console.error(`The event name: ${event} is not a valid event name!`);\n return;\n }\n\n if (!icon && !iconType && !iconAlt) {\n console.error('Your custom button requires icon, iconType and iconAlt');\n return;\n }\n\n builtCustomPlugins.push(CustomPlugin('custom-plugin', customPlugin));\n });\n\n return compact([\n addIf('table', TablePlugin(opts.table, compact(tablePlugins))),\n addIf('bold', MarkHotkey({ key: 'b', type: 'bold', icon: <Bold />, tag: 'strong' })),\n // addIf('code', MarkHotkey({ key: '`', type: 'code', icon: <Code /> })),\n addIf('italic', MarkHotkey({ key: 'i', type: 'italic', icon: <Italic />, tag: 'em' })),\n addIf(\n 'strikethrough',\n MarkHotkey({\n key: '~',\n type: 'strikethrough',\n icon: <Strikethrough />,\n tag: 'del',\n }),\n ),\n addIf('underline', MarkHotkey({ key: 'u', type: 'underline', icon: <Underline />, tag: 'u' })),\n // icon should be modifies accordingly\n addIf('superscript', MarkHotkey({ type: 'sup', icon: <SuperscriptIcon />, tag: 'sup' })),\n // icon should be modifies accordingly\n addIf('subscript', MarkHotkey({ type: 'sub', icon: <SubscriptIcon />, tag: 'sub' })),\n addIf('image', imagePlugin),\n addIf('video', MediaPlugin('video', opts.media)),\n addIf('audio', MediaPlugin('audio', opts.media)),\n addIf('math', mathPlugin),\n ...languageCharactersPlugins.map((plugin) => addIf('languageCharacters', plugin)),\n addIf('text-align', TextAlign(opts.textAlign)),\n addIf('blockquote', MarkHotkey({ key: 'q', type: 'blockquote', icon: <FormatQuote />, tag: 'blockquote' })),\n addIf('h3', MarkHotkey({ key: 'h3', type: 'h3', icon: <HeadingIcon />, tag: 'h3' })),\n addIf('bulleted-list', List({ key: 'l', type: 'ul_list', icon: <BulletedListIcon /> })),\n addIf('numbered-list', List({ key: 'n', type: 'ol_list', icon: <NumberedListIcon /> })),\n addIf('undo', UndoRedo('undo')),\n addIf('redo', UndoRedo('redo')),\n ToolbarPlugin(opts.toolbar),\n SoftBreakPlugin({ shift: true }),\n ...builtCustomPlugins,\n addIf('responseArea', respAreaPlugin),\n cssPlugin,\n addIf('html', HtmlPlugin(opts.html)),\n EnterHandlingPlugin(),\n RenderingPlugin(),\n ]);\n};\n"],"file":"index.js"}
|