@pie-lib/editable-html 11.18.6-esmbeta.0 → 11.19.0-mui-update.0
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.md +37 -0
- package/lib/block-tags.js +2 -3
- package/lib/block-tags.js.map +1 -1
- package/lib/constants.js +3 -6
- package/lib/constants.js.map +1 -1
- package/lib/editor.js +302 -450
- package/lib/editor.js.map +1 -1
- package/lib/index.js +19 -77
- package/lib/index.js.map +1 -1
- package/lib/parse-html.js +7 -7
- package/lib/parse-html.js.map +1 -1
- package/lib/plugins/characters/custom-popper.js +24 -44
- package/lib/plugins/characters/custom-popper.js.map +1 -1
- package/lib/plugins/characters/index.js +9 -60
- package/lib/plugins/characters/index.js.map +1 -1
- package/lib/plugins/characters/utils.js +3 -6
- package/lib/plugins/characters/utils.js.map +1 -1
- package/lib/plugins/css/icons/index.js +13 -25
- package/lib/plugins/css/icons/index.js.map +1 -1
- package/lib/plugins/css/index.js +22 -88
- package/lib/plugins/css/index.js.map +1 -1
- package/lib/plugins/customPlugin/index.js +10 -26
- package/lib/plugins/customPlugin/index.js.map +1 -1
- package/lib/plugins/html/icons/index.js +14 -26
- package/lib/plugins/html/icons/index.js.map +1 -1
- package/lib/plugins/html/index.js +4 -13
- package/lib/plugins/html/index.js.map +1 -1
- package/lib/plugins/image/alt-dialog.js +20 -49
- package/lib/plugins/image/alt-dialog.js.map +1 -1
- package/lib/plugins/image/component.js +119 -190
- package/lib/plugins/image/component.js.map +1 -1
- package/lib/plugins/image/image-toolbar.js +44 -86
- package/lib/plugins/image/image-toolbar.js.map +1 -1
- package/lib/plugins/image/index.js +6 -46
- package/lib/plugins/image/index.js.map +1 -1
- package/lib/plugins/image/insert-image-handler.js +10 -31
- package/lib/plugins/image/insert-image-handler.js.map +1 -1
- package/lib/plugins/index.js +44 -106
- package/lib/plugins/index.js.map +1 -1
- package/lib/plugins/list/index.js +27 -73
- package/lib/plugins/list/index.js.map +1 -1
- package/lib/plugins/math/index.js +64 -116
- package/lib/plugins/math/index.js.map +1 -1
- package/lib/plugins/media/index.js +23 -81
- package/lib/plugins/media/index.js.map +1 -1
- package/lib/plugins/media/media-dialog.js +192 -307
- package/lib/plugins/media/media-dialog.js.map +1 -1
- package/lib/plugins/media/media-toolbar.js +40 -65
- package/lib/plugins/media/media-toolbar.js.map +1 -1
- package/lib/plugins/media/media-wrapper.js +20 -49
- package/lib/plugins/media/media-wrapper.js.map +1 -1
- package/lib/plugins/rendering/index.js +5 -15
- package/lib/plugins/rendering/index.js.map +1 -1
- package/lib/plugins/respArea/drag-in-the-blank/choice.js +175 -249
- package/lib/plugins/respArea/drag-in-the-blank/choice.js.map +1 -1
- package/lib/plugins/respArea/drag-in-the-blank/index.js +39 -29
- package/lib/plugins/respArea/drag-in-the-blank/index.js.map +1 -1
- package/lib/plugins/respArea/explicit-constructed-response/index.js +3 -10
- package/lib/plugins/respArea/explicit-constructed-response/index.js.map +1 -1
- package/lib/plugins/respArea/icons/index.js +22 -45
- package/lib/plugins/respArea/icons/index.js.map +1 -1
- package/lib/plugins/respArea/index.js +5 -59
- package/lib/plugins/respArea/index.js.map +1 -1
- package/lib/plugins/respArea/inline-dropdown/index.js +2 -10
- package/lib/plugins/respArea/inline-dropdown/index.js.map +1 -1
- package/lib/plugins/respArea/math-templated/index.js +92 -109
- package/lib/plugins/respArea/math-templated/index.js.map +1 -1
- package/lib/plugins/respArea/utils.js +8 -40
- package/lib/plugins/respArea/utils.js.map +1 -1
- package/lib/plugins/table/CustomTablePlugin.js +24 -41
- package/lib/plugins/table/CustomTablePlugin.js.map +1 -1
- package/lib/plugins/table/icons/index.js +19 -35
- package/lib/plugins/table/icons/index.js.map +1 -1
- package/lib/plugins/table/index.js +41 -118
- package/lib/plugins/table/index.js.map +1 -1
- package/lib/plugins/table/table-toolbar.js +37 -87
- package/lib/plugins/table/table-toolbar.js.map +1 -1
- package/lib/plugins/textAlign/icons/index.js +18 -64
- package/lib/plugins/textAlign/icons/index.js.map +1 -1
- package/lib/plugins/textAlign/index.js +1 -6
- package/lib/plugins/textAlign/index.js.map +1 -1
- package/lib/plugins/toolbar/default-toolbar.js +30 -79
- package/lib/plugins/toolbar/default-toolbar.js.map +1 -1
- package/lib/plugins/toolbar/done-button.js +16 -34
- package/lib/plugins/toolbar/done-button.js.map +1 -1
- package/lib/plugins/toolbar/editor-and-toolbar.js +174 -201
- package/lib/plugins/toolbar/editor-and-toolbar.js.map +1 -1
- package/lib/plugins/toolbar/index.js +0 -5
- package/lib/plugins/toolbar/index.js.map +1 -1
- package/lib/plugins/toolbar/toolbar-buttons.js +57 -107
- package/lib/plugins/toolbar/toolbar-buttons.js.map +1 -1
- package/lib/plugins/toolbar/toolbar.js +95 -161
- package/lib/plugins/toolbar/toolbar.js.map +1 -1
- package/lib/plugins/utils.js +5 -25
- package/lib/plugins/utils.js.map +1 -1
- package/lib/serialization.js +44 -150
- package/lib/serialization.js.map +1 -1
- package/lib/shared/alert-dialog.js +23 -42
- package/lib/theme.js +1 -2
- package/lib/theme.js.map +1 -1
- package/package.json +15 -21
- package/src/__tests__/utils.js +1 -1
- package/src/editor.jsx +110 -108
- package/src/plugins/characters/custom-popper.js +20 -25
- package/src/plugins/css/icons/index.jsx +11 -13
- package/src/plugins/css/index.jsx +3 -5
- package/src/plugins/html/icons/index.jsx +12 -14
- package/src/plugins/image/alt-dialog.jsx +9 -8
- package/src/plugins/image/component.jsx +67 -87
- package/src/plugins/image/image-toolbar.jsx +26 -26
- package/src/plugins/image/index.jsx +1 -1
- package/src/plugins/index.jsx +10 -10
- package/src/plugins/math/index.jsx +1 -1
- package/src/plugins/media/index.jsx +2 -2
- package/src/plugins/media/media-dialog.js +65 -76
- package/src/plugins/media/media-toolbar.jsx +32 -33
- package/src/plugins/media/media-wrapper.jsx +10 -13
- package/src/plugins/respArea/drag-in-the-blank/choice.jsx +193 -180
- package/src/plugins/respArea/drag-in-the-blank/index.jsx +58 -22
- package/src/plugins/respArea/icons/index.jsx +16 -16
- package/src/plugins/respArea/math-templated/index.jsx +88 -89
- package/src/plugins/respArea/utils.jsx +1 -1
- package/src/plugins/table/icons/index.jsx +14 -16
- package/src/plugins/table/index.jsx +27 -19
- package/src/plugins/table/table-toolbar.jsx +17 -19
- package/src/plugins/textAlign/icons/index.jsx +3 -3
- package/src/plugins/toolbar/__tests__/default-toolbar.test.jsx +1 -1
- package/src/plugins/toolbar/__tests__/toolbar.test.jsx +1 -1
- package/src/plugins/toolbar/default-toolbar.jsx +18 -21
- package/src/plugins/toolbar/done-button.jsx +16 -22
- package/src/plugins/toolbar/editor-and-toolbar.jsx +134 -157
- package/src/plugins/toolbar/toolbar-buttons.jsx +29 -46
- package/src/plugins/toolbar/toolbar.jsx +60 -78
- package/esm/index.js +0 -111560
- package/esm/index.js.map +0 -1
- package/esm/package.json +0 -1
package/lib/plugins/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["_slateHotkeys","_interopRequireDefault","require","_slateDevEnvironment","_slate","_FormatBold","_FormatQuote","_FormatListBulleted","_FormatListNumbered","_Redo","_Undo","_image","_media","_characters","_FormatItalic","_math","_react","_FormatStrikethrough","_toolbar","_FormatUnderlined","_compact","_isEmpty","_slateSoftBreak","_debug","_list","_table","_respArea","_html","_css","_customPlugin","_rendering","_textAlign","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","log","debug","SuperscriptIcon","createElement","xmlns","height","viewBox","width","fill","d","SubscriptIcon","HeadingIcon","style","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","hasMark","sameMark","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","_ref","node","data","jsonData","toJSON","K","additionalStyles","attributes","children","onKeyDown","event","metaKey","preventDefault","ALL_PLUGINS","exports","DEFAULT_PLUGINS","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","ImagePlugin","mathPlugin","MathPlugin","math","respAreaPlugin","responseArea","RespAreaPlugin","compact","cssPlugin","isEmpty","extraCSSRules","CSSPlugin","languageCharactersPlugins","languageCharacters","map","config","CharactersPlugin","keyPadCharacterRef","setKeypadInteraction","tablePlugins","concat","_toConsumableArray2","builtCustomPlugins","customPlugin","_ref2","iconType","iconAlt","isValidEventName","eventName","regex","test","console","error","CustomPlugin","TablePlugin","table","MediaPlugin","media","plugin","TextAlign","textAlign","List","ToolbarPlugin","SoftBreakPlugin","shift","HtmlPlugin","html","RenderingPlugin"],"sources":["../../src/plugins/index.jsx"],"sourcesContent":["import Hotkeys from 'slate-hotkeys';\nimport { IS_IOS } from 'slate-dev-environment';\nimport { Mark } from 'slate';\nimport Bold from '@mui/icons-material/FormatBold';\nimport FormatQuote from '@mui/icons-material/FormatQuote';\n//import Code from '@mui/icons-material/Code';\nimport BulletedListIcon from '@mui/icons-material/FormatListBulleted';\nimport NumberedListIcon from '@mui/icons-material/FormatListNumbered';\nimport Redo from '@mui/icons-material/Redo';\nimport Undo from '@mui/icons-material/Undo';\nimport ImagePlugin from './image';\nimport MediaPlugin from './media';\nimport CharactersPlugin from './characters';\nimport Italic from '@mui/icons-material/FormatItalic';\nimport MathPlugin from './math';\nimport React from 'react';\nimport Strikethrough from '@mui/icons-material/FormatStrikethrough';\nimport ToolbarPlugin from './toolbar';\nimport Underline from '@mui/icons-material/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"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,30 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.serialization = exports["default"] = void 0;
|
|
9
|
-
|
|
10
8
|
var _react = _interopRequireDefault(require("react"));
|
|
11
|
-
|
|
12
9
|
var _slate = require("slate");
|
|
13
|
-
|
|
14
10
|
var _immutable = _interopRequireDefault(require("immutable"));
|
|
15
|
-
|
|
16
11
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
17
|
-
|
|
18
12
|
var _slateEditList = _interopRequireDefault(require("slate-edit-list"));
|
|
19
|
-
|
|
20
13
|
var _options = _interopRequireDefault(require("slate-edit-list/dist/options"));
|
|
21
|
-
|
|
22
14
|
var _debug = _interopRequireDefault(require("debug"));
|
|
23
|
-
|
|
24
15
|
var _this = void 0;
|
|
25
|
-
|
|
26
16
|
var log = (0, _debug["default"])('@pie-lib:editable-html:plugins:list');
|
|
27
|
-
|
|
28
17
|
var b = function b(type, next, childNodes) {
|
|
29
18
|
return {
|
|
30
19
|
object: 'block',
|
|
@@ -32,62 +21,53 @@ var b = function b(type, next, childNodes) {
|
|
|
32
21
|
nodes: next(childNodes)
|
|
33
22
|
};
|
|
34
23
|
};
|
|
35
|
-
|
|
36
|
-
var serialization = {
|
|
24
|
+
var serialization = exports.serialization = {
|
|
37
25
|
deserialize: function deserialize(el, next) {
|
|
38
26
|
var name = el.tagName.toLowerCase();
|
|
39
|
-
|
|
40
27
|
if (name === 'li') {
|
|
41
28
|
return b('list_item', next, el.childNodes);
|
|
42
29
|
}
|
|
43
|
-
|
|
44
30
|
if (name === 'ul') {
|
|
45
31
|
return b('ul_list', next, el.children.length ? Array.from(el.children) : el.childNodes);
|
|
46
32
|
}
|
|
47
|
-
|
|
48
33
|
if (name === 'ol') {
|
|
49
34
|
return b('ol_list', next, el.children.length ? Array.from(el.children) : el.childNodes);
|
|
50
35
|
}
|
|
51
36
|
},
|
|
52
37
|
serialize: function serialize(object, children) {
|
|
53
38
|
if (object.object !== 'block') return;
|
|
54
|
-
|
|
55
39
|
if (object.type === 'list_item') {
|
|
56
40
|
return /*#__PURE__*/_react["default"].createElement("li", null, children);
|
|
57
41
|
}
|
|
58
|
-
|
|
59
42
|
if (object.type === 'ul_list') {
|
|
60
43
|
return /*#__PURE__*/_react["default"].createElement("ul", null, children);
|
|
61
44
|
}
|
|
62
|
-
|
|
63
45
|
if (object.type === 'ol_list') {
|
|
64
46
|
return /*#__PURE__*/_react["default"].createElement("ol", null, children);
|
|
65
47
|
}
|
|
66
48
|
}
|
|
67
49
|
};
|
|
68
|
-
exports.serialization = serialization;
|
|
69
|
-
|
|
70
50
|
var createEditList = function createEditList() {
|
|
71
51
|
var core = (0, _slateEditList["default"])({
|
|
72
52
|
typeDefault: 'span'
|
|
73
53
|
});
|
|
74
54
|
var listOptions = new _options["default"]({
|
|
75
55
|
typeDefault: 'span'
|
|
76
|
-
});
|
|
56
|
+
});
|
|
77
57
|
|
|
58
|
+
// fix outdated schema
|
|
78
59
|
if (core.schema && core.schema.blocks) {
|
|
79
60
|
Object.keys(core.schema.blocks).forEach(function (key) {
|
|
80
61
|
var block = core.schema.blocks[key];
|
|
81
|
-
|
|
82
62
|
if (block.parent) {
|
|
83
63
|
return;
|
|
84
64
|
}
|
|
85
|
-
|
|
86
65
|
block.nodes[0] = {
|
|
87
66
|
type: block.nodes[0].types[0]
|
|
88
67
|
};
|
|
89
68
|
});
|
|
90
69
|
}
|
|
70
|
+
|
|
91
71
|
/**
|
|
92
72
|
* This override of the core.changes.wrapInList is needed because the version
|
|
93
73
|
* of immutable that we have does not support getting the element at a specific
|
|
@@ -97,39 +77,36 @@ var createEditList = function createEditList() {
|
|
|
97
77
|
/**
|
|
98
78
|
* Returns the highest list of blocks that cover the current selection
|
|
99
79
|
*/
|
|
100
|
-
|
|
101
|
-
|
|
102
80
|
var getHighestSelectedBlocks = function getHighestSelectedBlocks(value) {
|
|
103
81
|
var range = value.selection;
|
|
104
82
|
var document = value.document;
|
|
105
83
|
var startBlock = document.getClosestBlock(range.startKey);
|
|
106
84
|
var endBlock = document.getClosestBlock(range.endKey);
|
|
107
|
-
|
|
108
85
|
if (startBlock === endBlock) {
|
|
109
86
|
return _immutable["default"].List([startBlock]);
|
|
110
87
|
}
|
|
111
|
-
|
|
112
88
|
var ancestor = document.getCommonAncestor(startBlock.key, endBlock.key);
|
|
113
89
|
var startPath = ancestor.getPath(startBlock.key);
|
|
114
90
|
var endPath = ancestor.getPath(endBlock.key);
|
|
115
91
|
return ancestor.nodes.slice(startPath.get(0), endPath.get(0) + 1);
|
|
116
92
|
};
|
|
93
|
+
|
|
117
94
|
/**
|
|
118
95
|
* Wrap the blocks in the current selection in a new list. Selected
|
|
119
96
|
* lists are merged together.
|
|
120
97
|
*/
|
|
121
|
-
|
|
122
|
-
|
|
123
98
|
core.changes.wrapInList = function (change, type, data) {
|
|
124
|
-
var selectedBlocks = getHighestSelectedBlocks(change.value);
|
|
99
|
+
var selectedBlocks = getHighestSelectedBlocks(change.value);
|
|
125
100
|
|
|
101
|
+
// Wrap in container
|
|
126
102
|
change.wrapBlock({
|
|
127
103
|
type: type,
|
|
128
104
|
data: _slate.Data.create(data)
|
|
129
105
|
}, {
|
|
130
106
|
normalize: false
|
|
131
|
-
});
|
|
107
|
+
});
|
|
132
108
|
|
|
109
|
+
// Wrap in list items
|
|
133
110
|
selectedBlocks.forEach(function (node) {
|
|
134
111
|
if (core.utils.isList(node)) {
|
|
135
112
|
// Merge its items with the created list
|
|
@@ -147,27 +124,27 @@ var createEditList = function createEditList() {
|
|
|
147
124
|
});
|
|
148
125
|
return change.normalize();
|
|
149
126
|
};
|
|
150
|
-
|
|
151
127
|
core.changes.unwrapList = function unwrapList(opts, change) {
|
|
152
128
|
var items = core.utils.getItemsAtRange(change.value);
|
|
153
|
-
|
|
154
129
|
if (items.isEmpty()) {
|
|
155
130
|
return change;
|
|
156
|
-
}
|
|
157
|
-
|
|
131
|
+
}
|
|
158
132
|
|
|
133
|
+
// Unwrap the items from their list
|
|
159
134
|
items.forEach(function (item) {
|
|
160
135
|
return change.unwrapNodeByKey(item.key, {
|
|
161
136
|
normalize: false
|
|
162
137
|
});
|
|
163
|
-
});
|
|
138
|
+
});
|
|
164
139
|
|
|
140
|
+
// Parent of the list of the items
|
|
165
141
|
var firstItem = items.first();
|
|
166
142
|
var parent = change.value.document.getParent(firstItem.key);
|
|
167
143
|
var index = parent.nodes.findIndex(function (node) {
|
|
168
144
|
return node.key === firstItem.key;
|
|
169
|
-
});
|
|
145
|
+
});
|
|
170
146
|
|
|
147
|
+
// Unwrap the items' children
|
|
171
148
|
items.forEach(function (item) {
|
|
172
149
|
item.nodes.forEach(function (node) {
|
|
173
150
|
change.moveNodeByKey(node.key, parent.key, index, {
|
|
@@ -175,8 +152,9 @@ var createEditList = function createEditList() {
|
|
|
175
152
|
});
|
|
176
153
|
index += 1;
|
|
177
154
|
});
|
|
178
|
-
});
|
|
155
|
+
});
|
|
179
156
|
|
|
157
|
+
// Finally, remove the now empty items
|
|
180
158
|
items.forEach(function (item) {
|
|
181
159
|
return change.removeNodeByKey(item.key, {
|
|
182
160
|
normalize: false
|
|
@@ -184,25 +162,19 @@ var createEditList = function createEditList() {
|
|
|
184
162
|
});
|
|
185
163
|
return change;
|
|
186
164
|
}.bind(_this, listOptions);
|
|
187
|
-
|
|
188
165
|
core.utils.getItemsAtRange = function (opts, value, range) {
|
|
189
166
|
range = range || value.selection;
|
|
190
|
-
|
|
191
167
|
if (!range.startKey) {
|
|
192
168
|
return _immutable["default"].List();
|
|
193
169
|
}
|
|
194
|
-
|
|
195
170
|
var document = value.document;
|
|
196
171
|
var startBlock = document.getClosestBlock(range.startKey);
|
|
197
172
|
var endBlock = document.getClosestBlock(range.endKey);
|
|
198
|
-
|
|
199
173
|
if (startBlock === endBlock) {
|
|
200
174
|
var item = core.utils.getCurrentItem(value, startBlock);
|
|
201
175
|
return item ? _immutable["default"].List([item]) : _immutable["default"].List();
|
|
202
176
|
}
|
|
203
|
-
|
|
204
177
|
var ancestor = document.getCommonAncestor(startBlock.key, endBlock.key);
|
|
205
|
-
|
|
206
178
|
if (core.utils.isList(ancestor)) {
|
|
207
179
|
var startPath = ancestor.getPath(startBlock.key);
|
|
208
180
|
var endPath = ancestor.getPath(endBlock.key);
|
|
@@ -210,49 +182,42 @@ var createEditList = function createEditList() {
|
|
|
210
182
|
} else if (ancestor.type === opts.typeItem) {
|
|
211
183
|
// The ancestor is the highest list item that covers the range
|
|
212
184
|
return _immutable["default"].List([ancestor]);
|
|
213
|
-
}
|
|
214
|
-
|
|
215
|
-
|
|
185
|
+
}
|
|
186
|
+
// No list of items can cover the range
|
|
216
187
|
return _immutable["default"].List();
|
|
217
188
|
}.bind(_this, listOptions);
|
|
218
|
-
|
|
219
189
|
core.utils.getListForItem = function (opts, value, item) {
|
|
220
190
|
var document = value.document;
|
|
221
191
|
var parent = document.getParent(item.key);
|
|
222
192
|
return parent && core.utils.isList(parent) ? parent : null;
|
|
223
193
|
}.bind(_this, listOptions);
|
|
224
|
-
|
|
225
194
|
core.utils.isSelectionInList = function (opts, value, type) {
|
|
226
195
|
var items = core.utils.getItemsAtRange(value);
|
|
227
|
-
return !items.isEmpty() && (
|
|
196
|
+
return !items.isEmpty() && (
|
|
197
|
+
// Check the type of the list if needed
|
|
228
198
|
!type || core.utils.getListForItem(value, items.first()).get('type') === type);
|
|
229
199
|
}.bind(_this, listOptions);
|
|
230
|
-
|
|
231
200
|
return core;
|
|
232
201
|
};
|
|
233
|
-
|
|
234
|
-
var _default = function _default(options) {
|
|
202
|
+
var _default = exports["default"] = function _default(options) {
|
|
235
203
|
var type = options.type,
|
|
236
|
-
|
|
237
|
-
var core = createEditList();
|
|
204
|
+
icon = options.icon;
|
|
205
|
+
var core = createEditList();
|
|
238
206
|
|
|
207
|
+
// eslint-disable-next-line react/display-name
|
|
239
208
|
core.renderNode = function (props) {
|
|
240
209
|
var node = props.node,
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
210
|
+
attributes = props.attributes,
|
|
211
|
+
children = props.children;
|
|
244
212
|
switch (node.type) {
|
|
245
213
|
case 'ul_list':
|
|
246
214
|
return /*#__PURE__*/_react["default"].createElement("ul", attributes, children);
|
|
247
|
-
|
|
248
215
|
case 'ol_list':
|
|
249
216
|
return /*#__PURE__*/_react["default"].createElement("ol", attributes, children);
|
|
250
|
-
|
|
251
217
|
case 'list_item':
|
|
252
218
|
return /*#__PURE__*/_react["default"].createElement("li", attributes, children);
|
|
253
219
|
}
|
|
254
220
|
};
|
|
255
|
-
|
|
256
221
|
core.toolbar = {
|
|
257
222
|
isMark: false,
|
|
258
223
|
ariaLabel: type == 'ul_list' ? 'bulleted list' : 'numbered-list',
|
|
@@ -262,30 +227,25 @@ var _default = function _default(options) {
|
|
|
262
227
|
if (!core.utils.isSelectionInList(value)) {
|
|
263
228
|
return false;
|
|
264
229
|
}
|
|
265
|
-
|
|
266
230
|
var current = core.utils.getCurrentList(value);
|
|
267
231
|
return current ? current.type === type : false;
|
|
268
232
|
},
|
|
269
233
|
onClick: function onClick(value, onChange) {
|
|
270
234
|
log('[onClick]', value);
|
|
271
235
|
var inList = core.utils.isSelectionInList(value);
|
|
272
|
-
|
|
273
236
|
if (inList) {
|
|
274
237
|
var change = value.change().call(core.changes.unwrapList);
|
|
275
238
|
onChange(change);
|
|
276
239
|
} else {
|
|
277
240
|
var _change = value.change().call(core.changes.wrapInList, type);
|
|
278
|
-
|
|
279
241
|
onChange(_change);
|
|
280
242
|
}
|
|
281
243
|
}
|
|
282
244
|
};
|
|
283
|
-
|
|
284
245
|
core.normalizeNode = function (node) {
|
|
285
246
|
if (node.object !== 'document' && node.object !== 'block') {
|
|
286
247
|
return undefined;
|
|
287
248
|
}
|
|
288
|
-
|
|
289
249
|
var response = core.validateNode(node);
|
|
290
250
|
var invalidListItems = [];
|
|
291
251
|
node.forEachDescendant(function (d) {
|
|
@@ -294,16 +254,13 @@ var _default = function _default(options) {
|
|
|
294
254
|
invalidListItems.push(d);
|
|
295
255
|
}
|
|
296
256
|
});
|
|
297
|
-
|
|
298
257
|
if (!invalidListItems.length && !response) {
|
|
299
258
|
return undefined;
|
|
300
259
|
}
|
|
301
|
-
|
|
302
260
|
return function (change) {
|
|
303
261
|
if (response) {
|
|
304
262
|
response(change);
|
|
305
263
|
}
|
|
306
|
-
|
|
307
264
|
if (invalidListItems.length) {
|
|
308
265
|
change.withoutNormalization(function () {
|
|
309
266
|
invalidListItems.forEach(function (node) {
|
|
@@ -320,7 +277,6 @@ var _default = function _default(options) {
|
|
|
320
277
|
}
|
|
321
278
|
};
|
|
322
279
|
};
|
|
323
|
-
|
|
324
280
|
core.renderNode.propTypes = {
|
|
325
281
|
node: _propTypes["default"].object,
|
|
326
282
|
attributes: _propTypes["default"].object,
|
|
@@ -329,6 +285,4 @@ var _default = function _default(options) {
|
|
|
329
285
|
core.name = type;
|
|
330
286
|
return core;
|
|
331
287
|
};
|
|
332
|
-
|
|
333
|
-
exports["default"] = _default;
|
|
334
288
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/plugins/list/index.jsx"],"names":["log","b","type","next","childNodes","object","nodes","serialization","deserialize","el","name","tagName","toLowerCase","children","length","Array","from","serialize","createEditList","core","typeDefault","listOptions","ListOptions","schema","blocks","Object","keys","forEach","key","block","parent","types","getHighestSelectedBlocks","value","range","selection","document","startBlock","getClosestBlock","startKey","endBlock","endKey","Immutable","List","ancestor","getCommonAncestor","startPath","getPath","endPath","slice","get","changes","wrapInList","change","data","selectedBlocks","wrapBlock","Data","create","normalize","node","utils","isList","_ref","unwrapNodeByKey","wrapBlockByKey","unwrapList","opts","items","getItemsAtRange","isEmpty","item","firstItem","first","getParent","index","findIndex","moveNodeByKey","removeNodeByKey","bind","getCurrentItem","typeItem","getListForItem","isSelectionInList","options","icon","renderNode","props","attributes","toolbar","isMark","ariaLabel","isActive","current","getCurrentList","onClick","onChange","inList","call","normalizeNode","undefined","response","validateNode","invalidListItems","forEachDescendant","d","size","push","withoutNormalization","textNode","wrappedBlock","toJSON","insertNodeByKey","propTypes","PropTypes","func"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { Data } from 'slate';\nimport Immutable from 'immutable';\nimport PropTypes from 'prop-types';\nimport EditList from 'slate-edit-list';\nimport ListOptions from 'slate-edit-list/dist/options';\nimport debug from 'debug';\n\nconst log = debug('@pie-lib:editable-html:plugins:list');\n\nconst b = (type, next, childNodes) => ({\n object: 'block',\n type,\n nodes: next(childNodes),\n});\n\nexport const serialization = {\n deserialize(el, next) {\n const name = el.tagName.toLowerCase();\n\n if (name === 'li') {\n return b('list_item', next, el.childNodes);\n }\n\n if (name === 'ul') {\n return b('ul_list', next, el.children.length ? Array.from(el.children) : el.childNodes);\n }\n\n if (name === 'ol') {\n return b('ol_list', next, el.children.length ? Array.from(el.children) : el.childNodes);\n }\n },\n serialize(object, children) {\n if (object.object !== 'block') return;\n\n if (object.type === 'list_item') {\n return <li>{children}</li>;\n }\n\n if (object.type === 'ul_list') {\n return <ul>{children}</ul>;\n }\n\n if (object.type === 'ol_list') {\n return <ol>{children}</ol>;\n }\n },\n};\n\nconst createEditList = () => {\n const core = EditList({\n typeDefault: 'span',\n });\n\n const listOptions = new ListOptions({\n typeDefault: 'span',\n });\n\n // fix outdated schema\n if (core.schema && core.schema.blocks) {\n Object.keys(core.schema.blocks).forEach((key) => {\n const block = core.schema.blocks[key];\n\n if (block.parent) {\n return;\n }\n\n block.nodes[0] = { type: block.nodes[0].types[0] };\n });\n }\n\n /**\n * This override of the core.changes.wrapInList is needed because the version\n * of immutable that we have does not support getting the element at a specific\n * index with a square bracket (list[0]). We have to use the list.get function instead\n */\n\n /**\n * Returns the highest list of blocks that cover the current selection\n */\n const getHighestSelectedBlocks = (value) => {\n const range = value.selection;\n const document = value.document;\n\n const startBlock = document.getClosestBlock(range.startKey);\n const endBlock = document.getClosestBlock(range.endKey);\n\n if (startBlock === endBlock) {\n return Immutable.List([startBlock]);\n }\n\n const ancestor = document.getCommonAncestor(startBlock.key, endBlock.key);\n const startPath = ancestor.getPath(startBlock.key);\n const endPath = ancestor.getPath(endBlock.key);\n\n return ancestor.nodes.slice(startPath.get(0), endPath.get(0) + 1);\n };\n\n /**\n * Wrap the blocks in the current selection in a new list. Selected\n * lists are merged together.\n */\n core.changes.wrapInList = function(change, type, data) {\n const selectedBlocks = getHighestSelectedBlocks(change.value);\n\n // Wrap in container\n change.wrapBlock({ type: type, data: Data.create(data) }, { normalize: false });\n\n // Wrap in list items\n selectedBlocks.forEach(function(node) {\n if (core.utils.isList(node)) {\n // Merge its items with the created list\n node.nodes.forEach(function(_ref) {\n const key = _ref.key;\n return change.unwrapNodeByKey(key, { normalize: false });\n });\n } else if (node.type !== 'list_item') {\n change.wrapBlockByKey(node.key, 'list_item', {\n normalize: false,\n });\n }\n });\n\n return change.normalize();\n };\n\n core.changes.unwrapList = function unwrapList(opts, change) {\n const items = core.utils.getItemsAtRange(change.value);\n\n if (items.isEmpty()) {\n return change;\n }\n\n // Unwrap the items from their list\n items.forEach((item) => change.unwrapNodeByKey(item.key, { normalize: false }));\n\n // Parent of the list of the items\n const firstItem = items.first();\n const parent = change.value.document.getParent(firstItem.key);\n\n let index = parent.nodes.findIndex((node) => node.key === firstItem.key);\n\n // Unwrap the items' children\n items.forEach((item) => {\n item.nodes.forEach((node) => {\n change.moveNodeByKey(node.key, parent.key, index, {\n normalize: false,\n });\n index += 1;\n });\n });\n\n // Finally, remove the now empty items\n items.forEach((item) => change.removeNodeByKey(item.key, { normalize: false }));\n\n return change;\n }.bind(this, listOptions);\n\n core.utils.getItemsAtRange = function(opts, value, range) {\n range = range || value.selection;\n\n if (!range.startKey) {\n return Immutable.List();\n }\n\n const { document } = value;\n\n const startBlock = document.getClosestBlock(range.startKey);\n const endBlock = document.getClosestBlock(range.endKey);\n\n if (startBlock === endBlock) {\n const item = core.utils.getCurrentItem(value, startBlock);\n return item ? Immutable.List([item]) : Immutable.List();\n }\n\n const ancestor = document.getCommonAncestor(startBlock.key, endBlock.key);\n\n if (core.utils.isList(ancestor)) {\n const startPath = ancestor.getPath(startBlock.key);\n const endPath = ancestor.getPath(endBlock.key);\n\n return ancestor.nodes.slice(startPath.get(0), endPath.get(0) + 1);\n } else if (ancestor.type === opts.typeItem) {\n // The ancestor is the highest list item that covers the range\n return Immutable.List([ancestor]);\n }\n // No list of items can cover the range\n return Immutable.List();\n }.bind(this, listOptions);\n\n core.utils.getListForItem = function(opts, value, item) {\n const { document } = value;\n const parent = document.getParent(item.key);\n return parent && core.utils.isList(parent) ? parent : null;\n }.bind(this, listOptions);\n\n core.utils.isSelectionInList = function(opts, value, type) {\n const items = core.utils.getItemsAtRange(value);\n return (\n !items.isEmpty() &&\n // Check the type of the list if needed\n (!type || core.utils.getListForItem(value, items.first()).get('type') === type)\n );\n }.bind(this, listOptions);\n\n return core;\n};\n\nexport default (options) => {\n const { type, icon } = options;\n\n const core = createEditList();\n\n // eslint-disable-next-line react/display-name\n core.renderNode = (props) => {\n const { node, attributes, children } = props;\n\n switch (node.type) {\n case 'ul_list':\n return <ul {...attributes}>{children}</ul>;\n case 'ol_list':\n return <ol {...attributes}>{children}</ol>;\n case 'list_item':\n return <li {...attributes}>{children}</li>;\n }\n };\n\n core.toolbar = {\n isMark: false,\n ariaLabel: type == 'ul_list' ? 'bulleted list' : 'numbered-list',\n type,\n icon,\n isActive: (value, type) => {\n if (!core.utils.isSelectionInList(value)) {\n return false;\n }\n const current = core.utils.getCurrentList(value);\n return current ? current.type === type : false;\n },\n onClick: (value, onChange) => {\n log('[onClick]', value);\n const inList = core.utils.isSelectionInList(value);\n if (inList) {\n const change = value.change().call(core.changes.unwrapList);\n onChange(change);\n } else {\n const change = value.change().call(core.changes.wrapInList, type);\n onChange(change);\n }\n },\n };\n\n core.normalizeNode = (node) => {\n if (node.object !== 'document' && node.object !== 'block') {\n return undefined;\n }\n\n const response = core.validateNode(node);\n\n const invalidListItems = [];\n\n node.forEachDescendant((d) => {\n if (d.type === 'list_item' && d.nodes.size === 1 && d.nodes.first().object === 'text') {\n // if we have a list_item that has only a text inside, we need to add a block in it\n invalidListItems.push(d);\n }\n });\n\n if (!invalidListItems.length && !response) {\n return undefined;\n }\n\n return (change) => {\n if (response) {\n response(change);\n }\n\n if (invalidListItems.length) {\n change.withoutNormalization(() => {\n invalidListItems.forEach((node) => {\n const textNode = node.nodes.first();\n const wrappedBlock = {\n object: 'block',\n type: 'div',\n nodes: [textNode.toJSON()],\n };\n\n change.removeNodeByKey(textNode.key);\n\n change.insertNodeByKey(node.key, 0, wrappedBlock);\n });\n });\n }\n };\n };\n\n core.renderNode.propTypes = {\n node: PropTypes.object,\n attributes: PropTypes.object,\n children: PropTypes.func,\n };\n core.name = type;\n\n return core;\n};\n"],"file":"index.js"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["_react","_interopRequireDefault","require","_slate","_immutable","_propTypes","_slateEditList","_options","_debug","_this","log","debug","b","type","next","childNodes","object","nodes","serialization","exports","deserialize","el","name","tagName","toLowerCase","children","length","Array","from","serialize","createElement","createEditList","core","EditList","typeDefault","listOptions","ListOptions","schema","blocks","Object","keys","forEach","key","block","parent","types","getHighestSelectedBlocks","value","range","selection","document","startBlock","getClosestBlock","startKey","endBlock","endKey","Immutable","List","ancestor","getCommonAncestor","startPath","getPath","endPath","slice","get","changes","wrapInList","change","data","selectedBlocks","wrapBlock","Data","create","normalize","node","utils","isList","_ref","unwrapNodeByKey","wrapBlockByKey","unwrapList","opts","items","getItemsAtRange","isEmpty","item","firstItem","first","getParent","index","findIndex","moveNodeByKey","removeNodeByKey","bind","getCurrentItem","typeItem","getListForItem","isSelectionInList","_default","options","icon","renderNode","props","attributes","toolbar","isMark","ariaLabel","isActive","current","getCurrentList","onClick","onChange","inList","call","normalizeNode","undefined","response","validateNode","invalidListItems","forEachDescendant","d","size","push","withoutNormalization","textNode","wrappedBlock","toJSON","insertNodeByKey","propTypes","PropTypes","func"],"sources":["../../../src/plugins/list/index.jsx"],"sourcesContent":["import React from 'react';\nimport { Data } from 'slate';\nimport Immutable from 'immutable';\nimport PropTypes from 'prop-types';\nimport EditList from 'slate-edit-list';\nimport ListOptions from 'slate-edit-list/dist/options';\nimport debug from 'debug';\n\nconst log = debug('@pie-lib:editable-html:plugins:list');\n\nconst b = (type, next, childNodes) => ({\n object: 'block',\n type,\n nodes: next(childNodes),\n});\n\nexport const serialization = {\n deserialize(el, next) {\n const name = el.tagName.toLowerCase();\n\n if (name === 'li') {\n return b('list_item', next, el.childNodes);\n }\n\n if (name === 'ul') {\n return b('ul_list', next, el.children.length ? Array.from(el.children) : el.childNodes);\n }\n\n if (name === 'ol') {\n return b('ol_list', next, el.children.length ? Array.from(el.children) : el.childNodes);\n }\n },\n serialize(object, children) {\n if (object.object !== 'block') return;\n\n if (object.type === 'list_item') {\n return <li>{children}</li>;\n }\n\n if (object.type === 'ul_list') {\n return <ul>{children}</ul>;\n }\n\n if (object.type === 'ol_list') {\n return <ol>{children}</ol>;\n }\n },\n};\n\nconst createEditList = () => {\n const core = EditList({\n typeDefault: 'span',\n });\n\n const listOptions = new ListOptions({\n typeDefault: 'span',\n });\n\n // fix outdated schema\n if (core.schema && core.schema.blocks) {\n Object.keys(core.schema.blocks).forEach((key) => {\n const block = core.schema.blocks[key];\n\n if (block.parent) {\n return;\n }\n\n block.nodes[0] = { type: block.nodes[0].types[0] };\n });\n }\n\n /**\n * This override of the core.changes.wrapInList is needed because the version\n * of immutable that we have does not support getting the element at a specific\n * index with a square bracket (list[0]). We have to use the list.get function instead\n */\n\n /**\n * Returns the highest list of blocks that cover the current selection\n */\n const getHighestSelectedBlocks = (value) => {\n const range = value.selection;\n const document = value.document;\n\n const startBlock = document.getClosestBlock(range.startKey);\n const endBlock = document.getClosestBlock(range.endKey);\n\n if (startBlock === endBlock) {\n return Immutable.List([startBlock]);\n }\n\n const ancestor = document.getCommonAncestor(startBlock.key, endBlock.key);\n const startPath = ancestor.getPath(startBlock.key);\n const endPath = ancestor.getPath(endBlock.key);\n\n return ancestor.nodes.slice(startPath.get(0), endPath.get(0) + 1);\n };\n\n /**\n * Wrap the blocks in the current selection in a new list. Selected\n * lists are merged together.\n */\n core.changes.wrapInList = function(change, type, data) {\n const selectedBlocks = getHighestSelectedBlocks(change.value);\n\n // Wrap in container\n change.wrapBlock({ type: type, data: Data.create(data) }, { normalize: false });\n\n // Wrap in list items\n selectedBlocks.forEach(function(node) {\n if (core.utils.isList(node)) {\n // Merge its items with the created list\n node.nodes.forEach(function(_ref) {\n const key = _ref.key;\n return change.unwrapNodeByKey(key, { normalize: false });\n });\n } else if (node.type !== 'list_item') {\n change.wrapBlockByKey(node.key, 'list_item', {\n normalize: false,\n });\n }\n });\n\n return change.normalize();\n };\n\n core.changes.unwrapList = function unwrapList(opts, change) {\n const items = core.utils.getItemsAtRange(change.value);\n\n if (items.isEmpty()) {\n return change;\n }\n\n // Unwrap the items from their list\n items.forEach((item) => change.unwrapNodeByKey(item.key, { normalize: false }));\n\n // Parent of the list of the items\n const firstItem = items.first();\n const parent = change.value.document.getParent(firstItem.key);\n\n let index = parent.nodes.findIndex((node) => node.key === firstItem.key);\n\n // Unwrap the items' children\n items.forEach((item) => {\n item.nodes.forEach((node) => {\n change.moveNodeByKey(node.key, parent.key, index, {\n normalize: false,\n });\n index += 1;\n });\n });\n\n // Finally, remove the now empty items\n items.forEach((item) => change.removeNodeByKey(item.key, { normalize: false }));\n\n return change;\n }.bind(this, listOptions);\n\n core.utils.getItemsAtRange = function(opts, value, range) {\n range = range || value.selection;\n\n if (!range.startKey) {\n return Immutable.List();\n }\n\n const { document } = value;\n\n const startBlock = document.getClosestBlock(range.startKey);\n const endBlock = document.getClosestBlock(range.endKey);\n\n if (startBlock === endBlock) {\n const item = core.utils.getCurrentItem(value, startBlock);\n return item ? Immutable.List([item]) : Immutable.List();\n }\n\n const ancestor = document.getCommonAncestor(startBlock.key, endBlock.key);\n\n if (core.utils.isList(ancestor)) {\n const startPath = ancestor.getPath(startBlock.key);\n const endPath = ancestor.getPath(endBlock.key);\n\n return ancestor.nodes.slice(startPath.get(0), endPath.get(0) + 1);\n } else if (ancestor.type === opts.typeItem) {\n // The ancestor is the highest list item that covers the range\n return Immutable.List([ancestor]);\n }\n // No list of items can cover the range\n return Immutable.List();\n }.bind(this, listOptions);\n\n core.utils.getListForItem = function(opts, value, item) {\n const { document } = value;\n const parent = document.getParent(item.key);\n return parent && core.utils.isList(parent) ? parent : null;\n }.bind(this, listOptions);\n\n core.utils.isSelectionInList = function(opts, value, type) {\n const items = core.utils.getItemsAtRange(value);\n return (\n !items.isEmpty() &&\n // Check the type of the list if needed\n (!type || core.utils.getListForItem(value, items.first()).get('type') === type)\n );\n }.bind(this, listOptions);\n\n return core;\n};\n\nexport default (options) => {\n const { type, icon } = options;\n\n const core = createEditList();\n\n // eslint-disable-next-line react/display-name\n core.renderNode = (props) => {\n const { node, attributes, children } = props;\n\n switch (node.type) {\n case 'ul_list':\n return <ul {...attributes}>{children}</ul>;\n case 'ol_list':\n return <ol {...attributes}>{children}</ol>;\n case 'list_item':\n return <li {...attributes}>{children}</li>;\n }\n };\n\n core.toolbar = {\n isMark: false,\n ariaLabel: type == 'ul_list' ? 'bulleted list' : 'numbered-list',\n type,\n icon,\n isActive: (value, type) => {\n if (!core.utils.isSelectionInList(value)) {\n return false;\n }\n const current = core.utils.getCurrentList(value);\n return current ? current.type === type : false;\n },\n onClick: (value, onChange) => {\n log('[onClick]', value);\n const inList = core.utils.isSelectionInList(value);\n if (inList) {\n const change = value.change().call(core.changes.unwrapList);\n onChange(change);\n } else {\n const change = value.change().call(core.changes.wrapInList, type);\n onChange(change);\n }\n },\n };\n\n core.normalizeNode = (node) => {\n if (node.object !== 'document' && node.object !== 'block') {\n return undefined;\n }\n\n const response = core.validateNode(node);\n\n const invalidListItems = [];\n\n node.forEachDescendant((d) => {\n if (d.type === 'list_item' && d.nodes.size === 1 && d.nodes.first().object === 'text') {\n // if we have a list_item that has only a text inside, we need to add a block in it\n invalidListItems.push(d);\n }\n });\n\n if (!invalidListItems.length && !response) {\n return undefined;\n }\n\n return (change) => {\n if (response) {\n response(change);\n }\n\n if (invalidListItems.length) {\n change.withoutNormalization(() => {\n invalidListItems.forEach((node) => {\n const textNode = node.nodes.first();\n const wrappedBlock = {\n object: 'block',\n type: 'div',\n nodes: [textNode.toJSON()],\n };\n\n change.removeNodeByKey(textNode.key);\n\n change.insertNodeByKey(node.key, 0, wrappedBlock);\n });\n });\n }\n };\n };\n\n core.renderNode.propTypes = {\n node: PropTypes.object,\n attributes: PropTypes.object,\n children: PropTypes.func,\n };\n core.name = type;\n\n return core;\n};\n"],"mappings":"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","ignoreList":[]}
|