@pie-lib/editable-html 12.1.0-next.0 → 12.1.0-next.2
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 +40 -0
- package/package.json +7 -7
- package/lib/__tests__/editor-utils.test.js +0 -164
- package/lib/__tests__/serialization.test.js +0 -242
- package/lib/__tests__/utils.js +0 -79
- package/lib/block-tags.js +0 -24
- package/lib/block-tags.js.map +0 -1
- package/lib/constants.js +0 -11
- package/lib/constants.js.map +0 -1
- package/lib/editor.js +0 -1224
- package/lib/editor.js.map +0 -1
- package/lib/index.js +0 -208
- package/lib/index.js.map +0 -1
- package/lib/parse-html.js +0 -16
- package/lib/parse-html.js.map +0 -1
- package/lib/plugins/characters/custom-popper.js +0 -57
- package/lib/plugins/characters/custom-popper.js.map +0 -1
- package/lib/plugins/characters/index.js +0 -265
- package/lib/plugins/characters/index.js.map +0 -1
- package/lib/plugins/characters/utils.js +0 -378
- package/lib/plugins/characters/utils.js.map +0 -1
- package/lib/plugins/css/icons/index.js +0 -25
- package/lib/plugins/css/icons/index.js.map +0 -1
- package/lib/plugins/css/index.js +0 -338
- package/lib/plugins/css/index.js.map +0 -1
- package/lib/plugins/customPlugin/index.js +0 -98
- package/lib/plugins/customPlugin/index.js.map +0 -1
- package/lib/plugins/html/icons/index.js +0 -30
- package/lib/plugins/html/icons/index.js.map +0 -1
- package/lib/plugins/html/index.js +0 -71
- package/lib/plugins/html/index.js.map +0 -1
- package/lib/plugins/image/__tests__/component.test.js +0 -96
- package/lib/plugins/image/__tests__/image-toolbar-logic.test.js +0 -131
- package/lib/plugins/image/__tests__/image-toolbar.test.js +0 -22
- package/lib/plugins/image/__tests__/index.test.js +0 -90
- package/lib/plugins/image/__tests__/insert-image-handler.test.js +0 -112
- package/lib/plugins/image/__tests__/mock-change.js +0 -22
- package/lib/plugins/image/alt-dialog.js +0 -100
- package/lib/plugins/image/alt-dialog.js.map +0 -1
- package/lib/plugins/image/component.js +0 -343
- package/lib/plugins/image/component.js.map +0 -1
- package/lib/plugins/image/image-toolbar.js +0 -137
- package/lib/plugins/image/image-toolbar.js.map +0 -1
- package/lib/plugins/image/index.js +0 -223
- package/lib/plugins/image/index.js.map +0 -1
- package/lib/plugins/image/insert-image-handler.js +0 -140
- package/lib/plugins/image/insert-image-handler.js.map +0 -1
- package/lib/plugins/index.js +0 -342
- package/lib/plugins/index.js.map +0 -1
- package/lib/plugins/list/__tests__/index.test.js +0 -64
- package/lib/plugins/list/index.js +0 -288
- package/lib/plugins/list/index.js.map +0 -1
- package/lib/plugins/math/__tests__/index.test.js +0 -284
- package/lib/plugins/math/index.js +0 -402
- package/lib/plugins/math/index.js.map +0 -1
- package/lib/plugins/media/__tests__/index.test.js +0 -69
- package/lib/plugins/media/index.js +0 -330
- package/lib/plugins/media/index.js.map +0 -1
- package/lib/plugins/media/media-dialog.js +0 -594
- package/lib/plugins/media/media-dialog.js.map +0 -1
- package/lib/plugins/media/media-toolbar.js +0 -76
- package/lib/plugins/media/media-toolbar.js.map +0 -1
- package/lib/plugins/media/media-wrapper.js +0 -64
- package/lib/plugins/media/media-wrapper.js.map +0 -1
- package/lib/plugins/rendering/index.js +0 -36
- package/lib/plugins/rendering/index.js.map +0 -1
- package/lib/plugins/respArea/drag-in-the-blank/choice.js +0 -271
- package/lib/plugins/respArea/drag-in-the-blank/choice.js.map +0 -1
- package/lib/plugins/respArea/drag-in-the-blank/index.js +0 -55
- package/lib/plugins/respArea/drag-in-the-blank/index.js.map +0 -1
- package/lib/plugins/respArea/drag-in-the-blank/utils.js +0 -38
- package/lib/plugins/respArea/drag-in-the-blank/utils.js.map +0 -1
- package/lib/plugins/respArea/explicit-constructed-response/index.js +0 -50
- package/lib/plugins/respArea/explicit-constructed-response/index.js.map +0 -1
- package/lib/plugins/respArea/icons/index.js +0 -72
- package/lib/plugins/respArea/icons/index.js.map +0 -1
- package/lib/plugins/respArea/index.js +0 -287
- package/lib/plugins/respArea/index.js.map +0 -1
- package/lib/plugins/respArea/inline-dropdown/index.js +0 -67
- package/lib/plugins/respArea/inline-dropdown/index.js.map +0 -1
- package/lib/plugins/respArea/math-templated/index.js +0 -112
- package/lib/plugins/respArea/math-templated/index.js.map +0 -1
- package/lib/plugins/respArea/utils.js +0 -95
- package/lib/plugins/respArea/utils.js.map +0 -1
- package/lib/plugins/table/CustomTablePlugin.js +0 -116
- package/lib/plugins/table/CustomTablePlugin.js.map +0 -1
- package/lib/plugins/table/__tests__/index.test.js +0 -416
- package/lib/plugins/table/__tests__/table-toolbar.test.js +0 -81
- package/lib/plugins/table/icons/index.js +0 -55
- package/lib/plugins/table/icons/index.js.map +0 -1
- package/lib/plugins/table/index.js +0 -413
- package/lib/plugins/table/index.js.map +0 -1
- package/lib/plugins/table/table-toolbar.js +0 -138
- package/lib/plugins/table/table-toolbar.js.map +0 -1
- package/lib/plugins/textAlign/icons/index.js +0 -187
- package/lib/plugins/textAlign/icons/index.js.map +0 -1
- package/lib/plugins/textAlign/index.js +0 -26
- package/lib/plugins/textAlign/index.js.map +0 -1
- package/lib/plugins/toolbar/__tests__/default-toolbar.test.js +0 -154
- package/lib/plugins/toolbar/__tests__/editor-and-toolbar.test.js +0 -47
- package/lib/plugins/toolbar/__tests__/toolbar-buttons.test.js +0 -112
- package/lib/plugins/toolbar/__tests__/toolbar.test.js +0 -118
- package/lib/plugins/toolbar/default-toolbar.js +0 -180
- package/lib/plugins/toolbar/default-toolbar.js.map +0 -1
- package/lib/plugins/toolbar/done-button.js +0 -35
- package/lib/plugins/toolbar/done-button.js.map +0 -1
- package/lib/plugins/toolbar/editor-and-toolbar.js +0 -258
- package/lib/plugins/toolbar/editor-and-toolbar.js.map +0 -1
- package/lib/plugins/toolbar/index.js +0 -29
- package/lib/plugins/toolbar/index.js.map +0 -1
- package/lib/plugins/toolbar/toolbar-buttons.js +0 -145
- package/lib/plugins/toolbar/toolbar-buttons.js.map +0 -1
- package/lib/plugins/toolbar/toolbar.js +0 -307
- package/lib/plugins/toolbar/toolbar.js.map +0 -1
- package/lib/plugins/utils.js +0 -42
- package/lib/plugins/utils.js.map +0 -1
- package/lib/serialization.js +0 -571
- package/lib/serialization.js.map +0 -1
- package/lib/shared/alert-dialog.js +0 -68
- package/lib/theme.js +0 -8
- package/lib/theme.js.map +0 -1
package/lib/plugins/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
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 // eslint-disable-next-line no-console\n console.error(`The event name: ${event} is not a valid event name!`);\n return;\n }\n\n if (!icon && !iconType && !iconAlt) {\n // eslint-disable-next-line no-console\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":";;;;;;;;;AAAA,IAAAA,aAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,oBAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAF,OAAA;AACA,IAAAG,WAAA,GAAAJ,sBAAA,CAAAC,OAAA;AACA,IAAAI,YAAA,GAAAL,sBAAA,CAAAC,OAAA;AAEA,IAAAK,mBAAA,GAAAN,sBAAA,CAAAC,OAAA;AACA,IAAAM,mBAAA,GAAAP,sBAAA,CAAAC,OAAA;AACA,IAAAO,KAAA,GAAAR,sBAAA,CAAAC,OAAA;AACA,IAAAQ,KAAA,GAAAT,sBAAA,CAAAC,OAAA;AACA,IAAAS,MAAA,GAAAV,sBAAA,CAAAC,OAAA;AACA,IAAAU,MAAA,GAAAX,sBAAA,CAAAC,OAAA;AACA,IAAAW,WAAA,GAAAZ,sBAAA,CAAAC,OAAA;AACA,IAAAY,aAAA,GAAAb,sBAAA,CAAAC,OAAA;AACA,IAAAa,KAAA,GAAAd,sBAAA,CAAAC,OAAA;AACA,IAAAc,MAAA,GAAAf,sBAAA,CAAAC,OAAA;AACA,IAAAe,oBAAA,GAAAhB,sBAAA,CAAAC,OAAA;AACA,IAAAgB,QAAA,GAAAjB,sBAAA,CAAAC,OAAA;AACA,IAAAiB,iBAAA,GAAAlB,sBAAA,CAAAC,OAAA;AACA,IAAAkB,QAAA,GAAAnB,sBAAA,CAAAC,OAAA;AACA,IAAAmB,QAAA,GAAApB,sBAAA,CAAAC,OAAA;AACA,IAAAoB,eAAA,GAAArB,sBAAA,CAAAC,OAAA;AACA,IAAAqB,MAAA,GAAAtB,sBAAA,CAAAC,OAAA;AACA,IAAAsB,KAAA,GAAAvB,sBAAA,CAAAC,OAAA;AACA,IAAAuB,MAAA,GAAAxB,sBAAA,CAAAC,OAAA;AACA,IAAAwB,SAAA,GAAAzB,sBAAA,CAAAC,OAAA;AACA,IAAAyB,KAAA,GAAA1B,sBAAA,CAAAC,OAAA;AACA,IAAA0B,IAAA,GAAA3B,sBAAA,CAAAC,OAAA;AACA,IAAA2B,aAAA,GAAA5B,sBAAA,CAAAC,OAAA;AACA,IAAA4B,UAAA,GAAA7B,sBAAA,CAAAC,OAAA;AACA,IAAA6B,UAAA,GAAA9B,sBAAA,CAAAC,OAAA;AAAoC,SAAA8B,QAAAC,CAAA,EAAAC,CAAA,QAAAC,CAAA,GAAAC,MAAA,CAAAC,IAAA,CAAAJ,CAAA,OAAAG,MAAA,CAAAE,qBAAA,QAAAC,CAAA,GAAAH,MAAA,CAAAE,qBAAA,CAAAL,CAAA,GAAAC,CAAA,KAAAK,CAAA,GAAAA,CAAA,CAAAC,MAAA,WAAAN,CAAA,WAAAE,MAAA,CAAAK,wBAAA,CAAAR,CAAA,EAAAC,CAAA,EAAAQ,UAAA,OAAAP,CAAA,CAAAQ,IAAA,CAAAC,KAAA,CAAAT,CAAA,EAAAI,CAAA,YAAAJ,CAAA;AAAA,SAAAU,cAAAZ,CAAA,aAAAC,CAAA,MAAAA,CAAA,GAAAY,SAAA,CAAAC,MAAA,EAAAb,CAAA,UAAAC,CAAA,WAAAW,SAAA,CAAAZ,CAAA,IAAAY,SAAA,CAAAZ,CAAA,QAAAA,CAAA,OAAAF,OAAA,CAAAI,MAAA,CAAAD,CAAA,OAAAa,OAAA,WAAAd,CAAA,QAAAe,gBAAA,aAAAhB,CAAA,EAAAC,CAAA,EAAAC,CAAA,CAAAD,CAAA,SAAAE,MAAA,CAAAc,yBAAA,GAAAd,MAAA,CAAAe,gBAAA,CAAAlB,CAAA,EAAAG,MAAA,CAAAc,yBAAA,CAAAf,CAAA,KAAAH,OAAA,CAAAI,MAAA,CAAAD,CAAA,GAAAa,OAAA,WAAAd,CAAA,IAAAE,MAAA,CAAAgB,cAAA,CAAAnB,CAAA,EAAAC,CAAA,EAAAE,MAAA,CAAAK,wBAAA,CAAAN,CAAA,EAAAD,CAAA,iBAAAD,CAAA,IAzBpC;AA2BA,IAAMoB,GAAG,GAAG,IAAAC,iBAAK,EAAC,gCAAgC,CAAC;AAEnD,IAAMC,eAAe,GAAG,SAAlBA,eAAeA,CAAA;EAAA,oBACnBvC,MAAA,YAAAwC,aAAA;IAAKC,KAAK,EAAC,4BAA4B;IAACC,MAAM,EAAC,MAAM;IAACC,OAAO,EAAC,WAAW;IAACC,KAAK,EAAC,MAAM;IAACC,IAAI,EAAC;EAAM,gBAChG7C,MAAA,YAAAwC,aAAA;IACEM,CAAC,EAAC,gNAAgN;IAClND,IAAI,EAAC;EAAc,CACpB,CACE,CAAC;AAAA,CACP;AAED,IAAME,aAAa,GAAG,SAAhBA,aAAaA,CAAA;EAAA,oBACjB/C,MAAA,YAAAwC,aAAA;IAAKC,KAAK,EAAC,4BAA4B;IAACC,MAAM,EAAC,MAAM;IAACC,OAAO,EAAC,WAAW;IAACC,KAAK,EAAC,MAAM;IAACC,IAAI,EAAC;EAAM,gBAChG7C,MAAA,YAAAwC,aAAA;IACEM,CAAC,EAAC,uNAAuN;IACzND,IAAI,EAAC;EAAc,CACpB,CACE,CAAC;AAAA,CACP;AAED,IAAMG,WAAW,GAAG,SAAdA,WAAWA,CAAA;EAAA,oBACfhD,MAAA,YAAAwC,aAAA;IACEI,KAAK,EAAC,IAAI;IACVF,MAAM,EAAC,IAAI;IACXC,OAAO,EAAC,WAAW;IACnBE,IAAI,EAAC,MAAM;IACXJ,KAAK,EAAC,4BAA4B;IAClCQ,KAAK,EAAE;MAAEL,KAAK,EAAE,MAAM;MAAEF,MAAM,EAAE;IAAO;EAAE,gBAEzC1C,MAAA,YAAAwC,aAAA;IACEM,CAAC,EAAC,6bAA6b;IAC/bD,IAAI,EAAC;EAAc,CACpB,CACE,CAAC;AAAA,CACP;AACD,IAAMK,UAAU,GAAG;EACjBC,EAAE,EAAE;IACFC,QAAQ,EAAE,SAAS;IACnBC,UAAU,EAAE;EACd,CAAC;EACDC,UAAU,EAAE;IACVC,UAAU,EAAE,SAAS;IACrBC,UAAU,EAAE,gBAAgB;IAC5BC,MAAM,EAAE,YAAY;IACpBC,OAAO,EAAE;EACX;AACF,CAAC;AAED,SAASC,UAAUA,CAACC,OAAO,EAAE;EAC3B,IAAQC,IAAI,GAAqBD,OAAO,CAAhCC,IAAI;IAAEC,GAAG,GAAgBF,OAAO,CAA1BE,GAAG;IAAEC,IAAI,GAAUH,OAAO,CAArBG,IAAI;IAAEC,GAAG,GAAKJ,OAAO,CAAfI,GAAG;;EAE5B;EACA,OAAO;IACLC,IAAI,EAAEJ,IAAI;IACVK,OAAO,EAAE;MACPC,MAAM,EAAE,IAAI;MACZN,IAAI,EAAJA,IAAI;MACJE,IAAI,EAAJA,IAAI;MACJK,QAAQ,EAAE,SAAVA,QAAQA,CAAGC,MAAM,EAAK;QACpBhC,GAAG,CAAC,uBAAuB,EAAEwB,IAAI,CAAC;QAClC,IAAQS,SAAS,GAAKD,MAAM,CAACE,KAAK,CAA1BD,SAAS;QAEjB,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAACE,QAAQ,CAACX,IAAI,CAAC,EAAE;UACvC,IAAMY,KAAK,GAAGJ,MAAM,CAACE,KAAK,CAACG,QAAQ,CAACC,sBAAsB,CAACL,SAAS,CAAC;UACrE,IAAMM,WAAW,GAAGH,KAAK,CAAC1C,MAAM,KAAK,CAAC;UACtC,IAAI8C,OAAO,GAAG,KAAK;UACnB,IAAIC,QAAQ,GAAG,IAAI;UAEnBL,KAAK,CAACzC,OAAO,CAAC,UAACb,CAAC,EAAK;YACnB,IAAM4D,KAAK,GAAG5D,CAAC,CAAC6D,eAAe,CAAC,CAAC;YACjC,IAAMC,WAAW,GAAGF,KAAK,CAACG,IAAI,CAAC,UAACC,CAAC;cAAA,OAAKA,CAAC,CAACtB,IAAI,KAAKA,IAAI;YAAA,EAAC;YAEtD,IAAI,CAACoB,WAAW,EAAE;cAChB;cACAH,QAAQ,GAAG,KAAK;YAClB,CAAC,MAAM;cACL;cACAD,OAAO,GAAG,IAAI;YAChB;UACF,CAAC,CAAC;UAEF,IAAMO,cAAc,GAAGR,WAAW,IAAIE,QAAQ,IAAI,CAACD,OAAO;UAE1D,IAAI,CAACO,cAAc,EAAE;YACnB,OAAOf,MAAM;UACf;UAEA,IAAIC,SAAS,CAACe,QAAQ,KAAKf,SAAS,CAACgB,MAAM,IAAIhB,SAAS,CAACiB,YAAY,KAAKjB,SAAS,CAACkB,WAAW,EAAE;YAC/F,IAAMC,QAAQ,GAAGpB,MAAM,CAACE,KAAK,CAACG,QAAQ,CAACgB,OAAO,CAACpB,SAAS,CAACe,QAAQ,CAAC;;YAElE;YACAhB,MAAM,CAACsB,WAAW,CAACF,QAAQ,CAAC3B,GAAG,EAAE,CAAC,CAAC,CAAC8B,YAAY,CAACH,QAAQ,CAAC3B,GAAG,EAAE2B,QAAQ,CAACI,IAAI,CAAC9D,MAAM,CAAC;;YAEpF;YACA,IAAM8C,QAAO,GAAGR,MAAM,CAACE,KAAK,CAACuB,WAAW,CAACZ,IAAI,CAAC,UAACa,KAAK,EAAK;cACvD,OAAOA,KAAK,CAAClC,IAAI,KAAKA,IAAI;YAC5B,CAAC,CAAC;YAEF,IAAIgB,QAAO,EAAE;cACXR,MAAM,CAAC2B,UAAU,CAACnB,QAAO,CAAC;YAC5B,CAAC,MAAM;cACL,IAAMoB,OAAO,GAAGC,WAAI,CAACC,MAAM,CAACtC,IAAI,CAAC;cAEjCQ,MAAM,CAAC+B,OAAO,CAACH,OAAO,CAAC;YACzB;;YAEA;YACA,OAAO5B,MAAM,CACVsB,WAAW,CAACF,QAAQ,CAAC3B,GAAG,EAAE2B,QAAQ,CAACI,IAAI,CAAC9D,MAAM,CAAC,CAC/C6D,YAAY,CAACH,QAAQ,CAAC3B,GAAG,EAAE2B,QAAQ,CAACI,IAAI,CAAC9D,MAAM,CAAC;UACrD;QACF;QAEA,OAAOsC,MAAM,CAACgC,UAAU,CAACxC,IAAI,CAAC;MAChC;IACF,CAAC;IACDyC,UAAU,WAAVA,UAAUA,CAACC,KAAK,EAAE;MAChB,IAAIA,KAAK,CAACC,IAAI,CAAC3C,IAAI,KAAKA,IAAI,EAAE;QAC5B,IAAA4C,IAAA,GAAiBF,KAAK,CAACG,IAAI,IAAI,CAAC,CAAC;UAAzBC,IAAI,GAAAF,IAAA,CAAJE,IAAI;QACZ,IAAMC,QAAQ,GAAG,CAAAD,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEE,MAAM,CAAC,CAAC,KAAI,CAAC,CAAC;QACrC,IAAMC,CAAC,GAAG9C,GAAG,IAAIH,IAAI;QACrB,IAAMkD,gBAAgB,GAAG7D,UAAU,CAAC4D,CAAC,CAAC;QAEtC,IAAIC,gBAAgB,EAAE;UACpB,IAAI,CAACH,QAAQ,CAACI,UAAU,EAAE;YACxBJ,QAAQ,CAACI,UAAU,GAAG,CAAC,CAAC;UAC1B;UAEAJ,QAAQ,CAACI,UAAU,CAAC/D,KAAK,GAAApB,aAAA,CAAAA,aAAA,KACpB+E,QAAQ,CAACI,UAAU,CAAC/D,KAAK,GACzB8D,gBAAgB,CACpB;QACH;QAEA,oBAAO/G,MAAA,YAAAwC,aAAA,CAACsE,CAAC,EAAKF,QAAQ,CAACI,UAAU,EAAGT,KAAK,CAACU,QAAY,CAAC;MACzD;IACF,CAAC;IACDC,SAAS,WAATA,SAASA,CAACC,KAAK,EAAE9C,MAAM,EAAE;MACvB;MACA,IAAI,CAAC8C,KAAK,CAACC,OAAO,IAAID,KAAK,CAACrD,GAAG,IAAIA,GAAG,EAAE;;MAExC;MACAqD,KAAK,CAACE,cAAc,CAAC,CAAC;;MAEtB;MACAhD,MAAM,CAACgC,UAAU,CAACxC,IAAI,CAAC;MACvB,OAAO,IAAI;IACb;EACF,CAAC;AACH;AAEO,IAAMyD,WAAW,GAAAC,OAAA,CAAAD,WAAA,GAAG,CACzB,MAAM;AACN;AACA,MAAM,EACN,eAAe,EACf,QAAQ,EACR,WAAW,EACX,eAAe,EACf,eAAe,EACf,eAAe,EACf,OAAO,EACP,MAAM,EACN,oBAAoB,EACpB,YAAY,EACZ,YAAY,EACZ,IAAI,EACJ,OAAO,EACP,OAAO,EACP,OAAO,EACP,cAAc,EACd,MAAM,EACN,MAAM,EACN,aAAa,EACb,WAAW,CACZ;AAEM,IAAME,eAAe,GAAAD,OAAA,CAAAC,eAAA,GAAGF,WAAW,CAAC9F,MAAM,CAAC,UAACiG,IAAI;EAAA,OAAK,CAAC,CAAC,cAAc,EAAE,IAAI,EAAE,YAAY,CAAC,CAACjD,QAAQ,CAACiD,IAAI,CAAC;AAAA,EAAC;AAEjH,IAAMC,QAAQ,GAAG;EACfC,IAAI,EAAEC,gBAAI;EACVC,IAAI,EAAEC;AACR,CAAC;AACD,SAASC,QAAQA,CAAClE,IAAI,EAAE;EACtB,IAAMmE,SAAS,GAAGN,QAAQ,CAAC7D,IAAI,CAAC;EAEhC,OAAO;IACLI,IAAI,EAAEJ,IAAI;IACVK,OAAO,EAAE;MACPL,IAAI,EAAJA,IAAI;MACJE,IAAI,eAAE/D,MAAA,YAAAwC,aAAA,CAACwF,SAAS,MAAE,CAAC;MACnBC,SAAS,EAAEpE,IAAI,KAAK,MAAM,GAAG,+BAA+B,GAAG,uCAAuC;MACtGqE,OAAO,EAAE,SAATA,OAAOA,CAAG3D,KAAK,EAAE4D,QAAQ,EAAK;QAC5B,IAAM9D,MAAM,GAAGE,KAAK,CAACF,MAAM,CAAC,CAAC;QAE7B8D,QAAQ,CAAC9D,MAAM,CAACR,IAAI,CAAC,CAAC,CAAC,CAAC;MAC1B;IACF;EACF,CAAC;AACH;AAEA,SAASuE,mBAAmBA,CAAA,EAAG;EAC7B,OAAO;IACLnE,IAAI,EAAE,eAAe;IACrBiD,SAAS,EAAE,SAAXA,SAASA,CAAGC,KAAK,EAAE9C,MAAM,EAAK;MAC5B,IAAIgE,wBAAO,CAACC,YAAY,CAACnB,KAAK,CAAC,IAAI,CAACoB,2BAAM,EAAE;QAC1C,IAAIlE,MAAM,CAACE,KAAK,CAACiE,QAAQ,EAAE;UACzB,OAAOnE,MAAM,CAACoE,yBAAyB,CAAC,CAAC;QAC3C;QAEApE,MAAM,CAACqE,UAAU,CAAC,CAAC;QAEnB,IAAMC,KAAK,GAAGtE,MAAM,CAACE,KAAK,CAACD,SAAS;QACpC,IAAMsE,QAAQ,GAAGvE,MAAM,CAACE,KAAK,CAACG,QAAQ,CAACmE,eAAe,CAACF,KAAK,CAACtD,QAAQ,CAAC;QAEtE,IAAIuD,QAAQ,CAAC/E,IAAI,KAAK,WAAW,EAAE;UACjCQ,MAAM,CAACyE,YAAY,CAACF,QAAQ,CAAC9E,GAAG,EAAE;YAChCD,IAAI,EAAE;UACR,CAAC,CAAC;QACJ;QAEA,OAAOQ,MAAM;MACf;MAEA,OAAO0E,SAAS;IAClB;EACF,CAAC;AACH;AAEO,IAAMC,YAAY,GAAAzB,OAAA,CAAAyB,YAAA,GAAG,SAAfA,YAAYA,CAAIC,aAAa,EAAEC,aAAa,EAAEC,IAAI,EAAK;EAClE9G,GAAG,CAAC,uBAAuB,EAAE8G,IAAI,CAAC;EAElCF,aAAa,GAAGA,aAAa,IAAIzB,eAAe;EAEhD,IAAM4B,KAAK,GAAG,SAARA,KAAKA,CAAItF,GAAG,EAAEuF,CAAC;IAAA,OAAKJ,aAAa,CAACzE,QAAQ,CAACV,GAAG,CAAC,IAAIuF,CAAC;EAAA;EAE1D,IAAMC,WAAW,GAAGH,IAAI,CAACI,KAAK,IAAIJ,IAAI,CAACI,KAAK,CAACC,QAAQ,IAAI,IAAAC,iBAAW,EAACN,IAAI,CAACI,KAAK,CAAC;EAChF,IAAMG,UAAU,GAAG,IAAAC,gBAAU,EAACR,IAAI,CAACS,IAAI,CAAC;EACxC,IAAMC,cAAc,GAClBV,IAAI,CAACW,YAAY,IAAIX,IAAI,CAACW,YAAY,CAACjG,IAAI,IAAI,IAAAkG,oBAAc,EAACZ,IAAI,CAACW,YAAY,EAAE,IAAAE,mBAAO,EAAC,CAACN,UAAU,CAAC,CAAC,CAAC;EACzG,IAAMO,SAAS,GAAG,CAAC,IAAAC,mBAAO,EAACf,IAAI,CAACgB,aAAa,CAAC,IAAI,IAAAC,eAAS,EAACjB,IAAI,CAACgB,aAAa,CAAC;EAE/E,IAAME,yBAAyB,GAAG,CAAC,CAAAlB,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEmB,kBAAkB,KAAI,EAAE,EAAEC,GAAG,CAAC,UAACC,MAAM;IAAA,OAC5E,IAAAC,sBAAgB,EAAA5I,aAAA,CAAAA,aAAA,KACX2I,MAAM;MACTE,kBAAkB,EAAEvB,IAAI,CAACuB,kBAAkB;MAC3CC,oBAAoB,EAAExB,IAAI,CAACwB;IAAoB,EAChD,CAAC;EAAA,CACJ,CAAC;EAED,IAAMC,YAAY,IAAItB,WAAW,EAAEI,UAAU,EAAEG,cAAc,EAAAgB,MAAA,KAAAC,mBAAA,aAAKT,yBAAyB,EAAC;EAE5F,IAAIlB,IAAI,CAACW,YAAY,IAAIX,IAAI,CAACW,YAAY,CAACjG,IAAI,KAAK,gBAAgB,EAAE;IACpE+G,YAAY,CAACjJ,IAAI,CAACkI,cAAc,CAAC;EACnC;EAEA,IAAIkB,kBAAkB,GAAG,EAAE;EAE3B7B,aAAa,CAAClH,OAAO,CAAC,UAACgJ,YAAY,EAAK;IACtC,IAAAC,KAAA,GAA2CD,YAAY,IAAI,CAAC,CAAC;MAArD7D,KAAK,GAAA8D,KAAA,CAAL9D,KAAK;MAAEpD,IAAI,GAAAkH,KAAA,CAAJlH,IAAI;MAAEmH,QAAQ,GAAAD,KAAA,CAARC,QAAQ;MAAEC,OAAO,GAAAF,KAAA,CAAPE,OAAO;IAEtC,SAASC,gBAAgBA,CAACC,SAAS,EAAE;MACnC;MACA,IAAI,OAAOA,SAAS,KAAK,QAAQ,IAAIA,SAAS,CAACtJ,MAAM,KAAK,CAAC,EAAE;QAC3D,OAAO,KAAK;MACd;;MAEA;MACA,IAAMuJ,KAAK,GAAG,iBAAiB;;MAE/B;MACA,OAAOA,KAAK,CAACC,IAAI,CAACF,SAAS,CAAC;IAC9B;IAEA,IAAI,CAACD,gBAAgB,CAACjE,KAAK,CAAC,EAAE;MAC5B;MACAqE,OAAO,CAACC,KAAK,oBAAAZ,MAAA,CAAoB1D,KAAK,gCAA6B,CAAC;MACpE;IACF;IAEA,IAAI,CAACpD,IAAI,IAAI,CAACmH,QAAQ,IAAI,CAACC,OAAO,EAAE;MAClC;MACAK,OAAO,CAACC,KAAK,CAAC,wDAAwD,CAAC;MACvE;IACF;IAEAV,kBAAkB,CAACpJ,IAAI,CAAC,IAAA+J,wBAAY,EAAC,eAAe,EAAEV,YAAY,CAAC,CAAC;EACtE,CAAC,CAAC;EAEF,OAAO,IAAAhB,mBAAO,GACZZ,KAAK,CAAC,OAAO,EAAE,IAAAuC,iBAAW,EAACxC,IAAI,CAACyC,KAAK,EAAE,IAAA5B,mBAAO,EAACY,YAAY,CAAC,CAAC,CAAC,EAC9DxB,KAAK,CAAC,MAAM,EAAEzF,UAAU,CAAC;IAAEG,GAAG,EAAE,GAAG;IAAED,IAAI,EAAE,MAAM;IAAEE,IAAI,eAAE/D,MAAA,YAAAwC,aAAA,CAACnD,WAAA,WAAI,MAAE,CAAC;IAAE2E,GAAG,EAAE;EAAS,CAAC,CAAC,CAAC;EACpF;EACAoF,KAAK,CAAC,QAAQ,EAAEzF,UAAU,CAAC;IAAEG,GAAG,EAAE,GAAG;IAAED,IAAI,EAAE,QAAQ;IAAEE,IAAI,eAAE/D,MAAA,YAAAwC,aAAA,CAAC1C,aAAA,WAAM,MAAE,CAAC;IAAEkE,GAAG,EAAE;EAAK,CAAC,CAAC,CAAC,EACtFoF,KAAK,CACH,eAAe,EACfzF,UAAU,CAAC;IACTG,GAAG,EAAE,GAAG;IACRD,IAAI,EAAE,eAAe;IACrBE,IAAI,eAAE/D,MAAA,YAAAwC,aAAA,CAACvC,oBAAA,WAAa,MAAE,CAAC;IACvB+D,GAAG,EAAE;EACP,CAAC,CACH,CAAC,EACDoF,KAAK,CAAC,WAAW,EAAEzF,UAAU,CAAC;IAAEG,GAAG,EAAE,GAAG;IAAED,IAAI,EAAE,WAAW;IAAEE,IAAI,eAAE/D,MAAA,YAAAwC,aAAA,CAACrC,iBAAA,WAAS,MAAE,CAAC;IAAE6D,GAAG,EAAE;EAAI,CAAC,CAAC,CAAC;EAC9F;EACAoF,KAAK,CAAC,aAAa,EAAEzF,UAAU,CAAC;IAAEE,IAAI,EAAE,KAAK;IAAEE,IAAI,eAAE/D,MAAA,YAAAwC,aAAA,CAACD,eAAe,MAAE,CAAC;IAAEyB,GAAG,EAAE;EAAM,CAAC,CAAC,CAAC;EACxF;EACAoF,KAAK,CAAC,WAAW,EAAEzF,UAAU,CAAC;IAAEE,IAAI,EAAE,KAAK;IAAEE,IAAI,eAAE/D,MAAA,YAAAwC,aAAA,CAACO,aAAa,MAAE,CAAC;IAAEiB,GAAG,EAAE;EAAM,CAAC,CAAC,CAAC,EACpFoF,KAAK,CAAC,OAAO,EAAEE,WAAW,CAAC,EAC3BF,KAAK,CAAC,OAAO,EAAE,IAAAyC,iBAAW,EAAC,OAAO,EAAE1C,IAAI,CAAC2C,KAAK,CAAC,CAAC,EAChD1C,KAAK,CAAC,OAAO,EAAE,IAAAyC,iBAAW,EAAC,OAAO,EAAE1C,IAAI,CAAC2C,KAAK,CAAC,CAAC,EAChD1C,KAAK,CAAC,MAAM,EAAEM,UAAU,CAAC,EAAAmB,MAAA,KAAAC,mBAAA,aACtBT,yBAAyB,CAACE,GAAG,CAAC,UAACwB,MAAM;IAAA,OAAK3C,KAAK,CAAC,oBAAoB,EAAE2C,MAAM,CAAC;EAAA,EAAC,IACjF3C,KAAK,CAAC,YAAY,EAAE,IAAA4C,qBAAS,EAAC7C,IAAI,CAAC8C,SAAS,CAAC,CAAC,EAC9C7C,KAAK,CAAC,YAAY,EAAEzF,UAAU,CAAC;IAAEG,GAAG,EAAE,GAAG;IAAED,IAAI,EAAE,YAAY;IAAEE,IAAI,eAAE/D,MAAA,YAAAwC,aAAA,CAAClD,YAAA,WAAW,MAAE,CAAC;IAAE0E,GAAG,EAAE;EAAa,CAAC,CAAC,CAAC,EAC3GoF,KAAK,CAAC,IAAI,EAAEzF,UAAU,CAAC;IAAEG,GAAG,EAAE,IAAI;IAAED,IAAI,EAAE,IAAI;IAAEE,IAAI,eAAE/D,MAAA,YAAAwC,aAAA,CAACQ,WAAW,MAAE,CAAC;IAAEgB,GAAG,EAAE;EAAK,CAAC,CAAC,CAAC,EACpFoF,KAAK,CAAC,eAAe,EAAE,IAAA8C,gBAAI,EAAC;IAAEpI,GAAG,EAAE,GAAG;IAAED,IAAI,EAAE,SAAS;IAAEE,IAAI,eAAE/D,MAAA,YAAAwC,aAAA,CAACjD,mBAAA,WAAgB,MAAE;EAAE,CAAC,CAAC,CAAC,EACvF6J,KAAK,CAAC,eAAe,EAAE,IAAA8C,gBAAI,EAAC;IAAEpI,GAAG,EAAE,GAAG;IAAED,IAAI,EAAE,SAAS;IAAEE,IAAI,eAAE/D,MAAA,YAAAwC,aAAA,CAAChD,mBAAA,WAAgB,MAAE;EAAE,CAAC,CAAC,CAAC,EACvF4J,KAAK,CAAC,MAAM,EAAErB,QAAQ,CAAC,MAAM,CAAC,CAAC,EAC/BqB,KAAK,CAAC,MAAM,EAAErB,QAAQ,CAAC,MAAM,CAAC,CAAC,EAC/B,IAAAoE,mBAAa,EAAChD,IAAI,CAACjF,OAAO,CAAC,EAC3B,IAAAkI,0BAAe,EAAC;IAAEC,KAAK,EAAE;EAAK,CAAC,CAAC,GAC7BtB,kBAAkB,GACrB3B,KAAK,CAAC,cAAc,EAAES,cAAc,CAAC,EACrCI,SAAS,EACTb,KAAK,CAAC,MAAM,EAAE,IAAAkD,gBAAU,EAACnD,IAAI,CAACoD,IAAI,CAAC,CAAC,EACpCnE,mBAAmB,CAAC,CAAC,EACrB,IAAAoE,qBAAe,EAAC,CAAC,EAClB,CAAC;AACJ,CAAC","ignoreList":[]}
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
5
|
-
var _react = _interopRequireDefault(require("react"));
|
|
6
|
-
var _index = _interopRequireWildcard(require("../index"));
|
|
7
|
-
var _debug = _interopRequireDefault(require("debug"));
|
|
8
|
-
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
9
|
-
var log = (0, _debug["default"])('@pie-lib:editable-html:test:plugins:list');
|
|
10
|
-
describe('ListPlugin', function () {
|
|
11
|
-
var next;
|
|
12
|
-
describe('deserialize', function () {
|
|
13
|
-
next = jest.fn();
|
|
14
|
-
var assertDeserialize = function assertDeserialize(tagName, expectedType) {
|
|
15
|
-
it("should deserialize ".concat(tagName, " to ").concat(expectedType), function () {
|
|
16
|
-
var out = _index.serialization.deserialize({
|
|
17
|
-
tagName: tagName,
|
|
18
|
-
children: [],
|
|
19
|
-
childNodes: []
|
|
20
|
-
}, next);
|
|
21
|
-
expect(out).toMatchObject({
|
|
22
|
-
object: 'block',
|
|
23
|
-
type: expectedType
|
|
24
|
-
});
|
|
25
|
-
expect(next).toHaveBeenCalledWith([]);
|
|
26
|
-
});
|
|
27
|
-
};
|
|
28
|
-
assertDeserialize('ul', 'ul_list');
|
|
29
|
-
assertDeserialize('ol', 'ol_list');
|
|
30
|
-
assertDeserialize('li', 'list_item');
|
|
31
|
-
});
|
|
32
|
-
describe('serialize', function () {
|
|
33
|
-
var assertSerialize = function assertSerialize(type, expectedType) {
|
|
34
|
-
it("should serialize ".concat(type, " to ").concat(expectedType), function () {
|
|
35
|
-
var out = _index.serialization.serialize({
|
|
36
|
-
object: 'block',
|
|
37
|
-
type: type
|
|
38
|
-
}, {});
|
|
39
|
-
log('out: ', out);
|
|
40
|
-
expect(out.type).toMatch(expectedType);
|
|
41
|
-
});
|
|
42
|
-
};
|
|
43
|
-
assertSerialize('ul_list', 'ul');
|
|
44
|
-
assertSerialize('ol_list', 'ol');
|
|
45
|
-
assertSerialize('list_item', 'li');
|
|
46
|
-
});
|
|
47
|
-
describe('renderNode', function () {
|
|
48
|
-
var plugin = (0, _index["default"])({});
|
|
49
|
-
var assertRenderNode = function assertRenderNode(type, expectedType) {
|
|
50
|
-
it("should renderNode ".concat(type, " to ").concat(expectedType), function () {
|
|
51
|
-
var out = plugin.renderNode({
|
|
52
|
-
node: {
|
|
53
|
-
type: type
|
|
54
|
-
}
|
|
55
|
-
});
|
|
56
|
-
expect(out.type).toMatch(expectedType);
|
|
57
|
-
});
|
|
58
|
-
};
|
|
59
|
-
assertRenderNode('ul_list', 'ul');
|
|
60
|
-
assertRenderNode('ol_list', 'ol');
|
|
61
|
-
assertRenderNode('list_item', 'li');
|
|
62
|
-
});
|
|
63
|
-
});
|
|
64
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9pbmRleCIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwiX2RlYnVnIiwiZSIsInQiLCJXZWFrTWFwIiwiciIsIm4iLCJfX2VzTW9kdWxlIiwibyIsImkiLCJmIiwiX19wcm90b19fIiwiX3R5cGVvZiIsImhhcyIsImdldCIsInNldCIsIl90IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJsb2ciLCJkZWJ1ZyIsImRlc2NyaWJlIiwibmV4dCIsImplc3QiLCJmbiIsImFzc2VydERlc2VyaWFsaXplIiwidGFnTmFtZSIsImV4cGVjdGVkVHlwZSIsIml0IiwiY29uY2F0Iiwib3V0Iiwic2VyaWFsaXphdGlvbiIsImRlc2VyaWFsaXplIiwiY2hpbGRyZW4iLCJjaGlsZE5vZGVzIiwiZXhwZWN0IiwidG9NYXRjaE9iamVjdCIsIm9iamVjdCIsInR5cGUiLCJ0b0hhdmVCZWVuQ2FsbGVkV2l0aCIsImFzc2VydFNlcmlhbGl6ZSIsInNlcmlhbGl6ZSIsInRvTWF0Y2giLCJwbHVnaW4iLCJMaXN0IiwiYXNzZXJ0UmVuZGVyTm9kZSIsInJlbmRlck5vZGUiLCJub2RlIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3BsdWdpbnMvbGlzdC9fX3Rlc3RzX18vaW5kZXgudGVzdC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5pbXBvcnQgTGlzdCwgeyBzZXJpYWxpemF0aW9uIH0gZnJvbSAnLi4vaW5kZXgnO1xuaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcblxuY29uc3QgbG9nID0gZGVidWcoJ0BwaWUtbGliOmVkaXRhYmxlLWh0bWw6dGVzdDpwbHVnaW5zOmxpc3QnKTtcblxuZGVzY3JpYmUoJ0xpc3RQbHVnaW4nLCAoKSA9PiB7XG4gIGxldCBuZXh0O1xuXG4gIGRlc2NyaWJlKCdkZXNlcmlhbGl6ZScsICgpID0+IHtcbiAgICBuZXh0ID0gamVzdC5mbigpO1xuXG4gICAgY29uc3QgYXNzZXJ0RGVzZXJpYWxpemUgPSAodGFnTmFtZSwgZXhwZWN0ZWRUeXBlKSA9PiB7XG4gICAgICBpdChgc2hvdWxkIGRlc2VyaWFsaXplICR7dGFnTmFtZX0gdG8gJHtleHBlY3RlZFR5cGV9YCwgKCkgPT4ge1xuICAgICAgICBjb25zdCBvdXQgPSBzZXJpYWxpemF0aW9uLmRlc2VyaWFsaXplKHsgdGFnTmFtZSwgY2hpbGRyZW46IFtdLCBjaGlsZE5vZGVzOiBbXSB9LCBuZXh0KTtcblxuICAgICAgICBleHBlY3Qob3V0KS50b01hdGNoT2JqZWN0KHsgb2JqZWN0OiAnYmxvY2snLCB0eXBlOiBleHBlY3RlZFR5cGUgfSk7XG4gICAgICAgIGV4cGVjdChuZXh0KS50b0hhdmVCZWVuQ2FsbGVkV2l0aChbXSk7XG4gICAgICB9KTtcbiAgICB9O1xuICAgIGFzc2VydERlc2VyaWFsaXplKCd1bCcsICd1bF9saXN0Jyk7XG4gICAgYXNzZXJ0RGVzZXJpYWxpemUoJ29sJywgJ29sX2xpc3QnKTtcbiAgICBhc3NlcnREZXNlcmlhbGl6ZSgnbGknLCAnbGlzdF9pdGVtJyk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdzZXJpYWxpemUnLCAoKSA9PiB7XG4gICAgY29uc3QgYXNzZXJ0U2VyaWFsaXplID0gKHR5cGUsIGV4cGVjdGVkVHlwZSkgPT4ge1xuICAgICAgaXQoYHNob3VsZCBzZXJpYWxpemUgJHt0eXBlfSB0byAke2V4cGVjdGVkVHlwZX1gLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IG91dCA9IHNlcmlhbGl6YXRpb24uc2VyaWFsaXplKHsgb2JqZWN0OiAnYmxvY2snLCB0eXBlIH0sIHt9KTtcbiAgICAgICAgbG9nKCdvdXQ6ICcsIG91dCk7XG4gICAgICAgIGV4cGVjdChvdXQudHlwZSkudG9NYXRjaChleHBlY3RlZFR5cGUpO1xuICAgICAgfSk7XG4gICAgfTtcbiAgICBhc3NlcnRTZXJpYWxpemUoJ3VsX2xpc3QnLCAndWwnKTtcbiAgICBhc3NlcnRTZXJpYWxpemUoJ29sX2xpc3QnLCAnb2wnKTtcbiAgICBhc3NlcnRTZXJpYWxpemUoJ2xpc3RfaXRlbScsICdsaScpO1xuICB9KTtcblxuICBkZXNjcmliZSgncmVuZGVyTm9kZScsICgpID0+IHtcbiAgICBsZXQgcGx1Z2luID0gTGlzdCh7fSk7XG5cbiAgICBjb25zdCBhc3NlcnRSZW5kZXJOb2RlID0gKHR5cGUsIGV4cGVjdGVkVHlwZSkgPT4ge1xuICAgICAgaXQoYHNob3VsZCByZW5kZXJOb2RlICR7dHlwZX0gdG8gJHtleHBlY3RlZFR5cGV9YCwgKCkgPT4ge1xuICAgICAgICBjb25zdCBvdXQgPSBwbHVnaW4ucmVuZGVyTm9kZSh7IG5vZGU6IHsgdHlwZSB9IH0pO1xuICAgICAgICBleHBlY3Qob3V0LnR5cGUpLnRvTWF0Y2goZXhwZWN0ZWRUeXBlKTtcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICBhc3NlcnRSZW5kZXJOb2RlKCd1bF9saXN0JywgJ3VsJyk7XG4gICAgYXNzZXJ0UmVuZGVyTm9kZSgnb2xfbGlzdCcsICdvbCcpO1xuICAgIGFzc2VydFJlbmRlck5vZGUoJ2xpc3RfaXRlbScsICdsaScpO1xuICB9KTtcbn0pO1xuIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUMsTUFBQSxHQUFBQyx1QkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUcsTUFBQSxHQUFBSixzQkFBQSxDQUFBQyxPQUFBO0FBQTBCLFNBQUFFLHdCQUFBRSxDQUFBLEVBQUFDLENBQUEsNkJBQUFDLE9BQUEsTUFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBSix1QkFBQSxZQUFBQSx3QkFBQUUsQ0FBQSxFQUFBQyxDQUFBLFNBQUFBLENBQUEsSUFBQUQsQ0FBQSxJQUFBQSxDQUFBLENBQUFLLFVBQUEsU0FB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
|
|
@@ -1,288 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
Object.defineProperty(exports, "__esModule", {
|
|
5
|
-
value: true
|
|
6
|
-
});
|
|
7
|
-
exports.serialization = exports["default"] = void 0;
|
|
8
|
-
var _react = _interopRequireDefault(require("react"));
|
|
9
|
-
var _slate = require("slate");
|
|
10
|
-
var _immutable = _interopRequireDefault(require("immutable"));
|
|
11
|
-
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
12
|
-
var _slateEditList = _interopRequireDefault(require("slate-edit-list"));
|
|
13
|
-
var _options = _interopRequireDefault(require("slate-edit-list/dist/options"));
|
|
14
|
-
var _debug = _interopRequireDefault(require("debug"));
|
|
15
|
-
var _this = void 0;
|
|
16
|
-
var log = (0, _debug["default"])('@pie-lib:editable-html:plugins:list');
|
|
17
|
-
var b = function b(type, next, childNodes) {
|
|
18
|
-
return {
|
|
19
|
-
object: 'block',
|
|
20
|
-
type: type,
|
|
21
|
-
nodes: next(childNodes)
|
|
22
|
-
};
|
|
23
|
-
};
|
|
24
|
-
var serialization = exports.serialization = {
|
|
25
|
-
deserialize: function deserialize(el, next) {
|
|
26
|
-
var name = el.tagName.toLowerCase();
|
|
27
|
-
if (name === 'li') {
|
|
28
|
-
return b('list_item', next, el.childNodes);
|
|
29
|
-
}
|
|
30
|
-
if (name === 'ul') {
|
|
31
|
-
return b('ul_list', next, el.children.length ? Array.from(el.children) : el.childNodes);
|
|
32
|
-
}
|
|
33
|
-
if (name === 'ol') {
|
|
34
|
-
return b('ol_list', next, el.children.length ? Array.from(el.children) : el.childNodes);
|
|
35
|
-
}
|
|
36
|
-
},
|
|
37
|
-
serialize: function serialize(object, children) {
|
|
38
|
-
if (object.object !== 'block') return;
|
|
39
|
-
if (object.type === 'list_item') {
|
|
40
|
-
return /*#__PURE__*/_react["default"].createElement("li", null, children);
|
|
41
|
-
}
|
|
42
|
-
if (object.type === 'ul_list') {
|
|
43
|
-
return /*#__PURE__*/_react["default"].createElement("ul", null, children);
|
|
44
|
-
}
|
|
45
|
-
if (object.type === 'ol_list') {
|
|
46
|
-
return /*#__PURE__*/_react["default"].createElement("ol", null, children);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
};
|
|
50
|
-
var createEditList = function createEditList() {
|
|
51
|
-
var core = (0, _slateEditList["default"])({
|
|
52
|
-
typeDefault: 'span'
|
|
53
|
-
});
|
|
54
|
-
var listOptions = new _options["default"]({
|
|
55
|
-
typeDefault: 'span'
|
|
56
|
-
});
|
|
57
|
-
|
|
58
|
-
// fix outdated schema
|
|
59
|
-
if (core.schema && core.schema.blocks) {
|
|
60
|
-
Object.keys(core.schema.blocks).forEach(function (key) {
|
|
61
|
-
var block = core.schema.blocks[key];
|
|
62
|
-
if (block.parent) {
|
|
63
|
-
return;
|
|
64
|
-
}
|
|
65
|
-
block.nodes[0] = {
|
|
66
|
-
type: block.nodes[0].types[0]
|
|
67
|
-
};
|
|
68
|
-
});
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
/**
|
|
72
|
-
* This override of the core.changes.wrapInList is needed because the version
|
|
73
|
-
* of immutable that we have does not support getting the element at a specific
|
|
74
|
-
* index with a square bracket (list[0]). We have to use the list.get function instead
|
|
75
|
-
*/
|
|
76
|
-
|
|
77
|
-
/**
|
|
78
|
-
* Returns the highest list of blocks that cover the current selection
|
|
79
|
-
*/
|
|
80
|
-
var getHighestSelectedBlocks = function getHighestSelectedBlocks(value) {
|
|
81
|
-
var range = value.selection;
|
|
82
|
-
var document = value.document;
|
|
83
|
-
var startBlock = document.getClosestBlock(range.startKey);
|
|
84
|
-
var endBlock = document.getClosestBlock(range.endKey);
|
|
85
|
-
if (startBlock === endBlock) {
|
|
86
|
-
return _immutable["default"].List([startBlock]);
|
|
87
|
-
}
|
|
88
|
-
var ancestor = document.getCommonAncestor(startBlock.key, endBlock.key);
|
|
89
|
-
var startPath = ancestor.getPath(startBlock.key);
|
|
90
|
-
var endPath = ancestor.getPath(endBlock.key);
|
|
91
|
-
return ancestor.nodes.slice(startPath.get(0), endPath.get(0) + 1);
|
|
92
|
-
};
|
|
93
|
-
|
|
94
|
-
/**
|
|
95
|
-
* Wrap the blocks in the current selection in a new list. Selected
|
|
96
|
-
* lists are merged together.
|
|
97
|
-
*/
|
|
98
|
-
core.changes.wrapInList = function (change, type, data) {
|
|
99
|
-
var selectedBlocks = getHighestSelectedBlocks(change.value);
|
|
100
|
-
|
|
101
|
-
// Wrap in container
|
|
102
|
-
change.wrapBlock({
|
|
103
|
-
type: type,
|
|
104
|
-
data: _slate.Data.create(data)
|
|
105
|
-
}, {
|
|
106
|
-
normalize: false
|
|
107
|
-
});
|
|
108
|
-
|
|
109
|
-
// Wrap in list items
|
|
110
|
-
selectedBlocks.forEach(function (node) {
|
|
111
|
-
if (core.utils.isList(node)) {
|
|
112
|
-
// Merge its items with the created list
|
|
113
|
-
node.nodes.forEach(function (_ref) {
|
|
114
|
-
var key = _ref.key;
|
|
115
|
-
return change.unwrapNodeByKey(key, {
|
|
116
|
-
normalize: false
|
|
117
|
-
});
|
|
118
|
-
});
|
|
119
|
-
} else if (node.type !== 'list_item') {
|
|
120
|
-
change.wrapBlockByKey(node.key, 'list_item', {
|
|
121
|
-
normalize: false
|
|
122
|
-
});
|
|
123
|
-
}
|
|
124
|
-
});
|
|
125
|
-
return change.normalize();
|
|
126
|
-
};
|
|
127
|
-
core.changes.unwrapList = function unwrapList(opts, change) {
|
|
128
|
-
var items = core.utils.getItemsAtRange(change.value);
|
|
129
|
-
if (items.isEmpty()) {
|
|
130
|
-
return change;
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
// Unwrap the items from their list
|
|
134
|
-
items.forEach(function (item) {
|
|
135
|
-
return change.unwrapNodeByKey(item.key, {
|
|
136
|
-
normalize: false
|
|
137
|
-
});
|
|
138
|
-
});
|
|
139
|
-
|
|
140
|
-
// Parent of the list of the items
|
|
141
|
-
var firstItem = items.first();
|
|
142
|
-
var parent = change.value.document.getParent(firstItem.key);
|
|
143
|
-
var index = parent.nodes.findIndex(function (node) {
|
|
144
|
-
return node.key === firstItem.key;
|
|
145
|
-
});
|
|
146
|
-
|
|
147
|
-
// Unwrap the items' children
|
|
148
|
-
items.forEach(function (item) {
|
|
149
|
-
item.nodes.forEach(function (node) {
|
|
150
|
-
change.moveNodeByKey(node.key, parent.key, index, {
|
|
151
|
-
normalize: false
|
|
152
|
-
});
|
|
153
|
-
index += 1;
|
|
154
|
-
});
|
|
155
|
-
});
|
|
156
|
-
|
|
157
|
-
// Finally, remove the now empty items
|
|
158
|
-
items.forEach(function (item) {
|
|
159
|
-
return change.removeNodeByKey(item.key, {
|
|
160
|
-
normalize: false
|
|
161
|
-
});
|
|
162
|
-
});
|
|
163
|
-
return change;
|
|
164
|
-
}.bind(_this, listOptions);
|
|
165
|
-
core.utils.getItemsAtRange = function (opts, value, range) {
|
|
166
|
-
range = range || value.selection;
|
|
167
|
-
if (!range.startKey) {
|
|
168
|
-
return _immutable["default"].List();
|
|
169
|
-
}
|
|
170
|
-
var document = value.document;
|
|
171
|
-
var startBlock = document.getClosestBlock(range.startKey);
|
|
172
|
-
var endBlock = document.getClosestBlock(range.endKey);
|
|
173
|
-
if (startBlock === endBlock) {
|
|
174
|
-
var item = core.utils.getCurrentItem(value, startBlock);
|
|
175
|
-
return item ? _immutable["default"].List([item]) : _immutable["default"].List();
|
|
176
|
-
}
|
|
177
|
-
var ancestor = document.getCommonAncestor(startBlock.key, endBlock.key);
|
|
178
|
-
if (core.utils.isList(ancestor)) {
|
|
179
|
-
var startPath = ancestor.getPath(startBlock.key);
|
|
180
|
-
var endPath = ancestor.getPath(endBlock.key);
|
|
181
|
-
return ancestor.nodes.slice(startPath.get(0), endPath.get(0) + 1);
|
|
182
|
-
} else if (ancestor.type === opts.typeItem) {
|
|
183
|
-
// The ancestor is the highest list item that covers the range
|
|
184
|
-
return _immutable["default"].List([ancestor]);
|
|
185
|
-
}
|
|
186
|
-
// No list of items can cover the range
|
|
187
|
-
return _immutable["default"].List();
|
|
188
|
-
}.bind(_this, listOptions);
|
|
189
|
-
core.utils.getListForItem = function (opts, value, item) {
|
|
190
|
-
var document = value.document;
|
|
191
|
-
var parent = document.getParent(item.key);
|
|
192
|
-
return parent && core.utils.isList(parent) ? parent : null;
|
|
193
|
-
}.bind(_this, listOptions);
|
|
194
|
-
core.utils.isSelectionInList = function (opts, value, type) {
|
|
195
|
-
var items = core.utils.getItemsAtRange(value);
|
|
196
|
-
return !items.isEmpty() && (
|
|
197
|
-
// Check the type of the list if needed
|
|
198
|
-
!type || core.utils.getListForItem(value, items.first()).get('type') === type);
|
|
199
|
-
}.bind(_this, listOptions);
|
|
200
|
-
return core;
|
|
201
|
-
};
|
|
202
|
-
var _default = exports["default"] = function _default(options) {
|
|
203
|
-
var type = options.type,
|
|
204
|
-
icon = options.icon;
|
|
205
|
-
var core = createEditList();
|
|
206
|
-
|
|
207
|
-
// eslint-disable-next-line react/display-name
|
|
208
|
-
core.renderNode = function (props) {
|
|
209
|
-
var node = props.node,
|
|
210
|
-
attributes = props.attributes,
|
|
211
|
-
children = props.children;
|
|
212
|
-
switch (node.type) {
|
|
213
|
-
case 'ul_list':
|
|
214
|
-
return /*#__PURE__*/_react["default"].createElement("ul", attributes, children);
|
|
215
|
-
case 'ol_list':
|
|
216
|
-
return /*#__PURE__*/_react["default"].createElement("ol", attributes, children);
|
|
217
|
-
case 'list_item':
|
|
218
|
-
return /*#__PURE__*/_react["default"].createElement("li", attributes, children);
|
|
219
|
-
}
|
|
220
|
-
};
|
|
221
|
-
core.toolbar = {
|
|
222
|
-
isMark: false,
|
|
223
|
-
ariaLabel: type == 'ul_list' ? 'bulleted list' : 'numbered-list',
|
|
224
|
-
type: type,
|
|
225
|
-
icon: icon,
|
|
226
|
-
isActive: function isActive(value, type) {
|
|
227
|
-
if (!core.utils.isSelectionInList(value)) {
|
|
228
|
-
return false;
|
|
229
|
-
}
|
|
230
|
-
var current = core.utils.getCurrentList(value);
|
|
231
|
-
return current ? current.type === type : false;
|
|
232
|
-
},
|
|
233
|
-
onClick: function onClick(value, onChange) {
|
|
234
|
-
log('[onClick]', value);
|
|
235
|
-
var inList = core.utils.isSelectionInList(value);
|
|
236
|
-
if (inList) {
|
|
237
|
-
var change = value.change().call(core.changes.unwrapList);
|
|
238
|
-
onChange(change);
|
|
239
|
-
} else {
|
|
240
|
-
var _change = value.change().call(core.changes.wrapInList, type);
|
|
241
|
-
onChange(_change);
|
|
242
|
-
}
|
|
243
|
-
}
|
|
244
|
-
};
|
|
245
|
-
core.normalizeNode = function (node) {
|
|
246
|
-
if (node.object !== 'document' && node.object !== 'block') {
|
|
247
|
-
return undefined;
|
|
248
|
-
}
|
|
249
|
-
var response = core.validateNode(node);
|
|
250
|
-
var invalidListItems = [];
|
|
251
|
-
node.forEachDescendant(function (d) {
|
|
252
|
-
if (d.type === 'list_item' && d.nodes.size === 1 && d.nodes.first().object === 'text') {
|
|
253
|
-
// if we have a list_item that has only a text inside, we need to add a block in it
|
|
254
|
-
invalidListItems.push(d);
|
|
255
|
-
}
|
|
256
|
-
});
|
|
257
|
-
if (!invalidListItems.length && !response) {
|
|
258
|
-
return undefined;
|
|
259
|
-
}
|
|
260
|
-
return function (change) {
|
|
261
|
-
if (response) {
|
|
262
|
-
response(change);
|
|
263
|
-
}
|
|
264
|
-
if (invalidListItems.length) {
|
|
265
|
-
change.withoutNormalization(function () {
|
|
266
|
-
invalidListItems.forEach(function (node) {
|
|
267
|
-
var textNode = node.nodes.first();
|
|
268
|
-
var wrappedBlock = {
|
|
269
|
-
object: 'block',
|
|
270
|
-
type: 'div',
|
|
271
|
-
nodes: [textNode.toJSON()]
|
|
272
|
-
};
|
|
273
|
-
change.removeNodeByKey(textNode.key);
|
|
274
|
-
change.insertNodeByKey(node.key, 0, wrappedBlock);
|
|
275
|
-
});
|
|
276
|
-
});
|
|
277
|
-
}
|
|
278
|
-
};
|
|
279
|
-
};
|
|
280
|
-
core.renderNode.propTypes = {
|
|
281
|
-
node: _propTypes["default"].object,
|
|
282
|
-
attributes: _propTypes["default"].object,
|
|
283
|
-
children: _propTypes["default"].func
|
|
284
|
-
};
|
|
285
|
-
core.name = type;
|
|
286
|
-
return core;
|
|
287
|
-
};
|
|
288
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9zbGF0ZSIsIl9pbW11dGFibGUiLCJfcHJvcFR5cGVzIiwiX3NsYXRlRWRpdExpc3QiLCJfb3B0aW9ucyIsIl9kZWJ1ZyIsIl90aGlzIiwibG9nIiwiZGVidWciLCJiIiwidHlwZSIsIm5leHQiLCJjaGlsZE5vZGVzIiwib2JqZWN0Iiwibm9kZXMiLCJzZXJpYWxpemF0aW9uIiwiZXhwb3J0cyIsImRlc2VyaWFsaXplIiwiZWwiLCJuYW1lIiwidGFnTmFtZSIsInRvTG93ZXJDYXNlIiwiY2hpbGRyZW4iLCJsZW5ndGgiLCJBcnJheSIsImZyb20iLCJzZXJpYWxpemUiLCJjcmVhdGVFbGVtZW50IiwiY3JlYXRlRWRpdExpc3QiLCJjb3JlIiwiRWRpdExpc3QiLCJ0eXBlRGVmYXVsdCIsImxpc3RPcHRpb25zIiwiTGlzdE9wdGlvbnMiLCJzY2hlbWEiLCJibG9ja3MiLCJPYmplY3QiLCJrZXlzIiwiZm9yRWFjaCIsImtleSIsImJsb2NrIiwicGFyZW50IiwidHlwZXMiLCJnZXRIaWdoZXN0U2VsZWN0ZWRCbG9ja3MiLCJ2YWx1ZSIsInJhbmdlIiwic2VsZWN0aW9uIiwiZG9jdW1lbnQiLCJzdGFydEJsb2NrIiwiZ2V0Q2xvc2VzdEJsb2NrIiwic3RhcnRLZXkiLCJlbmRCbG9jayIsImVuZEtleSIsIkltbXV0YWJsZSIsIkxpc3QiLCJhbmNlc3RvciIsImdldENvbW1vbkFuY2VzdG9yIiwic3RhcnRQYXRoIiwiZ2V0UGF0aCIsImVuZFBhdGgiLCJzbGljZSIsImdldCIsImNoYW5nZXMiLCJ3cmFwSW5MaXN0IiwiY2hhbmdlIiwiZGF0YSIsInNlbGVjdGVkQmxvY2tzIiwid3JhcEJsb2NrIiwiRGF0YSIsImNyZWF0ZSIsIm5vcm1hbGl6ZSIsIm5vZGUiLCJ1dGlscyIsImlzTGlzdCIsIl9yZWYiLCJ1bndyYXBOb2RlQnlLZXkiLCJ3cmFwQmxvY2tCeUtleSIsInVud3JhcExpc3QiLCJvcHRzIiwiaXRlbXMiLCJnZXRJdGVtc0F0UmFuZ2UiLCJpc0VtcHR5IiwiaXRlbSIsImZpcnN0SXRlbSIsImZpcnN0IiwiZ2V0UGFyZW50IiwiaW5kZXgiLCJmaW5kSW5kZXgiLCJtb3ZlTm9kZUJ5S2V5IiwicmVtb3ZlTm9kZUJ5S2V5IiwiYmluZCIsImdldEN1cnJlbnRJdGVtIiwidHlwZUl0ZW0iLCJnZXRMaXN0Rm9ySXRlbSIsImlzU2VsZWN0aW9uSW5MaXN0IiwiX2RlZmF1bHQiLCJvcHRpb25zIiwiaWNvbiIsInJlbmRlck5vZGUiLCJwcm9wcyIsImF0dHJpYnV0ZXMiLCJ0b29sYmFyIiwiaXNNYXJrIiwiYXJpYUxhYmVsIiwiaXNBY3RpdmUiLCJjdXJyZW50IiwiZ2V0Q3VycmVudExpc3QiLCJvbkNsaWNrIiwib25DaGFuZ2UiLCJpbkxpc3QiLCJjYWxsIiwibm9ybWFsaXplTm9kZSIsInVuZGVmaW5lZCIsInJlc3BvbnNlIiwidmFsaWRhdGVOb2RlIiwiaW52YWxpZExpc3RJdGVtcyIsImZvckVhY2hEZXNjZW5kYW50IiwiZCIsInNpemUiLCJwdXNoIiwid2l0aG91dE5vcm1hbGl6YXRpb24iLCJ0ZXh0Tm9kZSIsIndyYXBwZWRCbG9jayIsInRvSlNPTiIsImluc2VydE5vZGVCeUtleSIsInByb3BUeXBlcyIsIlByb3BUeXBlcyIsImZ1bmMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcGx1Z2lucy9saXN0L2luZGV4LmpzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgRGF0YSB9IGZyb20gJ3NsYXRlJztcbmltcG9ydCBJbW11dGFibGUgZnJvbSAnaW1tdXRhYmxlJztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgRWRpdExpc3QgZnJvbSAnc2xhdGUtZWRpdC1saXN0JztcbmltcG9ydCBMaXN0T3B0aW9ucyBmcm9tICdzbGF0ZS1lZGl0LWxpc3QvZGlzdC9vcHRpb25zJztcbmltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5cbmNvbnN0IGxvZyA9IGRlYnVnKCdAcGllLWxpYjplZGl0YWJsZS1odG1sOnBsdWdpbnM6bGlzdCcpO1xuXG5jb25zdCBiID0gKHR5cGUsIG5leHQsIGNoaWxkTm9kZXMpID0+ICh7XG4gIG9iamVjdDogJ2Jsb2NrJyxcbiAgdHlwZSxcbiAgbm9kZXM6IG5leHQoY2hpbGROb2RlcyksXG59KTtcblxuZXhwb3J0IGNvbnN0IHNlcmlhbGl6YXRpb24gPSB7XG4gIGRlc2VyaWFsaXplKGVsLCBuZXh0KSB7XG4gICAgY29uc3QgbmFtZSA9IGVsLnRhZ05hbWUudG9Mb3dlckNhc2UoKTtcblxuICAgIGlmIChuYW1lID09PSAnbGknKSB7XG4gICAgICByZXR1cm4gYignbGlzdF9pdGVtJywgbmV4dCwgZWwuY2hpbGROb2Rlcyk7XG4gICAgfVxuXG4gICAgaWYgKG5hbWUgPT09ICd1bCcpIHtcbiAgICAgIHJldHVybiBiKCd1bF9saXN0JywgbmV4dCwgZWwuY2hpbGRyZW4ubGVuZ3RoID8gQXJyYXkuZnJvbShlbC5jaGlsZHJlbikgOiBlbC5jaGlsZE5vZGVzKTtcbiAgICB9XG5cbiAgICBpZiAobmFtZSA9PT0gJ29sJykge1xuICAgICAgcmV0dXJuIGIoJ29sX2xpc3QnLCBuZXh0LCBlbC5jaGlsZHJlbi5sZW5ndGggPyBBcnJheS5mcm9tKGVsLmNoaWxkcmVuKSA6IGVsLmNoaWxkTm9kZXMpO1xuICAgIH1cbiAgfSxcbiAgc2VyaWFsaXplKG9iamVjdCwgY2hpbGRyZW4pIHtcbiAgICBpZiAob2JqZWN0Lm9iamVjdCAhPT0gJ2Jsb2NrJykgcmV0dXJuO1xuXG4gICAgaWYgKG9iamVjdC50eXBlID09PSAnbGlzdF9pdGVtJykge1xuICAgICAgcmV0dXJuIDxsaT57Y2hpbGRyZW59PC9saT47XG4gICAgfVxuXG4gICAgaWYgKG9iamVjdC50eXBlID09PSAndWxfbGlzdCcpIHtcbiAgICAgIHJldHVybiA8dWw+e2NoaWxkcmVufTwvdWw+O1xuICAgIH1cblxuICAgIGlmIChvYmplY3QudHlwZSA9PT0gJ29sX2xpc3QnKSB7XG4gICAgICByZXR1cm4gPG9sPntjaGlsZHJlbn08L29sPjtcbiAgICB9XG4gIH0sXG59O1xuXG5jb25zdCBjcmVhdGVFZGl0TGlzdCA9ICgpID0+IHtcbiAgY29uc3QgY29yZSA9IEVkaXRMaXN0KHtcbiAgICB0eXBlRGVmYXVsdDogJ3NwYW4nLFxuICB9KTtcblxuICBjb25zdCBsaXN0T3B0aW9ucyA9IG5ldyBMaXN0T3B0aW9ucyh7XG4gICAgdHlwZURlZmF1bHQ6ICdzcGFuJyxcbiAgfSk7XG5cbiAgLy8gZml4IG91dGRhdGVkIHNjaGVtYVxuICBpZiAoY29yZS5zY2hlbWEgJiYgY29yZS5zY2hlbWEuYmxvY2tzKSB7XG4gICAgT2JqZWN0LmtleXMoY29yZS5zY2hlbWEuYmxvY2tzKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgIGNvbnN0IGJsb2NrID0gY29yZS5zY2hlbWEuYmxvY2tzW2tleV07XG5cbiAgICAgIGlmIChibG9jay5wYXJlbnQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBibG9jay5ub2Rlc1swXSA9IHsgdHlwZTogYmxvY2subm9kZXNbMF0udHlwZXNbMF0gfTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIG92ZXJyaWRlIG9mIHRoZSBjb3JlLmNoYW5nZXMud3JhcEluTGlzdCBpcyBuZWVkZWQgYmVjYXVzZSB0aGUgdmVyc2lvblxuICAgKiBvZiBpbW11dGFibGUgdGhhdCB3ZSBoYXZlIGRvZXMgbm90IHN1cHBvcnQgZ2V0dGluZyB0aGUgZWxlbWVudCBhdCBhIHNwZWNpZmljXG4gICAqIGluZGV4IHdpdGggYSBzcXVhcmUgYnJhY2tldCAobGlzdFswXSkuIFdlIGhhdmUgdG8gdXNlIHRoZSBsaXN0LmdldCBmdW5jdGlvbiBpbnN0ZWFkXG4gICAqL1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBoaWdoZXN0IGxpc3Qgb2YgYmxvY2tzIHRoYXQgY292ZXIgdGhlIGN1cnJlbnQgc2VsZWN0aW9uXG4gICAqL1xuICBjb25zdCBnZXRIaWdoZXN0U2VsZWN0ZWRCbG9ja3MgPSAodmFsdWUpID0+IHtcbiAgICBjb25zdCByYW5nZSA9IHZhbHVlLnNlbGVjdGlvbjtcbiAgICBjb25zdCBkb2N1bWVudCA9IHZhbHVlLmRvY3VtZW50O1xuXG4gICAgY29uc3Qgc3RhcnRCbG9jayA9IGRvY3VtZW50LmdldENsb3Nlc3RCbG9jayhyYW5nZS5zdGFydEtleSk7XG4gICAgY29uc3QgZW5kQmxvY2sgPSBkb2N1bWVudC5nZXRDbG9zZXN0QmxvY2socmFuZ2UuZW5kS2V5KTtcblxuICAgIGlmIChzdGFydEJsb2NrID09PSBlbmRCbG9jaykge1xuICAgICAgcmV0dXJuIEltbXV0YWJsZS5MaXN0KFtzdGFydEJsb2NrXSk7XG4gICAgfVxuXG4gICAgY29uc3QgYW5jZXN0b3IgPSBkb2N1bWVudC5nZXRDb21tb25BbmNlc3RvcihzdGFydEJsb2NrLmtleSwgZW5kQmxvY2sua2V5KTtcbiAgICBjb25zdCBzdGFydFBhdGggPSBhbmNlc3Rvci5nZXRQYXRoKHN0YXJ0QmxvY2sua2V5KTtcbiAgICBjb25zdCBlbmRQYXRoID0gYW5jZXN0b3IuZ2V0UGF0aChlbmRCbG9jay5rZXkpO1xuXG4gICAgcmV0dXJuIGFuY2VzdG9yLm5vZGVzLnNsaWNlKHN0YXJ0UGF0aC5nZXQoMCksIGVuZFBhdGguZ2V0KDApICsgMSk7XG4gIH07XG5cbiAgLyoqXG4gICAqIFdyYXAgdGhlIGJsb2NrcyBpbiB0aGUgY3VycmVudCBzZWxlY3Rpb24gaW4gYSBuZXcgbGlzdC4gU2VsZWN0ZWRcbiAgICogbGlzdHMgYXJlIG1lcmdlZCB0b2dldGhlci5cbiAgICovXG4gIGNvcmUuY2hhbmdlcy53cmFwSW5MaXN0ID0gZnVuY3Rpb24oY2hhbmdlLCB0eXBlLCBkYXRhKSB7XG4gICAgY29uc3Qgc2VsZWN0ZWRCbG9ja3MgPSBnZXRIaWdoZXN0U2VsZWN0ZWRCbG9ja3MoY2hhbmdlLnZhbHVlKTtcblxuICAgIC8vIFdyYXAgaW4gY29udGFpbmVyXG4gICAgY2hhbmdlLndyYXBCbG9jayh7IHR5cGU6IHR5cGUsIGRhdGE6IERhdGEuY3JlYXRlKGRhdGEpIH0sIHsgbm9ybWFsaXplOiBmYWxzZSB9KTtcblxuICAgIC8vIFdyYXAgaW4gbGlzdCBpdGVtc1xuICAgIHNlbGVjdGVkQmxvY2tzLmZvckVhY2goZnVuY3Rpb24obm9kZSkge1xuICAgICAgaWYgKGNvcmUudXRpbHMuaXNMaXN0KG5vZGUpKSB7XG4gICAgICAgIC8vIE1lcmdlIGl0cyBpdGVtcyB3aXRoIHRoZSBjcmVhdGVkIGxpc3RcbiAgICAgICAgbm9kZS5ub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uKF9yZWYpIHtcbiAgICAgICAgICBjb25zdCBrZXkgPSBfcmVmLmtleTtcbiAgICAgICAgICByZXR1cm4gY2hhbmdlLnVud3JhcE5vZGVCeUtleShrZXksIHsgbm9ybWFsaXplOiBmYWxzZSB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKG5vZGUudHlwZSAhPT0gJ2xpc3RfaXRlbScpIHtcbiAgICAgICAgY2hhbmdlLndyYXBCbG9ja0J5S2V5KG5vZGUua2V5LCAnbGlzdF9pdGVtJywge1xuICAgICAgICAgIG5vcm1hbGl6ZTogZmFsc2UsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGNoYW5nZS5ub3JtYWxpemUoKTtcbiAgfTtcblxuICBjb3JlLmNoYW5nZXMudW53cmFwTGlzdCA9IGZ1bmN0aW9uIHVud3JhcExpc3Qob3B0cywgY2hhbmdlKSB7XG4gICAgY29uc3QgaXRlbXMgPSBjb3JlLnV0aWxzLmdldEl0ZW1zQXRSYW5nZShjaGFuZ2UudmFsdWUpO1xuXG4gICAgaWYgKGl0ZW1zLmlzRW1wdHkoKSkge1xuICAgICAgcmV0dXJuIGNoYW5nZTtcbiAgICB9XG5cbiAgICAvLyBVbndyYXAgdGhlIGl0ZW1zIGZyb20gdGhlaXIgbGlzdFxuICAgIGl0ZW1zLmZvckVhY2goKGl0ZW0pID0+IGNoYW5nZS51bndyYXBOb2RlQnlLZXkoaXRlbS5rZXksIHsgbm9ybWFsaXplOiBmYWxzZSB9KSk7XG5cbiAgICAvLyBQYXJlbnQgb2YgdGhlIGxpc3Qgb2YgdGhlIGl0ZW1zXG4gICAgY29uc3QgZmlyc3RJdGVtID0gaXRlbXMuZmlyc3QoKTtcbiAgICBjb25zdCBwYXJlbnQgPSBjaGFuZ2UudmFsdWUuZG9jdW1lbnQuZ2V0UGFyZW50KGZpcnN0SXRlbS5rZXkpO1xuXG4gICAgbGV0IGluZGV4ID0gcGFyZW50Lm5vZGVzLmZpbmRJbmRleCgobm9kZSkgPT4gbm9kZS5rZXkgPT09IGZpcnN0SXRlbS5rZXkpO1xuXG4gICAgLy8gVW53cmFwIHRoZSBpdGVtcycgY2hpbGRyZW5cbiAgICBpdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICBpdGVtLm5vZGVzLmZvckVhY2goKG5vZGUpID0+IHtcbiAgICAgICAgY2hhbmdlLm1vdmVOb2RlQnlLZXkobm9kZS5rZXksIHBhcmVudC5rZXksIGluZGV4LCB7XG4gICAgICAgICAgbm9ybWFsaXplOiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgICAgIGluZGV4ICs9IDE7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIC8vIEZpbmFsbHksIHJlbW92ZSB0aGUgbm93IGVtcHR5IGl0ZW1zXG4gICAgaXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4gY2hhbmdlLnJlbW92ZU5vZGVCeUtleShpdGVtLmtleSwgeyBub3JtYWxpemU6IGZhbHNlIH0pKTtcblxuICAgIHJldHVybiBjaGFuZ2U7XG4gIH0uYmluZCh0aGlzLCBsaXN0T3B0aW9ucyk7XG5cbiAgY29yZS51dGlscy5nZXRJdGVtc0F0UmFuZ2UgPSBmdW5jdGlvbihvcHRzLCB2YWx1ZSwgcmFuZ2UpIHtcbiAgICByYW5nZSA9IHJhbmdlIHx8IHZhbHVlLnNlbGVjdGlvbjtcblxuICAgIGlmICghcmFuZ2Uuc3RhcnRLZXkpIHtcbiAgICAgIHJldHVybiBJbW11dGFibGUuTGlzdCgpO1xuICAgIH1cblxuICAgIGNvbnN0IHsgZG9jdW1lbnQgfSA9IHZhbHVlO1xuXG4gICAgY29uc3Qgc3RhcnRCbG9jayA9IGRvY3VtZW50LmdldENsb3Nlc3RCbG9jayhyYW5nZS5zdGFydEtleSk7XG4gICAgY29uc3QgZW5kQmxvY2sgPSBkb2N1bWVudC5nZXRDbG9zZXN0QmxvY2socmFuZ2UuZW5kS2V5KTtcblxuICAgIGlmIChzdGFydEJsb2NrID09PSBlbmRCbG9jaykge1xuICAgICAgY29uc3QgaXRlbSA9IGNvcmUudXRpbHMuZ2V0Q3VycmVudEl0ZW0odmFsdWUsIHN0YXJ0QmxvY2spO1xuICAgICAgcmV0dXJuIGl0ZW0gPyBJbW11dGFibGUuTGlzdChbaXRlbV0pIDogSW1tdXRhYmxlLkxpc3QoKTtcbiAgICB9XG5cbiAgICBjb25zdCBhbmNlc3RvciA9IGRvY3VtZW50LmdldENvbW1vbkFuY2VzdG9yKHN0YXJ0QmxvY2sua2V5LCBlbmRCbG9jay5rZXkpO1xuXG4gICAgaWYgKGNvcmUudXRpbHMuaXNMaXN0KGFuY2VzdG9yKSkge1xuICAgICAgY29uc3Qgc3RhcnRQYXRoID0gYW5jZXN0b3IuZ2V0UGF0aChzdGFydEJsb2NrLmtleSk7XG4gICAgICBjb25zdCBlbmRQYXRoID0gYW5jZXN0b3IuZ2V0UGF0aChlbmRCbG9jay5rZXkpO1xuXG4gICAgICByZXR1cm4gYW5jZXN0b3Iubm9kZXMuc2xpY2Uoc3RhcnRQYXRoLmdldCgwKSwgZW5kUGF0aC5nZXQoMCkgKyAxKTtcbiAgICB9IGVsc2UgaWYgKGFuY2VzdG9yLnR5cGUgPT09IG9wdHMudHlwZUl0ZW0pIHtcbiAgICAgIC8vIFRoZSBhbmNlc3RvciBpcyB0aGUgaGlnaGVzdCBsaXN0IGl0ZW0gdGhhdCBjb3ZlcnMgdGhlIHJhbmdlXG4gICAgICByZXR1cm4gSW1tdXRhYmxlLkxpc3QoW2FuY2VzdG9yXSk7XG4gICAgfVxuICAgIC8vIE5vIGxpc3Qgb2YgaXRlbXMgY2FuIGNvdmVyIHRoZSByYW5nZVxuICAgIHJldHVybiBJbW11dGFibGUuTGlzdCgpO1xuICB9LmJpbmQodGhpcywgbGlzdE9wdGlvbnMpO1xuXG4gIGNvcmUudXRpbHMuZ2V0TGlzdEZvckl0ZW0gPSBmdW5jdGlvbihvcHRzLCB2YWx1ZSwgaXRlbSkge1xuICAgIGNvbnN0IHsgZG9jdW1lbnQgfSA9IHZhbHVlO1xuICAgIGNvbnN0IHBhcmVudCA9IGRvY3VtZW50LmdldFBhcmVudChpdGVtLmtleSk7XG4gICAgcmV0dXJuIHBhcmVudCAmJiBjb3JlLnV0aWxzLmlzTGlzdChwYXJlbnQpID8gcGFyZW50IDogbnVsbDtcbiAgfS5iaW5kKHRoaXMsIGxpc3RPcHRpb25zKTtcblxuICBjb3JlLnV0aWxzLmlzU2VsZWN0aW9uSW5MaXN0ID0gZnVuY3Rpb24ob3B0cywgdmFsdWUsIHR5cGUpIHtcbiAgICBjb25zdCBpdGVtcyA9IGNvcmUudXRpbHMuZ2V0SXRlbXNBdFJhbmdlKHZhbHVlKTtcbiAgICByZXR1cm4gKFxuICAgICAgIWl0ZW1zLmlzRW1wdHkoKSAmJlxuICAgICAgLy8gQ2hlY2sgdGhlIHR5cGUgb2YgdGhlIGxpc3QgaWYgbmVlZGVkXG4gICAgICAoIXR5cGUgfHwgY29yZS51dGlscy5nZXRMaXN0Rm9ySXRlbSh2YWx1ZSwgaXRlbXMuZmlyc3QoKSkuZ2V0KCd0eXBlJykgPT09IHR5cGUpXG4gICAgKTtcbiAgfS5iaW5kKHRoaXMsIGxpc3RPcHRpb25zKTtcblxuICByZXR1cm4gY29yZTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IChvcHRpb25zKSA9PiB7XG4gIGNvbnN0IHsgdHlwZSwgaWNvbiB9ID0gb3B0aW9ucztcblxuICBjb25zdCBjb3JlID0gY3JlYXRlRWRpdExpc3QoKTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvZGlzcGxheS1uYW1lXG4gIGNvcmUucmVuZGVyTm9kZSA9IChwcm9wcykgPT4ge1xuICAgIGNvbnN0IHsgbm9kZSwgYXR0cmlidXRlcywgY2hpbGRyZW4gfSA9IHByb3BzO1xuXG4gICAgc3dpdGNoIChub2RlLnR5cGUpIHtcbiAgICAgIGNhc2UgJ3VsX2xpc3QnOlxuICAgICAgICByZXR1cm4gPHVsIHsuLi5hdHRyaWJ1dGVzfT57Y2hpbGRyZW59PC91bD47XG4gICAgICBjYXNlICdvbF9saXN0JzpcbiAgICAgICAgcmV0dXJuIDxvbCB7Li4uYXR0cmlidXRlc30+e2NoaWxkcmVufTwvb2w+O1xuICAgICAgY2FzZSAnbGlzdF9pdGVtJzpcbiAgICAgICAgcmV0dXJuIDxsaSB7Li4uYXR0cmlidXRlc30+e2NoaWxkcmVufTwvbGk+O1xuICAgIH1cbiAgfTtcblxuICBjb3JlLnRvb2xiYXIgPSB7XG4gICAgaXNNYXJrOiBmYWxzZSxcbiAgICBhcmlhTGFiZWw6IHR5cGUgPT0gJ3VsX2xpc3QnID8gJ2J1bGxldGVkIGxpc3QnIDogJ251bWJlcmVkLWxpc3QnLFxuICAgIHR5cGUsXG4gICAgaWNvbixcbiAgICBpc0FjdGl2ZTogKHZhbHVlLCB0eXBlKSA9PiB7XG4gICAgICBpZiAoIWNvcmUudXRpbHMuaXNTZWxlY3Rpb25Jbkxpc3QodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGN1cnJlbnQgPSBjb3JlLnV0aWxzLmdldEN1cnJlbnRMaXN0KHZhbHVlKTtcbiAgICAgIHJldHVybiBjdXJyZW50ID8gY3VycmVudC50eXBlID09PSB0eXBlIDogZmFsc2U7XG4gICAgfSxcbiAgICBvbkNsaWNrOiAodmFsdWUsIG9uQ2hhbmdlKSA9PiB7XG4gICAgICBsb2coJ1tvbkNsaWNrXScsIHZhbHVlKTtcbiAgICAgIGNvbnN0IGluTGlzdCA9IGNvcmUudXRpbHMuaXNTZWxlY3Rpb25Jbkxpc3QodmFsdWUpO1xuICAgICAgaWYgKGluTGlzdCkge1xuICAgICAgICBjb25zdCBjaGFuZ2UgPSB2YWx1ZS5jaGFuZ2UoKS5jYWxsKGNvcmUuY2hhbmdlcy51bndyYXBMaXN0KTtcbiAgICAgICAgb25DaGFuZ2UoY2hhbmdlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGNoYW5nZSA9IHZhbHVlLmNoYW5nZSgpLmNhbGwoY29yZS5jaGFuZ2VzLndyYXBJbkxpc3QsIHR5cGUpO1xuICAgICAgICBvbkNoYW5nZShjaGFuZ2UpO1xuICAgICAgfVxuICAgIH0sXG4gIH07XG5cbiAgY29yZS5ub3JtYWxpemVOb2RlID0gKG5vZGUpID0+IHtcbiAgICBpZiAobm9kZS5vYmplY3QgIT09ICdkb2N1bWVudCcgJiYgbm9kZS5vYmplY3QgIT09ICdibG9jaycpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzcG9uc2UgPSBjb3JlLnZhbGlkYXRlTm9kZShub2RlKTtcblxuICAgIGNvbnN0IGludmFsaWRMaXN0SXRlbXMgPSBbXTtcblxuICAgIG5vZGUuZm9yRWFjaERlc2NlbmRhbnQoKGQpID0+IHtcbiAgICAgIGlmIChkLnR5cGUgPT09ICdsaXN0X2l0ZW0nICYmIGQubm9kZXMuc2l6ZSA9PT0gMSAmJiBkLm5vZGVzLmZpcnN0KCkub2JqZWN0ID09PSAndGV4dCcpIHtcbiAgICAgICAgLy8gaWYgd2UgaGF2ZSBhIGxpc3RfaXRlbSB0aGF0IGhhcyBvbmx5IGEgdGV4dCBpbnNpZGUsIHdlIG5lZWQgdG8gYWRkIGEgYmxvY2sgaW4gaXRcbiAgICAgICAgaW52YWxpZExpc3RJdGVtcy5wdXNoKGQpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKCFpbnZhbGlkTGlzdEl0ZW1zLmxlbmd0aCAmJiAhcmVzcG9uc2UpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIChjaGFuZ2UpID0+IHtcbiAgICAgIGlmIChyZXNwb25zZSkge1xuICAgICAgICByZXNwb25zZShjaGFuZ2UpO1xuICAgICAgfVxuXG4gICAgICBpZiAoaW52YWxpZExpc3RJdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgY2hhbmdlLndpdGhvdXROb3JtYWxpemF0aW9uKCgpID0+IHtcbiAgICAgICAgICBpbnZhbGlkTGlzdEl0ZW1zLmZvckVhY2goKG5vZGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRleHROb2RlID0gbm9kZS5ub2Rlcy5maXJzdCgpO1xuICAgICAgICAgICAgY29uc3Qgd3JhcHBlZEJsb2NrID0ge1xuICAgICAgICAgICAgICBvYmplY3Q6ICdibG9jaycsXG4gICAgICAgICAgICAgIHR5cGU6ICdkaXYnLFxuICAgICAgICAgICAgICBub2RlczogW3RleHROb2RlLnRvSlNPTigpXSxcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGNoYW5nZS5yZW1vdmVOb2RlQnlLZXkodGV4dE5vZGUua2V5KTtcblxuICAgICAgICAgICAgY2hhbmdlLmluc2VydE5vZGVCeUtleShub2RlLmtleSwgMCwgd3JhcHBlZEJsb2NrKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfTtcbiAgfTtcblxuICBjb3JlLnJlbmRlck5vZGUucHJvcFR5cGVzID0ge1xuICAgIG5vZGU6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgYXR0cmlidXRlczogUHJvcFR5cGVzLm9iamVjdCxcbiAgICBjaGlsZHJlbjogUHJvcFR5cGVzLmZ1bmMsXG4gIH07XG4gIGNvcmUubmFtZSA9IHR5cGU7XG5cbiAgcmV0dXJuIGNvcmU7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsTUFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsVUFBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUcsVUFBQSxHQUFBSixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUksY0FBQSxHQUFBTCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUssUUFBQSxHQUFBTixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQU0sTUFBQSxHQUFBUCxzQkFBQSxDQUFBQyxPQUFBO0FBQTBCLElBQUFPLEtBQUE7QUFFMUIsSUFBTUMsR0FBRyxHQUFHLElBQUFDLGlCQUFLLEVBQUMscUNBQXFDLENBQUM7QUFFeEQsSUFBTUMsQ0FBQyxHQUFHLFNBQUpBLENBQUNBLENBQUlDLElBQUksRUFBRUMsSUFBSSxFQUFFQyxVQUFVO0VBQUEsT0FBTTtJQUNyQ0MsTUFBTSxFQUFFLE9BQU87SUFDZkgsSUFBSSxFQUFKQSxJQUFJO0lBQ0pJLEtBQUssRUFBRUgsSUFBSSxDQUFDQyxVQUFVO0VBQ3hCLENBQUM7QUFBQSxDQUFDO0FBRUssSUFBTUcsYUFBYSxHQUFBQyxPQUFBLENBQUFELGFBQUEsR0FBRztFQUMzQkUsV0FBVyxXQUFYQSxXQUFXQSxDQUFDQyxFQUFFLEVBQUVQLElBQUksRUFBRTtJQUNwQixJQUFNUSxJQUFJLEdBQUdELEVBQUUsQ0FBQ0UsT0FBTyxDQUFDQyxXQUFXLENBQUMsQ0FBQztJQUVyQyxJQUFJRixJQUFJLEtBQUssSUFBSSxFQUFFO01BQ2pCLE9BQU9WLENBQUMsQ0FBQyxXQUFXLEVBQUVFLElBQUksRUFBRU8sRUFBRSxDQUFDTixVQUFVLENBQUM7SUFDNUM7SUFFQSxJQUFJTyxJQUFJLEtBQUssSUFBSSxFQUFFO01BQ2pCLE9BQU9WLENBQUMsQ0FBQyxTQUFTLEVBQUVFLElBQUksRUFBRU8sRUFBRSxDQUFDSSxRQUFRLENBQUNDLE1BQU0sR0FBR0MsS0FBSyxDQUFDQyxJQUFJLENBQUNQLEVBQUUsQ0FBQ0ksUUFBUSxDQUFDLEdBQUdKLEVBQUUsQ0FBQ04sVUFBVSxDQUFDO0lBQ3pGO0lBRUEsSUFBSU8sSUFBSSxLQUFLLElBQUksRUFBRTtNQUNqQixPQUFPVixDQUFDLENBQUMsU0FBUyxFQUFFRSxJQUFJLEVBQUVPLEVBQUUsQ0FBQ0ksUUFBUSxDQUFDQyxNQUFNLEdBQUdDLEtBQUssQ0FBQ0MsSUFBSSxDQUFDUCxFQUFFLENBQUNJLFFBQVEsQ0FBQyxHQUFHSixFQUFFLENBQUNOLFVBQVUsQ0FBQztJQUN6RjtFQUNGLENBQUM7RUFDRGMsU0FBUyxXQUFUQSxTQUFTQSxDQUFDYixNQUFNLEVBQUVTLFFBQVEsRUFBRTtJQUMxQixJQUFJVCxNQUFNLENBQUNBLE1BQU0sS0FBSyxPQUFPLEVBQUU7SUFFL0IsSUFBSUEsTUFBTSxDQUFDSCxJQUFJLEtBQUssV0FBVyxFQUFFO01BQy9CLG9CQUFPYixNQUFBLFlBQUE4QixhQUFBLGFBQUtMLFFBQWEsQ0FBQztJQUM1QjtJQUVBLElBQUlULE1BQU0sQ0FBQ0gsSUFBSSxLQUFLLFNBQVMsRUFBRTtNQUM3QixvQkFBT2IsTUFBQSxZQUFBOEIsYUFBQSxhQUFLTCxRQUFhLENBQUM7SUFDNUI7SUFFQSxJQUFJVCxNQUFNLENBQUNILElBQUksS0FBSyxTQUFTLEVBQUU7TUFDN0Isb0JBQU9iLE1BQUEsWUFBQThCLGFBQUEsYUFBS0wsUUFBYSxDQUFDO0lBQzVCO0VBQ0Y7QUFDRixDQUFDO0FBRUQsSUFBTU0sY0FBYyxHQUFHLFNBQWpCQSxjQUFjQSxDQUFBLEVBQVM7RUFDM0IsSUFBTUMsSUFBSSxHQUFHLElBQUFDLHlCQUFRLEVBQUM7SUFDcEJDLFdBQVcsRUFBRTtFQUNmLENBQUMsQ0FBQztFQUVGLElBQU1DLFdBQVcsR0FBRyxJQUFJQyxtQkFBVyxDQUFDO0lBQ2xDRixXQUFXLEVBQUU7RUFDZixDQUFDLENBQUM7O0VBRUY7RUFDQSxJQUFJRixJQUFJLENBQUNLLE1BQU0sSUFBSUwsSUFBSSxDQUFDSyxNQUFNLENBQUNDLE1BQU0sRUFBRTtJQUNyQ0MsTUFBTSxDQUFDQyxJQUFJLENBQUNSLElBQUksQ0FBQ0ssTUFBTSxDQUFDQyxNQUFNLENBQUMsQ0FBQ0csT0FBTyxDQUFDLFVBQUNDLEdBQUcsRUFBSztNQUMvQyxJQUFNQyxLQUFLLEdBQUdYLElBQUksQ0FBQ0ssTUFBTSxDQUFDQyxNQUFNLENBQUNJLEdBQUcsQ0FBQztNQUVyQyxJQUFJQyxLQUFLLENBQUNDLE1BQU0sRUFBRTtRQUNoQjtNQUNGO01BRUFELEtBQUssQ0FBQzFCLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRztRQUFFSixJQUFJLEVBQUU4QixLQUFLLENBQUMxQixLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM0QixLQUFLLENBQUMsQ0FBQztNQUFFLENBQUM7SUFDcEQsQ0FBQyxDQUFDO0VBQ0o7O0VBRUE7QUFDRjtBQUNBO0FBQ0E7QUFDQTs7RUFFRTtBQUNGO0FBQ0E7RUFDRSxJQUFNQyx3QkFBd0IsR0FBRyxTQUEzQkEsd0JBQXdCQSxDQUFJQyxLQUFLLEVBQUs7SUFDMUMsSUFBTUMsS0FBSyxHQUFHRCxLQUFLLENBQUNFLFNBQVM7SUFDN0IsSUFBTUMsUUFBUSxHQUFHSCxLQUFLLENBQUNHLFFBQVE7SUFFL0IsSUFBTUMsVUFBVSxHQUFHRCxRQUFRLENBQUNFLGVBQWUsQ0FBQ0osS0FBSyxDQUFDSyxRQUFRLENBQUM7SUFDM0QsSUFBTUMsUUFBUSxHQUFHSixRQUFRLENBQUNFLGVBQWUsQ0FBQ0osS0FBSyxDQUFDTyxNQUFNLENBQUM7SUFFdkQsSUFBSUosVUFBVSxLQUFLRyxRQUFRLEVBQUU7TUFDM0IsT0FBT0UscUJBQVMsQ0FBQ0MsSUFBSSxDQUFDLENBQUNOLFVBQVUsQ0FBQyxDQUFDO0lBQ3JDO0lBRUEsSUFBTU8sUUFBUSxHQUFHUixRQUFRLENBQUNTLGlCQUFpQixDQUFDUixVQUFVLENBQUNULEdBQUcsRUFBRVksUUFBUSxDQUFDWixHQUFHLENBQUM7SUFDekUsSUFBTWtCLFNBQVMsR0FBR0YsUUFBUSxDQUFDRyxPQUFPLENBQUNWLFVBQVUsQ0FBQ1QsR0FBRyxDQUFDO0lBQ2xELElBQU1vQixPQUFPLEdBQUdKLFFBQVEsQ0FBQ0csT0FBTyxDQUFDUCxRQUFRLENBQUNaLEdBQUcsQ0FBQztJQUU5QyxPQUFPZ0IsUUFBUSxDQUFDekMsS0FBSyxDQUFDOEMsS0FBSyxDQUFDSCxTQUFTLENBQUNJLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRUYsT0FBTyxDQUFDRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0VBQ25FLENBQUM7O0VBRUQ7QUFDRjtBQUNBO0FBQ0E7RUFDRWhDLElBQUksQ0FBQ2lDLE9BQU8sQ0FBQ0MsVUFBVSxHQUFHLFVBQVNDLE1BQU0sRUFBRXRELElBQUksRUFBRXVELElBQUksRUFBRTtJQUNyRCxJQUFNQyxjQUFjLEdBQUd2Qix3QkFBd0IsQ0FBQ3FCLE1BQU0sQ0FBQ3BCLEtBQUssQ0FBQzs7SUFFN0Q7SUFDQW9CLE1BQU0sQ0FBQ0csU0FBUyxDQUFDO01BQUV6RCxJQUFJLEVBQUVBLElBQUk7TUFBRXVELElBQUksRUFBRUcsV0FBSSxDQUFDQyxNQUFNLENBQUNKLElBQUk7SUFBRSxDQUFDLEVBQUU7TUFBRUssU0FBUyxFQUFFO0lBQU0sQ0FBQyxDQUFDOztJQUUvRTtJQUNBSixjQUFjLENBQUM1QixPQUFPLENBQUMsVUFBU2lDLElBQUksRUFBRTtNQUNwQyxJQUFJMUMsSUFBSSxDQUFDMkMsS0FBSyxDQUFDQyxNQUFNLENBQUNGLElBQUksQ0FBQyxFQUFFO1FBQzNCO1FBQ0FBLElBQUksQ0FBQ3pELEtBQUssQ0FBQ3dCLE9BQU8sQ0FBQyxVQUFTb0MsSUFBSSxFQUFFO1VBQ2hDLElBQU1uQyxHQUFHLEdBQUdtQyxJQUFJLENBQUNuQyxHQUFHO1VBQ3BCLE9BQU95QixNQUFNLENBQUNXLGVBQWUsQ0FBQ3BDLEdBQUcsRUFBRTtZQUFFK0IsU0FBUyxFQUFFO1VBQU0sQ0FBQyxDQUFDO1FBQzFELENBQUMsQ0FBQztNQUNKLENBQUMsTUFBTSxJQUFJQyxJQUFJLENBQUM3RCxJQUFJLEtBQUssV0FBVyxFQUFFO1FBQ3BDc0QsTUFBTSxDQUFDWSxjQUFjLENBQUNMLElBQUksQ0FBQ2hDLEdBQUcsRUFBRSxXQUFXLEVBQUU7VUFDM0MrQixTQUFTLEVBQUU7UUFDYixDQUFDLENBQUM7TUFDSjtJQUNGLENBQUMsQ0FBQztJQUVGLE9BQU9OLE1BQU0sQ0FBQ00sU0FBUyxDQUFDLENBQUM7RUFDM0IsQ0FBQztFQUVEekMsSUFBSSxDQUFDaUMsT0FBTyxDQUFDZSxVQUFVLEdBQUcsU0FBU0EsVUFBVUEsQ0FBQ0MsSUFBSSxFQUFFZCxNQUFNLEVBQUU7SUFDMUQsSUFBTWUsS0FBSyxHQUFHbEQsSUFBSSxDQUFDMkMsS0FBSyxDQUFDUSxlQUFlLENBQUNoQixNQUFNLENBQUNwQixLQUFLLENBQUM7SUFFdEQsSUFBSW1DLEtBQUssQ0FBQ0UsT0FBTyxDQUFDLENBQUMsRUFBRTtNQUNuQixPQUFPakIsTUFBTTtJQUNmOztJQUVBO0lBQ0FlLEtBQUssQ0FBQ3pDLE9BQU8sQ0FBQyxVQUFDNEMsSUFBSTtNQUFBLE9BQUtsQixNQUFNLENBQUNXLGVBQWUsQ0FBQ08sSUFBSSxDQUFDM0MsR0FBRyxFQUFFO1FBQUUrQixTQUFTLEVBQUU7TUFBTSxDQUFDLENBQUM7SUFBQSxFQUFDOztJQUUvRTtJQUNBLElBQU1hLFNBQVMsR0FBR0osS0FBSyxDQUFDSyxLQUFLLENBQUMsQ0FBQztJQUMvQixJQUFNM0MsTUFBTSxHQUFHdUIsTUFBTSxDQUFDcEIsS0FBSyxDQUFDRyxRQUFRLENBQUNzQyxTQUFTLENBQUNGLFNBQVMsQ0FBQzVDLEdBQUcsQ0FBQztJQUU3RCxJQUFJK0MsS0FBSyxHQUFHN0MsTUFBTSxDQUFDM0IsS0FBSyxDQUFDeUUsU0FBUyxDQUFDLFVBQUNoQixJQUFJO01BQUEsT0FBS0EsSUFBSSxDQUFDaEMsR0FBRyxLQUFLNEMsU0FBUyxDQUFDNUMsR0FBRztJQUFBLEVBQUM7O0lBRXhFO0lBQ0F3QyxLQUFLLENBQUN6QyxPQUFPLENBQUMsVUFBQzRDLElBQUksRUFBSztNQUN0QkEsSUFBSSxDQUFDcEUsS0FBSyxDQUFDd0IsT0FBTyxDQUFDLFVBQUNpQyxJQUFJLEVBQUs7UUFDM0JQLE1BQU0sQ0FBQ3dCLGFBQWEsQ0FBQ2pCLElBQUksQ0FBQ2hDLEdBQUcsRUFBRUUsTUFBTSxDQUFDRixHQUFHLEVBQUUrQyxLQUFLLEVBQUU7VUFDaERoQixTQUFTLEVBQUU7UUFDYixDQUFDLENBQUM7UUFDRmdCLEtBQUssSUFBSSxDQUFDO01BQ1osQ0FBQyxDQUFDO0lBQ0osQ0FBQyxDQUFDOztJQUVGO0lBQ0FQLEtBQUssQ0FBQ3pDLE9BQU8sQ0FBQyxVQUFDNEMsSUFBSTtNQUFBLE9BQUtsQixNQUFNLENBQUN5QixlQUFlLENBQUNQLElBQUksQ0FBQzNDLEdBQUcsRUFBRTtRQUFFK0IsU0FBUyxFQUFFO01BQU0sQ0FBQyxDQUFDO0lBQUEsRUFBQztJQUUvRSxPQUFPTixNQUFNO0VBQ2YsQ0FBQyxDQUFDMEIsSUFBSSxDQUFDcEYsS0FBSSxFQUFFMEIsV0FBVyxDQUFDO0VBRXpCSCxJQUFJLENBQUMyQyxLQUFLLENBQUNRLGVBQWUsR0FBRyxVQUFTRixJQUFJLEVBQUVsQyxLQUFLLEVBQUVDLEtBQUssRUFBRTtJQUN4REEsS0FBSyxHQUFHQSxLQUFLLElBQUlELEtBQUssQ0FBQ0UsU0FBUztJQUVoQyxJQUFJLENBQUNELEtBQUssQ0FBQ0ssUUFBUSxFQUFFO01BQ25CLE9BQU9HLHFCQUFTLENBQUNDLElBQUksQ0FBQyxDQUFDO0lBQ3pCO0lBRUEsSUFBUVAsUUFBUSxHQUFLSCxLQUFLLENBQWxCRyxRQUFRO0lBRWhCLElBQU1DLFVBQVUsR0FBR0QsUUFBUSxDQUFDRSxlQUFlLENBQUNKLEtBQUssQ0FBQ0ssUUFBUSxDQUFDO0lBQzNELElBQU1DLFFBQVEsR0FBR0osUUFBUSxDQUFDRSxlQUFlLENBQUNKLEtBQUssQ0FBQ08sTUFBTSxDQUFDO0lBRXZELElBQUlKLFVBQVUsS0FBS0csUUFBUSxFQUFFO01BQzNCLElBQU0rQixJQUFJLEdBQUdyRCxJQUFJLENBQUMyQyxLQUFLLENBQUNtQixjQUFjLENBQUMvQyxLQUFLLEVBQUVJLFVBQVUsQ0FBQztNQUN6RCxPQUFPa0MsSUFBSSxHQUFHN0IscUJBQVMsQ0FBQ0MsSUFBSSxDQUFDLENBQUM0QixJQUFJLENBQUMsQ0FBQyxHQUFHN0IscUJBQVMsQ0FBQ0MsSUFBSSxDQUFDLENBQUM7SUFDekQ7SUFFQSxJQUFNQyxRQUFRLEdBQUdSLFFBQVEsQ0FBQ1MsaUJBQWlCLENBQUNSLFVBQVUsQ0FBQ1QsR0FBRyxFQUFFWSxRQUFRLENBQUNaLEdBQUcsQ0FBQztJQUV6RSxJQUFJVixJQUFJLENBQUMyQyxLQUFLLENBQUNDLE1BQU0sQ0FBQ2xCLFFBQVEsQ0FBQyxFQUFFO01BQy9CLElBQU1FLFNBQVMsR0FBR0YsUUFBUSxDQUFDRyxPQUFPLENBQUNWLFVBQVUsQ0FBQ1QsR0FBRyxDQUFDO01BQ2xELElBQU1vQixPQUFPLEdBQUdKLFFBQVEsQ0FBQ0csT0FBTyxDQUFDUCxRQUFRLENBQUNaLEdBQUcsQ0FBQztNQUU5QyxPQUFPZ0IsUUFBUSxDQUFDekMsS0FBSyxDQUFDOEMsS0FBSyxDQUFDSCxTQUFTLENBQUNJLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRUYsT0FBTyxDQUFDRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25FLENBQUMsTUFBTSxJQUFJTixRQUFRLENBQUM3QyxJQUFJLEtBQUtvRSxJQUFJLENBQUNjLFFBQVEsRUFBRTtNQUMxQztNQUNBLE9BQU92QyxxQkFBUyxDQUFDQyxJQUFJLENBQUMsQ0FBQ0MsUUFBUSxDQUFDLENBQUM7SUFDbkM7SUFDQTtJQUNBLE9BQU9GLHFCQUFTLENBQUNDLElBQUksQ0FBQyxDQUFDO0VBQ3pCLENBQUMsQ0FBQ29DLElBQUksQ0FBQ3BGLEtBQUksRUFBRTBCLFdBQVcsQ0FBQztFQUV6QkgsSUFBSSxDQUFDMkMsS0FBSyxDQUFDcUIsY0FBYyxHQUFHLFVBQVNmLElBQUksRUFBRWxDLEtBQUssRUFBRXNDLElBQUksRUFBRTtJQUN0RCxJQUFRbkMsUUFBUSxHQUFLSCxLQUFLLENBQWxCRyxRQUFRO0lBQ2hCLElBQU1OLE1BQU0sR0FBR00sUUFBUSxDQUFDc0MsU0FBUyxDQUFDSCxJQUFJLENBQUMzQyxHQUFHLENBQUM7SUFDM0MsT0FBT0UsTUFBTSxJQUFJWixJQUFJLENBQUMyQyxLQUFLLENBQUNDLE1BQU0sQ0FBQ2hDLE1BQU0sQ0FBQyxHQUFHQSxNQUFNLEdBQUcsSUFBSTtFQUM1RCxDQUFDLENBQUNpRCxJQUFJLENBQUNwRixLQUFJLEVBQUUwQixXQUFXLENBQUM7RUFFekJILElBQUksQ0FBQzJDLEtBQUssQ0FBQ3NCLGlCQUFpQixHQUFHLFVBQVNoQixJQUFJLEVBQUVsQyxLQUFLLEVBQUVsQyxJQUFJLEVBQUU7SUFDekQsSUFBTXFFLEtBQUssR0FBR2xELElBQUksQ0FBQzJDLEtBQUssQ0FBQ1EsZUFBZSxDQUFDcEMsS0FBSyxDQUFDO0lBQy9DLE9BQ0UsQ0FBQ21DLEtBQUssQ0FBQ0UsT0FBTyxDQUFDLENBQUM7SUFDaEI7SUFDQyxDQUFDdkUsSUFBSSxJQUFJbUIsSUFBSSxDQUFDMkMsS0FBSyxDQUFDcUIsY0FBYyxDQUFDakQsS0FBSyxFQUFFbUMsS0FBSyxDQUFDSyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUN2QixHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUtuRCxJQUFJLENBQUM7RUFFbkYsQ0FBQyxDQUFDZ0YsSUFBSSxDQUFDcEYsS0FBSSxFQUFFMEIsV0FBVyxDQUFDO0VBRXpCLE9BQU9ILElBQUk7QUFDYixDQUFDO0FBQUMsSUFBQWtFLFFBQUEsR0FBQS9FLE9BQUEsY0FFYSxTQUFBK0UsU0FBQ0MsT0FBTyxFQUFLO0VBQzFCLElBQVF0RixJQUFJLEdBQVdzRixPQUFPLENBQXRCdEYsSUFBSTtJQUFFdUYsSUFBSSxHQUFLRCxPQUFPLENBQWhCQyxJQUFJO0VBRWxCLElBQU1wRSxJQUFJLEdBQUdELGNBQWMsQ0FBQyxDQUFDOztFQUU3QjtFQUNBQyxJQUFJLENBQUNxRSxVQUFVLEdBQUcsVUFBQ0MsS0FBSyxFQUFLO0lBQzNCLElBQVE1QixJQUFJLEdBQTJCNEIsS0FBSyxDQUFwQzVCLElBQUk7TUFBRTZCLFVBQVUsR0FBZUQsS0FBSyxDQUE5QkMsVUFBVTtNQUFFOUUsUUFBUSxHQUFLNkUsS0FBSyxDQUFsQjdFLFFBQVE7SUFFbEMsUUFBUWlELElBQUksQ0FBQzdELElBQUk7TUFDZixLQUFLLFNBQVM7UUFDWixvQkFBT2IsTUFBQSxZQUFBOEIsYUFBQSxPQUFReUUsVUFBVSxFQUFHOUUsUUFBYSxDQUFDO01BQzVDLEtBQUssU0FBUztRQUNaLG9CQUFPekIsTUFBQSxZQUFBOEIsYUFBQSxPQUFReUUsVUFBVSxFQUFHOUUsUUFBYSxDQUFDO01BQzVDLEtBQUssV0FBVztRQUNkLG9CQUFPekIsTUFBQSxZQUFBOEIsYUFBQSxPQUFReUUsVUFBVSxFQUFHOUUsUUFBYSxDQUFDO0lBQzlDO0VBQ0YsQ0FBQztFQUVETyxJQUFJLENBQUN3RSxPQUFPLEdBQUc7SUFDYkMsTUFBTSxFQUFFLEtBQUs7SUFDYkMsU0FBUyxFQUFFN0YsSUFBSSxJQUFJLFNBQVMsR0FBRyxlQUFlLEdBQUcsZUFBZTtJQUNoRUEsSUFBSSxFQUFKQSxJQUFJO0lBQ0p1RixJQUFJLEVBQUpBLElBQUk7SUFDSk8sUUFBUSxFQUFFLFNBQVZBLFFBQVFBLENBQUc1RCxLQUFLLEVBQUVsQyxJQUFJLEVBQUs7TUFDekIsSUFBSSxDQUFDbUIsSUFBSSxDQUFDMkMsS0FBSyxDQUFDc0IsaUJBQWlCLENBQUNsRCxLQUFLLENBQUMsRUFBRTtRQUN4QyxPQUFPLEtBQUs7TUFDZDtNQUNBLElBQU02RCxPQUFPLEdBQUc1RSxJQUFJLENBQUMyQyxLQUFLLENBQUNrQyxjQUFjLENBQUM5RCxLQUFLLENBQUM7TUFDaEQsT0FBTzZELE9BQU8sR0FBR0EsT0FBTyxDQUFDL0YsSUFBSSxLQUFLQSxJQUFJLEdBQUcsS0FBSztJQUNoRCxDQUFDO0lBQ0RpRyxPQUFPLEVBQUUsU0FBVEEsT0FBT0EsQ0FBRy9ELEtBQUssRUFBRWdFLFFBQVEsRUFBSztNQUM1QnJHLEdBQUcsQ0FBQyxXQUFXLEVBQUVxQyxLQUFLLENBQUM7TUFDdkIsSUFBTWlFLE1BQU0sR0FBR2hGLElBQUksQ0FBQzJDLEtBQUssQ0FBQ3NCLGlCQUFpQixDQUFDbEQsS0FBSyxDQUFDO01BQ2xELElBQUlpRSxNQUFNLEVBQUU7UUFDVixJQUFNN0MsTUFBTSxHQUFHcEIsS0FBSyxDQUFDb0IsTUFBTSxDQUFDLENBQUMsQ0FBQzhDLElBQUksQ0FBQ2pGLElBQUksQ0FBQ2lDLE9BQU8sQ0FBQ2UsVUFBVSxDQUFDO1FBQzNEK0IsUUFBUSxDQUFDNUMsTUFBTSxDQUFDO01BQ2xCLENBQUMsTUFBTTtRQUNMLElBQU1BLE9BQU0sR0FBR3BCLEtBQUssQ0FBQ29CLE1BQU0sQ0FBQyxDQUFDLENBQUM4QyxJQUFJLENBQUNqRixJQUFJLENBQUNpQyxPQUFPLENBQUNDLFVBQVUsRUFBRXJELElBQUksQ0FBQztRQUNqRWtHLFFBQVEsQ0FBQzVDLE9BQU0sQ0FBQztNQUNsQjtJQUNGO0VBQ0YsQ0FBQztFQUVEbkMsSUFBSSxDQUFDa0YsYUFBYSxHQUFHLFVBQUN4QyxJQUFJLEVBQUs7SUFDN0IsSUFBSUEsSUFBSSxDQUFDMUQsTUFBTSxLQUFLLFVBQVUsSUFBSTBELElBQUksQ0FBQzFELE1BQU0sS0FBSyxPQUFPLEVBQUU7TUFDekQsT0FBT21HLFNBQVM7SUFDbEI7SUFFQSxJQUFNQyxRQUFRLEdBQUdwRixJQUFJLENBQUNxRixZQUFZLENBQUMzQyxJQUFJLENBQUM7SUFFeEMsSUFBTTRDLGdCQUFnQixHQUFHLEVBQUU7SUFFM0I1QyxJQUFJLENBQUM2QyxpQkFBaUIsQ0FBQyxVQUFDQyxDQUFDLEVBQUs7TUFDNUIsSUFBSUEsQ0FBQyxDQUFDM0csSUFBSSxLQUFLLFdBQVcsSUFBSTJHLENBQUMsQ0FBQ3ZHLEtBQUssQ0FBQ3dHLElBQUksS0FBSyxDQUFDLElBQUlELENBQUMsQ0FBQ3ZHLEtBQUssQ0FBQ3NFLEtBQUssQ0FBQyxDQUFDLENBQUN2RSxNQUFNLEtBQUssTUFBTSxFQUFFO1FBQ3JGO1FBQ0FzRyxnQkFBZ0IsQ0FBQ0ksSUFBSSxDQUFDRixDQUFDLENBQUM7TUFDMUI7SUFDRixDQUFDLENBQUM7SUFFRixJQUFJLENBQUNGLGdCQUFnQixDQUFDNUYsTUFBTSxJQUFJLENBQUMwRixRQUFRLEVBQUU7TUFDekMsT0FBT0QsU0FBUztJQUNsQjtJQUVBLE9BQU8sVUFBQ2hELE1BQU0sRUFBSztNQUNqQixJQUFJaUQsUUFBUSxFQUFFO1FBQ1pBLFFBQVEsQ0FBQ2pELE1BQU0sQ0FBQztNQUNsQjtNQUVBLElBQUltRCxnQkFBZ0IsQ0FBQzVGLE1BQU0sRUFBRTtRQUMzQnlDLE1BQU0sQ0FBQ3dELG9CQUFvQixDQUFDLFlBQU07VUFDaENMLGdCQUFnQixDQUFDN0UsT0FBTyxDQUFDLFVBQUNpQyxJQUFJLEVBQUs7WUFDakMsSUFBTWtELFFBQVEsR0FBR2xELElBQUksQ0FBQ3pELEtBQUssQ0FBQ3NFLEtBQUssQ0FBQyxDQUFDO1lBQ25DLElBQU1zQyxZQUFZLEdBQUc7Y0FDbkI3RyxNQUFNLEVBQUUsT0FBTztjQUNmSCxJQUFJLEVBQUUsS0FBSztjQUNYSSxLQUFLLEVBQUUsQ0FBQzJHLFFBQVEsQ0FBQ0UsTUFBTSxDQUFDLENBQUM7WUFDM0IsQ0FBQztZQUVEM0QsTUFBTSxDQUFDeUIsZUFBZSxDQUFDZ0MsUUFBUSxDQUFDbEYsR0FBRyxDQUFDO1lBRXBDeUIsTUFBTSxDQUFDNEQsZUFBZSxDQUFDckQsSUFBSSxDQUFDaEMsR0FBRyxFQUFFLENBQUMsRUFBRW1GLFlBQVksQ0FBQztVQUNuRCxDQUFDLENBQUM7UUFDSixDQUFDLENBQUM7TUFDSjtJQUNGLENBQUM7RUFDSCxDQUFDO0VBRUQ3RixJQUFJLENBQUNxRSxVQUFVLENBQUMyQixTQUFTLEdBQUc7SUFDMUJ0RCxJQUFJLEVBQUV1RCxxQkFBUyxDQUFDakgsTUFBTTtJQUN0QnVGLFVBQVUsRUFBRTBCLHFCQUFTLENBQUNqSCxNQUFNO0lBQzVCUyxRQUFRLEVBQUV3RyxxQkFBUyxDQUFDQztFQUN0QixDQUFDO0VBQ0RsRyxJQUFJLENBQUNWLElBQUksR0FBR1QsSUFBSTtFQUVoQixPQUFPbUIsSUFBSTtBQUNiLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
|
|
@@ -1 +0,0 @@
|
|
|
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":[]}
|