@aquera/nile-elements 1.9.5 → 1.9.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -0
- package/dist/index-178e1e57.cjs.js +2 -0
- package/dist/index-178e1e57.cjs.js.map +1 -0
- package/dist/index-1faa963c.esm.js +1 -0
- package/dist/index-249de90a.esm.js +1 -0
- package/dist/index-353172ed.esm.js +1 -0
- package/dist/index-6f3fa4ab.esm.js +1 -0
- package/dist/index-89c520e9.cjs.js +5 -0
- package/dist/index-89c520e9.cjs.js.map +1 -0
- package/dist/index-920675c4.esm.js +1 -0
- package/dist/index-b387a9f4.cjs.js +2 -0
- package/dist/index-b387a9f4.cjs.js.map +1 -0
- package/dist/index-cc1385e0.cjs.js +2 -0
- package/dist/index-cc1385e0.cjs.js.map +1 -0
- package/dist/index-dedc38a6.esm.js +1 -0
- package/dist/index-df196058.cjs.js +2 -0
- package/dist/index-df196058.cjs.js.map +1 -0
- package/dist/index-f956f56d.cjs.js +7 -0
- package/dist/index-f956f56d.cjs.js.map +1 -0
- package/dist/index.cjs.js +1 -1
- package/dist/index.esm.js +1 -1
- package/dist/index.js +3802 -664
- package/dist/internal/glyph.cjs.js +2 -0
- package/dist/internal/glyph.cjs.js.map +1 -0
- package/dist/internal/glyph.esm.js +5 -0
- package/dist/nile-auto-complete/index.cjs.js +1 -1
- package/dist/nile-auto-complete/nile-auto-complete.cjs.js +1 -1
- package/dist/nile-auto-complete/portal-manager.cjs.js +1 -1
- package/dist/nile-auto-complete/portal-utils.cjs.js +1 -1
- package/dist/nile-chip/nile-chip.css.cjs.js +1 -1
- package/dist/nile-chip/nile-chip.css.cjs.js.map +1 -1
- package/dist/nile-chip/nile-chip.css.esm.js +8 -1
- package/dist/nile-code-editor/extensionSetup.cjs.js +7 -7
- package/dist/nile-code-editor/extensionSetup.cjs.js.map +1 -1
- package/dist/nile-code-editor/extensionSetup.esm.js +1 -1
- package/dist/nile-code-editor/index.cjs.js +1 -1
- package/dist/nile-code-editor/index.esm.js +1 -1
- package/dist/nile-code-editor/nile-code-editor.cjs.js +2 -2
- package/dist/nile-code-editor/nile-code-editor.cjs.js.map +1 -1
- package/dist/nile-code-editor/nile-code-editor.esm.js +4 -4
- package/dist/nile-color-picker/index.cjs.js +1 -1
- package/dist/nile-color-picker/nile-color-picker.cjs.js +1 -1
- package/dist/nile-combobox/index.cjs.js +1 -1
- package/dist/nile-combobox/index.esm.js +1 -1
- package/dist/nile-combobox/nile-combobox.cjs.js +1 -1
- package/dist/nile-combobox/nile-combobox.esm.js +1 -1
- package/dist/nile-combobox/portal-manager.cjs.js +1 -1
- package/dist/nile-context-menu/index.cjs.js +1 -1
- package/dist/nile-context-menu/nile-context-menu.cjs.js +1 -1
- package/dist/nile-context-submenu/index.cjs.js +1 -1
- package/dist/nile-context-submenu/nile-context-submenu.cjs.js +1 -1
- package/dist/nile-detail/index.cjs.js +1 -1
- package/dist/nile-detail/index.esm.js +1 -1
- package/dist/nile-detail/nile-detail.cjs.js +1 -1
- package/dist/nile-detail/nile-detail.esm.js +1 -1
- package/dist/nile-dropdown/index.cjs.js +1 -1
- package/dist/nile-dropdown/nile-dropdown.cjs.js +1 -1
- package/dist/nile-dropdown/portal-manager.cjs.js +1 -1
- package/dist/nile-file-upload/index.cjs.js +1 -1
- package/dist/nile-file-upload/nile-file-upload.cjs.js +1 -1
- package/dist/nile-file-upload/nile-file-upload.template.cjs.js +1 -1
- package/dist/nile-floating-panel/index.cjs.js +1 -1
- package/dist/nile-floating-panel/nile-floating-panel.cjs.js +1 -1
- package/dist/nile-hero/nile-hero.cjs.js +1 -1
- package/dist/nile-hero/nile-hero.cjs.js.map +1 -1
- package/dist/nile-hero/nile-hero.css.cjs.js +1 -1
- package/dist/nile-hero/nile-hero.css.cjs.js.map +1 -1
- package/dist/nile-hero/nile-hero.css.esm.js +14 -14
- package/dist/nile-hero/nile-hero.esm.js +1 -1
- package/dist/nile-hero-header/nile-hero-header.cjs.js +1 -1
- package/dist/nile-hero-header/nile-hero-header.cjs.js.map +1 -1
- package/dist/nile-hero-header/nile-hero-header.css.cjs.js +1 -1
- package/dist/nile-hero-header/nile-hero-header.css.cjs.js.map +1 -1
- package/dist/nile-hero-header/nile-hero-header.css.esm.js +11 -11
- package/dist/nile-hero-header/nile-hero-header.esm.js +3 -3
- package/dist/nile-lite-tooltip/index.cjs.js +1 -1
- package/dist/nile-lite-tooltip/nile-lite-tooltip.cjs.js +1 -1
- package/dist/nile-markdown-editor/index.cjs.js +1 -1
- package/dist/nile-markdown-editor/nile-markdown-editor.cjs.js +1 -1
- package/dist/nile-popover/index.cjs.js +1 -1
- package/dist/nile-popover/nile-popover.cjs.js +1 -1
- package/dist/nile-popover/portal-manager.cjs.js +1 -1
- package/dist/nile-popup/index.cjs.js +1 -1
- package/dist/nile-popup/nile-popup.cjs.js +1 -1
- package/dist/nile-rich-text-editor/index.cjs.js +1 -1
- package/dist/nile-rich-text-editor/index.esm.js +1 -1
- package/dist/nile-rich-text-editor/nile-rich-text-editor.cjs.js +1 -1
- package/dist/nile-rich-text-editor/nile-rich-text-editor.cjs.js.map +1 -1
- package/dist/nile-rich-text-editor/nile-rich-text-editor.css.cjs.js +1 -1
- package/dist/nile-rich-text-editor/nile-rich-text-editor.css.cjs.js.map +1 -1
- package/dist/nile-rich-text-editor/nile-rich-text-editor.css.esm.js +70 -0
- package/dist/nile-rich-text-editor/nile-rich-text-editor.esm.js +1 -1
- package/dist/nile-rich-text-editor/nile-rte-image.cjs.js +3 -0
- package/dist/nile-rich-text-editor/nile-rte-image.cjs.js.map +1 -0
- package/dist/nile-rich-text-editor/nile-rte-image.esm.js +96 -0
- package/dist/nile-select/index.cjs.js +1 -1
- package/dist/nile-select/nile-select.cjs.js +1 -1
- package/dist/nile-select/portal-manager.cjs.js +1 -1
- package/dist/nile-side-bar-action/index.cjs.js +1 -1
- package/dist/nile-side-bar-action/nile-side-bar-action.cjs.js +1 -1
- package/dist/nile-side-bar-action/portal-manager.cjs.js +1 -1
- package/dist/nile-tooltip/index.cjs.js +1 -1
- package/dist/nile-tooltip/nile-tooltip.cjs.js +1 -1
- package/dist/nile-virtual-select/index.cjs.js +1 -1
- package/dist/nile-virtual-select/nile-virtual-select.cjs.js +1 -1
- package/dist/nile-virtual-select/portal-manager.cjs.js +1 -1
- package/dist/nile-virtual-select/renderer.cjs.js +1 -1
- package/dist/nile-wysiwyg-editor/emoji.cjs.js +2 -0
- package/dist/nile-wysiwyg-editor/emoji.cjs.js.map +1 -0
- package/dist/nile-wysiwyg-editor/emoji.esm.js +1 -0
- package/dist/nile-wysiwyg-editor/engine/commands.cjs.js +2 -0
- package/dist/nile-wysiwyg-editor/engine/commands.cjs.js.map +1 -0
- package/dist/nile-wysiwyg-editor/engine/commands.esm.js +1 -0
- package/dist/nile-wysiwyg-editor/engine/create-state.cjs.js +2 -0
- package/dist/nile-wysiwyg-editor/engine/create-state.cjs.js.map +1 -0
- package/dist/nile-wysiwyg-editor/engine/create-state.esm.js +1 -0
- package/dist/nile-wysiwyg-editor/engine/export.cjs.js +2 -0
- package/dist/nile-wysiwyg-editor/engine/export.cjs.js.map +1 -0
- package/dist/nile-wysiwyg-editor/engine/export.esm.js +1 -0
- package/dist/nile-wysiwyg-editor/engine/index.cjs.js +2 -0
- package/dist/nile-wysiwyg-editor/engine/index.cjs.js.map +1 -0
- package/dist/nile-wysiwyg-editor/engine/index.esm.js +1 -0
- package/dist/nile-wysiwyg-editor/engine/inputrules.cjs.js +2 -0
- package/dist/nile-wysiwyg-editor/engine/inputrules.cjs.js.map +1 -0
- package/dist/nile-wysiwyg-editor/engine/inputrules.esm.js +1 -0
- package/dist/nile-wysiwyg-editor/engine/keymap.cjs.js +2 -0
- package/dist/nile-wysiwyg-editor/engine/keymap.cjs.js.map +1 -0
- package/dist/nile-wysiwyg-editor/engine/keymap.esm.js +1 -0
- package/dist/nile-wysiwyg-editor/engine/markdown-parse.cjs.js +2 -0
- package/dist/nile-wysiwyg-editor/engine/markdown-parse.cjs.js.map +1 -0
- package/dist/nile-wysiwyg-editor/engine/markdown-parse.esm.js +1 -0
- package/dist/nile-wysiwyg-editor/engine/markdown.cjs.js +2 -0
- package/dist/nile-wysiwyg-editor/engine/markdown.cjs.js.map +1 -0
- package/dist/nile-wysiwyg-editor/engine/markdown.esm.js +1 -0
- package/dist/nile-wysiwyg-editor/engine/office-paste.cjs.js +2 -0
- package/dist/nile-wysiwyg-editor/engine/office-paste.cjs.js.map +1 -0
- package/dist/nile-wysiwyg-editor/engine/office-paste.esm.js +1 -0
- package/dist/nile-wysiwyg-editor/engine/plugins/code-highlight.cjs.js +2 -0
- package/dist/nile-wysiwyg-editor/engine/plugins/code-highlight.cjs.js.map +1 -0
- package/dist/nile-wysiwyg-editor/engine/plugins/code-highlight.esm.js +1 -0
- package/dist/nile-wysiwyg-editor/engine/plugins/embed-view.cjs.js +2 -0
- package/dist/nile-wysiwyg-editor/engine/plugins/embed-view.cjs.js.map +1 -0
- package/dist/nile-wysiwyg-editor/engine/plugins/embed-view.esm.js +1 -0
- package/dist/nile-wysiwyg-editor/engine/plugins/embeds.cjs.js +2 -0
- package/dist/nile-wysiwyg-editor/engine/plugins/embeds.cjs.js.map +1 -0
- package/dist/nile-wysiwyg-editor/engine/plugins/embeds.esm.js +1 -0
- package/dist/nile-wysiwyg-editor/engine/plugins/find-replace.cjs.js +2 -0
- package/dist/nile-wysiwyg-editor/engine/plugins/find-replace.cjs.js.map +1 -0
- package/dist/nile-wysiwyg-editor/engine/plugins/find-replace.esm.js +1 -0
- package/dist/nile-wysiwyg-editor/engine/plugins/format-painter.cjs.js +2 -0
- package/dist/nile-wysiwyg-editor/engine/plugins/format-painter.cjs.js.map +1 -0
- package/dist/nile-wysiwyg-editor/engine/plugins/format-painter.esm.js +1 -0
- package/dist/nile-wysiwyg-editor/engine/plugins/image-view.cjs.js +2 -0
- package/dist/nile-wysiwyg-editor/engine/plugins/image-view.cjs.js.map +1 -0
- package/dist/nile-wysiwyg-editor/engine/plugins/image-view.esm.js +1 -0
- package/dist/nile-wysiwyg-editor/engine/plugins/image.cjs.js +2 -0
- package/dist/nile-wysiwyg-editor/engine/plugins/image.cjs.js.map +1 -0
- package/dist/nile-wysiwyg-editor/engine/plugins/image.esm.js +1 -0
- package/dist/nile-wysiwyg-editor/engine/plugins/link.cjs.js +2 -0
- package/dist/nile-wysiwyg-editor/engine/plugins/link.cjs.js.map +1 -0
- package/dist/nile-wysiwyg-editor/engine/plugins/link.esm.js +1 -0
- package/dist/nile-wysiwyg-editor/engine/plugins/math-view.cjs.js +2 -0
- package/dist/nile-wysiwyg-editor/engine/plugins/math-view.cjs.js.map +1 -0
- package/dist/nile-wysiwyg-editor/engine/plugins/math-view.esm.js +1 -0
- package/dist/nile-wysiwyg-editor/engine/plugins/max-length.cjs.js +2 -0
- package/dist/nile-wysiwyg-editor/engine/plugins/max-length.cjs.js.map +1 -0
- package/dist/nile-wysiwyg-editor/engine/plugins/max-length.esm.js +1 -0
- package/dist/nile-wysiwyg-editor/engine/plugins/paste.cjs.js +2 -0
- package/dist/nile-wysiwyg-editor/engine/plugins/paste.cjs.js.map +1 -0
- package/dist/nile-wysiwyg-editor/engine/plugins/paste.esm.js +1 -0
- package/dist/nile-wysiwyg-editor/engine/plugins/placeholder.cjs.js +2 -0
- package/dist/nile-wysiwyg-editor/engine/plugins/placeholder.cjs.js.map +1 -0
- package/dist/nile-wysiwyg-editor/engine/plugins/placeholder.esm.js +1 -0
- package/dist/nile-wysiwyg-editor/engine/plugins/single-line.cjs.js +2 -0
- package/dist/nile-wysiwyg-editor/engine/plugins/single-line.cjs.js.map +1 -0
- package/dist/nile-wysiwyg-editor/engine/plugins/single-line.esm.js +1 -0
- package/dist/nile-wysiwyg-editor/engine/plugins/suggestions.cjs.js +2 -0
- package/dist/nile-wysiwyg-editor/engine/plugins/suggestions.cjs.js.map +1 -0
- package/dist/nile-wysiwyg-editor/engine/plugins/suggestions.esm.js +1 -0
- package/dist/nile-wysiwyg-editor/engine/plugins/tables.cjs.js +2 -0
- package/dist/nile-wysiwyg-editor/engine/plugins/tables.cjs.js.map +1 -0
- package/dist/nile-wysiwyg-editor/engine/plugins/tables.esm.js +1 -0
- package/dist/nile-wysiwyg-editor/engine/plugins/task-list.cjs.js +2 -0
- package/dist/nile-wysiwyg-editor/engine/plugins/task-list.cjs.js.map +1 -0
- package/dist/nile-wysiwyg-editor/engine/plugins/task-list.esm.js +1 -0
- package/dist/nile-wysiwyg-editor/engine/sanitize.cjs.js +2 -0
- package/dist/nile-wysiwyg-editor/engine/sanitize.cjs.js.map +1 -0
- package/dist/nile-wysiwyg-editor/engine/sanitize.esm.js +1 -0
- package/dist/nile-wysiwyg-editor/engine/schema.cjs.js +2 -0
- package/dist/nile-wysiwyg-editor/engine/schema.cjs.js.map +1 -0
- package/dist/nile-wysiwyg-editor/engine/schema.esm.js +1 -0
- package/dist/nile-wysiwyg-editor/engine/selection-state.cjs.js +2 -0
- package/dist/nile-wysiwyg-editor/engine/selection-state.cjs.js.map +1 -0
- package/dist/nile-wysiwyg-editor/engine/selection-state.esm.js +1 -0
- package/dist/nile-wysiwyg-editor/engine/serializer.cjs.js +2 -0
- package/dist/nile-wysiwyg-editor/engine/serializer.cjs.js.map +1 -0
- package/dist/nile-wysiwyg-editor/engine/serializer.esm.js +1 -0
- package/dist/nile-wysiwyg-editor/index.cjs.js +2 -0
- package/dist/nile-wysiwyg-editor/index.cjs.js.map +1 -0
- package/dist/nile-wysiwyg-editor/index.esm.js +1 -0
- package/dist/nile-wysiwyg-editor/nile-wysiwyg-editor.cjs.js +2 -0
- package/dist/nile-wysiwyg-editor/nile-wysiwyg-editor.cjs.js.map +1 -0
- package/dist/nile-wysiwyg-editor/nile-wysiwyg-editor.css.cjs.js +2 -0
- package/dist/nile-wysiwyg-editor/nile-wysiwyg-editor.css.cjs.js.map +1 -0
- package/dist/nile-wysiwyg-editor/nile-wysiwyg-editor.css.esm.js +780 -0
- package/dist/nile-wysiwyg-editor/nile-wysiwyg-editor.esm.js +97 -0
- package/dist/nile-wysiwyg-editor/nile-wysiwyg-toolbar/index.cjs.js +2 -0
- package/dist/nile-wysiwyg-editor/nile-wysiwyg-toolbar/index.cjs.js.map +1 -0
- package/dist/nile-wysiwyg-editor/nile-wysiwyg-toolbar/index.esm.js +1 -0
- package/dist/nile-wysiwyg-editor/nile-wysiwyg-toolbar/nile-wysiwyg-toolbar.cjs.js +2 -0
- package/dist/nile-wysiwyg-editor/nile-wysiwyg-toolbar/nile-wysiwyg-toolbar.cjs.js.map +1 -0
- package/dist/nile-wysiwyg-editor/nile-wysiwyg-toolbar/nile-wysiwyg-toolbar.css.cjs.js +2 -0
- package/dist/nile-wysiwyg-editor/nile-wysiwyg-toolbar/nile-wysiwyg-toolbar.css.cjs.js.map +1 -0
- package/dist/nile-wysiwyg-editor/nile-wysiwyg-toolbar/nile-wysiwyg-toolbar.css.esm.js +244 -0
- package/dist/nile-wysiwyg-editor/nile-wysiwyg-toolbar/nile-wysiwyg-toolbar.esm.js +137 -0
- package/dist/nile-wysiwyg-editor/types.cjs.js +2 -0
- package/dist/nile-wysiwyg-editor/types.cjs.js.map +1 -0
- package/dist/nile-wysiwyg-editor/types.esm.js +1 -0
- package/dist/nile-wysiwyg-editor/ui/bookmark-panel.cjs.js +2 -0
- package/dist/nile-wysiwyg-editor/ui/bookmark-panel.cjs.js.map +1 -0
- package/dist/nile-wysiwyg-editor/ui/bookmark-panel.esm.js +97 -0
- package/dist/nile-wysiwyg-editor/ui/bubble-menu.cjs.js +2 -0
- package/dist/nile-wysiwyg-editor/ui/bubble-menu.cjs.js.map +1 -0
- package/dist/nile-wysiwyg-editor/ui/bubble-menu.esm.js +67 -0
- package/dist/nile-wysiwyg-editor/ui/code-block-menu.cjs.js +2 -0
- package/dist/nile-wysiwyg-editor/ui/code-block-menu.cjs.js.map +1 -0
- package/dist/nile-wysiwyg-editor/ui/code-block-menu.esm.js +65 -0
- package/dist/nile-wysiwyg-editor/ui/embed-menu.cjs.js +2 -0
- package/dist/nile-wysiwyg-editor/ui/embed-menu.cjs.js.map +1 -0
- package/dist/nile-wysiwyg-editor/ui/embed-menu.esm.js +64 -0
- package/dist/nile-wysiwyg-editor/ui/embed-panel.cjs.js +2 -0
- package/dist/nile-wysiwyg-editor/ui/embed-panel.cjs.js.map +1 -0
- package/dist/nile-wysiwyg-editor/ui/embed-panel.esm.js +68 -0
- package/dist/nile-wysiwyg-editor/ui/emoji-picker.cjs.js +2 -0
- package/dist/nile-wysiwyg-editor/ui/emoji-picker.cjs.js.map +1 -0
- package/dist/nile-wysiwyg-editor/ui/emoji-picker.esm.js +96 -0
- package/dist/nile-wysiwyg-editor/ui/find-replace.cjs.js +2 -0
- package/dist/nile-wysiwyg-editor/ui/find-replace.cjs.js.map +1 -0
- package/dist/nile-wysiwyg-editor/ui/find-replace.esm.js +112 -0
- package/dist/nile-wysiwyg-editor/ui/image-menu.cjs.js +2 -0
- package/dist/nile-wysiwyg-editor/ui/image-menu.cjs.js.map +1 -0
- package/dist/nile-wysiwyg-editor/ui/image-menu.esm.js +64 -0
- package/dist/nile-wysiwyg-editor/ui/image-panel.cjs.js +2 -0
- package/dist/nile-wysiwyg-editor/ui/image-panel.cjs.js.map +1 -0
- package/dist/nile-wysiwyg-editor/ui/image-panel.esm.js +171 -0
- package/dist/nile-wysiwyg-editor/ui/insert-menu.cjs.js +2 -0
- package/dist/nile-wysiwyg-editor/ui/insert-menu.cjs.js.map +1 -0
- package/dist/nile-wysiwyg-editor/ui/insert-menu.esm.js +90 -0
- package/dist/nile-wysiwyg-editor/ui/link-editor.cjs.js +2 -0
- package/dist/nile-wysiwyg-editor/ui/link-editor.cjs.js.map +1 -0
- package/dist/nile-wysiwyg-editor/ui/link-editor.esm.js +114 -0
- package/dist/nile-wysiwyg-editor/ui/markdown-panel.cjs.js +2 -0
- package/dist/nile-wysiwyg-editor/ui/markdown-panel.cjs.js.map +1 -0
- package/dist/nile-wysiwyg-editor/ui/markdown-panel.esm.js +80 -0
- package/dist/nile-wysiwyg-editor/ui/math-panel.cjs.js +2 -0
- package/dist/nile-wysiwyg-editor/ui/math-panel.cjs.js.map +1 -0
- package/dist/nile-wysiwyg-editor/ui/math-panel.esm.js +92 -0
- package/dist/nile-wysiwyg-editor/ui/shortcut-help.cjs.js +2 -0
- package/dist/nile-wysiwyg-editor/ui/shortcut-help.cjs.js.map +1 -0
- package/dist/nile-wysiwyg-editor/ui/shortcut-help.esm.js +147 -0
- package/dist/nile-wysiwyg-editor/ui/source-view.cjs.js +2 -0
- package/dist/nile-wysiwyg-editor/ui/source-view.cjs.js.map +1 -0
- package/dist/nile-wysiwyg-editor/ui/source-view.esm.js +79 -0
- package/dist/nile-wysiwyg-editor/ui/special-chars.cjs.js +2 -0
- package/dist/nile-wysiwyg-editor/ui/special-chars.cjs.js.map +1 -0
- package/dist/nile-wysiwyg-editor/ui/special-chars.esm.js +96 -0
- package/dist/nile-wysiwyg-editor/ui/suggest-list.cjs.js +2 -0
- package/dist/nile-wysiwyg-editor/ui/suggest-list.cjs.js.map +1 -0
- package/dist/nile-wysiwyg-editor/ui/suggest-list.esm.js +67 -0
- package/dist/nile-wysiwyg-editor/ui/table-grid-picker.cjs.js +2 -0
- package/dist/nile-wysiwyg-editor/ui/table-grid-picker.cjs.js.map +1 -0
- package/dist/nile-wysiwyg-editor/ui/table-grid-picker.esm.js +100 -0
- package/dist/nile-wysiwyg-editor/ui/table-menu.cjs.js +2 -0
- package/dist/nile-wysiwyg-editor/ui/table-menu.cjs.js.map +1 -0
- package/dist/nile-wysiwyg-editor/ui/table-menu.esm.js +58 -0
- package/dist/src/index.d.ts +24 -0
- package/dist/src/index.js +19 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/internal/glyph.d.ts +6 -0
- package/dist/src/internal/glyph.js +13 -0
- package/dist/src/internal/glyph.js.map +1 -0
- package/dist/src/nile-chip/nile-chip.css.js +8 -1
- package/dist/src/nile-chip/nile-chip.css.js.map +1 -1
- package/dist/src/nile-code-editor/nile-code-editor.js +3 -3
- package/dist/src/nile-code-editor/nile-code-editor.js.map +1 -1
- package/dist/src/nile-hero/nile-hero.css.js +12 -12
- package/dist/src/nile-hero/nile-hero.css.js.map +1 -1
- package/dist/src/nile-hero/nile-hero.js +1 -1
- package/dist/src/nile-hero/nile-hero.js.map +1 -1
- package/dist/src/nile-hero-header/nile-hero-header.css.js +9 -9
- package/dist/src/nile-hero-header/nile-hero-header.css.js.map +1 -1
- package/dist/src/nile-hero-header/nile-hero-header.js +1 -1
- package/dist/src/nile-hero-header/nile-hero-header.js.map +1 -1
- package/dist/src/nile-rich-text-editor/nile-rich-text-editor.css.js +70 -0
- package/dist/src/nile-rich-text-editor/nile-rich-text-editor.css.js.map +1 -1
- package/dist/src/nile-rich-text-editor/nile-rich-text-editor.d.ts +3 -0
- package/dist/src/nile-rich-text-editor/nile-rich-text-editor.js +81 -3
- package/dist/src/nile-rich-text-editor/nile-rich-text-editor.js.map +1 -1
- package/dist/src/nile-rich-text-editor/nile-rte-image.d.ts +87 -0
- package/dist/src/nile-rich-text-editor/nile-rte-image.js +1073 -0
- package/dist/src/nile-rich-text-editor/nile-rte-image.js.map +1 -0
- package/dist/src/nile-wysiwyg-editor/emoji.d.ts +5 -0
- package/dist/src/nile-wysiwyg-editor/emoji.js +138 -0
- package/dist/src/nile-wysiwyg-editor/emoji.js.map +1 -0
- package/dist/src/nile-wysiwyg-editor/engine/commands.d.ts +69 -0
- package/dist/src/nile-wysiwyg-editor/engine/commands.js +863 -0
- package/dist/src/nile-wysiwyg-editor/engine/commands.js.map +1 -0
- package/dist/src/nile-wysiwyg-editor/engine/create-state.d.ts +35 -0
- package/dist/src/nile-wysiwyg-editor/engine/create-state.js +67 -0
- package/dist/src/nile-wysiwyg-editor/engine/create-state.js.map +1 -0
- package/dist/src/nile-wysiwyg-editor/engine/export.d.ts +38 -0
- package/dist/src/nile-wysiwyg-editor/engine/export.js +208 -0
- package/dist/src/nile-wysiwyg-editor/engine/export.js.map +1 -0
- package/dist/src/nile-wysiwyg-editor/engine/export.test.d.ts +1 -0
- package/dist/src/nile-wysiwyg-editor/engine/export.test.js +96 -0
- package/dist/src/nile-wysiwyg-editor/engine/export.test.js.map +1 -0
- package/dist/src/nile-wysiwyg-editor/engine/index.d.ts +37 -0
- package/dist/src/nile-wysiwyg-editor/engine/index.js +29 -0
- package/dist/src/nile-wysiwyg-editor/engine/index.js.map +1 -0
- package/dist/src/nile-wysiwyg-editor/engine/inputrules.d.ts +12 -0
- package/dist/src/nile-wysiwyg-editor/engine/inputrules.js +144 -0
- package/dist/src/nile-wysiwyg-editor/engine/inputrules.js.map +1 -0
- package/dist/src/nile-wysiwyg-editor/engine/keymap.d.ts +15 -0
- package/dist/src/nile-wysiwyg-editor/engine/keymap.js +94 -0
- package/dist/src/nile-wysiwyg-editor/engine/keymap.js.map +1 -0
- package/dist/src/nile-wysiwyg-editor/engine/markdown-parse.d.ts +22 -0
- package/dist/src/nile-wysiwyg-editor/engine/markdown-parse.js +287 -0
- package/dist/src/nile-wysiwyg-editor/engine/markdown-parse.js.map +1 -0
- package/dist/src/nile-wysiwyg-editor/engine/markdown-parse.test.d.ts +1 -0
- package/dist/src/nile-wysiwyg-editor/engine/markdown-parse.test.js +106 -0
- package/dist/src/nile-wysiwyg-editor/engine/markdown-parse.test.js.map +1 -0
- package/dist/src/nile-wysiwyg-editor/engine/markdown.d.ts +10 -0
- package/dist/src/nile-wysiwyg-editor/engine/markdown.js +162 -0
- package/dist/src/nile-wysiwyg-editor/engine/markdown.js.map +1 -0
- package/dist/src/nile-wysiwyg-editor/engine/office-paste.d.ts +13 -0
- package/dist/src/nile-wysiwyg-editor/engine/office-paste.js +182 -0
- package/dist/src/nile-wysiwyg-editor/engine/office-paste.js.map +1 -0
- package/dist/src/nile-wysiwyg-editor/engine/plugins/code-highlight.d.ts +10 -0
- package/dist/src/nile-wysiwyg-editor/engine/plugins/code-highlight.js +165 -0
- package/dist/src/nile-wysiwyg-editor/engine/plugins/code-highlight.js.map +1 -0
- package/dist/src/nile-wysiwyg-editor/engine/plugins/embed-view.d.ts +17 -0
- package/dist/src/nile-wysiwyg-editor/engine/plugins/embed-view.js +69 -0
- package/dist/src/nile-wysiwyg-editor/engine/plugins/embed-view.js.map +1 -0
- package/dist/src/nile-wysiwyg-editor/engine/plugins/embeds.d.ts +17 -0
- package/dist/src/nile-wysiwyg-editor/engine/plugins/embeds.js +96 -0
- package/dist/src/nile-wysiwyg-editor/engine/plugins/embeds.js.map +1 -0
- package/dist/src/nile-wysiwyg-editor/engine/plugins/find-replace.d.ts +26 -0
- package/dist/src/nile-wysiwyg-editor/engine/plugins/find-replace.js +123 -0
- package/dist/src/nile-wysiwyg-editor/engine/plugins/find-replace.js.map +1 -0
- package/dist/src/nile-wysiwyg-editor/engine/plugins/format-painter.d.ts +28 -0
- package/dist/src/nile-wysiwyg-editor/engine/plugins/format-painter.js +72 -0
- package/dist/src/nile-wysiwyg-editor/engine/plugins/format-painter.js.map +1 -0
- package/dist/src/nile-wysiwyg-editor/engine/plugins/image-view.d.ts +41 -0
- package/dist/src/nile-wysiwyg-editor/engine/plugins/image-view.js +176 -0
- package/dist/src/nile-wysiwyg-editor/engine/plugins/image-view.js.map +1 -0
- package/dist/src/nile-wysiwyg-editor/engine/plugins/image.d.ts +15 -0
- package/dist/src/nile-wysiwyg-editor/engine/plugins/image.js +64 -0
- package/dist/src/nile-wysiwyg-editor/engine/plugins/image.js.map +1 -0
- package/dist/src/nile-wysiwyg-editor/engine/plugins/link.d.ts +11 -0
- package/dist/src/nile-wysiwyg-editor/engine/plugins/link.js +42 -0
- package/dist/src/nile-wysiwyg-editor/engine/plugins/link.js.map +1 -0
- package/dist/src/nile-wysiwyg-editor/engine/plugins/math-view.d.ts +18 -0
- package/dist/src/nile-wysiwyg-editor/engine/plugins/math-view.js +46 -0
- package/dist/src/nile-wysiwyg-editor/engine/plugins/math-view.js.map +1 -0
- package/dist/src/nile-wysiwyg-editor/engine/plugins/max-length.d.ts +7 -0
- package/dist/src/nile-wysiwyg-editor/engine/plugins/max-length.js +26 -0
- package/dist/src/nile-wysiwyg-editor/engine/plugins/max-length.js.map +1 -0
- package/dist/src/nile-wysiwyg-editor/engine/plugins/paste.d.ts +31 -0
- package/dist/src/nile-wysiwyg-editor/engine/plugins/paste.js +55 -0
- package/dist/src/nile-wysiwyg-editor/engine/plugins/paste.js.map +1 -0
- package/dist/src/nile-wysiwyg-editor/engine/plugins/placeholder.d.ts +7 -0
- package/dist/src/nile-wysiwyg-editor/engine/plugins/placeholder.js +25 -0
- package/dist/src/nile-wysiwyg-editor/engine/plugins/placeholder.js.map +1 -0
- package/dist/src/nile-wysiwyg-editor/engine/plugins/single-line.d.ts +10 -0
- package/dist/src/nile-wysiwyg-editor/engine/plugins/single-line.js +48 -0
- package/dist/src/nile-wysiwyg-editor/engine/plugins/single-line.js.map +1 -0
- package/dist/src/nile-wysiwyg-editor/engine/plugins/suggestions.d.ts +29 -0
- package/dist/src/nile-wysiwyg-editor/engine/plugins/suggestions.js +87 -0
- package/dist/src/nile-wysiwyg-editor/engine/plugins/suggestions.js.map +1 -0
- package/dist/src/nile-wysiwyg-editor/engine/plugins/tables.d.ts +8 -0
- package/dist/src/nile-wysiwyg-editor/engine/plugins/tables.js +11 -0
- package/dist/src/nile-wysiwyg-editor/engine/plugins/tables.js.map +1 -0
- package/dist/src/nile-wysiwyg-editor/engine/plugins/task-list.d.ts +16 -0
- package/dist/src/nile-wysiwyg-editor/engine/plugins/task-list.js +49 -0
- package/dist/src/nile-wysiwyg-editor/engine/plugins/task-list.js.map +1 -0
- package/dist/src/nile-wysiwyg-editor/engine/pm.test.d.ts +1 -0
- package/dist/src/nile-wysiwyg-editor/engine/pm.test.js +883 -0
- package/dist/src/nile-wysiwyg-editor/engine/pm.test.js.map +1 -0
- package/dist/src/nile-wysiwyg-editor/engine/productivity.test.d.ts +1 -0
- package/dist/src/nile-wysiwyg-editor/engine/productivity.test.js +129 -0
- package/dist/src/nile-wysiwyg-editor/engine/productivity.test.js.map +1 -0
- package/dist/src/nile-wysiwyg-editor/engine/sanitize.d.ts +13 -0
- package/dist/src/nile-wysiwyg-editor/engine/sanitize.js +155 -0
- package/dist/src/nile-wysiwyg-editor/engine/sanitize.js.map +1 -0
- package/dist/src/nile-wysiwyg-editor/engine/schema.d.ts +20 -0
- package/dist/src/nile-wysiwyg-editor/engine/schema.js +823 -0
- package/dist/src/nile-wysiwyg-editor/engine/schema.js.map +1 -0
- package/dist/src/nile-wysiwyg-editor/engine/selection-state.d.ts +70 -0
- package/dist/src/nile-wysiwyg-editor/engine/selection-state.js +138 -0
- package/dist/src/nile-wysiwyg-editor/engine/selection-state.js.map +1 -0
- package/dist/src/nile-wysiwyg-editor/engine/serializer.d.ts +18 -0
- package/dist/src/nile-wysiwyg-editor/engine/serializer.js +63 -0
- package/dist/src/nile-wysiwyg-editor/engine/serializer.js.map +1 -0
- package/dist/src/nile-wysiwyg-editor/index.d.ts +3 -0
- package/dist/src/nile-wysiwyg-editor/index.js +3 -0
- package/dist/src/nile-wysiwyg-editor/index.js.map +1 -0
- package/dist/src/nile-wysiwyg-editor/nile-wysiwyg-editor.css.d.ts +1 -0
- package/dist/src/nile-wysiwyg-editor/nile-wysiwyg-editor.css.js +782 -0
- package/dist/src/nile-wysiwyg-editor/nile-wysiwyg-editor.css.js.map +1 -0
- package/dist/src/nile-wysiwyg-editor/nile-wysiwyg-editor.d.ts +364 -0
- package/dist/src/nile-wysiwyg-editor/nile-wysiwyg-editor.js +2038 -0
- package/dist/src/nile-wysiwyg-editor/nile-wysiwyg-editor.js.map +1 -0
- package/dist/src/nile-wysiwyg-editor/nile-wysiwyg-editor.test.d.ts +1 -0
- package/dist/src/nile-wysiwyg-editor/nile-wysiwyg-editor.test.js +636 -0
- package/dist/src/nile-wysiwyg-editor/nile-wysiwyg-editor.test.js.map +1 -0
- package/dist/src/nile-wysiwyg-editor/nile-wysiwyg-toolbar/index.d.ts +1 -0
- package/dist/src/nile-wysiwyg-editor/nile-wysiwyg-toolbar/index.js +2 -0
- package/dist/src/nile-wysiwyg-editor/nile-wysiwyg-toolbar/index.js.map +1 -0
- package/dist/src/nile-wysiwyg-editor/nile-wysiwyg-toolbar/nile-wysiwyg-toolbar.css.d.ts +6 -0
- package/dist/src/nile-wysiwyg-editor/nile-wysiwyg-toolbar/nile-wysiwyg-toolbar.css.js +251 -0
- package/dist/src/nile-wysiwyg-editor/nile-wysiwyg-toolbar/nile-wysiwyg-toolbar.css.js.map +1 -0
- package/dist/src/nile-wysiwyg-editor/nile-wysiwyg-toolbar/nile-wysiwyg-toolbar.d.ts +41 -0
- package/dist/src/nile-wysiwyg-editor/nile-wysiwyg-toolbar/nile-wysiwyg-toolbar.js +700 -0
- package/dist/src/nile-wysiwyg-editor/nile-wysiwyg-toolbar/nile-wysiwyg-toolbar.js.map +1 -0
- package/dist/src/nile-wysiwyg-editor/types.d.ts +49 -0
- package/dist/src/nile-wysiwyg-editor/types.js +8 -0
- package/dist/src/nile-wysiwyg-editor/types.js.map +1 -0
- package/dist/src/nile-wysiwyg-editor/ui/bookmark-panel.d.ts +20 -0
- package/dist/src/nile-wysiwyg-editor/ui/bookmark-panel.js +159 -0
- package/dist/src/nile-wysiwyg-editor/ui/bookmark-panel.js.map +1 -0
- package/dist/src/nile-wysiwyg-editor/ui/bubble-menu.d.ts +21 -0
- package/dist/src/nile-wysiwyg-editor/ui/bubble-menu.js +125 -0
- package/dist/src/nile-wysiwyg-editor/ui/bubble-menu.js.map +1 -0
- package/dist/src/nile-wysiwyg-editor/ui/code-block-menu.d.ts +18 -0
- package/dist/src/nile-wysiwyg-editor/ui/code-block-menu.js +107 -0
- package/dist/src/nile-wysiwyg-editor/ui/code-block-menu.js.map +1 -0
- package/dist/src/nile-wysiwyg-editor/ui/embed-menu.d.ts +19 -0
- package/dist/src/nile-wysiwyg-editor/ui/embed-menu.js +123 -0
- package/dist/src/nile-wysiwyg-editor/ui/embed-menu.js.map +1 -0
- package/dist/src/nile-wysiwyg-editor/ui/embed-panel.d.ts +27 -0
- package/dist/src/nile-wysiwyg-editor/ui/embed-panel.js +146 -0
- package/dist/src/nile-wysiwyg-editor/ui/embed-panel.js.map +1 -0
- package/dist/src/nile-wysiwyg-editor/ui/emoji-picker.d.ts +21 -0
- package/dist/src/nile-wysiwyg-editor/ui/emoji-picker.js +154 -0
- package/dist/src/nile-wysiwyg-editor/ui/emoji-picker.js.map +1 -0
- package/dist/src/nile-wysiwyg-editor/ui/find-replace.d.ts +26 -0
- package/dist/src/nile-wysiwyg-editor/ui/find-replace.js +178 -0
- package/dist/src/nile-wysiwyg-editor/ui/find-replace.js.map +1 -0
- package/dist/src/nile-wysiwyg-editor/ui/image-menu.d.ts +18 -0
- package/dist/src/nile-wysiwyg-editor/ui/image-menu.js +129 -0
- package/dist/src/nile-wysiwyg-editor/ui/image-menu.js.map +1 -0
- package/dist/src/nile-wysiwyg-editor/ui/image-panel.d.ts +56 -0
- package/dist/src/nile-wysiwyg-editor/ui/image-panel.js +349 -0
- package/dist/src/nile-wysiwyg-editor/ui/image-panel.js.map +1 -0
- package/dist/src/nile-wysiwyg-editor/ui/insert-menu.d.ts +25 -0
- package/dist/src/nile-wysiwyg-editor/ui/insert-menu.js +142 -0
- package/dist/src/nile-wysiwyg-editor/ui/insert-menu.js.map +1 -0
- package/dist/src/nile-wysiwyg-editor/ui/link-editor.d.ts +30 -0
- package/dist/src/nile-wysiwyg-editor/ui/link-editor.js +189 -0
- package/dist/src/nile-wysiwyg-editor/ui/link-editor.js.map +1 -0
- package/dist/src/nile-wysiwyg-editor/ui/markdown-panel.d.ts +24 -0
- package/dist/src/nile-wysiwyg-editor/ui/markdown-panel.js +144 -0
- package/dist/src/nile-wysiwyg-editor/ui/markdown-panel.js.map +1 -0
- package/dist/src/nile-wysiwyg-editor/ui/math-panel.d.ts +31 -0
- package/dist/src/nile-wysiwyg-editor/ui/math-panel.js +172 -0
- package/dist/src/nile-wysiwyg-editor/ui/math-panel.js.map +1 -0
- package/dist/src/nile-wysiwyg-editor/ui/shortcut-help.d.ts +30 -0
- package/dist/src/nile-wysiwyg-editor/ui/shortcut-help.js +296 -0
- package/dist/src/nile-wysiwyg-editor/ui/shortcut-help.js.map +1 -0
- package/dist/src/nile-wysiwyg-editor/ui/source-view.d.ts +19 -0
- package/dist/src/nile-wysiwyg-editor/ui/source-view.js +120 -0
- package/dist/src/nile-wysiwyg-editor/ui/source-view.js.map +1 -0
- package/dist/src/nile-wysiwyg-editor/ui/special-chars.d.ts +20 -0
- package/dist/src/nile-wysiwyg-editor/ui/special-chars.js +199 -0
- package/dist/src/nile-wysiwyg-editor/ui/special-chars.js.map +1 -0
- package/dist/src/nile-wysiwyg-editor/ui/suggest-list.d.ts +31 -0
- package/dist/src/nile-wysiwyg-editor/ui/suggest-list.js +133 -0
- package/dist/src/nile-wysiwyg-editor/ui/suggest-list.js.map +1 -0
- package/dist/src/nile-wysiwyg-editor/ui/table-grid-picker.d.ts +23 -0
- package/dist/src/nile-wysiwyg-editor/ui/table-grid-picker.js +177 -0
- package/dist/src/nile-wysiwyg-editor/ui/table-grid-picker.js.map +1 -0
- package/dist/src/nile-wysiwyg-editor/ui/table-menu.d.ts +16 -0
- package/dist/src/nile-wysiwyg-editor/ui/table-menu.js +101 -0
- package/dist/src/nile-wysiwyg-editor/ui/table-menu.js.map +1 -0
- package/dist/src/version.js +1 -1
- package/dist/src/version.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +18 -2
- package/src/index.ts +57 -1
- package/src/internal/glyph.ts +13 -0
- package/src/nile-chip/nile-chip.css.ts +8 -1
- package/src/nile-code-editor/nile-code-editor.ts +3 -3
- package/src/nile-hero/nile-hero.css.ts +12 -12
- package/src/nile-hero/nile-hero.ts +1 -1
- package/src/nile-hero-header/nile-hero-header.css.ts +9 -9
- package/src/nile-hero-header/nile-hero-header.ts +1 -1
- package/src/nile-rich-text-editor/nile-rich-text-editor.css.ts +70 -0
- package/src/nile-rich-text-editor/nile-rich-text-editor.ts +89 -3
- package/src/nile-rich-text-editor/nile-rte-image.ts +1132 -0
- package/src/nile-wysiwyg-editor/emoji.ts +137 -0
- package/src/nile-wysiwyg-editor/engine/commands.ts +1035 -0
- package/src/nile-wysiwyg-editor/engine/create-state.ts +117 -0
- package/src/nile-wysiwyg-editor/engine/export.test.ts +113 -0
- package/src/nile-wysiwyg-editor/engine/export.ts +242 -0
- package/src/nile-wysiwyg-editor/engine/index.ts +69 -0
- package/src/nile-wysiwyg-editor/engine/inputrules.ts +169 -0
- package/src/nile-wysiwyg-editor/engine/keymap.ts +146 -0
- package/src/nile-wysiwyg-editor/engine/markdown-parse.test.ts +148 -0
- package/src/nile-wysiwyg-editor/engine/markdown-parse.ts +337 -0
- package/src/nile-wysiwyg-editor/engine/markdown.ts +165 -0
- package/src/nile-wysiwyg-editor/engine/office-paste.ts +199 -0
- package/src/nile-wysiwyg-editor/engine/plugins/code-highlight.ts +173 -0
- package/src/nile-wysiwyg-editor/engine/plugins/embed-view.ts +85 -0
- package/src/nile-wysiwyg-editor/engine/plugins/embeds.ts +99 -0
- package/src/nile-wysiwyg-editor/engine/plugins/find-replace.ts +155 -0
- package/src/nile-wysiwyg-editor/engine/plugins/format-painter.ts +80 -0
- package/src/nile-wysiwyg-editor/engine/plugins/image-view.ts +220 -0
- package/src/nile-wysiwyg-editor/engine/plugins/image.ts +80 -0
- package/src/nile-wysiwyg-editor/engine/plugins/link.ts +42 -0
- package/src/nile-wysiwyg-editor/engine/plugins/math-view.ts +56 -0
- package/src/nile-wysiwyg-editor/engine/plugins/max-length.ts +24 -0
- package/src/nile-wysiwyg-editor/engine/plugins/paste.ts +74 -0
- package/src/nile-wysiwyg-editor/engine/plugins/placeholder.ts +24 -0
- package/src/nile-wysiwyg-editor/engine/plugins/single-line.ts +47 -0
- package/src/nile-wysiwyg-editor/engine/plugins/suggestions.ts +110 -0
- package/src/nile-wysiwyg-editor/engine/plugins/tables.ts +12 -0
- package/src/nile-wysiwyg-editor/engine/plugins/task-list.ts +65 -0
- package/src/nile-wysiwyg-editor/engine/pm.test.ts +1088 -0
- package/src/nile-wysiwyg-editor/engine/productivity.test.ts +163 -0
- package/src/nile-wysiwyg-editor/engine/sanitize.ts +156 -0
- package/src/nile-wysiwyg-editor/engine/schema.ts +859 -0
- package/src/nile-wysiwyg-editor/engine/selection-state.ts +210 -0
- package/src/nile-wysiwyg-editor/engine/serializer.ts +78 -0
- package/src/nile-wysiwyg-editor/index.ts +3 -0
- package/src/nile-wysiwyg-editor/nile-wysiwyg-editor.css.ts +782 -0
- package/src/nile-wysiwyg-editor/nile-wysiwyg-editor.test.ts +750 -0
- package/src/nile-wysiwyg-editor/nile-wysiwyg-editor.ts +2155 -0
- package/src/nile-wysiwyg-editor/nile-wysiwyg-toolbar/index.ts +1 -0
- package/src/nile-wysiwyg-editor/nile-wysiwyg-toolbar/nile-wysiwyg-toolbar.css.ts +251 -0
- package/src/nile-wysiwyg-editor/nile-wysiwyg-toolbar/nile-wysiwyg-toolbar.ts +772 -0
- package/src/nile-wysiwyg-editor/types.ts +83 -0
- package/src/nile-wysiwyg-editor/ui/bookmark-panel.ts +155 -0
- package/src/nile-wysiwyg-editor/ui/bubble-menu.ts +135 -0
- package/src/nile-wysiwyg-editor/ui/code-block-menu.ts +105 -0
- package/src/nile-wysiwyg-editor/ui/embed-menu.ts +133 -0
- package/src/nile-wysiwyg-editor/ui/embed-panel.ts +143 -0
- package/src/nile-wysiwyg-editor/ui/emoji-picker.ts +152 -0
- package/src/nile-wysiwyg-editor/ui/find-replace.ts +174 -0
- package/src/nile-wysiwyg-editor/ui/image-menu.ts +140 -0
- package/src/nile-wysiwyg-editor/ui/image-panel.ts +337 -0
- package/src/nile-wysiwyg-editor/ui/insert-menu.ts +142 -0
- package/src/nile-wysiwyg-editor/ui/link-editor.ts +180 -0
- package/src/nile-wysiwyg-editor/ui/markdown-panel.ts +143 -0
- package/src/nile-wysiwyg-editor/ui/math-panel.ts +169 -0
- package/src/nile-wysiwyg-editor/ui/shortcut-help.ts +311 -0
- package/src/nile-wysiwyg-editor/ui/source-view.ts +119 -0
- package/src/nile-wysiwyg-editor/ui/special-chars.ts +209 -0
- package/src/nile-wysiwyg-editor/ui/suggest-list.ts +138 -0
- package/src/nile-wysiwyg-editor/ui/table-grid-picker.ts +173 -0
- package/src/nile-wysiwyg-editor/ui/table-menu.ts +109 -0
- package/vscode-html-custom-data.json +491 -1
- package/web-dev-server.config.mjs +6 -2
- package/dist/index-5fef1a0d.esm.js +0 -1
- package/dist/index-8f38fae3.cjs.js +0 -2
- package/dist/index-8f38fae3.cjs.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands.cjs.js","sources":["../../../../../node_modules/prosemirror-commands/dist/index.js","../../../../../node_modules/prosemirror-history/dist/index.js","../../../../src/nile-wysiwyg-editor/engine/commands.ts","../../../../../node_modules/rope-sequence/dist/index.js"],"sourcesContent":["import { liftTarget, replaceStep, ReplaceStep, canJoin, joinPoint, canSplit, ReplaceAroundStep, findWrapping } from 'prosemirror-transform';\nimport { Slice, Fragment } from 'prosemirror-model';\nimport { NodeSelection, Selection, TextSelection, AllSelection, SelectionRange } from 'prosemirror-state';\n\n/**\nDelete the selection, if there is one.\n*/\nconst deleteSelection = (state, dispatch) => {\n if (state.selection.empty)\n return false;\n if (dispatch)\n dispatch(state.tr.deleteSelection().scrollIntoView());\n return true;\n};\nfunction atBlockStart(state, view) {\n let { $cursor } = state.selection;\n if (!$cursor || (view ? !view.endOfTextblock(\"backward\", state)\n : $cursor.parentOffset > 0))\n return null;\n return $cursor;\n}\n/**\nIf the selection is empty and at the start of a textblock, try to\nreduce the distance between that block and the one before it—if\nthere's a block directly before it that can be joined, join them.\nIf not, try to move the selected block closer to the next one in\nthe document structure by lifting it out of its parent or moving it\ninto a parent of the previous block. Will use the view for accurate\n(bidi-aware) start-of-textblock detection if given.\n*/\nconst joinBackward = (state, dispatch, view) => {\n let $cursor = atBlockStart(state, view);\n if (!$cursor)\n return false;\n let $cut = findCutBefore($cursor);\n // If there is no node before this, try to lift\n if (!$cut) {\n let range = $cursor.blockRange(), target = range && liftTarget(range);\n if (target == null)\n return false;\n if (dispatch)\n dispatch(state.tr.lift(range, target).scrollIntoView());\n return true;\n }\n let before = $cut.nodeBefore;\n // Apply the joining algorithm\n if (deleteBarrier(state, $cut, dispatch, -1))\n return true;\n // If the node below has no content and the node above is\n // selectable, delete the node below and select the one above.\n if ($cursor.parent.content.size == 0 &&\n (textblockAt(before, \"end\") || NodeSelection.isSelectable(before))) {\n for (let depth = $cursor.depth;; depth--) {\n let delStep = replaceStep(state.doc, $cursor.before(depth), $cursor.after(depth), Slice.empty);\n if (delStep && delStep.slice.size < delStep.to - delStep.from) {\n if (dispatch) {\n let tr = state.tr.step(delStep);\n tr.setSelection(textblockAt(before, \"end\")\n ? Selection.findFrom(tr.doc.resolve(tr.mapping.map($cut.pos, -1)), -1)\n : NodeSelection.create(tr.doc, $cut.pos - before.nodeSize));\n dispatch(tr.scrollIntoView());\n }\n return true;\n }\n if (depth == 1 || $cursor.node(depth - 1).childCount > 1)\n break;\n }\n }\n // If the node before is an atom, delete it\n if (before.isAtom && $cut.depth == $cursor.depth - 1) {\n if (dispatch)\n dispatch(state.tr.delete($cut.pos - before.nodeSize, $cut.pos).scrollIntoView());\n return true;\n }\n return false;\n};\n/**\nA more limited form of [`joinBackward`](https://prosemirror.net/docs/ref/#commands.joinBackward)\nthat only tries to join the current textblock to the one before\nit, if the cursor is at the start of a textblock.\n*/\nconst joinTextblockBackward = (state, dispatch, view) => {\n let $cursor = atBlockStart(state, view);\n if (!$cursor)\n return false;\n let $cut = findCutBefore($cursor);\n return $cut ? joinTextblocksAround(state, $cut, dispatch) : false;\n};\n/**\nA more limited form of [`joinForward`](https://prosemirror.net/docs/ref/#commands.joinForward)\nthat only tries to join the current textblock to the one after\nit, if the cursor is at the end of a textblock.\n*/\nconst joinTextblockForward = (state, dispatch, view) => {\n let $cursor = atBlockEnd(state, view);\n if (!$cursor)\n return false;\n let $cut = findCutAfter($cursor);\n return $cut ? joinTextblocksAround(state, $cut, dispatch) : false;\n};\nfunction joinTextblocksAround(state, $cut, dispatch) {\n let before = $cut.nodeBefore, beforeText = before, beforePos = $cut.pos - 1;\n for (; !beforeText.isTextblock; beforePos--) {\n if (beforeText.type.spec.isolating)\n return false;\n let child = beforeText.lastChild;\n if (!child)\n return false;\n beforeText = child;\n }\n let after = $cut.nodeAfter, afterText = after, afterPos = $cut.pos + 1;\n for (; !afterText.isTextblock; afterPos++) {\n if (afterText.type.spec.isolating)\n return false;\n let child = afterText.firstChild;\n if (!child)\n return false;\n afterText = child;\n }\n let step = replaceStep(state.doc, beforePos, afterPos, Slice.empty);\n if (!step || step.from != beforePos ||\n step instanceof ReplaceStep && step.slice.size >= afterPos - beforePos)\n return false;\n if (dispatch) {\n let tr = state.tr.step(step);\n tr.setSelection(TextSelection.create(tr.doc, beforePos));\n dispatch(tr.scrollIntoView());\n }\n return true;\n}\nfunction textblockAt(node, side, only = false) {\n for (let scan = node; scan; scan = (side == \"start\" ? scan.firstChild : scan.lastChild)) {\n if (scan.isTextblock)\n return true;\n if (only && scan.childCount != 1)\n return false;\n }\n return false;\n}\n/**\nWhen the selection is empty and at the start of a textblock, select\nthe node before that textblock, if possible. This is intended to be\nbound to keys like backspace, after\n[`joinBackward`](https://prosemirror.net/docs/ref/#commands.joinBackward) or other deleting\ncommands, as a fall-back behavior when the schema doesn't allow\ndeletion at the selected point.\n*/\nconst selectNodeBackward = (state, dispatch, view) => {\n let { $head, empty } = state.selection, $cut = $head;\n if (!empty)\n return false;\n if ($head.parent.isTextblock) {\n if (view ? !view.endOfTextblock(\"backward\", state) : $head.parentOffset > 0)\n return false;\n $cut = findCutBefore($head);\n }\n let node = $cut && $cut.nodeBefore;\n if (!node || !NodeSelection.isSelectable(node))\n return false;\n if (dispatch)\n dispatch(state.tr.setSelection(NodeSelection.create(state.doc, $cut.pos - node.nodeSize)).scrollIntoView());\n return true;\n};\nfunction findCutBefore($pos) {\n if (!$pos.parent.type.spec.isolating)\n for (let i = $pos.depth - 1; i >= 0; i--) {\n if ($pos.index(i) > 0)\n return $pos.doc.resolve($pos.before(i + 1));\n if ($pos.node(i).type.spec.isolating)\n break;\n }\n return null;\n}\nfunction atBlockEnd(state, view) {\n let { $cursor } = state.selection;\n if (!$cursor || (view ? !view.endOfTextblock(\"forward\", state)\n : $cursor.parentOffset < $cursor.parent.content.size))\n return null;\n return $cursor;\n}\n/**\nIf the selection is empty and the cursor is at the end of a\ntextblock, try to reduce or remove the boundary between that block\nand the one after it, either by joining them or by moving the other\nblock closer to this one in the tree structure. Will use the view\nfor accurate start-of-textblock detection if given.\n*/\nconst joinForward = (state, dispatch, view) => {\n let $cursor = atBlockEnd(state, view);\n if (!$cursor)\n return false;\n let $cut = findCutAfter($cursor);\n // If there is no node after this, there's nothing to do\n if (!$cut)\n return false;\n let after = $cut.nodeAfter;\n // Try the joining algorithm\n if (deleteBarrier(state, $cut, dispatch, 1))\n return true;\n // If the node above has no content and the node below is\n // selectable, delete the node above and select the one below.\n if ($cursor.parent.content.size == 0 &&\n (textblockAt(after, \"start\") || NodeSelection.isSelectable(after))) {\n let delStep = replaceStep(state.doc, $cursor.before(), $cursor.after(), Slice.empty);\n if (delStep && delStep.slice.size < delStep.to - delStep.from) {\n if (dispatch) {\n let tr = state.tr.step(delStep);\n tr.setSelection(textblockAt(after, \"start\") ? Selection.findFrom(tr.doc.resolve(tr.mapping.map($cut.pos)), 1)\n : NodeSelection.create(tr.doc, tr.mapping.map($cut.pos)));\n dispatch(tr.scrollIntoView());\n }\n return true;\n }\n }\n // If the next node is an atom, delete it\n if (after.isAtom && $cut.depth == $cursor.depth - 1) {\n if (dispatch)\n dispatch(state.tr.delete($cut.pos, $cut.pos + after.nodeSize).scrollIntoView());\n return true;\n }\n return false;\n};\n/**\nWhen the selection is empty and at the end of a textblock, select\nthe node coming after that textblock, if possible. This is intended\nto be bound to keys like delete, after\n[`joinForward`](https://prosemirror.net/docs/ref/#commands.joinForward) and similar deleting\ncommands, to provide a fall-back behavior when the schema doesn't\nallow deletion at the selected point.\n*/\nconst selectNodeForward = (state, dispatch, view) => {\n let { $head, empty } = state.selection, $cut = $head;\n if (!empty)\n return false;\n if ($head.parent.isTextblock) {\n if (view ? !view.endOfTextblock(\"forward\", state) : $head.parentOffset < $head.parent.content.size)\n return false;\n $cut = findCutAfter($head);\n }\n let node = $cut && $cut.nodeAfter;\n if (!node || !NodeSelection.isSelectable(node))\n return false;\n if (dispatch)\n dispatch(state.tr.setSelection(NodeSelection.create(state.doc, $cut.pos)).scrollIntoView());\n return true;\n};\nfunction findCutAfter($pos) {\n if (!$pos.parent.type.spec.isolating)\n for (let i = $pos.depth - 1; i >= 0; i--) {\n let parent = $pos.node(i);\n if ($pos.index(i) + 1 < parent.childCount)\n return $pos.doc.resolve($pos.after(i + 1));\n if (parent.type.spec.isolating)\n break;\n }\n return null;\n}\n/**\nJoin the selected block or, if there is a text selection, the\nclosest ancestor block of the selection that can be joined, with\nthe sibling above it.\n*/\nconst joinUp = (state, dispatch) => {\n let sel = state.selection, nodeSel = sel instanceof NodeSelection, point;\n if (nodeSel) {\n if (sel.node.isTextblock || !canJoin(state.doc, sel.from))\n return false;\n point = sel.from;\n }\n else {\n point = joinPoint(state.doc, sel.from, -1);\n if (point == null)\n return false;\n }\n if (dispatch) {\n let tr = state.tr.join(point);\n if (nodeSel)\n tr.setSelection(NodeSelection.create(tr.doc, point - state.doc.resolve(point).nodeBefore.nodeSize));\n dispatch(tr.scrollIntoView());\n }\n return true;\n};\n/**\nJoin the selected block, or the closest ancestor of the selection\nthat can be joined, with the sibling after it.\n*/\nconst joinDown = (state, dispatch) => {\n let sel = state.selection, point;\n if (sel instanceof NodeSelection) {\n if (sel.node.isTextblock || !canJoin(state.doc, sel.to))\n return false;\n point = sel.to;\n }\n else {\n point = joinPoint(state.doc, sel.to, 1);\n if (point == null)\n return false;\n }\n if (dispatch)\n dispatch(state.tr.join(point).scrollIntoView());\n return true;\n};\n/**\nLift the selected block, or the closest ancestor block of the\nselection that can be lifted, out of its parent node.\n*/\nconst lift = (state, dispatch) => {\n let { $from, $to } = state.selection;\n let range = $from.blockRange($to), target = range && liftTarget(range);\n if (target == null)\n return false;\n if (dispatch)\n dispatch(state.tr.lift(range, target).scrollIntoView());\n return true;\n};\n/**\nIf the selection is in a node whose type has a truthy\n[`code`](https://prosemirror.net/docs/ref/#model.NodeSpec.code) property in its spec, replace the\nselection with a newline character.\n*/\nconst newlineInCode = (state, dispatch) => {\n let { $head, $anchor } = state.selection;\n if (!$head.parent.type.spec.code || !$head.sameParent($anchor))\n return false;\n if (dispatch)\n dispatch(state.tr.insertText(\"\\n\").scrollIntoView());\n return true;\n};\nfunction defaultBlockAt(match) {\n for (let i = 0; i < match.edgeCount; i++) {\n let { type } = match.edge(i);\n if (type.isTextblock && !type.hasRequiredAttrs())\n return type;\n }\n return null;\n}\n/**\nWhen the selection is in a node with a truthy\n[`code`](https://prosemirror.net/docs/ref/#model.NodeSpec.code) property in its spec, create a\ndefault block after the code block, and move the cursor there.\n*/\nconst exitCode = (state, dispatch) => {\n let { $head, $anchor } = state.selection;\n if (!$head.parent.type.spec.code || !$head.sameParent($anchor))\n return false;\n let above = $head.node(-1), after = $head.indexAfter(-1), type = defaultBlockAt(above.contentMatchAt(after));\n if (!type || !above.canReplaceWith(after, after, type))\n return false;\n if (dispatch) {\n let pos = $head.after(), tr = state.tr.replaceWith(pos, pos, type.createAndFill());\n tr.setSelection(Selection.near(tr.doc.resolve(pos), 1));\n dispatch(tr.scrollIntoView());\n }\n return true;\n};\n/**\nIf a block node is selected, create an empty paragraph before (if\nit is its parent's first child) or after it.\n*/\nconst createParagraphNear = (state, dispatch) => {\n let sel = state.selection, { $from, $to } = sel;\n if (sel instanceof AllSelection || $from.parent.inlineContent || $to.parent.inlineContent)\n return false;\n let type = defaultBlockAt($to.parent.contentMatchAt($to.indexAfter()));\n if (!type || !type.isTextblock)\n return false;\n if (dispatch) {\n let side = (!$from.parentOffset && $to.index() < $to.parent.childCount ? $from : $to).pos;\n let tr = state.tr.insert(side, type.createAndFill());\n tr.setSelection(TextSelection.create(tr.doc, side + 1));\n dispatch(tr.scrollIntoView());\n }\n return true;\n};\n/**\nIf the cursor is in an empty textblock that can be lifted, lift the\nblock.\n*/\nconst liftEmptyBlock = (state, dispatch) => {\n let { $cursor } = state.selection;\n if (!$cursor || $cursor.parent.content.size)\n return false;\n if ($cursor.depth > 1 && $cursor.after() != $cursor.end(-1)) {\n let before = $cursor.before();\n if (canSplit(state.doc, before)) {\n if (dispatch)\n dispatch(state.tr.split(before).scrollIntoView());\n return true;\n }\n }\n let range = $cursor.blockRange(), target = range && liftTarget(range);\n if (target == null)\n return false;\n if (dispatch)\n dispatch(state.tr.lift(range, target).scrollIntoView());\n return true;\n};\n/**\nCreate a variant of [`splitBlock`](https://prosemirror.net/docs/ref/#commands.splitBlock) that uses\na custom function to determine the type of the newly split off block.\n*/\nfunction splitBlockAs(splitNode) {\n return (state, dispatch) => {\n let { $from, $to } = state.selection;\n if (state.selection instanceof NodeSelection && state.selection.node.isBlock) {\n if (!$from.parentOffset || !canSplit(state.doc, $from.pos))\n return false;\n if (dispatch)\n dispatch(state.tr.split($from.pos).scrollIntoView());\n return true;\n }\n if (!$from.depth)\n return false;\n let types = [];\n let splitDepth, deflt, atEnd = false, atStart = false;\n for (let d = $from.depth;; d--) {\n let node = $from.node(d);\n if (node.isBlock) {\n atEnd = $from.end(d) == $from.pos + ($from.depth - d);\n atStart = $from.start(d) == $from.pos - ($from.depth - d);\n deflt = defaultBlockAt($from.node(d - 1).contentMatchAt($from.indexAfter(d - 1)));\n let splitType = splitNode && splitNode($to.parent, atEnd, $from);\n types.unshift(splitType || (atEnd && deflt ? { type: deflt } : null));\n splitDepth = d;\n break;\n }\n else {\n if (d == 1)\n return false;\n types.unshift(null);\n }\n }\n let tr = state.tr;\n if (state.selection instanceof TextSelection || state.selection instanceof AllSelection)\n tr.deleteSelection();\n let splitPos = tr.mapping.map($from.pos);\n let can = canSplit(tr.doc, splitPos, types.length, types);\n if (!can) {\n types[0] = deflt ? { type: deflt } : null;\n can = canSplit(tr.doc, splitPos, types.length, types);\n }\n if (!can)\n return false;\n tr.split(splitPos, types.length, types);\n if (!atEnd && atStart && $from.node(splitDepth).type != deflt) {\n let first = tr.mapping.map($from.before(splitDepth)), $first = tr.doc.resolve(first);\n if (deflt && $from.node(splitDepth - 1).canReplaceWith($first.index(), $first.index() + 1, deflt))\n tr.setNodeMarkup(tr.mapping.map($from.before(splitDepth)), deflt);\n }\n if (dispatch)\n dispatch(tr.scrollIntoView());\n return true;\n };\n}\n/**\nSplit the parent block of the selection. If the selection is a text\nselection, also delete its content.\n*/\nconst splitBlock = splitBlockAs();\n/**\nActs like [`splitBlock`](https://prosemirror.net/docs/ref/#commands.splitBlock), but without\nresetting the set of active marks at the cursor.\n*/\nconst splitBlockKeepMarks = (state, dispatch) => {\n return splitBlock(state, dispatch && (tr => {\n let marks = state.storedMarks || (state.selection.$to.parentOffset && state.selection.$from.marks());\n if (marks)\n tr.ensureMarks(marks);\n dispatch(tr);\n }));\n};\n/**\nMove the selection to the node wrapping the current selection, if\nany. (Will not select the document node.)\n*/\nconst selectParentNode = (state, dispatch) => {\n let { $from, to } = state.selection, pos;\n let same = $from.sharedDepth(to);\n if (same == 0)\n return false;\n pos = $from.before(same);\n if (dispatch)\n dispatch(state.tr.setSelection(NodeSelection.create(state.doc, pos)));\n return true;\n};\n/**\nSelect the whole document.\n*/\nconst selectAll = (state, dispatch) => {\n if (dispatch)\n dispatch(state.tr.setSelection(new AllSelection(state.doc)));\n return true;\n};\nfunction joinMaybeClear(state, $pos, dispatch) {\n let before = $pos.nodeBefore, after = $pos.nodeAfter, index = $pos.index();\n if (!before || !after || !before.type.compatibleContent(after.type))\n return false;\n if (!before.content.size && $pos.parent.canReplace(index - 1, index)) {\n if (dispatch)\n dispatch(state.tr.delete($pos.pos - before.nodeSize, $pos.pos).scrollIntoView());\n return true;\n }\n if (!$pos.parent.canReplace(index, index + 1) || !(after.isTextblock || canJoin(state.doc, $pos.pos)))\n return false;\n if (dispatch)\n dispatch(state.tr.join($pos.pos).scrollIntoView());\n return true;\n}\nfunction deleteBarrier(state, $cut, dispatch, dir) {\n let before = $cut.nodeBefore, after = $cut.nodeAfter, conn, match;\n let isolated = before.type.spec.isolating || after.type.spec.isolating;\n if (!isolated && joinMaybeClear(state, $cut, dispatch))\n return true;\n let canDelAfter = !isolated && $cut.parent.canReplace($cut.index(), $cut.index() + 1);\n if (canDelAfter &&\n (conn = (match = before.contentMatchAt(before.childCount)).findWrapping(after.type)) &&\n match.matchType(conn[0] || after.type).validEnd) {\n if (dispatch) {\n let end = $cut.pos + after.nodeSize, wrap = Fragment.empty;\n for (let i = conn.length - 1; i >= 0; i--)\n wrap = Fragment.from(conn[i].create(null, wrap));\n wrap = Fragment.from(before.copy(wrap));\n let tr = state.tr.step(new ReplaceAroundStep($cut.pos - 1, end, $cut.pos, end, new Slice(wrap, 1, 0), conn.length, true));\n let $joinAt = tr.doc.resolve(end + 2 * conn.length);\n if ($joinAt.nodeAfter && $joinAt.nodeAfter.type == before.type &&\n canJoin(tr.doc, $joinAt.pos))\n tr.join($joinAt.pos);\n dispatch(tr.scrollIntoView());\n }\n return true;\n }\n let selAfter = after.type.spec.isolating || (dir > 0 && isolated) ? null : Selection.findFrom($cut, 1);\n let range = selAfter && selAfter.$from.blockRange(selAfter.$to), target = range && liftTarget(range);\n if (target != null && target >= $cut.depth) {\n if (dispatch)\n dispatch(state.tr.lift(range, target).scrollIntoView());\n return true;\n }\n if (canDelAfter && textblockAt(after, \"start\", true) && textblockAt(before, \"end\")) {\n let at = before, wrap = [];\n for (;;) {\n wrap.push(at);\n if (at.isTextblock)\n break;\n at = at.lastChild;\n }\n let afterText = after, afterDepth = 1;\n for (; !afterText.isTextblock; afterText = afterText.firstChild)\n afterDepth++;\n if (at.canReplace(at.childCount, at.childCount, afterText.content)) {\n if (dispatch) {\n let end = Fragment.empty;\n for (let i = wrap.length - 1; i >= 0; i--)\n end = Fragment.from(wrap[i].copy(end));\n let tr = state.tr.step(new ReplaceAroundStep($cut.pos - wrap.length, $cut.pos + after.nodeSize, $cut.pos + afterDepth, $cut.pos + after.nodeSize - afterDepth, new Slice(end, wrap.length, 0), 0, true));\n dispatch(tr.scrollIntoView());\n }\n return true;\n }\n }\n return false;\n}\nfunction selectTextblockSide(side) {\n return function (state, dispatch) {\n let sel = state.selection, $pos = side < 0 ? sel.$from : sel.$to;\n let depth = $pos.depth;\n while ($pos.node(depth).isInline) {\n if (!depth)\n return false;\n depth--;\n }\n if (!$pos.node(depth).isTextblock)\n return false;\n if (dispatch)\n dispatch(state.tr.setSelection(TextSelection.create(state.doc, side < 0 ? $pos.start(depth) : $pos.end(depth))));\n return true;\n };\n}\n/**\nMoves the cursor to the start of current text block.\n*/\nconst selectTextblockStart = selectTextblockSide(-1);\n/**\nMoves the cursor to the end of current text block.\n*/\nconst selectTextblockEnd = selectTextblockSide(1);\n// Parameterized commands\n/**\nWrap the selection in a node of the given type with the given\nattributes.\n*/\nfunction wrapIn(nodeType, attrs = null) {\n return function (state, dispatch) {\n let { $from, $to } = state.selection;\n let range = $from.blockRange($to), wrapping = range && findWrapping(range, nodeType, attrs);\n if (!wrapping)\n return false;\n if (dispatch)\n dispatch(state.tr.wrap(range, wrapping).scrollIntoView());\n return true;\n };\n}\n/**\nReturns a command that tries to set the selected textblocks to the\ngiven node type with the given attributes.\n*/\nfunction setBlockType(nodeType, attrs = null) {\n return function (state, dispatch) {\n let applicable = false;\n for (let i = 0; i < state.selection.ranges.length && !applicable; i++) {\n let { $from: { pos: from }, $to: { pos: to } } = state.selection.ranges[i];\n state.doc.nodesBetween(from, to, (node, pos) => {\n if (applicable)\n return false;\n if (!node.isTextblock || node.hasMarkup(nodeType, attrs))\n return;\n if (node.type == nodeType) {\n applicable = true;\n }\n else {\n let $pos = state.doc.resolve(pos), index = $pos.index();\n applicable = $pos.parent.canReplaceWith(index, index + 1, nodeType);\n }\n });\n }\n if (!applicable)\n return false;\n if (dispatch) {\n let tr = state.tr;\n for (let i = 0; i < state.selection.ranges.length; i++) {\n let { $from: { pos: from }, $to: { pos: to } } = state.selection.ranges[i];\n tr.setBlockType(from, to, nodeType, attrs);\n }\n dispatch(tr.scrollIntoView());\n }\n return true;\n };\n}\nfunction markApplies(doc, ranges, type, enterAtoms) {\n for (let i = 0; i < ranges.length; i++) {\n let { $from, $to } = ranges[i];\n let can = $from.depth == 0 ? doc.inlineContent && doc.type.allowsMarkType(type) : false;\n doc.nodesBetween($from.pos, $to.pos, (node, pos) => {\n if (can || !enterAtoms && node.isAtom && node.isInline && pos >= $from.pos && pos + node.nodeSize <= $to.pos)\n return false;\n can = node.inlineContent && node.type.allowsMarkType(type);\n });\n if (can)\n return true;\n }\n return false;\n}\nfunction removeInlineAtoms(ranges) {\n let result = [];\n for (let i = 0; i < ranges.length; i++) {\n let { $from, $to } = ranges[i];\n $from.doc.nodesBetween($from.pos, $to.pos, (node, pos) => {\n if (node.isAtom && node.content.size && node.isInline && pos >= $from.pos && pos + node.nodeSize <= $to.pos) {\n if (pos + 1 > $from.pos)\n result.push(new SelectionRange($from, $from.doc.resolve(pos + 1)));\n $from = $from.doc.resolve(pos + 1 + node.content.size);\n return false;\n }\n });\n if ($from.pos < $to.pos)\n result.push(new SelectionRange($from, $to));\n }\n return result;\n}\n/**\nCreate a command function that toggles the given mark with the\ngiven attributes. Will return `false` when the current selection\ndoesn't support that mark. This will remove the mark if any marks\nof that type exist in the selection, or add it otherwise. If the\nselection is empty, this applies to the [stored\nmarks](https://prosemirror.net/docs/ref/#state.EditorState.storedMarks) instead of a range of the\ndocument.\n*/\nfunction toggleMark(markType, attrs = null, options) {\n let removeWhenPresent = (options && options.removeWhenPresent) !== false;\n let enterAtoms = (options && options.enterInlineAtoms) !== false;\n let dropSpace = !(options && options.includeWhitespace);\n return function (state, dispatch) {\n let { empty, $cursor, ranges } = state.selection;\n if ((empty && !$cursor) || !markApplies(state.doc, ranges, markType, enterAtoms))\n return false;\n if (dispatch) {\n if ($cursor) {\n if (markType.isInSet(state.storedMarks || $cursor.marks()))\n dispatch(state.tr.removeStoredMark(markType));\n else\n dispatch(state.tr.addStoredMark(markType.create(attrs)));\n }\n else {\n let add, tr = state.tr;\n if (!enterAtoms)\n ranges = removeInlineAtoms(ranges);\n if (removeWhenPresent) {\n add = !ranges.some(r => state.doc.rangeHasMark(r.$from.pos, r.$to.pos, markType));\n }\n else {\n add = !ranges.every(r => {\n let missing = false;\n tr.doc.nodesBetween(r.$from.pos, r.$to.pos, (node, pos, parent) => {\n if (missing)\n return false;\n missing = !markType.isInSet(node.marks) && !!parent && parent.type.allowsMarkType(markType) &&\n !(node.isText && /^\\s*$/.test(node.textBetween(Math.max(0, r.$from.pos - pos), Math.min(node.nodeSize, r.$to.pos - pos))));\n });\n return !missing;\n });\n }\n for (let i = 0; i < ranges.length; i++) {\n let { $from, $to } = ranges[i];\n if (!add) {\n tr.removeMark($from.pos, $to.pos, markType);\n }\n else {\n let from = $from.pos, to = $to.pos, start = $from.nodeAfter, end = $to.nodeBefore;\n let spaceStart = dropSpace && start && start.isText ? /^\\s*/.exec(start.text)[0].length : 0;\n let spaceEnd = dropSpace && end && end.isText ? /\\s*$/.exec(end.text)[0].length : 0;\n if (from + spaceStart < to) {\n from += spaceStart;\n to -= spaceEnd;\n }\n tr.addMark(from, to, markType.create(attrs));\n }\n }\n dispatch(tr.scrollIntoView());\n }\n }\n return true;\n };\n}\nfunction wrapDispatchForJoin(dispatch, isJoinable) {\n return (tr) => {\n if (!tr.isGeneric)\n return dispatch(tr);\n let ranges = [];\n for (let i = 0; i < tr.mapping.maps.length; i++) {\n let map = tr.mapping.maps[i];\n for (let j = 0; j < ranges.length; j++)\n ranges[j] = map.map(ranges[j]);\n map.forEach((_s, _e, from, to) => ranges.push(from, to));\n }\n // Figure out which joinable points exist inside those ranges,\n // by checking all node boundaries in their parent nodes.\n let joinable = [];\n for (let i = 0; i < ranges.length; i += 2) {\n let from = ranges[i], to = ranges[i + 1];\n let $from = tr.doc.resolve(from), depth = $from.sharedDepth(to), parent = $from.node(depth);\n for (let index = $from.indexAfter(depth), pos = $from.after(depth + 1); pos <= to; ++index) {\n let after = parent.maybeChild(index);\n if (!after)\n break;\n if (index && joinable.indexOf(pos) == -1) {\n let before = parent.child(index - 1);\n if (before.type == after.type && isJoinable(before, after))\n joinable.push(pos);\n }\n pos += after.nodeSize;\n }\n }\n // Join the joinable points\n joinable.sort((a, b) => a - b);\n for (let i = joinable.length - 1; i >= 0; i--) {\n if (canJoin(tr.doc, joinable[i]))\n tr.join(joinable[i]);\n }\n dispatch(tr);\n };\n}\n/**\nWrap a command so that, when it produces a transform that causes\ntwo joinable nodes to end up next to each other, those are joined.\nNodes are considered joinable when they are of the same type and\nwhen the `isJoinable` predicate returns true for them or, if an\narray of strings was passed, if their node type name is in that\narray.\n*/\nfunction autoJoin(command, isJoinable) {\n let canJoin = Array.isArray(isJoinable) ? (node) => isJoinable.indexOf(node.type.name) > -1\n : isJoinable;\n return (state, dispatch, view) => command(state, dispatch && wrapDispatchForJoin(dispatch, canJoin), view);\n}\n/**\nCombine a number of command functions into a single function (which\ncalls them one by one until one returns true).\n*/\nfunction chainCommands(...commands) {\n return function (state, dispatch, view) {\n for (let i = 0; i < commands.length; i++)\n if (commands[i](state, dispatch, view))\n return true;\n return false;\n };\n}\nlet backspace = chainCommands(deleteSelection, joinBackward, selectNodeBackward);\nlet del = chainCommands(deleteSelection, joinForward, selectNodeForward);\n/**\nA basic keymap containing bindings not specific to any schema.\nBinds the following keys (when multiple commands are listed, they\nare chained with [`chainCommands`](https://prosemirror.net/docs/ref/#commands.chainCommands)):\n\n* **Enter** to `newlineInCode`, `createParagraphNear`, `liftEmptyBlock`, `splitBlock`\n* **Mod-Enter** to `exitCode`\n* **Backspace** and **Mod-Backspace** to `deleteSelection`, `joinBackward`, `selectNodeBackward`\n* **Delete** and **Mod-Delete** to `deleteSelection`, `joinForward`, `selectNodeForward`\n* **Mod-Delete** to `deleteSelection`, `joinForward`, `selectNodeForward`\n* **Mod-a** to `selectAll`\n*/\nconst pcBaseKeymap = {\n \"Enter\": chainCommands(newlineInCode, createParagraphNear, liftEmptyBlock, splitBlock),\n \"Mod-Enter\": exitCode,\n \"Backspace\": backspace,\n \"Mod-Backspace\": backspace,\n \"Shift-Backspace\": backspace,\n \"Delete\": del,\n \"Mod-Delete\": del,\n \"Mod-a\": selectAll\n};\n/**\nA copy of `pcBaseKeymap` that also binds **Ctrl-h** like Backspace,\n**Ctrl-d** like Delete, **Alt-Backspace** like Ctrl-Backspace, and\n**Ctrl-Alt-Backspace**, **Alt-Delete**, and **Alt-d** like\nCtrl-Delete.\n*/\nconst macBaseKeymap = {\n \"Ctrl-h\": pcBaseKeymap[\"Backspace\"],\n \"Alt-Backspace\": pcBaseKeymap[\"Mod-Backspace\"],\n \"Ctrl-d\": pcBaseKeymap[\"Delete\"],\n \"Ctrl-Alt-Backspace\": pcBaseKeymap[\"Mod-Delete\"],\n \"Alt-Delete\": pcBaseKeymap[\"Mod-Delete\"],\n \"Alt-d\": pcBaseKeymap[\"Mod-Delete\"],\n \"Ctrl-a\": selectTextblockStart,\n \"Ctrl-e\": selectTextblockEnd\n};\nfor (let key in pcBaseKeymap)\n macBaseKeymap[key] = pcBaseKeymap[key];\nconst mac = typeof navigator != \"undefined\" ? /Mac|iP(hone|[oa]d)/.test(navigator.platform)\n // @ts-ignore\n : typeof os != \"undefined\" && os.platform ? os.platform() == \"darwin\" : false;\n/**\nDepending on the detected platform, this will hold\n[`pcBasekeymap`](https://prosemirror.net/docs/ref/#commands.pcBaseKeymap) or\n[`macBaseKeymap`](https://prosemirror.net/docs/ref/#commands.macBaseKeymap).\n*/\nconst baseKeymap = mac ? macBaseKeymap : pcBaseKeymap;\n\nexport { autoJoin, baseKeymap, chainCommands, createParagraphNear, deleteSelection, exitCode, joinBackward, joinDown, joinForward, joinTextblockBackward, joinTextblockForward, joinUp, lift, liftEmptyBlock, macBaseKeymap, newlineInCode, pcBaseKeymap, selectAll, selectNodeBackward, selectNodeForward, selectParentNode, selectTextblockEnd, selectTextblockStart, setBlockType, splitBlock, splitBlockAs, splitBlockKeepMarks, toggleMark, wrapIn };\n","import RopeSequence from 'rope-sequence';\nimport { Mapping } from 'prosemirror-transform';\nimport { PluginKey, Plugin } from 'prosemirror-state';\n\n// ProseMirror's history isn't simply a way to roll back to a previous\n// state, because ProseMirror supports applying changes without adding\n// them to the history (for example during collaboration).\n//\n// To this end, each 'Branch' (one for the undo history and one for\n// the redo history) keeps an array of 'Items', which can optionally\n// hold a step (an actual undoable change), and always hold a position\n// map (which is needed to move changes below them to apply to the\n// current document).\n//\n// An item that has both a step and a selection bookmark is the start\n// of an 'event' — a group of changes that will be undone or redone at\n// once. (It stores only the bookmark, since that way we don't have to\n// provide a document until the selection is actually applied, which\n// is useful when compressing.)\n// Used to schedule history compression\nconst max_empty_items = 500;\nclass Branch {\n constructor(items, eventCount) {\n this.items = items;\n this.eventCount = eventCount;\n }\n // Pop the latest event off the branch's history and apply it\n // to a document transform.\n popEvent(state, preserveItems) {\n if (this.eventCount == 0)\n return null;\n let end = this.items.length;\n for (;; end--) {\n let next = this.items.get(end - 1);\n if (next.selection) {\n --end;\n break;\n }\n }\n let remap, mapFrom;\n if (preserveItems) {\n remap = this.remapping(end, this.items.length);\n mapFrom = remap.maps.length;\n }\n let transform = state.tr;\n let selection, remaining;\n let addAfter = [], addBefore = [];\n this.items.forEach((item, i) => {\n if (!item.step) {\n if (!remap) {\n remap = this.remapping(end, i + 1);\n mapFrom = remap.maps.length;\n }\n mapFrom--;\n addBefore.push(item);\n return;\n }\n if (remap) {\n addBefore.push(new Item(item.map));\n let step = item.step.map(remap.slice(mapFrom)), map;\n if (step && transform.maybeStep(step).doc) {\n map = transform.mapping.maps[transform.mapping.maps.length - 1];\n addAfter.push(new Item(map, undefined, undefined, addAfter.length + addBefore.length));\n }\n mapFrom--;\n if (map)\n remap.appendMap(map, mapFrom);\n }\n else {\n transform.maybeStep(item.step);\n }\n if (item.selection) {\n selection = remap ? item.selection.map(remap.slice(mapFrom)) : item.selection;\n remaining = new Branch(this.items.slice(0, end).append(addBefore.reverse().concat(addAfter)), this.eventCount - 1);\n return false;\n }\n }, this.items.length, 0);\n return { remaining: remaining, transform, selection: selection };\n }\n // Create a new branch with the given transform added.\n addTransform(transform, selection, histOptions, preserveItems) {\n let newItems = [], eventCount = this.eventCount;\n let oldItems = this.items, lastItem = !preserveItems && oldItems.length ? oldItems.get(oldItems.length - 1) : null;\n for (let i = 0; i < transform.steps.length; i++) {\n let step = transform.steps[i].invert(transform.docs[i]);\n let item = new Item(transform.mapping.maps[i], step, selection), merged;\n if (merged = lastItem && lastItem.merge(item)) {\n item = merged;\n if (i)\n newItems.pop();\n else\n oldItems = oldItems.slice(0, oldItems.length - 1);\n }\n newItems.push(item);\n if (selection) {\n eventCount++;\n selection = undefined;\n }\n if (!preserveItems)\n lastItem = item;\n }\n let overflow = eventCount - histOptions.depth;\n if (overflow > DEPTH_OVERFLOW) {\n oldItems = cutOffEvents(oldItems, overflow);\n eventCount -= overflow;\n }\n return new Branch(oldItems.append(newItems), eventCount);\n }\n remapping(from, to) {\n let maps = new Mapping;\n this.items.forEach((item, i) => {\n let mirrorPos = item.mirrorOffset != null && i - item.mirrorOffset >= from\n ? maps.maps.length - item.mirrorOffset : undefined;\n maps.appendMap(item.map, mirrorPos);\n }, from, to);\n return maps;\n }\n addMaps(array) {\n if (this.eventCount == 0)\n return this;\n return new Branch(this.items.append(array.map(map => new Item(map))), this.eventCount);\n }\n // When the collab module receives remote changes, the history has\n // to know about those, so that it can adjust the steps that were\n // rebased on top of the remote changes, and include the position\n // maps for the remote changes in its array of items.\n rebased(rebasedTransform, rebasedCount) {\n if (!this.eventCount)\n return this;\n let rebasedItems = [], start = Math.max(0, this.items.length - rebasedCount);\n let mapping = rebasedTransform.mapping;\n let newUntil = rebasedTransform.steps.length;\n let eventCount = this.eventCount;\n this.items.forEach(item => { if (item.selection)\n eventCount--; }, start);\n let iRebased = rebasedCount;\n this.items.forEach(item => {\n let pos = mapping.getMirror(--iRebased);\n if (pos == null)\n return;\n newUntil = Math.min(newUntil, pos);\n let map = mapping.maps[pos];\n if (item.step) {\n let step = rebasedTransform.steps[pos].invert(rebasedTransform.docs[pos]);\n let selection = item.selection && item.selection.map(mapping.slice(iRebased + 1, pos));\n if (selection)\n eventCount++;\n rebasedItems.push(new Item(map, step, selection));\n }\n else {\n rebasedItems.push(new Item(map));\n }\n }, start);\n let newMaps = [];\n for (let i = rebasedCount; i < newUntil; i++)\n newMaps.push(new Item(mapping.maps[i]));\n let items = this.items.slice(0, start).append(newMaps).append(rebasedItems);\n let branch = new Branch(items, eventCount);\n if (branch.emptyItemCount() > max_empty_items)\n branch = branch.compress(this.items.length - rebasedItems.length);\n return branch;\n }\n emptyItemCount() {\n let count = 0;\n this.items.forEach(item => { if (!item.step)\n count++; });\n return count;\n }\n // Compressing a branch means rewriting it to push the air (map-only\n // items) out. During collaboration, these naturally accumulate\n // because each remote change adds one. The `upto` argument is used\n // to ensure that only the items below a given level are compressed,\n // because `rebased` relies on a clean, untouched set of items in\n // order to associate old items with rebased steps.\n compress(upto = this.items.length) {\n let remap = this.remapping(0, upto), mapFrom = remap.maps.length;\n let items = [], events = 0;\n this.items.forEach((item, i) => {\n if (i >= upto) {\n items.push(item);\n if (item.selection)\n events++;\n }\n else if (item.step) {\n let step = item.step.map(remap.slice(mapFrom)), map = step && step.getMap();\n mapFrom--;\n if (map)\n remap.appendMap(map, mapFrom);\n if (step) {\n let selection = item.selection && item.selection.map(remap.slice(mapFrom));\n if (selection)\n events++;\n let newItem = new Item(map.invert(), step, selection), merged, last = items.length - 1;\n if (merged = items.length && items[last].merge(newItem))\n items[last] = merged;\n else\n items.push(newItem);\n }\n }\n else if (item.map) {\n mapFrom--;\n }\n }, this.items.length, 0);\n return new Branch(RopeSequence.from(items.reverse()), events);\n }\n}\nBranch.empty = new Branch(RopeSequence.empty, 0);\nfunction cutOffEvents(items, n) {\n let cutPoint;\n items.forEach((item, i) => {\n if (item.selection && (n-- == 0)) {\n cutPoint = i;\n return false;\n }\n });\n return items.slice(cutPoint);\n}\nclass Item {\n constructor(\n // The (forward) step map for this item.\n map, \n // The inverted step\n step, \n // If this is non-null, this item is the start of a group, and\n // this selection is the starting selection for the group (the one\n // that was active before the first step was applied)\n selection, \n // If this item is the inverse of a previous mapping on the stack,\n // this points at the inverse's offset\n mirrorOffset) {\n this.map = map;\n this.step = step;\n this.selection = selection;\n this.mirrorOffset = mirrorOffset;\n }\n merge(other) {\n if (this.step && other.step && !other.selection) {\n let step = other.step.merge(this.step);\n if (step)\n return new Item(step.getMap().invert(), step, this.selection);\n }\n }\n}\n// The value of the state field that tracks undo/redo history for that\n// state. Will be stored in the plugin state when the history plugin\n// is active.\nclass HistoryState {\n constructor(done, undone, prevRanges, prevTime, prevComposition) {\n this.done = done;\n this.undone = undone;\n this.prevRanges = prevRanges;\n this.prevTime = prevTime;\n this.prevComposition = prevComposition;\n }\n}\nconst DEPTH_OVERFLOW = 20;\n// Record a transformation in undo history.\nfunction applyTransaction(history, state, tr, options) {\n let historyTr = tr.getMeta(historyKey), rebased;\n if (historyTr)\n return historyTr.historyState;\n if (tr.getMeta(closeHistoryKey))\n history = new HistoryState(history.done, history.undone, null, 0, -1);\n let appended = tr.getMeta(\"appendedTransaction\");\n if (tr.steps.length == 0) {\n return history;\n }\n else if (appended && appended.getMeta(historyKey)) {\n if (appended.getMeta(historyKey).redo)\n return new HistoryState(history.done.addTransform(tr, undefined, options, mustPreserveItems(state)), history.undone, rangesFor(tr.mapping.maps), history.prevTime, history.prevComposition);\n else\n return new HistoryState(history.done, history.undone.addTransform(tr, undefined, options, mustPreserveItems(state)), null, history.prevTime, history.prevComposition);\n }\n else if (tr.getMeta(\"addToHistory\") !== false && !(appended && appended.getMeta(\"addToHistory\") === false)) {\n // Group transforms that occur in quick succession into one event.\n let composition = tr.getMeta(\"composition\");\n let newGroup = history.prevTime == 0 ||\n (!appended && history.prevComposition != composition &&\n (history.prevTime < (tr.time || 0) - options.newGroupDelay || !isAdjacentTo(tr, history.prevRanges)));\n let prevRanges = appended ? mapRanges(history.prevRanges, tr.mapping) : rangesFor(tr.mapping.maps);\n return new HistoryState(history.done.addTransform(tr, newGroup ? state.selection.getBookmark() : undefined, options, mustPreserveItems(state)), Branch.empty, prevRanges, tr.time, composition == null ? history.prevComposition : composition);\n }\n else if (rebased = tr.getMeta(\"rebased\")) {\n // Used by the collab module to tell the history that some of its\n // content has been rebased.\n return new HistoryState(history.done.rebased(tr, rebased), history.undone.rebased(tr, rebased), mapRanges(history.prevRanges, tr.mapping), history.prevTime, history.prevComposition);\n }\n else {\n return new HistoryState(history.done.addMaps(tr.mapping.maps), history.undone.addMaps(tr.mapping.maps), mapRanges(history.prevRanges, tr.mapping), history.prevTime, history.prevComposition);\n }\n}\nfunction isAdjacentTo(transform, prevRanges) {\n if (!prevRanges)\n return false;\n if (!transform.docChanged)\n return true;\n let adjacent = false;\n transform.mapping.maps[0].forEach((start, end) => {\n for (let i = 0; i < prevRanges.length; i += 2)\n if (start <= prevRanges[i + 1] && end >= prevRanges[i])\n adjacent = true;\n });\n return adjacent;\n}\nfunction rangesFor(maps) {\n let result = [];\n for (let i = maps.length - 1; i >= 0 && result.length == 0; i--)\n maps[i].forEach((_from, _to, from, to) => result.push(from, to));\n return result;\n}\nfunction mapRanges(ranges, mapping) {\n if (!ranges)\n return null;\n let result = [];\n for (let i = 0; i < ranges.length; i += 2) {\n let from = mapping.map(ranges[i], 1), to = mapping.map(ranges[i + 1], -1);\n if (from <= to)\n result.push(from, to);\n }\n return result;\n}\n// Apply the latest event from one branch to the document and shift the event\n// onto the other branch.\nfunction histTransaction(history, state, redo) {\n let preserveItems = mustPreserveItems(state);\n let histOptions = historyKey.get(state).spec.config;\n let pop = (redo ? history.undone : history.done).popEvent(state, preserveItems);\n if (!pop)\n return null;\n let selection = pop.selection.resolve(pop.transform.doc);\n let added = (redo ? history.done : history.undone).addTransform(pop.transform, state.selection.getBookmark(), histOptions, preserveItems);\n let newHist = new HistoryState(redo ? added : pop.remaining, redo ? pop.remaining : added, null, 0, -1);\n return pop.transform.setSelection(selection).setMeta(historyKey, { redo, historyState: newHist });\n}\nlet cachedPreserveItems = false, cachedPreserveItemsPlugins = null;\n// Check whether any plugin in the given state has a\n// `historyPreserveItems` property in its spec, in which case we must\n// preserve steps exactly as they came in, so that they can be\n// rebased.\nfunction mustPreserveItems(state) {\n let plugins = state.plugins;\n if (cachedPreserveItemsPlugins != plugins) {\n cachedPreserveItems = false;\n cachedPreserveItemsPlugins = plugins;\n for (let i = 0; i < plugins.length; i++)\n if (plugins[i].spec.historyPreserveItems) {\n cachedPreserveItems = true;\n break;\n }\n }\n return cachedPreserveItems;\n}\n/**\nSet a flag on the given transaction that will prevent further steps\nfrom being appended to an existing history event (so that they\nrequire a separate undo command to undo).\n*/\nfunction closeHistory(tr) {\n return tr.setMeta(closeHistoryKey, true);\n}\nconst historyKey = new PluginKey(\"history\");\nconst closeHistoryKey = new PluginKey(\"closeHistory\");\n/**\nReturns a plugin that enables the undo history for an editor. The\nplugin will track undo and redo stacks, which can be used with the\n[`undo`](https://prosemirror.net/docs/ref/#history.undo) and [`redo`](https://prosemirror.net/docs/ref/#history.redo) commands.\n\nYou can set an `\"addToHistory\"` [metadata\nproperty](https://prosemirror.net/docs/ref/#state.Transaction.setMeta) of `false` on a transaction\nto prevent it from being rolled back by undo.\n*/\nfunction history(config = {}) {\n config = { depth: config.depth || 100,\n newGroupDelay: config.newGroupDelay || 500 };\n return new Plugin({\n key: historyKey,\n state: {\n init() {\n return new HistoryState(Branch.empty, Branch.empty, null, 0, -1);\n },\n apply(tr, hist, state) {\n return applyTransaction(hist, state, tr, config);\n }\n },\n config,\n props: {\n handleDOMEvents: {\n beforeinput(view, e) {\n let inputType = e.inputType;\n let command = inputType == \"historyUndo\" ? undo : inputType == \"historyRedo\" ? redo : null;\n if (!command || !view.editable)\n return false;\n e.preventDefault();\n return command(view.state, view.dispatch);\n }\n }\n }\n });\n}\nfunction buildCommand(redo, scroll) {\n return (state, dispatch) => {\n let hist = historyKey.getState(state);\n if (!hist || (redo ? hist.undone : hist.done).eventCount == 0)\n return false;\n if (dispatch) {\n let tr = histTransaction(hist, state, redo);\n if (tr)\n dispatch(scroll ? tr.scrollIntoView() : tr);\n }\n return true;\n };\n}\n/**\nA command function that undoes the last change, if any.\n*/\nconst undo = buildCommand(false, true);\n/**\nA command function that redoes the last undone change, if any.\n*/\nconst redo = buildCommand(true, true);\n/**\nA command function that undoes the last change. Don't scroll the\nselection into view.\n*/\nconst undoNoScroll = buildCommand(false, false);\n/**\nA command function that redoes the last undone change. Don't\nscroll the selection into view.\n*/\nconst redoNoScroll = buildCommand(true, false);\n/**\nThe amount of undoable events available in a given state.\n*/\nfunction undoDepth(state) {\n let hist = historyKey.getState(state);\n return hist ? hist.done.eventCount : 0;\n}\n/**\nThe amount of redoable events available in a given editor state.\n*/\nfunction redoDepth(state) {\n let hist = historyKey.getState(state);\n return hist ? hist.undone.eventCount : 0;\n}\n/**\nReturns true if the given transaction was generated by the history\nplugin.\n*/\nfunction isHistoryTransaction(tr) {\n return tr.getMeta(historyKey) != null;\n}\n\nexport { closeHistory, history, isHistoryTransaction, redo, redoDepth, redoNoScroll, undo, undoDepth, undoNoScroll };\n","import { toggleMark, setBlockType, wrapIn, lift, chainCommands } from 'prosemirror-commands';\nimport { wrapInList, liftListItem, sinkListItem } from 'prosemirror-schema-list';\nimport { undo, redo } from 'prosemirror-history';\nimport {\n addRowBefore,\n addRowAfter,\n addColumnBefore,\n addColumnAfter,\n deleteRow,\n deleteColumn,\n deleteTable,\n mergeCells,\n splitCell,\n toggleHeaderRow,\n} from 'prosemirror-tables';\nimport { Command, EditorState, TextSelection, NodeSelection } from 'prosemirror-state';\nimport { MarkType, NodeType, ResolvedPos, Attrs, Schema, Node as PMNode, Mark } from 'prosemirror-model';\nimport type { Alignment } from './schema';\nimport { MAX_INDENT, MULTILEVEL_STYLE } from './schema';\n\nexport type CommandName =\n | 'bold'\n | 'italic'\n | 'underline'\n | 'strike'\n | 'subscript'\n | 'superscript'\n | 'code'\n | 'paragraph'\n | 'heading'\n | 'blockquote'\n | 'align'\n | 'lineHeight'\n | 'bulletList'\n | 'orderedList'\n | 'taskList'\n | 'indent'\n | 'outdent'\n | 'setListStyle'\n | 'setListStart'\n | 'toggleImageCaption'\n | 'setImageAlign'\n | 'setImageWidth'\n | 'deleteImage'\n | 'updateImage'\n | 'setEmbedAlign'\n | 'deleteEmbed'\n | 'link'\n | 'unlink'\n | 'insertBookmark'\n | 'textColor'\n | 'bgColor'\n | 'fontFamily'\n | 'fontSize'\n | 'horizontalRule'\n | 'clearFormatting'\n | 'undo'\n | 'redo'\n | 'codeBlock'\n | 'setCodeBlockLanguage'\n | 'insertEmbed'\n | 'insertImage'\n | 'insertTable'\n | 'addRowBefore'\n | 'addRowAfter'\n | 'addColumnBefore'\n | 'addColumnAfter'\n | 'deleteRow'\n | 'deleteColumn'\n | 'mergeCells'\n | 'splitCell'\n | 'toggleHeaderRow'\n | 'toggleLayoutTable'\n | 'deleteTable'\n | 'changeCase'\n | 'insertMergeField'\n | 'insertMath';\n\nexport interface CommandAttrs {\n level?: number;\n align?: Alignment | null;\n href?: string;\n title?: string;\n target?: string | null;\n color?: string | null;\n family?: string | null;\n size?: string | null;\n /** insertImage / updateImage */\n src?: string;\n alt?: string | null;\n /** insertImage / updateImage: figcaption text; empty/null = plain inline image */\n caption?: string | null;\n /** insertTable */\n rows?: number;\n cols?: number;\n withHeaderRow?: boolean;\n /** codeBlock */\n language?: string | null;\n /** insertEmbed */\n provider?: string | null;\n /** setListStyle: a CSS list-style-type, null = default */\n style?: string | null;\n /** setListStart */\n start?: number;\n /** setImageWidth: px, null = natural size */\n width?: number | null;\n /** lineHeight: unitless multiplier ('1.5'), null = default */\n lineHeight?: string | null;\n /** insertBookmark / insertMergeField: the anchor or field id */\n id?: string;\n /** changeCase: which transform to apply */\n textCase?: 'upper' | 'lower' | 'title' | 'sentence';\n /** insertMergeField: human-readable label */\n label?: string | null;\n /** insertMath: LaTeX source */\n latex?: string;\n /** insertMath: inline vs block presentation */\n mathDisplay?: 'inline' | 'block';\n}\n\n/** Finds the extent of a mark around a resolved position (cursor in a link). */\nexport function getMarkRange(\n $pos: ResolvedPos,\n markType: MarkType\n): { from: number; to: number } | null {\n const { parent, parentOffset } = $pos;\n const start = parent.childAfter(parentOffset);\n if (!start.node || !markType.isInSet(start.node.marks)) return null;\n\n let startIndex = start.index;\n let from = $pos.start() + start.offset;\n while (startIndex > 0 && markType.isInSet(parent.child(startIndex - 1).marks)) {\n startIndex -= 1;\n from -= parent.child(startIndex).nodeSize;\n }\n let endIndex = start.index + 1;\n let to = from + start.node.nodeSize;\n while (endIndex < parent.childCount && markType.isInSet(parent.child(endIndex).marks)) {\n to += parent.child(endIndex).nodeSize;\n endIndex += 1;\n }\n return { from, to };\n}\n\n/**\n * Sets (attrs given) or removes (attrs null) an attribute-carrying mark such\n * as text color or font size. On an empty selection the mark is stored so it\n * applies to the next typed text.\n */\nfunction setAttrMark(markType: MarkType, attrs: Attrs | null): Command {\n return (state, dispatch) => {\n const { empty, ranges, $from } = state.selection;\n if (empty && !(state.selection instanceof TextSelection && state.selection.$cursor)) {\n return false;\n }\n if (!empty && !state.selection.content().content.firstChild) return false;\n if (dispatch) {\n const tr = state.tr;\n if (empty) {\n tr.removeStoredMark(markType);\n if (attrs) tr.addStoredMark(markType.create(attrs));\n } else {\n for (const range of ranges) {\n tr.removeMark(range.$from.pos, range.$to.pos, markType);\n if (attrs) tr.addMark(range.$from.pos, range.$to.pos, markType.create(attrs));\n }\n tr.scrollIntoView();\n }\n dispatch(tr);\n }\n return true;\n };\n}\n\n/** Applies a link mark over the selection, or over the link under the cursor. */\nfunction setLink(markType: MarkType, attrs: CommandAttrs): Command {\n return (state, dispatch) => {\n if (!attrs.href) return false;\n const { empty, $from, from, to } = state.selection;\n let range = { from, to };\n if (empty) {\n const existing = getMarkRange($from, markType);\n if (!existing) return false;\n range = existing;\n }\n if (dispatch) {\n const tr = state.tr;\n tr.removeMark(range.from, range.to, markType);\n tr.addMark(\n range.from,\n range.to,\n markType.create({\n href: attrs.href,\n title: attrs.title ?? null,\n target: attrs.target ?? null,\n })\n );\n dispatch(tr.scrollIntoView());\n }\n return true;\n };\n}\n\n/** Removes the link mark from the selection or the link under the cursor. */\nfunction unsetLink(markType: MarkType): Command {\n return (state, dispatch) => {\n const { empty, $from, from, to } = state.selection;\n let range = { from, to };\n if (empty) {\n const existing = getMarkRange($from, markType);\n if (!existing) return false;\n range = existing;\n } else if (!state.doc.rangeHasMark(from, to, markType)) {\n return false;\n }\n if (dispatch) {\n dispatch(state.tr.removeMark(range.from, range.to, markType));\n }\n return true;\n };\n}\n\nfunction findParentList(\n state: EditorState\n): { node: import('prosemirror-model').Node; pos: number; depth: number } | null {\n const { $from } = state.selection;\n const { bullet_list: bullet, ordered_list: ordered, task_list: task } = state.schema.nodes;\n for (let depth = $from.depth; depth > 0; depth -= 1) {\n const node = $from.node(depth);\n if (node.type === bullet || node.type === ordered || node.type === task) {\n return { node, pos: $from.before(depth), depth };\n }\n }\n return null;\n}\n\n/** The item node type a given list type expects as children. */\nfunction itemTypeFor(listType: NodeType): NodeType {\n const { schema } = listType;\n return listType === schema.nodes.task_list\n ? schema.nodes.task_item\n : schema.nodes.list_item;\n}\n\n/**\n * Toggles a list: wraps when outside, lifts when already in the same list\n * type, converts in place when in another list type. Conversion also remaps\n * the item nodes (list_item <-> task_item) so the content stays valid.\n */\nfunction toggleList(listType: NodeType, itemType: NodeType): Command {\n return (state, dispatch, view) => {\n const parentList = findParentList(state);\n if (parentList) {\n if (parentList.node.type === listType) {\n return liftListItem(itemTypeFor(parentList.node.type))(state, dispatch, view);\n }\n if (dispatch) {\n // Build the fully converted list and swap it in one step — converting\n // the list node or its items separately fails content validation.\n const fromItem = itemTypeFor(parentList.node.type);\n const items: import('prosemirror-model').Node[] = [];\n parentList.node.forEach(child => {\n items.push(\n child.type === fromItem && fromItem !== itemType\n ? itemType.create(null, child.content, child.marks)\n : child\n );\n });\n const converted = listType.create(parentList.node.attrs, items);\n const tr = state.tr;\n const { from, to } = state.selection;\n tr.replaceWith(\n parentList.pos,\n parentList.pos + parentList.node.nodeSize,\n converted\n );\n // Item node sizes are identical, so the old positions stay valid.\n tr.setSelection(TextSelection.create(tr.doc, from, to));\n dispatch(tr);\n }\n return true;\n }\n return wrapInList(listType)(state, dispatch, view);\n };\n}\n\nfunction isInNode(state: EditorState, type: NodeType): boolean {\n const { $from } = state.selection;\n for (let depth = $from.depth; depth > 0; depth -= 1) {\n if ($from.node(depth).type === type) return true;\n }\n return false;\n}\n\n/** Wraps in blockquote, or lifts out when already inside one. */\nfunction toggleBlockquote(type: NodeType): Command {\n return (state, dispatch, view) => {\n if (isInNode(state, type)) return lift(state, dispatch, view);\n return wrapIn(type)(state, dispatch, view);\n };\n}\n\n/** Sets the `align` attribute on every textblock in the selection. */\nfunction setAlignment(align: Alignment | null): Command {\n return (state, dispatch) => {\n const { from, to } = state.selection;\n const targets: { pos: number; node: import('prosemirror-model').Node }[] = [];\n state.doc.nodesBetween(from, to, (node, pos) => {\n if (node.isTextblock && node.type.spec.attrs && 'align' in node.type.spec.attrs) {\n targets.push({ pos, node });\n }\n return true;\n });\n if (targets.length === 0) return false;\n if (dispatch) {\n const tr = state.tr;\n for (const { pos, node } of targets) {\n tr.setNodeMarkup(pos, undefined, { ...node.attrs, align });\n }\n dispatch(tr);\n }\n return true;\n };\n}\n\n/** Sets the `lineHeight` attribute on every textblock in the selection. */\nfunction setLineHeight(lineHeight: string | null): Command {\n return (state, dispatch) => {\n const { from, to } = state.selection;\n const targets: { pos: number; node: PMNode }[] = [];\n state.doc.nodesBetween(from, to, (node, pos) => {\n if (node.isTextblock && node.type.spec.attrs && 'lineHeight' in node.type.spec.attrs) {\n targets.push({ pos, node });\n }\n return true;\n });\n if (targets.length === 0) return false;\n if (dispatch) {\n const tr = state.tr;\n for (const { pos, node } of targets) {\n tr.setNodeMarkup(pos, undefined, { ...node.attrs, lineHeight });\n }\n dispatch(tr);\n }\n return true;\n };\n}\n\n/** Inserts a named in-text anchor (bookmark) at the selection. */\nfunction insertBookmark(schema: Schema, attrs: CommandAttrs): Command {\n return (state, dispatch) => {\n const id = attrs.id?.trim();\n if (!id) return false;\n if (dispatch) {\n const bookmark = schema.nodes.bookmark.create({ id });\n dispatch(state.tr.replaceSelectionWith(bookmark, false).scrollIntoView());\n }\n return true;\n };\n}\n\n/** Toggles the surrounding table between content and layout (presentation) mode. */\nfunction toggleLayoutTable(): Command {\n return (state, dispatch) => {\n const { $from } = state.selection;\n for (let depth = $from.depth; depth > 0; depth -= 1) {\n const node = $from.node(depth);\n if (node.type === state.schema.nodes.table) {\n if (dispatch) {\n dispatch(\n state.tr.setNodeMarkup($from.before(depth), undefined, {\n ...node.attrs,\n layout: !node.attrs.layout,\n })\n );\n }\n return true;\n }\n }\n return false;\n };\n}\n\nfunction insertHorizontalRule(type: NodeType): Command {\n return (state, dispatch) => {\n if (dispatch) {\n dispatch(state.tr.replaceSelectionWith(type.create()).scrollIntoView());\n }\n return true;\n };\n}\n\n/** Toggles between code block and paragraph. */\nfunction toggleCodeBlock(schema: Schema, language: string | null): Command {\n return (state, dispatch, view) => {\n const { $from } = state.selection;\n if ($from.parent.type === schema.nodes.code_block) {\n return setBlockType(schema.nodes.paragraph)(state, dispatch, view);\n }\n return setBlockType(schema.nodes.code_block, { language })(state, dispatch, view);\n };\n}\n\n/** Updates the language attr of the code block around the selection. */\nfunction setCodeBlockLanguage(schema: Schema, language: string | null): Command {\n return (state, dispatch) => {\n const { $from } = state.selection;\n for (let depth = $from.depth; depth > 0; depth -= 1) {\n if ($from.node(depth).type === schema.nodes.code_block) {\n if (dispatch) {\n dispatch(\n state.tr.setNodeMarkup($from.before(depth), undefined, { language })\n );\n }\n return true;\n }\n }\n return false;\n };\n}\n\n/** Inserts a provider embed. The src must already be an embed URL. */\nfunction insertEmbed(schema: Schema, attrs: CommandAttrs): Command {\n return (state, dispatch) => {\n if (!attrs.src) return false;\n const embed = schema.nodes.embed.create({\n src: attrs.src,\n provider: attrs.provider ?? null,\n title: attrs.title ?? null,\n });\n if (dispatch) {\n dispatch(state.tr.replaceSelectionWith(embed).scrollIntoView());\n }\n return true;\n };\n}\n\n/**\n * Inserts an image at the selection. With a non-empty caption it inserts a\n * captioned `figure` (like the alt/caption flow in toggleImageCaption);\n * otherwise a plain inline `image`.\n */\nfunction insertImage(schema: Schema, attrs: CommandAttrs): Command {\n return (state, dispatch) => {\n if (!attrs.src) return false;\n const src = attrs.src;\n const alt = attrs.alt ?? null;\n const title = attrs.title ?? null;\n const caption = attrs.caption != null ? String(attrs.caption).trim() : '';\n const node = caption\n ? schema.nodes.figure.create({ src, alt, title, width: null, align: null }, schema.text(caption))\n : schema.nodes.image.create({ src, alt, title });\n if (dispatch) {\n dispatch(state.tr.replaceSelectionWith(node).scrollIntoView());\n }\n return true;\n };\n}\n\n/**\n * Updates the selected image/figure's src, alt and caption in place. A\n * non-empty caption promotes an inline image to a captioned figure; an empty\n * caption demotes a figure back to an inline image. Width/alignment are kept.\n */\nfunction updateImage(schema: Schema, attrs: CommandAttrs): Command {\n return (state, dispatch) => {\n const info = selectedImageInfo(state);\n if (!info || !attrs.src) return false;\n const src = attrs.src;\n const alt = attrs.alt ?? null;\n const title = attrs.title ?? null;\n const caption = attrs.caption != null ? String(attrs.caption).trim() : '';\n const width = info.node.attrs.width ?? null;\n const align = info.isFigure ? info.node.attrs.align ?? null : null;\n if (dispatch) {\n const tr = state.tr;\n if (caption) {\n const figure = schema.nodes.figure.create(\n { src, alt, title, width, align },\n schema.text(caption)\n );\n if (info.isFigure) {\n tr.replaceWith(info.pos, info.pos + info.node.nodeSize, figure);\n tr.setSelection(NodeSelection.create(tr.doc, info.pos));\n } else {\n const $pos = state.doc.resolve(info.pos);\n const parent = $pos.parent;\n const replaceWhole = parent.childCount === 1 && parent.type.name === 'paragraph';\n const from = replaceWhole ? $pos.before() : info.pos;\n const to = replaceWhole ? $pos.after() : info.pos + info.node.nodeSize;\n tr.replaceWith(from, to, figure);\n tr.setSelection(NodeSelection.create(tr.doc, from));\n }\n } else if (info.isFigure) {\n const image = schema.nodes.image.create({ src, alt, title, width });\n tr.replaceWith(\n info.pos,\n info.pos + info.node.nodeSize,\n schema.nodes.paragraph.create(null, image)\n );\n tr.setSelection(NodeSelection.create(tr.doc, info.pos + 1));\n } else {\n tr.setNodeMarkup(info.pos, undefined, { src, alt, title, width });\n if (state.selection instanceof NodeSelection) {\n tr.setSelection(NodeSelection.create(tr.doc, info.pos));\n }\n }\n dispatch(tr.scrollIntoView());\n }\n return true;\n };\n}\n\n/** Inserts an empty rows × cols table, optionally with a header row. */\nfunction insertTable(schema: Schema, attrs: CommandAttrs): Command {\n const rows = Math.max(1, attrs.rows ?? 3);\n const cols = Math.max(1, attrs.cols ?? 3);\n const withHeaderRow = attrs.withHeaderRow ?? true;\n return (state, dispatch) => {\n const { table, table_row: tableRow, table_cell: cell, table_header: header } =\n schema.nodes;\n const rowNodes = [];\n for (let r = 0; r < rows; r += 1) {\n const cellType = r === 0 && withHeaderRow ? header : cell;\n const cells = [];\n for (let c = 0; c < cols; c += 1) {\n cells.push(cellType.createAndFill()!);\n }\n rowNodes.push(tableRow.create(null, cells));\n }\n if (dispatch) {\n dispatch(state.tr.replaceSelectionWith(table.create(null, rowNodes)).scrollIntoView());\n }\n return true;\n };\n}\n\n/**\n * Adjusts the `indent` attr on textblocks in the selection by ±1 step.\n * Returns false when nothing can change (e.g. outdent at level 0), letting\n * chained commands (blockquote lift) take over.\n */\nfunction changeBlockIndent(delta: number): Command {\n return (state, dispatch) => {\n const { from, to } = state.selection;\n const targets: { pos: number; node: PMNode; next: number }[] = [];\n state.doc.nodesBetween(from, to, (node, pos) => {\n if (node.isTextblock && node.type.spec.attrs && 'indent' in node.type.spec.attrs) {\n const current = (node.attrs.indent as number) ?? 0;\n const next = Math.max(0, Math.min(MAX_INDENT, current + delta));\n if (next !== current) targets.push({ pos, node, next });\n }\n return true;\n });\n if (targets.length === 0) return false;\n if (dispatch) {\n const tr = state.tr;\n for (const { pos, node, next } of targets) {\n tr.setNodeMarkup(pos, undefined, { ...node.attrs, indent: next });\n }\n dispatch(tr);\n }\n return true;\n };\n}\n\n/** Sets the marker style (list-style-type) on the surrounding list. */\nfunction setListStyle(style: string | null): Command {\n return (state, dispatch) => {\n const parentList = findParentList(state);\n if (!parentList) return false;\n let target = parentList;\n // Multilevel (legal) numbering covers the whole tree from the outermost\n // ordered list: apply it there, and clear it from wherever it sits.\n const { $from } = state.selection;\n const ordered = state.schema.nodes.ordered_list;\n for (let depth = 1; depth <= $from.depth; depth += 1) {\n const node = $from.node(depth);\n if (\n node.type === ordered &&\n (style === MULTILEVEL_STYLE || node.attrs.style === MULTILEVEL_STYLE)\n ) {\n target = { node, pos: $from.before(depth), depth };\n break;\n }\n }\n if (dispatch) {\n dispatch(\n state.tr.setNodeMarkup(target.pos, undefined, {\n ...target.node.attrs,\n style,\n })\n );\n }\n return true;\n };\n}\n\n/** Sets the start number of the surrounding ordered list. */\nfunction setListStart(start: number): Command {\n return (state, dispatch) => {\n const parentList = findParentList(state);\n if (!parentList || parentList.node.type !== state.schema.nodes.ordered_list) {\n return false;\n }\n if (dispatch) {\n dispatch(\n state.tr.setNodeMarkup(parentList.pos, undefined, {\n ...parentList.node.attrs,\n order: Math.max(1, Math.round(start)),\n })\n );\n }\n return true;\n };\n}\n\n/**\n * The image (inline `image` or block `figure`) the selection points at:\n * a NodeSelection on either type, or a cursor inside a figure's caption.\n */\nexport function selectedImageInfo(\n state: EditorState\n): { node: PMNode; pos: number; isFigure: boolean } | null {\n const { image, figure } = state.schema.nodes;\n const sel = state.selection;\n if (sel instanceof NodeSelection) {\n if (sel.node.type === image) return { node: sel.node, pos: sel.from, isFigure: false };\n if (sel.node.type === figure) return { node: sel.node, pos: sel.from, isFigure: true };\n }\n const { $from } = sel;\n for (let depth = $from.depth; depth > 0; depth -= 1) {\n if ($from.node(depth).type === figure) {\n return { node: $from.node(depth), pos: $from.before(depth), isFigure: true };\n }\n }\n return null;\n}\n\n/**\n * Toggles the caption: inline image → figure (caption prefilled from alt,\n * cursor placed inside), figure → plain inline image (caption dropped).\n */\nfunction toggleImageCaption(schema: Schema): Command {\n return (state, dispatch) => {\n const info = selectedImageInfo(state);\n if (!info) return false;\n if (dispatch) {\n const tr = state.tr;\n if (info.isFigure) {\n const { src, alt, title, width } = info.node.attrs;\n const image = schema.nodes.image.create({ src, alt, title, width });\n tr.replaceWith(\n info.pos,\n info.pos + info.node.nodeSize,\n schema.nodes.paragraph.create(null, image)\n );\n tr.setSelection(NodeSelection.create(tr.doc, info.pos + 1));\n } else {\n const { src, alt, title, width } = info.node.attrs;\n const caption = alt ? schema.text(alt) : null;\n const figure = schema.nodes.figure.create(\n { src, alt, title, width, align: null },\n caption\n );\n // An inline image sits inside a textblock; if it is the block's only\n // child, replace the whole block, otherwise just the image.\n const $pos = state.doc.resolve(info.pos);\n const parent = $pos.parent;\n const replaceWhole = parent.childCount === 1 && parent.type.name === 'paragraph';\n const from = replaceWhole ? $pos.before() : info.pos;\n const to = replaceWhole ? $pos.after() : info.pos + info.node.nodeSize;\n tr.replaceWith(from, to, figure);\n // Cursor into the caption (figure start + 1).\n tr.setSelection(TextSelection.create(tr.doc, from + 1 + figure.content.size));\n }\n dispatch(tr.scrollIntoView());\n }\n return true;\n };\n}\n\n/**\n * Aligns the selected image. Inline images are promoted to a figure first,\n * since alignment is a block concept.\n */\nfunction setImageAlign(schema: Schema, align: string | null): Command {\n return (state, dispatch) => {\n const info = selectedImageInfo(state);\n if (!info) return false;\n const clamped =\n align === 'left' || align === 'center' || align === 'right' ? align : null;\n if (dispatch) {\n const tr = state.tr;\n if (info.isFigure) {\n tr.setNodeMarkup(info.pos, undefined, { ...info.node.attrs, align: clamped });\n if (state.selection instanceof NodeSelection) {\n tr.setSelection(NodeSelection.create(tr.doc, info.pos));\n }\n } else {\n const { src, alt, title, width } = info.node.attrs;\n const figure = schema.nodes.figure.create({ src, alt, title, width, align: clamped });\n const $pos = state.doc.resolve(info.pos);\n const parent = $pos.parent;\n const replaceWhole = parent.childCount === 1 && parent.type.name === 'paragraph';\n const from = replaceWhole ? $pos.before() : info.pos;\n const to = replaceWhole ? $pos.after() : info.pos + info.node.nodeSize;\n tr.replaceWith(from, to, figure);\n tr.setSelection(NodeSelection.create(tr.doc, from));\n }\n dispatch(tr.scrollIntoView());\n }\n return true;\n };\n}\n\n/** Sets the display width (px) of the selected image or figure. */\nfunction setImageWidth(width: number | null): Command {\n return (state, dispatch) => {\n const info = selectedImageInfo(state);\n if (!info) return false;\n if (dispatch) {\n const tr = state.tr.setNodeMarkup(info.pos, undefined, {\n ...info.node.attrs,\n width: width && width > 0 ? Math.round(width) : null,\n });\n // setNodeMarkup degrades a NodeSelection — restore it so follow-up\n // image commands still see the node as selected.\n if (state.selection instanceof NodeSelection) {\n tr.setSelection(NodeSelection.create(tr.doc, info.pos));\n }\n dispatch(tr);\n }\n return true;\n };\n}\n\n/** Deletes the selected image or the figure around the cursor. */\nfunction deleteImage(): Command {\n return (state, dispatch) => {\n const info = selectedImageInfo(state);\n if (!info) return false;\n if (dispatch) {\n dispatch(\n state.tr.delete(info.pos, info.pos + info.node.nodeSize).scrollIntoView()\n );\n }\n return true;\n };\n}\n\n/** The selected embed node (a NodeSelection on an `embed`), or null. */\nexport function selectedEmbedInfo(\n state: EditorState\n): { node: PMNode; pos: number } | null {\n const sel = state.selection;\n if (sel instanceof NodeSelection && sel.node.type === state.schema.nodes.embed) {\n return { node: sel.node, pos: sel.from };\n }\n return null;\n}\n\n/** Aligns the selected video embed (left/center/right, or null to reset). */\nfunction setEmbedAlign(align: string | null): Command {\n return (state, dispatch) => {\n const info = selectedEmbedInfo(state);\n if (!info) return false;\n const clamped =\n align === 'left' || align === 'center' || align === 'right' ? align : null;\n if (dispatch) {\n const tr = state.tr.setNodeMarkup(info.pos, undefined, {\n ...info.node.attrs,\n align: clamped,\n });\n // setNodeMarkup degrades a NodeSelection — restore it so follow-up\n // align commands still see the embed as selected.\n tr.setSelection(NodeSelection.create(tr.doc, info.pos));\n dispatch(tr.scrollIntoView());\n }\n return true;\n };\n}\n\n/** Deletes the selected video embed. */\nfunction deleteEmbed(): Command {\n return (state, dispatch) => {\n const info = selectedEmbedInfo(state);\n if (!info) return false;\n if (dispatch) {\n dispatch(state.tr.delete(info.pos, info.pos + info.node.nodeSize).scrollIntoView());\n }\n return true;\n };\n}\n\n/** Strips all marks and stored marks from the selection. */\nfunction clearFormatting(): Command {\n return (state, dispatch) => {\n const { from, to, empty } = state.selection;\n if (dispatch) {\n const tr = state.tr;\n if (!empty) tr.removeMark(from, to, null);\n tr.setStoredMarks([]);\n // Also reset alignment and line height on touched textblocks.\n state.doc.nodesBetween(from, to, (node, pos) => {\n if (\n node.isTextblock &&\n node.type.spec.attrs &&\n 'align' in node.type.spec.attrs &&\n (node.attrs.align || node.attrs.lineHeight)\n ) {\n tr.setNodeMarkup(pos, undefined, { ...node.attrs, align: null, lineHeight: null });\n }\n return true;\n });\n dispatch(tr);\n }\n return true;\n };\n}\n\n/** Transforms a string per the case mode. Title/sentence are word-aware. */\nfunction transformCase(text: string, mode: 'upper' | 'lower' | 'title' | 'sentence'): string {\n switch (mode) {\n case 'upper':\n return text.toUpperCase();\n case 'lower':\n return text.toLowerCase();\n case 'title':\n // Capitalize the first letter of each word run.\n return text.toLowerCase().replace(/(^|\\s)(\\p{L})/gu, (_m, sep, ch) => sep + ch.toUpperCase());\n case 'sentence':\n // Capitalize the first letter after start or sentence-ending punctuation.\n return text\n .toLowerCase()\n .replace(/(^|[.!?]\\s+)(\\p{L})/gu, (_m, sep, ch) => sep + ch.toUpperCase());\n }\n}\n\n/**\n * Changes the case of the selected text, preserving marks. No-op on an empty\n * selection. Replacements run back-to-front so earlier positions stay valid.\n */\nfunction changeCase(mode: 'upper' | 'lower' | 'title' | 'sentence'): Command {\n return (state, dispatch) => {\n const { from, to, empty } = state.selection;\n if (empty) return false;\n const edits: { from: number; to: number; text: string; marks: readonly Mark[] }[] = [];\n state.doc.nodesBetween(from, to, (node, pos) => {\n if (!node.isText || !node.text) return;\n const start = Math.max(from, pos);\n const end = Math.min(to, pos + node.nodeSize);\n if (start >= end) return;\n const slice = node.text.slice(start - pos, end - pos);\n const next = transformCase(slice, mode);\n if (next !== slice) edits.push({ from: start, to: end, text: next, marks: node.marks });\n });\n if (edits.length === 0) return false;\n if (dispatch) {\n const tr = state.tr;\n for (const edit of edits.reverse()) {\n tr.replaceWith(edit.from, edit.to, state.schema.text(edit.text, edit.marks));\n }\n dispatch(tr.scrollIntoView());\n }\n return true;\n };\n}\n\n/** Inserts a merge-field atom at the selection. */\nfunction insertMergeField(schema: Schema, attrs: CommandAttrs): Command {\n return (state, dispatch) => {\n const type = schema.nodes.merge_field;\n if (!type || !attrs.id) return false;\n if (dispatch) {\n const node = type.create({ id: attrs.id, label: attrs.label ?? null });\n dispatch(state.tr.replaceSelectionWith(node).scrollIntoView());\n }\n return true;\n };\n}\n\n/** Inserts a math atom at the selection. */\nfunction insertMath(schema: Schema, attrs: CommandAttrs): Command {\n return (state, dispatch) => {\n const type = schema.nodes.math;\n const latex = (attrs.latex ?? '').trim();\n if (!type || !latex) return false;\n if (dispatch) {\n const node = type.create({ latex, display: attrs.mathDisplay ?? 'inline' });\n dispatch(state.tr.replaceSelectionWith(node).scrollIntoView());\n }\n return true;\n };\n}\n\n/**\n * Resolves a named command against a schema. Returns null for unknown names\n * so callers can treat the registry as data.\n */\nexport function getCommand(\n state: EditorState,\n name: CommandName,\n attrs: CommandAttrs = {}\n): Command | null {\n const { schema } = state;\n const { nodes, marks } = schema;\n switch (name) {\n case 'bold':\n return toggleMark(marks.bold);\n case 'italic':\n return toggleMark(marks.italic);\n case 'underline':\n return toggleMark(marks.underline);\n case 'strike':\n return toggleMark(marks.strike);\n case 'subscript':\n return toggleMark(marks.subscript);\n case 'superscript':\n return toggleMark(marks.superscript);\n case 'code':\n return toggleMark(marks.code);\n case 'paragraph':\n return setBlockType(nodes.paragraph);\n case 'heading':\n return setBlockType(nodes.heading, { level: attrs.level ?? 1 });\n case 'blockquote':\n return toggleBlockquote(nodes.blockquote);\n case 'align':\n return setAlignment(attrs.align ?? null);\n case 'lineHeight':\n return setLineHeight(attrs.lineHeight ?? null);\n case 'bulletList':\n return toggleList(nodes.bullet_list, nodes.list_item);\n case 'orderedList':\n return toggleList(nodes.ordered_list, nodes.list_item);\n case 'taskList':\n return toggleList(nodes.task_list, nodes.task_item);\n case 'indent':\n // List item sink first, then paragraph/heading margin indent.\n return chainCommands(\n sinkListItem(nodes.task_item),\n sinkListItem(nodes.list_item),\n changeBlockIndent(1)\n );\n case 'outdent':\n // List lift, then margin outdent, then blockquote lift.\n return chainCommands(\n liftListItem(nodes.task_item),\n liftListItem(nodes.list_item),\n changeBlockIndent(-1),\n lift\n );\n case 'setListStyle':\n return setListStyle(attrs.style ?? null);\n case 'setListStart':\n return setListStart(attrs.start ?? 1);\n case 'toggleImageCaption':\n return toggleImageCaption(schema);\n case 'setImageAlign':\n return setImageAlign(schema, (attrs.align as string | null) ?? null);\n case 'setImageWidth':\n return setImageWidth(attrs.width ?? null);\n case 'deleteImage':\n return deleteImage();\n case 'setEmbedAlign':\n return setEmbedAlign((attrs.align as string | null) ?? null);\n case 'deleteEmbed':\n return deleteEmbed();\n case 'link':\n return setLink(marks.link, attrs);\n case 'unlink':\n return unsetLink(marks.link);\n case 'insertBookmark':\n return insertBookmark(schema, attrs);\n case 'textColor':\n return setAttrMark(marks.text_color, attrs.color ? { color: attrs.color } : null);\n case 'bgColor':\n return setAttrMark(marks.bg_color, attrs.color ? { color: attrs.color } : null);\n case 'fontFamily':\n return setAttrMark(marks.font_family, attrs.family ? { family: attrs.family } : null);\n case 'fontSize':\n return setAttrMark(marks.font_size, attrs.size ? { size: attrs.size } : null);\n case 'horizontalRule':\n return insertHorizontalRule(nodes.horizontal_rule);\n case 'clearFormatting':\n return clearFormatting();\n case 'undo':\n return undo;\n case 'redo':\n return redo;\n case 'codeBlock':\n return toggleCodeBlock(schema, attrs.language ?? null);\n case 'setCodeBlockLanguage':\n return setCodeBlockLanguage(schema, attrs.language ?? null);\n case 'insertEmbed':\n return insertEmbed(schema, attrs);\n case 'insertImage':\n return insertImage(schema, attrs);\n case 'updateImage':\n return updateImage(schema, attrs);\n case 'insertTable':\n return insertTable(schema, attrs);\n case 'addRowBefore':\n return addRowBefore;\n case 'addRowAfter':\n return addRowAfter;\n case 'addColumnBefore':\n return addColumnBefore;\n case 'addColumnAfter':\n return addColumnAfter;\n case 'deleteRow':\n return deleteRow;\n case 'deleteColumn':\n return deleteColumn;\n case 'mergeCells':\n return mergeCells;\n case 'splitCell':\n return splitCell;\n case 'toggleHeaderRow':\n return toggleHeaderRow;\n case 'toggleLayoutTable':\n return toggleLayoutTable();\n case 'deleteTable':\n return deleteTable;\n case 'changeCase':\n return changeCase(attrs.textCase ?? 'upper');\n case 'insertMergeField':\n return insertMergeField(schema, attrs);\n case 'insertMath':\n return insertMath(schema, attrs);\n default:\n return null;\n }\n}\n","var GOOD_LEAF_SIZE = 200;\n\n// :: class<T> A rope sequence is a persistent sequence data structure\n// that supports appending, prepending, and slicing without doing a\n// full copy. It is represented as a mostly-balanced tree.\nvar RopeSequence = function RopeSequence () {};\n\nRopeSequence.prototype.append = function append (other) {\n if (!other.length) { return this }\n other = RopeSequence.from(other);\n\n return (!this.length && other) ||\n (other.length < GOOD_LEAF_SIZE && this.leafAppend(other)) ||\n (this.length < GOOD_LEAF_SIZE && other.leafPrepend(this)) ||\n this.appendInner(other)\n};\n\n// :: (union<[T], RopeSequence<T>>) → RopeSequence<T>\n// Prepend an array or other rope to this one, returning a new rope.\nRopeSequence.prototype.prepend = function prepend (other) {\n if (!other.length) { return this }\n return RopeSequence.from(other).append(this)\n};\n\nRopeSequence.prototype.appendInner = function appendInner (other) {\n return new Append(this, other)\n};\n\n// :: (?number, ?number) → RopeSequence<T>\n// Create a rope repesenting a sub-sequence of this rope.\nRopeSequence.prototype.slice = function slice (from, to) {\n if ( from === void 0 ) from = 0;\n if ( to === void 0 ) to = this.length;\n\n if (from >= to) { return RopeSequence.empty }\n return this.sliceInner(Math.max(0, from), Math.min(this.length, to))\n};\n\n// :: (number) → T\n// Retrieve the element at the given position from this rope.\nRopeSequence.prototype.get = function get (i) {\n if (i < 0 || i >= this.length) { return undefined }\n return this.getInner(i)\n};\n\n// :: ((element: T, index: number) → ?bool, ?number, ?number)\n// Call the given function for each element between the given\n// indices. This tends to be more efficient than looping over the\n// indices and calling `get`, because it doesn't have to descend the\n// tree for every element.\nRopeSequence.prototype.forEach = function forEach (f, from, to) {\n if ( from === void 0 ) from = 0;\n if ( to === void 0 ) to = this.length;\n\n if (from <= to)\n { this.forEachInner(f, from, to, 0); }\n else\n { this.forEachInvertedInner(f, from, to, 0); }\n};\n\n// :: ((element: T, index: number) → U, ?number, ?number) → [U]\n// Map the given functions over the elements of the rope, producing\n// a flat array.\nRopeSequence.prototype.map = function map (f, from, to) {\n if ( from === void 0 ) from = 0;\n if ( to === void 0 ) to = this.length;\n\n var result = [];\n this.forEach(function (elt, i) { return result.push(f(elt, i)); }, from, to);\n return result\n};\n\n// :: (?union<[T], RopeSequence<T>>) → RopeSequence<T>\n// Create a rope representing the given array, or return the rope\n// itself if a rope was given.\nRopeSequence.from = function from (values) {\n if (values instanceof RopeSequence) { return values }\n return values && values.length ? new Leaf(values) : RopeSequence.empty\n};\n\nvar Leaf = /*@__PURE__*/(function (RopeSequence) {\n function Leaf(values) {\n RopeSequence.call(this);\n this.values = values;\n }\n\n if ( RopeSequence ) Leaf.__proto__ = RopeSequence;\n Leaf.prototype = Object.create( RopeSequence && RopeSequence.prototype );\n Leaf.prototype.constructor = Leaf;\n\n var prototypeAccessors = { length: { configurable: true },depth: { configurable: true } };\n\n Leaf.prototype.flatten = function flatten () {\n return this.values\n };\n\n Leaf.prototype.sliceInner = function sliceInner (from, to) {\n if (from == 0 && to == this.length) { return this }\n return new Leaf(this.values.slice(from, to))\n };\n\n Leaf.prototype.getInner = function getInner (i) {\n return this.values[i]\n };\n\n Leaf.prototype.forEachInner = function forEachInner (f, from, to, start) {\n for (var i = from; i < to; i++)\n { if (f(this.values[i], start + i) === false) { return false } }\n };\n\n Leaf.prototype.forEachInvertedInner = function forEachInvertedInner (f, from, to, start) {\n for (var i = from - 1; i >= to; i--)\n { if (f(this.values[i], start + i) === false) { return false } }\n };\n\n Leaf.prototype.leafAppend = function leafAppend (other) {\n if (this.length + other.length <= GOOD_LEAF_SIZE)\n { return new Leaf(this.values.concat(other.flatten())) }\n };\n\n Leaf.prototype.leafPrepend = function leafPrepend (other) {\n if (this.length + other.length <= GOOD_LEAF_SIZE)\n { return new Leaf(other.flatten().concat(this.values)) }\n };\n\n prototypeAccessors.length.get = function () { return this.values.length };\n\n prototypeAccessors.depth.get = function () { return 0 };\n\n Object.defineProperties( Leaf.prototype, prototypeAccessors );\n\n return Leaf;\n}(RopeSequence));\n\n// :: RopeSequence\n// The empty rope sequence.\nRopeSequence.empty = new Leaf([]);\n\nvar Append = /*@__PURE__*/(function (RopeSequence) {\n function Append(left, right) {\n RopeSequence.call(this);\n this.left = left;\n this.right = right;\n this.length = left.length + right.length;\n this.depth = Math.max(left.depth, right.depth) + 1;\n }\n\n if ( RopeSequence ) Append.__proto__ = RopeSequence;\n Append.prototype = Object.create( RopeSequence && RopeSequence.prototype );\n Append.prototype.constructor = Append;\n\n Append.prototype.flatten = function flatten () {\n return this.left.flatten().concat(this.right.flatten())\n };\n\n Append.prototype.getInner = function getInner (i) {\n return i < this.left.length ? this.left.get(i) : this.right.get(i - this.left.length)\n };\n\n Append.prototype.forEachInner = function forEachInner (f, from, to, start) {\n var leftLen = this.left.length;\n if (from < leftLen &&\n this.left.forEachInner(f, from, Math.min(to, leftLen), start) === false)\n { return false }\n if (to > leftLen &&\n this.right.forEachInner(f, Math.max(from - leftLen, 0), Math.min(this.length, to) - leftLen, start + leftLen) === false)\n { return false }\n };\n\n Append.prototype.forEachInvertedInner = function forEachInvertedInner (f, from, to, start) {\n var leftLen = this.left.length;\n if (from > leftLen &&\n this.right.forEachInvertedInner(f, from - leftLen, Math.max(to, leftLen) - leftLen, start + leftLen) === false)\n { return false }\n if (to < leftLen &&\n this.left.forEachInvertedInner(f, Math.min(from, leftLen), to, start) === false)\n { return false }\n };\n\n Append.prototype.sliceInner = function sliceInner (from, to) {\n if (from == 0 && to == this.length) { return this }\n var leftLen = this.left.length;\n if (to <= leftLen) { return this.left.slice(from, to) }\n if (from >= leftLen) { return this.right.slice(from - leftLen, to - leftLen) }\n return this.left.slice(from, leftLen).append(this.right.slice(0, to - leftLen))\n };\n\n Append.prototype.leafAppend = function leafAppend (other) {\n var inner = this.right.leafAppend(other);\n if (inner) { return new Append(this.left, inner) }\n };\n\n Append.prototype.leafPrepend = function leafPrepend (other) {\n var inner = this.left.leafPrepend(other);\n if (inner) { return new Append(inner, this.right) }\n };\n\n Append.prototype.appendInner = function appendInner (other) {\n if (this.left.depth >= Math.max(this.right.depth, other.depth) + 1)\n { return new Append(this.left, new Append(this.right, other)) }\n return new Append(this, other)\n };\n\n return Append;\n}(RopeSequence));\n\nexport default RopeSequence;\n"],"names":["textblockAt","node","side","only","arguments","length","undefined","scan","firstChild","lastChild","isTextblock","childCount","findCutBefore","$pos","parent","type","spec","isolating","i","depth","index","doc","resolve","before","findCutAfter","after","defaultBlockAt","match","edgeCount","_t$edge","edge","hasRequiredAttrs","deleteBarrier","state","$cut","dispatch","dir","conn","nodeBefore","nodeAfter","isolated","compatibleContent","content","size","canReplace","tr","pos","nodeSize","scrollIntoView","canJoin","join","joinMaybeClear","canDelAfter","contentMatchAt","findWrapping","matchType","validEnd","end","wrap","Fragment","empty","from","create","copy","step","ReplaceAroundStep","Slice","$joinAt","selAfter","Selection","findFrom","range","$from","blockRange","$to","target","liftTarget","lift","at","push","afterText","afterDepth","selectTextblockSide","sel","selection","isInline","setSelection","TextSelection","start","setBlockType","nodeType","attrs","applicable","ranges","_n$selection$ranges$_","to","nodesBetween","hasMarkup","canReplaceWith","_n$selection$ranges$_2","toggleMark","markType","options","removeWhenPresent","enterAtoms","enterInlineAtoms","dropSpace","includeWhitespace","_r$selection","$cursor","_e$_i","can","inlineContent","allowsMarkType","isAtom","v","_ret","markApplies","isInSet","storedMarks","marks","removeStoredMark","addStoredMark","add","result","_loop2","_t$_r","SelectionRange","removeInlineAtoms","some","r","rangeHasMark","every","missing","isText","test","textBetween","Math","max","min","_c$_n","spaceStart","exec","text","spaceEnd","addMark","removeMark","chainCommands","_len","commands","Array","_key","view","rangesFor","maps","forEach","_from","_to","mapRanges","mapping","map","mustPreserveItems","plugins","cachedPreserveItemsPlugins","cachedPreserveItems","historyPreserveItems","history","config","newGroupDelay","Plugin","key","historyKey","init","HistoryState","Branch","apply","hist","rebased","historyTr","getMeta","historyState","closeHistoryKey","done","undone","appended","steps","redo","addTransform","prevTime","prevComposition","prevRanges","addMaps","composition","newGroup","time","transform","docChanged","adjacent","isAdjacentTo","getBookmark","applyTransaction","props","handleDOMEvents","beforeinput","e","inputType","command","undo","editable","preventDefault","buildCommand","scroll","getState","eventCount","preserveItems","histOptions","get","pop","popEvent","added","newHist","remaining","setMeta","histTransaction","getMarkRange","parentOffset","childAfter","startIndex","offset","child","endIndex","setAttrMark","_n$selection","_iterator","_createForOfIteratorHelper","s","_step","n","findParentList","bullet_list","schema","nodes","bullet","ordered_list","ordered","task_list","task","t","itemTypeFor","listType","task_item","list_item","toggleList","itemType","parentList","liftListItem","fromItem","items","converted","replaceWith","wrapInList","toggleBlockquote","isInNode","_r$selection2","wrapping","wrapIn","changeBlockIndent","delta","_e$selection2","targets","_e$attrs$indent","current","indent","next","MAX_INDENT","_iterator2","_step2","setNodeMarkup","selectedImageInfo","_t$schema$nodes2","image","figure","NodeSelection","isFigure","selectedEmbedInfo","embed","getCommand","name","_n$level","_n$align","_n$lineHeight","_n$style","_n$start","_n$align2","_n$width","_n$align3","_n$language","_n$language2","_n$textCase","bold","italic","underline","strike","subscript","superscript","code","paragraph","heading","level","blockquote","align","_t$selection6","_iterator3","_step3","lineHeight","_t$selection7","_iterator4","_step4","sinkListItem","style","MULTILEVEL_STYLE","_objectSpread","d","order","round","info","_r$node$attrs","src","alt","title","width","_r$node$attrs2","caption","replaceWhole","toggleImageCaption","clamped","_i$node$attrs","setImageAlign","delete","setEmbedAlign","href","_n$selection3","existing","_e$title","_e$target","setLink","link","_t$selection8","u","id","trim","bookmark","replaceSelectionWith","insertBookmark","text_color","color","bg_color","font_family","family","font_size","horizontal_rule","_t$selection9","setStoredMarks","language","code_block","toggleCodeBlock","setCodeBlockLanguage","provider","_e$provider","insertEmbed","String","insertImage","_e$alt2","_i$node$attrs$align","updateImage","rows","_e$rows","cols","_e$cols","withHeaderRow","_e$withHeaderRow","_t$nodes","table","tableRow","table_row","cell","table_cell","header","table_header","rowNodes","cellType","cells","c","createAndFill","insertTable","addRowBefore","addRowAfter","addColumnBefore","addColumnAfter","deleteRow","deleteColumn","mergeCells","splitCell","toggleHeaderRow","layout","deleteTable","mode","textCase","_t$selection10","edits","slice","toUpperCase","toLowerCase","replace","_m","sep","ch","transformCase","_iterator5","reverse","_step5","edit","merge_field","_e$label","label","insertMergeField","math","latex","_e$latex","_e$mathDisplay","display","mathDisplay","insertMath","deleteSelection","_e$selection","_export","exitCode","_t$selection","$head","$anchor","sameParent","above","indexAfter","near","splitBlock","_t$selection2","isBlock","canSplit","split","splitDepth","deflt","types","atEnd","atStart","splitType","splitNode","unshift","AllSelection","splitPos","first","$first","selectTextblockStart","selectTextblockEnd","backspace","endOfTextblock","atBlockStart","isSelectable","delStep","replaceStep","_t$selection3","del","atBlockEnd","_t$selection4","pcBaseKeymap","Enter","_t$selection5","insertText","insert","Backspace","Delete","ModA","macBaseKeymap","baseKeymap","navigator","platform","os","GOOD_LEAF_SIZE","RopeSequence","Z","prototype","append","other","this","leafAppend","leafPrepend","appendInner","prepend","Append","sliceInner","getInner","f","forEachInner","forEachInvertedInner","elt","values","Leaf","call","__proto__","Object","constructor","prototypeAccessors","configurable","flatten","concat","defineProperties","left","right","leftLen","inner","nt","_createClass","value","_this","remap","mapFrom","remapping","addAfter","addBefore","item","Item","maybeStep","appendMap","newItems","oldItems","lastItem","merged","invert","docs","merge","overflow","DEPTH_OVERFLOW","cutPoint","cutOffEvents","Mapping","mirrorPos","mirrorOffset","array","rebasedTransform","rebasedCount","rebasedItems","newUntil","iRebased","getMirror","newMaps","branch","emptyItemCount","compress","count","upto","events","getMap","newItem","last","rt","it","PluginKey"],"mappings":"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","x_google_ignoreList":[0,1,3]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{l as t,f as e,k as n,S as r,A as i,T as u,i as s,c as o,r as l,d as f,F as c,R as a,g as h,P as d,b as m,n as p}from"../../index-6f3fa4ab.esm.js";import{l as g,a as w,w as v,M as $,b}from"./schema.esm.js";import{d as M,e as y,s as k,m as C,f as x,g as B,h as j,i as A,j as L,l as H}from"../../index-249de90a.esm.js";import"../../index-353172ed.esm.js";import"../../index-920675c4.esm.js";const S=(t,e)=>!t.selection.empty&&(e&&e(t.tr.deleteSelection().scrollIntoView()),!0);function T(t,e,n=!1){for(let r=t;r;r="start"==e?r.firstChild:r.lastChild){if(r.isTextblock)return!0;if(n&&1!=r.childCount)return!1}return!1}function E(t){if(!t.parent.type.spec.isolating)for(let e=t.depth-1;e>=0;e--){if(t.index(e)>0)return t.doc.resolve(t.before(e+1));if(t.node(e).type.spec.isolating)break}return null}function F(t){if(!t.parent.type.spec.isolating)for(let e=t.depth-1;e>=0;e--){let n=t.node(e);if(t.index(e)+1<n.childCount)return t.doc.resolve(t.after(e+1));if(n.type.spec.isolating)break}return null}const I=(e,n)=>{let{$from:r,$to:i}=e.selection,u=r.blockRange(i),s=u&&t(u);return null!=s&&(n&&n(e.tr.lift(u,s).scrollIntoView()),!0)};function R(t){for(let e=0;e<t.edgeCount;e++){let{type:n}=t.edge(e);if(n.isTextblock&&!n.hasRequiredAttrs())return n}return null}const _=(t,e)=>{let{$head:n,$anchor:i}=t.selection;if(!n.parent.type.spec.code||!n.sameParent(i))return!1;let u=n.node(-1),s=n.indexAfter(-1),o=R(u.contentMatchAt(s));if(!o||!u.canReplaceWith(s,s,o))return!1;if(e){let i=n.after(),u=t.tr.replaceWith(i,i,o.createAndFill());u.setSelection(r.near(u.doc.resolve(i),1)),e(u.scrollIntoView())}return!0};const D=(t,e)=>{let{$from:n,$to:r}=t.selection;if(t.selection instanceof o&&t.selection.node.isBlock)return!(!n.parentOffset||!s(t.doc,n.pos)||(e&&e(t.tr.split(n.pos).scrollIntoView()),0));if(!n.depth)return!1;let l,f,c=[],a=!1,h=!1;for(let t=n.depth;;t--){if(n.node(t).isBlock){a=n.end(t)==n.pos+(n.depth-t),h=n.start(t)==n.pos-(n.depth-t),f=R(n.node(t-1).contentMatchAt(n.indexAfter(t-1)));let e=O&&O(r.parent,a,n);c.unshift(e||(a&&f?{type:f}:null)),l=t;break}if(1==t)return!1;c.unshift(null)}let d=t.tr;(t.selection instanceof u||t.selection instanceof i)&&d.deleteSelection();let m=d.mapping.map(n.pos),p=s(d.doc,m,c.length,c);if(p||(c[0]=f?{type:f}:null,p=s(d.doc,m,c.length,c)),!p)return!1;if(d.split(m,c.length,c),!a&&h&&n.node(l).type!=f){let t=d.mapping.map(n.before(l)),e=d.doc.resolve(t);f&&n.node(l-1).canReplaceWith(e.index(),e.index()+1,f)&&d.setNodeMarkup(d.mapping.map(n.before(l)),f)}return e&&e(d.scrollIntoView()),!0};var O;function z(e,n,i,u){let s,o,l=n.nodeBefore,d=n.nodeAfter,m=l.type.spec.isolating||d.type.spec.isolating;if(!m&&function(t,e,n){let r=e.nodeBefore,i=e.nodeAfter,u=e.index();return!(!(r&&i&&r.type.compatibleContent(i.type))||(!r.content.size&&e.parent.canReplace(u-1,u)?(n&&n(t.tr.delete(e.pos-r.nodeSize,e.pos).scrollIntoView()),0):!e.parent.canReplace(u,u+1)||!i.isTextblock&&!h(t.doc,e.pos)||(n&&n(t.tr.join(e.pos).scrollIntoView()),0)))}(e,n,i))return!0;let p=!m&&n.parent.canReplace(n.index(),n.index()+1);if(p&&(s=(o=l.contentMatchAt(l.childCount)).findWrapping(d.type))&&o.matchType(s[0]||d.type).validEnd){if(i){let t=n.pos+d.nodeSize,r=c.empty;for(let t=s.length-1;t>=0;t--)r=c.from(s[t].create(null,r));r=c.from(l.copy(r));let u=e.tr.step(new a(n.pos-1,t,n.pos,t,new f(r,1,0),s.length,!0)),o=u.doc.resolve(t+2*s.length);o.nodeAfter&&o.nodeAfter.type==l.type&&h(u.doc,o.pos)&&u.join(o.pos),i(u.scrollIntoView())}return!0}let g=d.type.spec.isolating||u>0&&m?null:r.findFrom(n,1),w=g&&g.$from.blockRange(g.$to),v=w&&t(w);if(null!=v&&v>=n.depth)return i&&i(e.tr.lift(w,v).scrollIntoView()),!0;if(p&&T(d,"start",!0)&&T(l,"end")){let t=l,r=[];for(;r.push(t),!t.isTextblock;)t=t.lastChild;let u=d,s=1;for(;!u.isTextblock;u=u.firstChild)s++;if(t.canReplace(t.childCount,t.childCount,u.content)){if(i){let t=c.empty;for(let e=r.length-1;e>=0;e--)t=c.from(r[e].copy(t));i(e.tr.step(new a(n.pos-r.length,n.pos+d.nodeSize,n.pos+s,n.pos+d.nodeSize-s,new f(t,r.length,0),0,!0)).scrollIntoView())}return!0}}return!1}function P(t){return function(e,n){let r=e.selection,i=t<0?r.$from:r.$to,s=i.depth;for(;i.node(s).isInline;){if(!s)return!1;s--}return!!i.node(s).isTextblock&&(n&&n(e.tr.setSelection(u.create(e.doc,t<0?i.start(s):i.end(s)))),!0)}}const q=P(-1),G=P(1);function U(t,e=null){return function(n,r){let i=!1;for(let r=0;r<n.selection.ranges.length&&!i;r++){let{$from:{pos:u},$to:{pos:s}}=n.selection.ranges[r];n.doc.nodesBetween(u,s,((r,u)=>{if(i)return!1;if(r.isTextblock&&!r.hasMarkup(t,e))if(r.type==t)i=!0;else{let e=n.doc.resolve(u),r=e.index();i=e.parent.canReplaceWith(r,r+1,t)}}))}if(!i)return!1;if(r){let i=n.tr;for(let r=0;r<n.selection.ranges.length;r++){let{$from:{pos:u},$to:{pos:s}}=n.selection.ranges[r];i.setBlockType(u,s,t,e)}r(i.scrollIntoView())}return!0}}function W(t,e=null,r){let i=!1!==(r&&r.removeWhenPresent),u=!1!==(r&&r.enterInlineAtoms),s=!(r&&r.includeWhitespace);return function(r,o){let{empty:l,$cursor:f,ranges:c}=r.selection;if(l&&!f||!function(t,e,n,r){for(let i=0;i<e.length;i++){let{$from:u,$to:s}=e[i],o=0==u.depth&&t.inlineContent&&t.type.allowsMarkType(n);if(t.nodesBetween(u.pos,s.pos,((t,e)=>{if(o||!r&&t.isAtom&&t.isInline&&e>=u.pos&&e+t.nodeSize<=s.pos)return!1;o=t.inlineContent&&t.type.allowsMarkType(n)})),o)return!0}return!1}(r.doc,c,t,u))return!1;if(o)if(f)t.isInSet(r.storedMarks||f.marks())?o(r.tr.removeStoredMark(t)):o(r.tr.addStoredMark(t.create(e)));else{let l,f=r.tr;u||(c=function(t){let e=[];for(let r=0;r<t.length;r++){let{$from:i,$to:u}=t[r];i.doc.nodesBetween(i.pos,u.pos,((t,r)=>{if(t.isAtom&&t.content.size&&t.isInline&&r>=i.pos&&r+t.nodeSize<=u.pos)return r+1>i.pos&&e.push(new n(i,i.doc.resolve(r+1))),i=i.doc.resolve(r+1+t.content.size),!1})),i.pos<u.pos&&e.push(new n(i,u))}return e}(c)),l=i?!c.some((e=>r.doc.rangeHasMark(e.$from.pos,e.$to.pos,t))):!c.every((e=>{let n=!1;return f.doc.nodesBetween(e.$from.pos,e.$to.pos,((r,i,u)=>{if(n)return!1;n=!t.isInSet(r.marks)&&!!u&&u.type.allowsMarkType(t)&&!(r.isText&&/^\s*$/.test(r.textBetween(Math.max(0,e.$from.pos-i),Math.min(r.nodeSize,e.$to.pos-i))))})),!n}));for(let n=0;n<c.length;n++){let{$from:r,$to:i}=c[n];if(l){let n=r.pos,u=i.pos,o=r.nodeAfter,l=i.nodeBefore,c=s&&o&&o.isText?/^\s*/.exec(o.text)[0].length:0,a=s&&l&&l.isText?/\s*$/.exec(l.text)[0].length:0;n+c<u&&(n+=c,u-=a),f.addMark(n,u,t.create(e))}else f.removeMark(r.pos,i.pos,t)}o(f.scrollIntoView())}return!0}}function J(...t){return function(e,n,r){for(let i=0;i<t.length;i++)if(t[i](e,n,r))return!0;return!1}}let K=J(S,((e,n,i)=>{let u=function(t,e){let{$cursor:n}=t.selection;return!n||(e?!e.endOfTextblock("backward",t):n.parentOffset>0)?null:n}(e,i);if(!u)return!1;let s=E(u);if(!s){let r=u.blockRange(),i=r&&t(r);return null!=i&&(n&&n(e.tr.lift(r,i).scrollIntoView()),!0)}let c=s.nodeBefore;if(z(e,s,n,-1))return!0;if(0==u.parent.content.size&&(T(c,"end")||o.isSelectable(c)))for(let t=u.depth;;t--){let i=l(e.doc,u.before(t),u.after(t),f.empty);if(i&&i.slice.size<i.to-i.from){if(n){let t=e.tr.step(i);t.setSelection(T(c,"end")?r.findFrom(t.doc.resolve(t.mapping.map(s.pos,-1)),-1):o.create(t.doc,s.pos-c.nodeSize)),n(t.scrollIntoView())}return!0}if(1==t||u.node(t-1).childCount>1)break}return!(!c.isAtom||s.depth!=u.depth-1)&&(n&&n(e.tr.delete(s.pos-c.nodeSize,s.pos).scrollIntoView()),!0)}),((t,e,n)=>{let{$head:r,empty:i}=t.selection,u=r;if(!i)return!1;if(r.parent.isTextblock){if(n?!n.endOfTextblock("backward",t):r.parentOffset>0)return!1;u=E(r)}let s=u&&u.nodeBefore;return!(!s||!o.isSelectable(s))&&(e&&e(t.tr.setSelection(o.create(t.doc,u.pos-s.nodeSize)).scrollIntoView()),!0)})),N=J(S,((t,e,n)=>{let i=function(t,e){let{$cursor:n}=t.selection;return!n||(e?!e.endOfTextblock("forward",t):n.parentOffset<n.parent.content.size)?null:n}(t,n);if(!i)return!1;let u=F(i);if(!u)return!1;let s=u.nodeAfter;if(z(t,u,e,1))return!0;if(0==i.parent.content.size&&(T(s,"start")||o.isSelectable(s))){let n=l(t.doc,i.before(),i.after(),f.empty);if(n&&n.slice.size<n.to-n.from){if(e){let i=t.tr.step(n);i.setSelection(T(s,"start")?r.findFrom(i.doc.resolve(i.mapping.map(u.pos)),1):o.create(i.doc,i.mapping.map(u.pos))),e(i.scrollIntoView())}return!0}}return!(!s.isAtom||u.depth!=i.depth-1)&&(e&&e(t.tr.delete(u.pos,u.pos+s.nodeSize).scrollIntoView()),!0)}),((t,e,n)=>{let{$head:r,empty:i}=t.selection,u=r;if(!i)return!1;if(r.parent.isTextblock){if(n?!n.endOfTextblock("forward",t):r.parentOffset<r.parent.content.size)return!1;u=F(r)}let s=u&&u.nodeAfter;return!(!s||!o.isSelectable(s))&&(e&&e(t.tr.setSelection(o.create(t.doc,u.pos)).scrollIntoView()),!0)}));const Q={Enter:J(((t,e)=>{let{$head:n,$anchor:r}=t.selection;return!(!n.parent.type.spec.code||!n.sameParent(r))&&(e&&e(t.tr.insertText("\n").scrollIntoView()),!0)}),((t,e)=>{let n=t.selection,{$from:r,$to:s}=n;if(n instanceof i||r.parent.inlineContent||s.parent.inlineContent)return!1;let o=R(s.parent.contentMatchAt(s.indexAfter()));if(!o||!o.isTextblock)return!1;if(e){let n=(!r.parentOffset&&s.index()<s.parent.childCount?r:s).pos,i=t.tr.insert(n,o.createAndFill());i.setSelection(u.create(i.doc,n+1)),e(i.scrollIntoView())}return!0}),((e,n)=>{let{$cursor:r}=e.selection;if(!r||r.parent.content.size)return!1;if(r.depth>1&&r.after()!=r.end(-1)){let t=r.before();if(s(e.doc,t))return n&&n(e.tr.split(t).scrollIntoView()),!0}let i=r.blockRange(),u=i&&t(i);return null!=u&&(n&&n(e.tr.lift(i,u).scrollIntoView()),!0)}),D),"Mod-Enter":_,Backspace:K,"Mod-Backspace":K,"Shift-Backspace":K,Delete:N,"Mod-Delete":N,"Mod-a":(t,e)=>(e&&e(t.tr.setSelection(new i(t.doc))),!0)},V={"Ctrl-h":Q.Backspace,"Alt-Backspace":Q["Mod-Backspace"],"Ctrl-d":Q.Delete,"Ctrl-Alt-Backspace":Q["Mod-Delete"],"Alt-Delete":Q["Mod-Delete"],"Alt-d":Q["Mod-Delete"],"Ctrl-a":q,"Ctrl-e":G};for(let t in Q)V[t]=Q[t];const X=("undefined"!=typeof navigator?/Mac|iP(hone|[oa]d)/.test(navigator.platform):!("undefined"==typeof os||!os.platform)&&"darwin"==os.platform())?V:Q;var Y=200,Z=function(){};Z.prototype.append=function(t){return t.length?(t=Z.from(t),!this.length&&t||t.length<Y&&this.leafAppend(t)||this.length<Y&&t.leafPrepend(this)||this.appendInner(t)):this},Z.prototype.prepend=function(t){return t.length?Z.from(t).append(this):this},Z.prototype.appendInner=function(t){return new et(this,t)},Z.prototype.slice=function(t,e){return void 0===t&&(t=0),void 0===e&&(e=this.length),t>=e?Z.empty:this.sliceInner(Math.max(0,t),Math.min(this.length,e))},Z.prototype.get=function(t){if(!(t<0||t>=this.length))return this.getInner(t)},Z.prototype.forEach=function(t,e,n){void 0===e&&(e=0),void 0===n&&(n=this.length),e<=n?this.forEachInner(t,e,n,0):this.forEachInvertedInner(t,e,n,0)},Z.prototype.map=function(t,e,n){void 0===e&&(e=0),void 0===n&&(n=this.length);var r=[];return this.forEach((function(e,n){return r.push(t(e,n))}),e,n),r},Z.from=function(t){return t instanceof Z?t:t&&t.length?new tt(t):Z.empty};var tt=function(t){function e(e){t.call(this),this.values=e}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var n={length:{configurable:!0},depth:{configurable:!0}};return e.prototype.flatten=function(){return this.values},e.prototype.sliceInner=function(t,n){return 0==t&&n==this.length?this:new e(this.values.slice(t,n))},e.prototype.getInner=function(t){return this.values[t]},e.prototype.forEachInner=function(t,e,n,r){for(var i=e;i<n;i++)if(!1===t(this.values[i],r+i))return!1},e.prototype.forEachInvertedInner=function(t,e,n,r){for(var i=e-1;i>=n;i--)if(!1===t(this.values[i],r+i))return!1},e.prototype.leafAppend=function(t){if(this.length+t.length<=Y)return new e(this.values.concat(t.flatten()))},e.prototype.leafPrepend=function(t){if(this.length+t.length<=Y)return new e(t.flatten().concat(this.values))},n.length.get=function(){return this.values.length},n.depth.get=function(){return 0},Object.defineProperties(e.prototype,n),e}(Z);Z.empty=new tt([]);var et=function(t){function e(e,n){t.call(this),this.left=e,this.right=n,this.length=e.length+n.length,this.depth=Math.max(e.depth,n.depth)+1}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.flatten=function(){return this.left.flatten().concat(this.right.flatten())},e.prototype.getInner=function(t){return t<this.left.length?this.left.get(t):this.right.get(t-this.left.length)},e.prototype.forEachInner=function(t,e,n,r){var i=this.left.length;return!(e<i&&!1===this.left.forEachInner(t,e,Math.min(n,i),r))&&(!(n>i&&!1===this.right.forEachInner(t,Math.max(e-i,0),Math.min(this.length,n)-i,r+i))&&void 0)},e.prototype.forEachInvertedInner=function(t,e,n,r){var i=this.left.length;return!(e>i&&!1===this.right.forEachInvertedInner(t,e-i,Math.max(n,i)-i,r+i))&&(!(n<i&&!1===this.left.forEachInvertedInner(t,Math.min(e,i),n,r))&&void 0)},e.prototype.sliceInner=function(t,e){if(0==t&&e==this.length)return this;var n=this.left.length;return e<=n?this.left.slice(t,e):t>=n?this.right.slice(t-n,e-n):this.left.slice(t,n).append(this.right.slice(0,e-n))},e.prototype.leafAppend=function(t){var n=this.right.leafAppend(t);if(n)return new e(this.left,n)},e.prototype.leafPrepend=function(t){var n=this.left.leafPrepend(t);if(n)return new e(n,this.right)},e.prototype.appendInner=function(t){return this.left.depth>=Math.max(this.right.depth,t.depth)+1?new e(this.left,new e(this.right,t)):new e(this,t)},e}(Z);class nt{constructor(t,e){this.items=t,this.eventCount=e}popEvent(t,e){if(0==this.eventCount)return null;let n,r,i=this.items.length;for(;;i--){if(this.items.get(i-1).selection){--i;break}}e&&(n=this.remapping(i,this.items.length),r=n.maps.length);let u,s,o=t.tr,l=[],f=[];return this.items.forEach(((t,e)=>{if(!t.step)return n||(n=this.remapping(i,e+1),r=n.maps.length),r--,void f.push(t);if(n){f.push(new rt(t.map));let e,i=t.step.map(n.slice(r));i&&o.maybeStep(i).doc&&(e=o.mapping.maps[o.mapping.maps.length-1],l.push(new rt(e,void 0,void 0,l.length+f.length))),r--,e&&n.appendMap(e,r)}else o.maybeStep(t.step);return t.selection?(u=n?t.selection.map(n.slice(r)):t.selection,s=new nt(this.items.slice(0,i).append(f.reverse().concat(l)),this.eventCount-1),!1):void 0}),this.items.length,0),{remaining:s,transform:o,selection:u}}addTransform(t,e,n,r){let i=[],u=this.eventCount,s=this.items,o=!r&&s.length?s.get(s.length-1):null;for(let n=0;n<t.steps.length;n++){let l,f=t.steps[n].invert(t.docs[n]),c=new rt(t.mapping.maps[n],f,e);(l=o&&o.merge(c))&&(c=l,n?i.pop():s=s.slice(0,s.length-1)),i.push(c),e&&(u++,e=void 0),r||(o=c)}let l=u-n.depth;return l>ut&&(s=function(t,e){let n;return t.forEach(((t,r)=>{if(t.selection&&0==e--)return n=r,!1})),t.slice(n)}(s,l),u-=l),new nt(s.append(i),u)}remapping(t,e){let n=new p;return this.items.forEach(((e,r)=>{let i=null!=e.mirrorOffset&&r-e.mirrorOffset>=t?n.maps.length-e.mirrorOffset:void 0;n.appendMap(e.map,i)}),t,e),n}addMaps(t){return 0==this.eventCount?this:new nt(this.items.append(t.map((t=>new rt(t)))),this.eventCount)}rebased(t,e){if(!this.eventCount)return this;let n=[],r=Math.max(0,this.items.length-e),i=t.mapping,u=t.steps.length,s=this.eventCount;this.items.forEach((t=>{t.selection&&s--}),r);let o=e;this.items.forEach((e=>{let r=i.getMirror(--o);if(null==r)return;u=Math.min(u,r);let l=i.maps[r];if(e.step){let u=t.steps[r].invert(t.docs[r]),f=e.selection&&e.selection.map(i.slice(o+1,r));f&&s++,n.push(new rt(l,u,f))}else n.push(new rt(l))}),r);let l=[];for(let t=e;t<u;t++)l.push(new rt(i.maps[t]));let f=this.items.slice(0,r).append(l).append(n),c=new nt(f,s);return c.emptyItemCount()>500&&(c=c.compress(this.items.length-n.length)),c}emptyItemCount(){let t=0;return this.items.forEach((e=>{e.step||t++})),t}compress(t=this.items.length){let e=this.remapping(0,t),n=e.maps.length,r=[],i=0;return this.items.forEach(((u,s)=>{if(s>=t)r.push(u),u.selection&&i++;else if(u.step){let t=u.step.map(e.slice(n)),s=t&&t.getMap();if(n--,s&&e.appendMap(s,n),t){let o=u.selection&&u.selection.map(e.slice(n));o&&i++;let l,f=new rt(s.invert(),t,o),c=r.length-1;(l=r.length&&r[c].merge(f))?r[c]=l:r.push(f)}}else u.map&&n--}),this.items.length,0),new nt(Z.from(r.reverse()),i)}}nt.empty=new nt(Z.empty,0);class rt{constructor(t,e,n,r){this.map=t,this.step=e,this.selection=n,this.mirrorOffset=r}merge(t){if(this.step&&t.step&&!t.selection){let e=t.step.merge(this.step);if(e)return new rt(e.getMap().invert(),e,this.selection)}}}class it{constructor(t,e,n,r,i){this.done=t,this.undone=e,this.prevRanges=n,this.prevTime=r,this.prevComposition=i}}const ut=20;function st(t){let e=[];for(let n=t.length-1;n>=0&&0==e.length;n--)t[n].forEach(((t,n,r,i)=>e.push(r,i)));return e}function ot(t,e){if(!t)return null;let n=[];for(let r=0;r<t.length;r+=2){let i=e.map(t[r],1),u=e.map(t[r+1],-1);i<=u&&n.push(i,u)}return n}let lt=!1,ft=null;function ct(t){let e=t.plugins;if(ft!=e){lt=!1,ft=e;for(let t=0;t<e.length;t++)if(e[t].spec.historyPreserveItems){lt=!0;break}}return lt}const at=new d("history"),ht=new d("closeHistory");function dt(t={}){return t={depth:t.depth||100,newGroupDelay:t.newGroupDelay||500},new m({key:at,state:{init:()=>new it(nt.empty,nt.empty,null,0,-1),apply:(e,n,r)=>function(t,e,n,r){let i,u=n.getMeta(at);if(u)return u.historyState;n.getMeta(ht)&&(t=new it(t.done,t.undone,null,0,-1));let s=n.getMeta("appendedTransaction");if(0==n.steps.length)return t;if(s&&s.getMeta(at))return s.getMeta(at).redo?new it(t.done.addTransform(n,void 0,r,ct(e)),t.undone,st(n.mapping.maps),t.prevTime,t.prevComposition):new it(t.done,t.undone.addTransform(n,void 0,r,ct(e)),null,t.prevTime,t.prevComposition);if(!1===n.getMeta("addToHistory")||s&&!1===s.getMeta("addToHistory"))return(i=n.getMeta("rebased"))?new it(t.done.rebased(n,i),t.undone.rebased(n,i),ot(t.prevRanges,n.mapping),t.prevTime,t.prevComposition):new it(t.done.addMaps(n.mapping.maps),t.undone.addMaps(n.mapping.maps),ot(t.prevRanges,n.mapping),t.prevTime,t.prevComposition);{let i=n.getMeta("composition"),u=0==t.prevTime||!s&&t.prevComposition!=i&&(t.prevTime<(n.time||0)-r.newGroupDelay||!function(t,e){if(!e)return!1;if(!t.docChanged)return!0;let n=!1;return t.mapping.maps[0].forEach(((t,r)=>{for(let i=0;i<e.length;i+=2)t<=e[i+1]&&r>=e[i]&&(n=!0)})),n}(n,t.prevRanges)),o=s?ot(t.prevRanges,n.mapping):st(n.mapping.maps);return new it(t.done.addTransform(n,u?e.selection.getBookmark():void 0,r,ct(e)),nt.empty,o,n.time,null==i?t.prevComposition:i)}}(n,r,e,t)},config:t,props:{handleDOMEvents:{beforeinput(t,e){let n=e.inputType,r="historyUndo"==n?pt:"historyRedo"==n?gt:null;return!(!r||!t.editable)&&(e.preventDefault(),r(t.state,t.dispatch))}}}})}function mt(t,e){return(n,r)=>{let i=at.getState(n);if(!i||0==(t?i.undone:i.done).eventCount)return!1;if(r){let u=function(t,e,n){let r=ct(e),i=at.get(e).spec.config,u=(n?t.undone:t.done).popEvent(e,r);if(!u)return null;let s=u.selection.resolve(u.transform.doc),o=(n?t.done:t.undone).addTransform(u.transform,e.selection.getBookmark(),i,r),l=new it(n?o:u.remaining,n?u.remaining:o,null,0,-1);return u.transform.setSelection(s).setMeta(at,{redo:n,historyState:l})}(i,n,t);u&&r(e?u.scrollIntoView():u)}return!0}}const pt=mt(!1,!0),gt=mt(!0,!0);function wt(t,e){const{parent:n,parentOffset:r}=t,i=n.childAfter(r);if(!i.node||!e.isInSet(i.node.marks))return null;let u=i.index,s=t.start()+i.offset;for(;u>0&&e.isInSet(n.child(u-1).marks);)u-=1,s-=n.child(u).nodeSize;let o=i.index+1,l=s+i.node.nodeSize;for(;o<n.childCount&&e.isInSet(n.child(o).marks);)l+=n.child(o).nodeSize,o+=1;return{from:s,to:l}}function vt(t,e){return(n,r)=>{const{empty:i,ranges:s,$from:o}=n.selection;if(i&&!(n.selection instanceof u&&n.selection.$cursor))return!1;if(!i&&!n.selection.content().content.firstChild)return!1;if(r){const u=n.tr;if(i)u.removeStoredMark(t),e&&u.addStoredMark(t.create(e));else{for(const n of s)u.removeMark(n.$from.pos,n.$to.pos,t),e&&u.addMark(n.$from.pos,n.$to.pos,t.create(e));u.scrollIntoView()}r(u)}return!0}}function $t(t){const{$from:e}=t.selection,{bullet_list:n,ordered_list:r,task_list:i}=t.schema.nodes;for(let t=e.depth;t>0;t-=1){const u=e.node(t);if(u.type===n||u.type===r||u.type===i)return{node:u,pos:e.before(t),depth:t}}return null}function bt(t){const{schema:e}=t;return t===e.nodes.task_list?e.nodes.task_item:e.nodes.list_item}function Mt(t,e){return(n,r,i)=>{const s=$t(n);if(s){if(s.node.type===t)return g(bt(s.node.type))(n,r,i);if(r){const i=bt(s.node.type),o=[];s.node.forEach((t=>{o.push(t.type===i&&i!==e?e.create(null,t.content,t.marks):t)}));const l=t.create(s.node.attrs,o),f=n.tr,{from:c,to:a}=n.selection;f.replaceWith(s.pos,s.pos+s.node.nodeSize,l),f.setSelection(u.create(f.doc,c,a)),r(f)}return!0}return v(t)(n,r,i)}}function yt(t){return(n,r,i)=>function(t,e){const{$from:n}=t.selection;for(let t=n.depth;t>0;t-=1)if(n.node(t).type===e)return!0;return!1}(n,t)?I(n,r):function(t,n=null){return function(r,i){let{$from:u,$to:s}=r.selection,o=u.blockRange(s),l=o&&e(o,t,n);return!!l&&(i&&i(r.tr.wrap(o,l).scrollIntoView()),!0)}}(t)(n,r,i)}function kt(t){return(e,n)=>{const{from:r,to:i}=e.selection,u=[];if(e.doc.nodesBetween(r,i,((e,n)=>{if(e.isTextblock&&e.type.spec.attrs&&"indent"in e.type.spec.attrs){const r=e.attrs.indent??0,i=Math.max(0,Math.min(b,r+t));i!==r&&u.push({pos:n,node:e,next:i})}return!0})),0===u.length)return!1;if(n){const t=e.tr;for(const{pos:e,node:n,next:r}of u)t.setNodeMarkup(e,void 0,{...n.attrs,indent:r});n(t)}return!0}}function Ct(t){const{image:e,figure:n}=t.schema.nodes,r=t.selection;if(r instanceof o){if(r.node.type===e)return{node:r.node,pos:r.from,isFigure:!1};if(r.node.type===n)return{node:r.node,pos:r.from,isFigure:!0}}const{$from:i}=r;for(let t=i.depth;t>0;t-=1)if(i.node(t).type===n)return{node:i.node(t),pos:i.before(t),isFigure:!0};return null}function xt(t){const e=t.selection;return e instanceof o&&e.node.type===t.schema.nodes.embed?{node:e.node,pos:e.from}:null}function Bt(t,e,n={}){const{schema:r}=t,{nodes:i,marks:s}=r;switch(e){case"bold":return W(s.bold);case"italic":return W(s.italic);case"underline":return W(s.underline);case"strike":return W(s.strike);case"subscript":return W(s.subscript);case"superscript":return W(s.superscript);case"code":return W(s.code);case"paragraph":return U(i.paragraph);case"heading":return U(i.heading,{level:n.level??1});case"blockquote":return yt(i.blockquote);case"align":return p=n.align??null,(t,e)=>{const{from:n,to:r}=t.selection,i=[];if(t.doc.nodesBetween(n,r,((t,e)=>(t.isTextblock&&t.type.spec.attrs&&"align"in t.type.spec.attrs&&i.push({pos:e,node:t}),!0))),0===i.length)return!1;if(e){const n=t.tr;for(const{pos:t,node:e}of i)n.setNodeMarkup(t,void 0,{...e.attrs,align:p});e(n)}return!0};case"lineHeight":return m=n.lineHeight??null,(t,e)=>{const{from:n,to:r}=t.selection,i=[];if(t.doc.nodesBetween(n,r,((t,e)=>(t.isTextblock&&t.type.spec.attrs&&"lineHeight"in t.type.spec.attrs&&i.push({pos:e,node:t}),!0))),0===i.length)return!1;if(e){const n=t.tr;for(const{pos:t,node:e}of i)n.setNodeMarkup(t,void 0,{...e.attrs,lineHeight:m});e(n)}return!0};case"bulletList":return Mt(i.bullet_list,i.list_item);case"orderedList":return Mt(i.ordered_list,i.list_item);case"taskList":return Mt(i.task_list,i.task_item);case"indent":return J(w(i.task_item),w(i.list_item),kt(1));case"outdent":return J(g(i.task_item),g(i.list_item),kt(-1),I);case"setListStyle":return d=n.style??null,(t,e)=>{const n=$t(t);if(!n)return!1;let r=n;const{$from:i}=t.selection,u=t.schema.nodes.ordered_list;for(let t=1;t<=i.depth;t+=1){const e=i.node(t);if(e.type===u&&(d===$||e.attrs.style===$)){r={node:e,pos:i.before(t),depth:t};break}}return e&&e(t.tr.setNodeMarkup(r.pos,void 0,{...r.node.attrs,style:d})),!0};case"setListStart":return h=n.start??1,(t,e)=>{const n=$t(t);return!(!n||n.node.type!==t.schema.nodes.ordered_list||(e&&e(t.tr.setNodeMarkup(n.pos,void 0,{...n.node.attrs,order:Math.max(1,Math.round(h))})),0))};case"toggleImageCaption":return function(t){return(e,n)=>{const r=Ct(e);if(!r)return!1;if(n){const i=e.tr;if(r.isFigure){const{src:e,alt:n,title:u,width:s}=r.node.attrs,l=t.nodes.image.create({src:e,alt:n,title:u,width:s});i.replaceWith(r.pos,r.pos+r.node.nodeSize,t.nodes.paragraph.create(null,l)),i.setSelection(o.create(i.doc,r.pos+1))}else{const{src:n,alt:s,title:o,width:l}=r.node.attrs,f=s?t.text(s):null,c=t.nodes.figure.create({src:n,alt:s,title:o,width:l,align:null},f),a=e.doc.resolve(r.pos),h=a.parent,d=1===h.childCount&&"paragraph"===h.type.name,m=d?a.before():r.pos,p=d?a.after():r.pos+r.node.nodeSize;i.replaceWith(m,p,c),i.setSelection(u.create(i.doc,m+1+c.content.size))}n(i.scrollIntoView())}return!0}}(r);case"setImageAlign":return function(t,e){return(n,r)=>{const i=Ct(n);if(!i)return!1;const u="left"===e||"center"===e||"right"===e?e:null;if(r){const e=n.tr;if(i.isFigure)e.setNodeMarkup(i.pos,void 0,{...i.node.attrs,align:u}),n.selection instanceof o&&e.setSelection(o.create(e.doc,i.pos));else{const{src:r,alt:s,title:l,width:f}=i.node.attrs,c=t.nodes.figure.create({src:r,alt:s,title:l,width:f,align:u}),a=n.doc.resolve(i.pos),h=a.parent,d=1===h.childCount&&"paragraph"===h.type.name,m=d?a.before():i.pos,p=d?a.after():i.pos+i.node.nodeSize;e.replaceWith(m,p,c),e.setSelection(o.create(e.doc,m))}r(e.scrollIntoView())}return!0}}(r,n.align??null);case"setImageWidth":return a=n.width??null,(t,e)=>{const n=Ct(t);if(!n)return!1;if(e){const r=t.tr.setNodeMarkup(n.pos,void 0,{...n.node.attrs,width:a&&a>0?Math.round(a):null});t.selection instanceof o&&r.setSelection(o.create(r.doc,n.pos)),e(r)}return!0};case"deleteImage":return(t,e)=>{const n=Ct(t);return!!n&&(e&&e(t.tr.delete(n.pos,n.pos+n.node.nodeSize).scrollIntoView()),!0)};case"setEmbedAlign":return function(t){return(e,n)=>{const r=xt(e);if(!r)return!1;const i="left"===t||"center"===t||"right"===t?t:null;if(n){const t=e.tr.setNodeMarkup(r.pos,void 0,{...r.node.attrs,align:i});t.setSelection(o.create(t.doc,r.pos)),n(t.scrollIntoView())}return!0}}(n.align??null);case"deleteEmbed":return(t,e)=>{const n=xt(t);return!!n&&(e&&e(t.tr.delete(n.pos,n.pos+n.node.nodeSize).scrollIntoView()),!0)};case"link":return function(t,e){return(n,r)=>{if(!e.href)return!1;const{empty:i,$from:u,from:s,to:o}=n.selection;let l={from:s,to:o};if(i){const e=wt(u,t);if(!e)return!1;l=e}if(r){const i=n.tr;i.removeMark(l.from,l.to,t),i.addMark(l.from,l.to,t.create({href:e.href,title:e.title??null,target:e.target??null})),r(i.scrollIntoView())}return!0}}(s.link,n);case"unlink":return c=s.link,(t,e)=>{const{empty:n,$from:r,from:i,to:u}=t.selection;let s={from:i,to:u};if(n){const t=wt(r,c);if(!t)return!1;s=t}else if(!t.doc.rangeHasMark(i,u,c))return!1;return e&&e(t.tr.removeMark(s.from,s.to,c)),!0};case"insertBookmark":return function(t,e){return(n,r)=>{const i=e.id?.trim();if(!i)return!1;if(r){const e=t.nodes.bookmark.create({id:i});r(n.tr.replaceSelectionWith(e,!1).scrollIntoView())}return!0}}(r,n);case"textColor":return vt(s.text_color,n.color?{color:n.color}:null);case"bgColor":return vt(s.bg_color,n.color?{color:n.color}:null);case"fontFamily":return vt(s.font_family,n.family?{family:n.family}:null);case"fontSize":return vt(s.font_size,n.size?{size:n.size}:null);case"horizontalRule":return f=i.horizontal_rule,(t,e)=>(e&&e(t.tr.replaceSelectionWith(f.create()).scrollIntoView()),!0);case"clearFormatting":return(t,e)=>{const{from:n,to:r,empty:i}=t.selection;if(e){const u=t.tr;i||u.removeMark(n,r,null),u.setStoredMarks([]),t.doc.nodesBetween(n,r,((t,e)=>(t.isTextblock&&t.type.spec.attrs&&"align"in t.type.spec.attrs&&(t.attrs.align||t.attrs.lineHeight)&&u.setNodeMarkup(e,void 0,{...t.attrs,align:null,lineHeight:null}),!0))),e(u)}return!0};case"undo":return pt;case"redo":return gt;case"codeBlock":return function(t,e){return(n,r,i)=>{const{$from:u}=n.selection;return u.parent.type===t.nodes.code_block?U(t.nodes.paragraph)(n,r,i):U(t.nodes.code_block,{language:e})(n,r,i)}}(r,n.language??null);case"setCodeBlockLanguage":return function(t,e){return(n,r)=>{const{$from:i}=n.selection;for(let u=i.depth;u>0;u-=1)if(i.node(u).type===t.nodes.code_block)return r&&r(n.tr.setNodeMarkup(i.before(u),void 0,{language:e})),!0;return!1}}(r,n.language??null);case"insertEmbed":return function(t,e){return(n,r)=>{if(!e.src)return!1;const i=t.nodes.embed.create({src:e.src,provider:e.provider??null,title:e.title??null});return r&&r(n.tr.replaceSelectionWith(i).scrollIntoView()),!0}}(r,n);case"insertImage":return function(t,e){return(n,r)=>{if(!e.src)return!1;const i=e.src,u=e.alt??null,s=e.title??null,o=null!=e.caption?String(e.caption).trim():"",l=o?t.nodes.figure.create({src:i,alt:u,title:s,width:null,align:null},t.text(o)):t.nodes.image.create({src:i,alt:u,title:s});return r&&r(n.tr.replaceSelectionWith(l).scrollIntoView()),!0}}(r,n);case"updateImage":return function(t,e){return(n,r)=>{const i=Ct(n);if(!i||!e.src)return!1;const u=e.src,s=e.alt??null,l=e.title??null,f=null!=e.caption?String(e.caption).trim():"",c=i.node.attrs.width??null,a=i.isFigure?i.node.attrs.align??null:null;if(r){const e=n.tr;if(f){const r=t.nodes.figure.create({src:u,alt:s,title:l,width:c,align:a},t.text(f));if(i.isFigure)e.replaceWith(i.pos,i.pos+i.node.nodeSize,r),e.setSelection(o.create(e.doc,i.pos));else{const t=n.doc.resolve(i.pos),u=t.parent,s=1===u.childCount&&"paragraph"===u.type.name,l=s?t.before():i.pos,f=s?t.after():i.pos+i.node.nodeSize;e.replaceWith(l,f,r),e.setSelection(o.create(e.doc,l))}}else if(i.isFigure){const n=t.nodes.image.create({src:u,alt:s,title:l,width:c});e.replaceWith(i.pos,i.pos+i.node.nodeSize,t.nodes.paragraph.create(null,n)),e.setSelection(o.create(e.doc,i.pos+1))}else e.setNodeMarkup(i.pos,void 0,{src:u,alt:s,title:l,width:c}),n.selection instanceof o&&e.setSelection(o.create(e.doc,i.pos));r(e.scrollIntoView())}return!0}}(r,n);case"insertTable":return function(t,e){const n=Math.max(1,e.rows??3),r=Math.max(1,e.cols??3),i=e.withHeaderRow??!0;return(e,u)=>{const{table:s,table_row:o,table_cell:l,table_header:f}=t.nodes,c=[];for(let t=0;t<n;t+=1){const e=0===t&&i?f:l,n=[];for(let t=0;t<r;t+=1)n.push(e.createAndFill());c.push(o.create(null,n))}return u&&u(e.tr.replaceSelectionWith(s.create(null,c)).scrollIntoView()),!0}}(r,n);case"addRowBefore":return H;case"addRowAfter":return L;case"addColumnBefore":return A;case"addColumnAfter":return j;case"deleteRow":return B;case"deleteColumn":return x;case"mergeCells":return C;case"splitCell":return k;case"toggleHeaderRow":return y;case"toggleLayoutTable":return(t,e)=>{const{$from:n}=t.selection;for(let r=n.depth;r>0;r-=1){const i=n.node(r);if(i.type===t.schema.nodes.table)return e&&e(t.tr.setNodeMarkup(n.before(r),void 0,{...i.attrs,layout:!i.attrs.layout})),!0}return!1};case"deleteTable":return M;case"changeCase":return l=n.textCase??"upper",(t,e)=>{const{from:n,to:r,empty:i}=t.selection;if(i)return!1;const u=[];if(t.doc.nodesBetween(n,r,((t,e)=>{if(!t.isText||!t.text)return;const i=Math.max(n,e),s=Math.min(r,e+t.nodeSize);if(i>=s)return;const o=t.text.slice(i-e,s-e),f=function(t,e){switch(e){case"upper":return t.toUpperCase();case"lower":return t.toLowerCase();case"title":return t.toLowerCase().replace(/(^|\s)(\p{L})/gu,((t,e,n)=>e+n.toUpperCase()));case"sentence":return t.toLowerCase().replace(/(^|[.!?]\s+)(\p{L})/gu,((t,e,n)=>e+n.toUpperCase()))}}(o,l);f!==o&&u.push({from:i,to:s,text:f,marks:t.marks})})),0===u.length)return!1;if(e){const n=t.tr;for(const e of u.reverse())n.replaceWith(e.from,e.to,t.schema.text(e.text,e.marks));e(n.scrollIntoView())}return!0};case"insertMergeField":return function(t,e){return(n,r)=>{const i=t.nodes.merge_field;if(!i||!e.id)return!1;if(r){const t=i.create({id:e.id,label:e.label??null});r(n.tr.replaceSelectionWith(t).scrollIntoView())}return!0}}(r,n);case"insertMath":return function(t,e){return(n,r)=>{const i=t.nodes.math,u=(e.latex??"").trim();if(!i||!u)return!1;if(r){const t=i.create({latex:u,display:e.mathDisplay??"inline"});r(n.tr.replaceSelectionWith(t).scrollIntoView())}return!0}}(r,n);default:return null}var l,f,c,a,h,d,m,p}export{xt as a,Bt as b,J as c,X as d,_ as e,wt as g,dt as h,gt as r,Ct as s,pt as u};
|