@aquera/nile-elements 1.9.6 → 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 +3 -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 +3595 -629
- 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-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 +1 -1
- 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-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-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-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-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 +450 -0
- 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":"nile-wysiwyg-toolbar.js","sourceRoot":"","sources":["../../../../src/nile-wysiwyg-editor/nile-wysiwyg-toolbar/nile-wysiwyg-toolbar.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAkC,OAAO,EAAE,MAAM,KAAK,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,WAAW,MAAM,6BAA6B,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAGpD,OAAO,EAAE,eAAe,EAAiB,MAAM,UAAU,CAAC;AAC1D,OAAO,yBAAyB,CAAC;AAwCjC,MAAM,aAAa,GAAG;IACpB,OAAO;IACP,SAAS;IACT,QAAQ;IACR,iBAAiB;IACjB,cAAc;IACd,SAAS;IACT,aAAa;CACd,CAAC;AAEF,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAGpG,8CAA8C;AAC9C,MAAM,aAAa,GAAG;IACpB,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS;IAC3E,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS;IACtF,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS;CAC5E,CAAC;AAEF,MAAM,KAAK,GAA4B;IACrC,IAAI,EAAE;QACJ,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,MAAM;QACf,KAAK,EAAE,eAAe;QACtB,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO;KAC1B;IACD,IAAI,EAAE;QACJ,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,MAAM;QACf,KAAK,EAAE,eAAe;QACtB,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO;KAC1B;IACD,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,UAAU;QACnB,KAAK,EAAE,yBAAyB;QAChC,IAAI,EAAE,gBAAgB;KACvB;IACD,IAAI,EAAE;QACJ,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,MAAM;QACf,KAAK,EAAE,eAAe;QACtB,IAAI,EAAE,aAAa;QACnB,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI;KACpB;IACD,MAAM,EAAE;QACN,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,QAAQ;QACjB,KAAK,EAAE,iBAAiB;QACxB,IAAI,EAAE,eAAe;QACrB,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM;KACtB;IACD,SAAS,EAAE;QACT,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,WAAW;QACpB,KAAK,EAAE,oBAAoB;QAC3B,IAAI,EAAE,kBAAkB;QACxB,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS;KACzB;IACD,MAAM,EAAE;QACN,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,QAAQ;QACjB,KAAK,EAAE,eAAe;QACtB,IAAI,EAAE,kBAAkB;QACxB,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM;KACtB;IACD,SAAS,EAAE;QACT,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,WAAW;QACpB,KAAK,EAAE,oBAAoB;QAC3B,IAAI,EAAE,cAAc;QACpB,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS;KACzB;IACD,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,aAAa;QACtB,KAAK,EAAE,sBAAsB;QAC7B,IAAI,EAAE,gBAAgB;QACtB,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW;KAC3B;IACD,IAAI,EAAE;QACJ,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,MAAM;QACf,KAAK,EAAE,aAAa;QACpB,IAAI,EAAE,KAAK;QACX,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI;KACpB;IACD,SAAS,EAAE;QACT,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,OAAO;QAChB,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;QACxB,KAAK,EAAE,YAAY;QACnB,IAAI,EAAE,mBAAmB;QACzB,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,MAAM;KAChC;IACD,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,OAAO;QAChB,KAAK,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE;QAC1B,KAAK,EAAE,cAAc;QACrB,IAAI,EAAE,qBAAqB;QAC3B,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,QAAQ;KAClC;IACD,UAAU,EAAE;QACV,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,OAAO;QAChB,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;QACzB,KAAK,EAAE,aAAa;QACpB,IAAI,EAAE,oBAAoB;QAC1B,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,OAAO;KACjC;IACD,YAAY,EAAE;QACZ,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,OAAO;QAChB,KAAK,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE;QAC3B,KAAK,EAAE,SAAS;QAChB,IAAI,EAAE,sBAAsB;QAC5B,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS;KACnC;IACD,UAAU,EAAE;QACV,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,YAAY;QACrB,KAAK,EAAE,eAAe;QACtB,IAAI,EAAE,sBAAsB;QAC5B,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY;KAC5B;IACD,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,aAAa;QACtB,KAAK,EAAE,eAAe;QACtB,IAAI,EAAE,sBAAsB;QAC5B,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa;KAC7B;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,UAAU;QACnB,KAAK,EAAE,WAAW;QAClB,IAAI,EAAE,gBAAgB;QACtB,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU;KAC1B;IACD,MAAM,EAAE;QACN,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,QAAQ;QACjB,KAAK,EAAE,0BAA0B;QACjC,IAAI,EAAE,yBAAyB;QAC/B,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW;KAC7B;IACD,OAAO,EAAE;QACP,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,SAAS;QAClB,KAAK,EAAE,0BAA0B;QACjC,IAAI,EAAE,yBAAyB;QAC/B,QAAQ,EAAE,CAAC,CAAC,EAAE,CACZ,CAAC,CAAC,CAAC,YAAY;YACf,CAAC,CAAC,CAAC,aAAa;YAChB,CAAC,CAAC,CAAC,UAAU;YACb,CAAC,CAAC,CAAC,YAAY;YACf,CAAC,CAAC,WAAW,KAAK,CAAC;KACtB;IACD,SAAS,EAAE;QACT,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,YAAY;QACnB,OAAO,EAAE,CAAC,CAAC,EAAE,CACX,CAAC,EAAE,aAAa;YACd,CAAC,CAAC;gBACE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE;gBAC/B,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,EAAE;gBAC1C,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,EAAE;gBAC1C,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,YAAY,EAAE;gBAC7C,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,YAAY,EAAE;gBAC7C,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE;aAC7C;YACH,CAAC,CAAC;gBACE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE;gBAC9B,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE;gBACtC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE;aACvC;QACP,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,EAAE;QAC7B,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,CAAC;QAC7E,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC,aAAa;KACnD;IACD,UAAU,EAAE;QACV,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,YAAY;QACrB,KAAK,EAAE,YAAY;QACnB,IAAI,EAAE,GAAG;QACT,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY;KAC5B;IACD,IAAI,EAAE;QACJ,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,UAAU;QACnB,KAAK,EAAE,eAAe;QACtB,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU;KAC1B;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,cAAc;QACvB,KAAK,EAAE,kCAAkC;QACzC,IAAI,EAAE,aAAa;KACpB;IACD,cAAc,EAAE;QACd,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,gBAAgB;QACzB,KAAK,EAAE,iBAAiB;QACxB,IAAI,EAAE,OAAO;KACd;IACD,YAAY,EAAE;QACZ,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,kBAAkB;QAC3B,KAAK,EAAE,oBAAoB;QAC3B,IAAI,EAAE,GAAG;KACV;IACD,KAAK,EAAE;QACL,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,WAAW;QACpB,KAAK,EAAE,OAAO;QACd,IAAI,EAAE,UAAU;KACjB;IACD,SAAS,EAAE;QACT,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,WAAW;QACpB,KAAK,EAAE,yBAAyB;QAChC,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW;KAC3B;IACD,KAAK,EAAE;QACL,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,WAAW;QACpB,KAAK,EAAE,cAAc;QACrB,IAAI,EAAE,SAAS;KAChB;IACD,KAAK,EAAE;QACL,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,WAAW;QACpB,KAAK,EAAE,oCAAoC;QAC3C,IAAI,EAAE,UAAU;KACjB;IACD,UAAU,EAAE;QACV,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,cAAc;QACvB,KAAK,EAAE,aAAa;QACpB,IAAI,EAAE,aAAa;KACpB;IACD,UAAU,EAAE;QACV,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,kBAAkB;QAC3B,KAAK,EAAE,aAAa;QACpB,IAAI,EAAE,mBAAmB;QACzB,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU;KAC5B;IACD,eAAe,EAAE;QACf,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,iBAAiB;QAC1B,KAAK,EAAE,kBAAkB;QACzB,IAAI,EAAE,cAAc;KACrB;IACD,cAAc,EAAE;QACd,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,sBAAsB;QAC/B,KAAK,EAAE,qBAAqB;QAC5B,IAAI,EAAE,oBAAoB;QAC1B,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB;KAClC;IACD,UAAU,EAAE;QACV,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,kBAAkB;QAC3B,KAAK,EAAE,0BAA0B;QACjC,IAAI,EAAE,eAAe;QACrB,UAAU,EAAE,eAAe;QAC3B,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU;KAC5B;IACD,YAAY,EAAE;QACZ,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,kBAAkB;QAC3B,KAAK,EAAE,6BAA6B;QACpC,IAAI,EAAE,aAAa;KACpB;IACD,SAAS,EAAE;QACT,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,WAAW;QACpB,KAAK,EAAE,eAAe;QACtB,IAAI,EAAE,YAAY;KACnB;IACD,UAAU,EAAE;QACV,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,YAAY;QACrB,KAAK,EAAE,gBAAgB;QACvB,IAAI,EAAE,cAAc;KACrB;IACD,gBAAgB,EAAE;QAChB,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,kBAAkB;QAC3B,KAAK,EAAE,wCAAwC;QAC/C,IAAI,EAAE,cAAc;KACrB;IACD,cAAc,EAAE;QACd,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,cAAc;QACvB,KAAK,EAAE,sBAAsB;QAC7B,IAAI,EAAE,oBAAoB;KAC3B;IACD,UAAU,EAAE;QACV,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,YAAY;QACrB,KAAK,EAAE,kBAAkB;QACzB,IAAI,EAAE,eAAe;KACtB;IACD,aAAa,EAAE;QACb,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,qBAAqB;QAC9B,KAAK,EAAE,kCAAkC;QACzC,IAAI,EAAE,eAAe;QACrB,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa;KAC/B;IACD,UAAU,EAAE;QACV,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,aAAa;QACpB,OAAO,EAAE;YACP,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;YAC5B,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE;YACtC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE;YACtC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE;YACvC,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,eAAe,EAAE;SAC9C;QACD,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE;QACf,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;YACjB,IAAI,EAAE,YAAY;YAClB,KAAK,EAAE,EAAE,QAAQ,EAAE,CAAC,KAAK,IAAI,OAAO,CAA6C,EAAE;SACpF,CAAC;QACF,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc;KAChC;IACD,UAAU,EAAE;QACV,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,gBAAgB;QACzB,KAAK,EAAE,oBAAoB;QAC3B,IAAI,EAAE,WAAW;KAClB;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,cAAc;QACvB,KAAK,EAAE,iBAAiB;QACxB,IAAI,EAAE,oBAAoB;KAC3B;IACD,IAAI,EAAE;QACJ,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,UAAU;QACnB,KAAK,EAAE,qBAAqB;QAC5B,IAAI,EAAE,UAAU;KACjB;IACD,OAAO,EAAE;QACP,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,iBAAiB;QACxB,OAAO,EAAE;YACP,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE;YACjC,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE;YAClC,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE;YAClC,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE;YAClC,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE;YAClC,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE;YAClC,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE;SACnC;QACD,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1D,OAAO,EAAE,KAAK,CAAC,EAAE,CACf,KAAK,KAAK,EAAE;YACV,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE;YACvB,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE;KAC3D;IACD,UAAU,EAAE;QACV,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,aAAa;QACpB,OAAO,EAAE;YACP,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;YAC5B,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;SACpD;QACD,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,IAAI,EAAE;QAC9B,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,CAAC;KAC7E;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,WAAW;QAClB,OAAO,EAAE;YACP,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;YAC5B,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;SACnE;QACD,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE;QAC5B,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,CAAC;KACzE;IACD,UAAU,EAAE;QACV,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,aAAa;QACpB,OAAO,EAAE;YACP,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE;YAC/B,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE;YAC1B,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;YAChC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;YAC9B,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE;YAC1B,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;YAC9B,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE;SAC3B;QACD,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,IAAI,EAAE;QAC9B,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,CAAC;QAChF,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW;KAC7B;IACD,SAAS,EAAE;QACT,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,YAAY;QACnB,KAAK,EAAE,GAAG;QACV,OAAO,EAAE,WAAW;QACpB,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS;KACxB;IACD,OAAO,EAAE;QACP,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,iBAAiB;QACxB,KAAK,EAAE,GAAG;QACV,OAAO,EAAE,SAAS;QAClB,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO;KACtB;CACF,CAAC;AAEF;;;;;;GAMG;AAEI,IAAM,kBAAkB,GAAxB,MAAM,kBAAmB,SAAQ,WAAW;IAA5C;;QACL,yDAAyD;QAC7B,WAAM,GAAG,eAAe,CAAC;QAET,aAAQ,GAAG,KAAK,CAAC;QAI7D,8DAA8D;QAC7C,aAAQ,GAAkB,IAAI,CAAC;QAEhD,mEAAmE;QAClD,iBAAY,GAA6B,EAAE,CAAC;QAgBrD,uBAAkB,GAAG,CAAC,KAAiB,EAAQ,EAAE;YACvD,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QAClF,CAAC,CAAC;IAgQJ,CAAC;IAhRQ,MAAM,KAAK,MAAM;QACtB,OAAO,CAAC,MAAM,CAAC,CAAC;IAClB,CAAC;IAED,iBAAiB;QACf,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAClE,CAAC;IAED,oBAAoB;QAClB,KAAK,CAAC,oBAAoB,EAAE,CAAC;QAC7B,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;IACrE,CAAC;IAMO,UAAU,CAAC,IAAY;QAC7B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IACvD,CAAC;IAEO,eAAe,CAAC,IAAiC,EAAE,KAAoB;QAC7E,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAChD,CAAC;IAED;iDAC6C;IACrC,WAAW,CAAC,KAAa,EAAE,OAAuB;QACxD,OAAO,IAAI,CAAA;mCACoB,KAAK,uBAAuB,OAAO;KACjE,CAAC;IACJ,CAAC;IAEO,YAAY,CAAC,GAAc;QACjC,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC;QAChC,MAAM,QAAQ,GAAG,KAAK,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QACjE,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,IAAI,CAAC,KAAK,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAC1F,MAAM,IAAI,GAAG,QAAQ,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;QACpE,OAAO,IAAI,CAAC,WAAW,CACrB,GAAG,CAAC,KAAK,EACT,IAAI,CAAA;;;;;uBAKa,GAAG,CAAC,KAAK;yBACP,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO;yBAC3B,QAAQ;sBACX,UAAU;uBACT,CAAC,CAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,EAAE;mBACpC,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC;;YAEzD,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI;;OAE5C,CACF,CAAC;IACJ,CAAC;IAEO,YAAY,CAAC,IAAY,EAAE,GAAc;QAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACpE,MAAM,OAAO,GACX,OAAO,GAAG,CAAC,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC;QACnF,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;QACvE,MAAM,UAAU,GACd,IAAI,CAAC,QAAQ;YACb,CAAC,IAAI,CAAC,YAAY,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAChF,MAAM,MAAM,GAAG,IAAI,KAAK,YAAY,CAAC;QACrC,OAAO,IAAI,CAAA;;UAEL,IAAI,CAAC,WAAW,CAChB,GAAG,CAAC,KAAK,EACT,IAAI,CAAA;;;;2BAIa,GAAG,CAAC,KAAK;8BACN,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO;0BAC7C,UAAU;sBACd,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,gBAAgB,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE;2BACzC,CAAC,CAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,EAAE;uBACpC,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;;gBAElC,OAAO,CAAC,KAAK;;;WAGlB,CACF;UACC,IAAI,CAAC,QAAQ,KAAK,IAAI;YACtB,CAAC,CAAC,IAAI,CAAA;yDACyC,CAAC,CAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,EAAE;kBACvE,OAAO,CAAC,GAAG,CACX,GAAG,CAAC,EAAE,CAAC,IAAI,CAAA;;;qCAGQ,GAAG,CAAC,KAAK,KAAK,KAAK;8BAC1B,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,gBAAgB,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE;+BACrD,GAAG,EAAE;gBACZ,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;gBACrB,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACpD,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACnC,CAAC;;wBAEC,GAAG,CAAC,KAAK;;mBAEd,CACF;;aAEJ;YACH,CAAC,CAAC,OAAO;;KAEd,CAAC;IACJ,CAAC;IAEO,QAAQ,CAAC,IAAY,EAAE,GAAa,EAAE,KAAa;QACzD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAC7C,IAAI,CAAC,YAAY,GAAG;YAClB,GAAG,IAAI,CAAC,YAAY;YACpB,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;SAChE,CAAC;QACF,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IAC/C,CAAC;IAEO,WAAW,CAAC,IAAY,EAAE,GAAa;QAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACxE,MAAM,KAAK,GAAG,OAAO,IAAI,SAAS,CAAC;QACnC,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAC7C,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC;QACvC,OAAO,IAAI,CAAA;;UAEL,IAAI,CAAC,WAAW,CAChB,GAAG,CAAC,KAAK,EACT,IAAI,CAAA;;;;2BAIa,GAAG,CAAC,KAAK;8BACN,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO;0BAC7C,IAAI,CAAC,QAAQ;2BACZ,CAAC,CAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,EAAE;uBACpC,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;;gBAElC,IAAI;YACJ,CAAC,CAAC,IAAI,CAAA,+CAA+C,KAAK,WAAW;YACrE,CAAC,CAAC,IAAI,CAAA;;;mEAG6C,KAAK;;mBAErD;;WAER,CACF;UACC,IAAI,CAAC,QAAQ,KAAK,IAAI;YACtB,CAAC,CAAC,IAAI,CAAA;8DAC8C,CAAC,CAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,EAAE;;;;sBAIxE,aAAa,CAAC,GAAG,CACjB,KAAK,CAAC,EAAE,CAAC,IAAI,CAAA;;;;+CAIY,KAAK;kCAClB,KAAK;mCACJ,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC;;4BAE5C,OAAO,KAAK,KAAK;gBACjB,CAAC,CAAC,IAAI,CAAA,kCAAkC;gBACxC,CAAC,CAAC,OAAO;;uBAEd,CACF;;;kBAGH,MAAM,CAAC,MAAM;gBACb,CAAC,CAAC,IAAI,CAAA;;;;4BAII,MAAM,CAAC,GAAG,CACV,KAAK,CAAC,EAAE,CAAC,IAAI,CAAA;;;;qDAIY,KAAK;wCAClB,KAAK;yCACJ,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC;;6BAEjD,CACF;;;qBAGN;gBACH,CAAC,CAAC,OAAO;;;;;;;+BAOI,CAAC,CAAQ,EAAE,EAAE;gBACpB,MAAM,KAAK,GAAI,CAAC,CAAC,aAA6B;qBAC3C,OAAO,CAAC,iBAAiB,CAAE;qBAC3B,aAAa,CAAmB,qBAAqB,CAAC,CAAC;gBAC1D,KAAK,EAAE,KAAK,EAAE,CAAC;YACjB,CAAC;;;;;;;aAOV;YACH,CAAC,CAAC,OAAO;;;;;mBAKA,KAAK;mBACL,CAAC,CAAQ,EAAE,EAAE,CACpB,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAG,CAAC,CAAC,MAA2B,CAAC,KAAK,CAAC;;;KAGrE,CAAC;IACJ,CAAC;IAEO,UAAU,CAAC,IAAY;QAC7B,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YACrB,OAAO,IAAI,CAAC,WAAW,CACrB,cAAc,EACd,IAAI,CAAA;;;wBAGY,IAAI,CAAC,QAAQ;;SAE5B,CACF,CAAC;QACJ,CAAC;QACD,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;QACxB,IAAI,CAAC,GAAG;YAAE,OAAO,OAAO,CAAC;QACzB,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC;YACjB,KAAK,QAAQ;gBACX,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;YAChC,KAAK,QAAQ;gBACX,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YACtC,KAAK,OAAO;gBACV,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YACrC;gBACE,OAAO,OAAO,CAAC;QACnB,CAAC;IACH,CAAC;IAEM,MAAM;QACX,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM;aACvB,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;aACvD,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAErC,OAAO,IAAI,CAAA;;UAEL,MAAM,CAAC,GAAG,CACV,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAA;cAClB,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA,wCAAwC,CAAC,CAAC,CAAC,OAAO;cAClE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;WAC3C,CACF;;KAEJ,CAAC;IACJ,CAAC;CACF,CAAA;AA5R6B;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;kDAA0B;AAET;IAA3C,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;oDAAkB;AAE7B;IAA/B,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;wDAA6B;AAG3C;IAAhB,KAAK,EAAE;oDAAwC;AAG/B;IAAhB,KAAK,EAAE;wDAAqD;AAZlD,kBAAkB;IAD9B,aAAa,CAAC,sBAAsB,CAAC;GACzB,kBAAkB,CA8R9B","sourcesContent":["import { html, TemplateResult, CSSResultArray, nothing } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport NileElement from '../../internal/nile-element';\nimport { renderGlyph } from '../../internal/glyph';\nimport { styles } from './nile-wysiwyg-toolbar.css';\nimport type { ToolbarState } from '../engine/selection-state';\nimport type { CommandAttrs, CommandName } from '../engine/commands';\nimport { DEFAULT_TOOLBAR, UiCommandName } from '../types';\nimport '../ui/table-grid-picker';\n\ninterface ButtonDef {\n kind: 'button';\n command: CommandName | UiCommandName;\n attrs?: CommandAttrs;\n label: string;\n /** nile-glyph icon name; `text` is the fallback when no glyph exists. */\n icon?: string;\n /** Glyph shown instead of `icon` while the button is active (e.g. fullscreen). */\n iconActive?: string;\n text?: TemplateResult | string;\n active?: (s: ToolbarState) => boolean;\n disabled?: (s: ToolbarState) => boolean;\n}\n\ninterface SelectDef {\n kind: 'select';\n label: string;\n /** Static list, or contextual options derived from the toolbar state. */\n options:\n | { value: string; label: string }[]\n | ((s: ToolbarState | undefined) => { value: string; label: string }[]);\n /** Current value derived from toolbar state ('' = default option). */\n value: (s: ToolbarState) => string;\n /** Maps the chosen option to a command invocation. */\n command: (value: string) => { name: CommandName; attrs?: CommandAttrs };\n disabled?: (s: ToolbarState) => boolean;\n}\n\ninterface ColorDef {\n kind: 'color';\n label: string;\n glyph: string;\n command: CommandName;\n value: (s: ToolbarState) => string | null;\n}\n\ntype ItemDef = ButtonDef | SelectDef | ColorDef;\n\nconst FONT_FAMILIES = [\n 'Arial',\n 'Georgia',\n 'Tahoma',\n 'Times New Roman',\n 'Trebuchet MS',\n 'Verdana',\n 'Courier New',\n];\n\nconst FONT_SIZES = ['10px', '12px', '14px', '16px', '18px', '20px', '24px', '28px', '32px', '48px'];\n\n\n/** Same default palette as nile-rte-color. */\nconst COLOR_PALETTE = [\n '#000000', '#444444', '#666666', '#999999', '#cccccc', '#eeeeee', '#ffffff',\n '#d32f2f', '#f44336', '#ff9800', '#ffeb3b', '#4caf50', '#2196f3', '#3f51b5', '#9c27b0',\n '#03a9f4', '#00bcd4', '#009688', '#8bc34a', '#cddc39', '#ffc107', '#ff5722',\n];\n\nconst ITEMS: Record<string, ItemDef> = {\n undo: {\n kind: 'button',\n command: 'undo',\n label: 'Undo (Ctrl+Z)',\n icon: 'undo',\n disabled: s => !s.canUndo,\n },\n redo: {\n kind: 'button',\n command: 'redo',\n label: 'Redo (Ctrl+Y)',\n icon: 'redo',\n disabled: s => !s.canRedo,\n },\n findReplace: {\n kind: 'button',\n command: 'openFind',\n label: 'Find & replace (Ctrl+F)',\n icon: 'ng-text-search',\n },\n bold: {\n kind: 'button',\n command: 'bold',\n label: 'Bold (Ctrl+B)',\n icon: 'format_bold',\n active: s => s.bold,\n },\n italic: {\n kind: 'button',\n command: 'italic',\n label: 'Italic (Ctrl+I)',\n icon: 'format_italic',\n active: s => s.italic,\n },\n underline: {\n kind: 'button',\n command: 'underline',\n label: 'Underline (Ctrl+U)',\n icon: 'format_underline',\n active: s => s.underline,\n },\n strike: {\n kind: 'button',\n command: 'strike',\n label: 'Strikethrough',\n icon: 'ng-strikethrough',\n active: s => s.strike,\n },\n subscript: {\n kind: 'button',\n command: 'subscript',\n label: 'Subscript (Ctrl+,)',\n icon: 'ng-subscript',\n active: s => s.subscript,\n },\n superscript: {\n kind: 'button',\n command: 'superscript',\n label: 'Superscript (Ctrl+.)',\n icon: 'ng-superscript',\n active: s => s.superscript,\n },\n code: {\n kind: 'button',\n command: 'code',\n label: 'Inline code',\n text: '</>',\n active: s => s.code,\n },\n alignLeft: {\n kind: 'button',\n command: 'align',\n attrs: { align: 'left' },\n label: 'Align left',\n icon: 'format_align_left',\n active: s => s.align === 'left',\n },\n alignCenter: {\n kind: 'button',\n command: 'align',\n attrs: { align: 'center' },\n label: 'Align center',\n icon: 'format_align_middle',\n active: s => s.align === 'center',\n },\n alignRight: {\n kind: 'button',\n command: 'align',\n attrs: { align: 'right' },\n label: 'Align right',\n icon: 'format_align_right',\n active: s => s.align === 'right',\n },\n alignJustify: {\n kind: 'button',\n command: 'align',\n attrs: { align: 'justify' },\n label: 'Justify',\n icon: 'format_align_justify',\n active: s => s.align === 'justify',\n },\n bulletList: {\n kind: 'button',\n command: 'bulletList',\n label: 'Bulleted list',\n icon: 'format_list_bulleted',\n active: s => s.inBulletList,\n },\n orderedList: {\n kind: 'button',\n command: 'orderedList',\n label: 'Numbered list',\n icon: 'format_list_numbered',\n active: s => s.inOrderedList,\n },\n taskList: {\n kind: 'button',\n command: 'taskList',\n label: 'Checklist',\n icon: 'ng-list-checks',\n active: s => s.inTaskList,\n },\n indent: {\n kind: 'button',\n command: 'indent',\n label: 'Increase indent (Ctrl+])',\n icon: 'ng-list-indent-increase',\n disabled: s => s.inCodeBlock,\n },\n outdent: {\n kind: 'button',\n command: 'outdent',\n label: 'Decrease indent (Ctrl+[)',\n icon: 'ng-list-indent-decrease',\n disabled: s =>\n !s.inBulletList &&\n !s.inOrderedList &&\n !s.inTaskList &&\n !s.inBlockquote &&\n s.blockIndent === 0,\n },\n listStyle: {\n kind: 'select',\n label: 'List style',\n options: s =>\n s?.inOrderedList\n ? [\n { value: '', label: '1, 2, 3' },\n { value: 'lower-alpha', label: 'a, b, c' },\n { value: 'upper-alpha', label: 'A, B, C' },\n { value: 'lower-roman', label: 'i, ii, iii' },\n { value: 'upper-roman', label: 'I, II, III' },\n { value: 'multilevel', label: '1.1, 1.1.1' },\n ]\n : [\n { value: '', label: '• Disc' },\n { value: 'circle', label: '○ Circle' },\n { value: 'square', label: '▪ Square' },\n ],\n value: s => s.listStyle ?? '',\n command: value => ({ name: 'setListStyle', attrs: { style: value || null } }),\n disabled: s => !s.inBulletList && !s.inOrderedList,\n },\n blockquote: {\n kind: 'button',\n command: 'blockquote',\n label: 'Blockquote',\n text: '❝',\n active: s => s.inBlockquote,\n },\n link: {\n kind: 'button',\n command: 'openLink',\n label: 'Link (Ctrl+K)',\n icon: 'link_2',\n active: s => s.linkActive,\n },\n bookmark: {\n kind: 'button',\n command: 'openBookmark',\n label: 'Insert bookmark (in-text anchor)',\n icon: 'ng-bookmark',\n },\n horizontalRule: {\n kind: 'button',\n command: 'horizontalRule',\n label: 'Horizontal rule',\n icon: 'minus',\n },\n specialChars: {\n kind: 'button',\n command: 'openSpecialChars',\n label: 'Special characters',\n text: 'Ω',\n },\n emoji: {\n kind: 'button',\n command: 'openEmoji',\n label: 'Emoji',\n icon: 'ng-smile',\n },\n codeBlock: {\n kind: 'button',\n command: 'codeBlock',\n label: 'Code block (Ctrl+Alt+C)',\n icon: 'ng-code',\n active: s => s.inCodeBlock,\n },\n image: {\n kind: 'button',\n command: 'openImage',\n label: 'Insert image',\n icon: 'image_2',\n },\n embed: {\n kind: 'button',\n command: 'openEmbed',\n label: 'Embed video (YouTube, Vimeo, Loom)',\n icon: 'ng-video',\n },\n sourceView: {\n kind: 'button',\n command: 'toggleSource',\n label: 'HTML source',\n icon: 'ng-code-xml',\n },\n showBlocks: {\n kind: 'button',\n command: 'toggleShowBlocks',\n label: 'Show blocks',\n icon: 'ng-square-pilcrow',\n active: s => !!s.showBlocks,\n },\n clearFormatting: {\n kind: 'button',\n command: 'clearFormatting',\n label: 'Clear formatting',\n icon: 'format_clear',\n },\n pastePlainText: {\n kind: 'button',\n command: 'togglePastePlainText',\n label: 'Paste as plain text',\n icon: 'ng-clipboard-paste',\n active: s => !!s.pasteAsPlainText,\n },\n fullscreen: {\n kind: 'button',\n command: 'toggleFullscreen',\n label: 'Fullscreen (Esc to exit)',\n icon: 'ng-maximize-2',\n iconActive: 'ng-minimize-2',\n active: s => !!s.fullscreen,\n },\n shortcutHelp: {\n kind: 'button',\n command: 'openShortcutHelp',\n label: 'Keyboard shortcuts (Ctrl+/)',\n icon: 'ng-keyboard',\n },\n exportPdf: {\n kind: 'button',\n command: 'exportPdf',\n label: 'Export to PDF',\n icon: 'ng-printer',\n },\n exportWord: {\n kind: 'button',\n command: 'exportWord',\n label: 'Export to Word',\n icon: 'ng-file-text',\n },\n exportInlineHtml: {\n kind: 'button',\n command: 'exportInlineHtml',\n label: 'Export HTML with inline styles (email)',\n icon: 'ng-file-code',\n },\n importMarkdown: {\n kind: 'button',\n command: 'openMarkdown',\n label: 'Insert from Markdown',\n icon: 'ng-clipboard-paste',\n },\n importWord: {\n kind: 'button',\n command: 'importWord',\n label: 'Import from Word',\n icon: 'ng-file-input',\n },\n formatPainter: {\n kind: 'button',\n command: 'toggleFormatPainter',\n label: 'Format painter (copy formatting)',\n icon: 'ng-paintbrush',\n active: s => !!s.formatPainter,\n },\n caseChange: {\n kind: 'select',\n label: 'Change case',\n options: [\n { value: '', label: 'Case' },\n { value: 'upper', label: 'UPPERCASE' },\n { value: 'lower', label: 'lowercase' },\n { value: 'title', label: 'Title Case' },\n { value: 'sentence', label: 'Sentence case' },\n ],\n value: () => '',\n command: value => ({\n name: 'changeCase',\n attrs: { textCase: (value || 'upper') as 'upper' | 'lower' | 'title' | 'sentence' },\n }),\n disabled: s => s.selectionEmpty,\n },\n mergeField: {\n kind: 'button',\n command: 'openMergeField',\n label: 'Insert merge field',\n icon: 'ng-braces',\n },\n template: {\n kind: 'button',\n command: 'openTemplate',\n label: 'Insert template',\n icon: 'ng-layout-template',\n },\n math: {\n kind: 'button',\n command: 'openMath',\n label: 'Insert math (LaTeX)',\n icon: 'ng-sigma',\n },\n heading: {\n kind: 'select',\n label: 'Paragraph style',\n options: [\n { value: '', label: 'Paragraph' },\n { value: '1', label: 'Heading 1' },\n { value: '2', label: 'Heading 2' },\n { value: '3', label: 'Heading 3' },\n { value: '4', label: 'Heading 4' },\n { value: '5', label: 'Heading 5' },\n { value: '6', label: 'Heading 6' },\n ],\n value: s => (s.headingLevel ? String(s.headingLevel) : ''),\n command: value =>\n value === ''\n ? { name: 'paragraph' }\n : { name: 'heading', attrs: { level: Number(value) } },\n },\n fontFamily: {\n kind: 'select',\n label: 'Font family',\n options: [\n { value: '', label: 'Font' },\n ...FONT_FAMILIES.map(f => ({ value: f, label: f })),\n ],\n value: s => s.fontFamily ?? '',\n command: value => ({ name: 'fontFamily', attrs: { family: value || null } }),\n },\n fontSize: {\n kind: 'select',\n label: 'Font size',\n options: [\n { value: '', label: 'Size' },\n ...FONT_SIZES.map(f => ({ value: f, label: f.replace('px', '') })),\n ],\n value: s => s.fontSize ?? '',\n command: value => ({ name: 'fontSize', attrs: { size: value || null } }),\n },\n lineHeight: {\n kind: 'select',\n label: 'Line height',\n options: [\n { value: '', label: 'Spacing' },\n { value: '1', label: '1' },\n { value: '1.15', label: '1.15' },\n { value: '1.5', label: '1.5' },\n { value: '2', label: '2' },\n { value: '2.5', label: '2.5' },\n { value: '3', label: '3' },\n ],\n value: s => s.lineHeight ?? '',\n command: value => ({ name: 'lineHeight', attrs: { lineHeight: value || null } }),\n disabled: s => s.inCodeBlock,\n },\n textColor: {\n kind: 'color',\n label: 'Text color',\n glyph: 'A',\n command: 'textColor',\n value: s => s.textColor,\n },\n bgColor: {\n kind: 'color',\n label: 'Highlight color',\n glyph: '✎',\n command: 'bgColor',\n value: s => s.bgColor,\n },\n};\n\n/**\n * Config-driven toolbar. Renders from a single immutable ToolbarState\n * snapshot; every interaction is dispatched to the host as a\n * `wysiwyg-command` event — the toolbar never touches the editor directly.\n *\n * @tag nile-wysiwyg-toolbar\n */\n@customElement('nile-wysiwyg-toolbar')\nexport class NileWysiwygToolbar extends NileElement {\n /** Space-separated item names; `|` inserts a divider. */\n @property({ type: String }) config = DEFAULT_TOOLBAR;\n\n @property({ type: Boolean, reflect: true }) disabled = false;\n\n @property({ attribute: false }) toolbarState?: ToolbarState;\n\n /** Which dropdown/color panel is open (item name), if any. */\n @state() private openMenu: string | null = null;\n\n /** Recently used colors per color command, like nile-rte-color. */\n @state() private recentColors: Record<string, string[]> = {};\n\n public static get styles(): CSSResultArray {\n return [styles];\n }\n\n connectedCallback(): void {\n super.connectedCallback();\n document.addEventListener('mousedown', this.handleOutsideClick);\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback();\n document.removeEventListener('mousedown', this.handleOutsideClick);\n }\n\n private handleOutsideClick = (event: MouseEvent): void => {\n if (this.openMenu && !event.composedPath().includes(this)) this.openMenu = null;\n };\n\n private toggleMenu(name: string): void {\n this.openMenu = this.openMenu === name ? null : name;\n }\n\n private dispatchCommand(name: CommandName | UiCommandName, attrs?: CommandAttrs): void {\n this.emit('wysiwyg-command', { name, attrs });\n }\n\n /** Wraps a control in the design system's lightweight tooltip (same as\n * the legacy rich text editor's toolbar). */\n private withTooltip(label: string, control: TemplateResult): TemplateResult {\n return html`\n <nile-lite-tooltip content=${label} placement=\"bottom\">${control}</nile-lite-tooltip>\n `;\n }\n\n private renderButton(def: ButtonDef): TemplateResult {\n const state = this.toolbarState;\n const isActive = state && def.active ? def.active(state) : false;\n const isDisabled = this.disabled || (state && def.disabled ? def.disabled(state) : false);\n const icon = isActive && def.iconActive ? def.iconActive : def.icon;\n return this.withTooltip(\n def.label,\n html`\n <button\n type=\"button\"\n class=\"toolbar__button\"\n part=\"button\"\n aria-label=${def.label}\n aria-pressed=${isActive ? 'true' : 'false'}\n ?data-active=${isActive}\n ?disabled=${isDisabled}\n @mousedown=${(e: Event) => e.preventDefault()}\n @click=${() => this.dispatchCommand(def.command, def.attrs)}\n >\n ${icon ? renderGlyph(icon, 18) : def.text}\n </button>\n `\n );\n }\n\n private renderSelect(name: string, def: SelectDef): TemplateResult {\n const value = this.toolbarState ? def.value(this.toolbarState) : '';\n const options =\n typeof def.options === 'function' ? def.options(this.toolbarState) : def.options;\n const current = options.find(opt => opt.value === value) ?? options[0];\n const isDisabled =\n this.disabled ||\n (this.toolbarState && def.disabled ? def.disabled(this.toolbarState) : false);\n const isFont = name === 'fontFamily';\n return html`\n <span class=\"toolbar__dropdown\" part=\"select\">\n ${this.withTooltip(\n def.label,\n html`\n <button\n type=\"button\"\n class=\"toolbar__dd-trigger\"\n aria-label=${def.label}\n aria-expanded=${this.openMenu === name ? 'true' : 'false'}\n ?disabled=${isDisabled}\n style=${isFont && value ? `font-family: ${value}` : ''}\n @mousedown=${(e: Event) => e.preventDefault()}\n @click=${() => this.toggleMenu(name)}\n >\n ${current.label}\n <nile-glyph name=\"arrowdown\" size=\"16\"></nile-glyph>\n </button>\n `\n )}\n ${this.openMenu === name\n ? html`\n <div class=\"toolbar__dd-menu\" @mousedown=${(e: Event) => e.preventDefault()}>\n ${options.map(\n opt => html`\n <div\n class=\"toolbar__dd-item\"\n ?data-active=${opt.value === value}\n style=${isFont && opt.value ? `font-family: ${opt.value}` : ''}\n @click=${() => {\n this.openMenu = null;\n const { name: cmd, attrs } = def.command(opt.value);\n this.dispatchCommand(cmd, attrs);\n }}\n >\n ${opt.label}\n </div>\n `\n )}\n </div>\n `\n : nothing}\n </span>\n `;\n }\n\n private setColor(name: string, def: ColorDef, color: string): void {\n this.openMenu = null;\n const recent = this.recentColors[name] ?? [];\n this.recentColors = {\n ...this.recentColors,\n [name]: [color, ...recent.filter(c => c !== color)].slice(0, 8),\n };\n this.dispatchCommand(def.command, { color });\n }\n\n private renderColor(name: string, def: ColorDef): TemplateResult {\n const current = this.toolbarState ? def.value(this.toolbarState) : null;\n const shown = current ?? '#000000';\n const recent = this.recentColors[name] ?? [];\n const isBg = def.command === 'bgColor';\n return html`\n <span class=\"toolbar__color\" part=\"color\">\n ${this.withTooltip(\n def.label,\n html`\n <button\n type=\"button\"\n class=\"toolbar__button\"\n aria-label=${def.label}\n aria-expanded=${this.openMenu === name ? 'true' : 'false'}\n ?disabled=${this.disabled}\n @mousedown=${(e: Event) => e.preventDefault()}\n @click=${() => this.toggleMenu(name)}\n >\n ${isBg\n ? html`<span class=\"swatch-box\" style=\"background: ${shown}\"></span>`\n : html`\n <span class=\"glyph-stack\">\n <span class=\"glyph\">A</span>\n <span class=\"underline\" style=\"background: ${shown}\"></span>\n </span>\n `}\n </button>\n `\n )}\n ${this.openMenu === name\n ? html`\n <div class=\"toolbar__swatch-panel\" @mousedown=${(e: Event) => e.preventDefault()}>\n <div class=\"section\">\n <div class=\"title\">Default</div>\n <div class=\"swatches\">\n ${COLOR_PALETTE.map(\n color => html`\n <button\n type=\"button\"\n class=\"swatch\"\n style=\"background: ${color}\"\n title=${color}\n @click=${() => this.setColor(name, def, color)}\n >\n ${current === color\n ? html`<span class=\"checkmark\">✓</span>`\n : nothing}\n </button>\n `\n )}\n </div>\n </div>\n ${recent.length\n ? html`\n <div class=\"section\">\n <div class=\"title\">Recently Used</div>\n <div class=\"swatches\">\n ${recent.map(\n color => html`\n <button\n type=\"button\"\n class=\"swatch\"\n style=\"background: ${color}\"\n title=${color}\n @click=${() => this.setColor(name, def, color)}\n ></button>\n `\n )}\n </div>\n </div>\n `\n : nothing}\n <div class=\"section\">\n <div class=\"title\">Custom</div>\n <div class=\"swatches\">\n <button\n type=\"button\"\n class=\"swatch add\"\n @click=${(e: Event) => {\n const input = (e.currentTarget as HTMLElement)\n .closest('.toolbar__color')!\n .querySelector<HTMLInputElement>('input[type=\"color\"]');\n input?.click();\n }}\n >\n +\n </button>\n </div>\n </div>\n </div>\n `\n : nothing}\n <input\n type=\"color\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n .value=${shown}\n @input=${(e: Event) =>\n this.setColor(name, def, (e.target as HTMLInputElement).value)}\n />\n </span>\n `;\n }\n\n private renderItem(name: string): TemplateResult | typeof nothing {\n if (name === 'table') {\n return this.withTooltip(\n 'Insert table',\n html`\n <nile-wysiwyg-table-picker\n part=\"button\"\n ?disabled=${this.disabled}\n ></nile-wysiwyg-table-picker>\n `\n );\n }\n const def = ITEMS[name];\n if (!def) return nothing;\n switch (def.kind) {\n case 'button':\n return this.renderButton(def);\n case 'select':\n return this.renderSelect(name, def);\n case 'color':\n return this.renderColor(name, def);\n default:\n return nothing;\n }\n }\n\n public render(): TemplateResult {\n const groups = this.config\n .split('|')\n .map(group => group.trim().split(/\\s+/).filter(Boolean))\n .filter(group => group.length > 0);\n\n return html`\n <div class=\"toolbar\" part=\"toolbar\" role=\"toolbar\" aria-label=\"Text formatting\">\n ${groups.map(\n (group, index) => html`\n ${index > 0 ? html`<span class=\"toolbar__divider\"></span>` : nothing}\n ${group.map(name => this.renderItem(name))}\n `\n )}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nile-wysiwyg-toolbar': NileWysiwygToolbar;\n }\n}\n"]}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type { CommandAttrs, CommandName } from './engine/commands';
|
|
2
|
+
/**
|
|
3
|
+
* Toolbar configuration. The string form uses space-separated item names with
|
|
4
|
+
* `|` as a group divider, e.g. `"bold italic | heading | link"`. `"none"`
|
|
5
|
+
* hides the toolbar entirely.
|
|
6
|
+
*/
|
|
7
|
+
export type ToolbarConfig = string;
|
|
8
|
+
/** Pseudo-commands handled by the host chrome rather than the registry. */
|
|
9
|
+
export type UiCommandName = 'openLink' | 'openImage' | 'openEmbed' | 'openBookmark' | 'toggleSource' | 'togglePastePlainText' | 'toggleFullscreen' | 'toggleShowBlocks' | 'openShortcutHelp' | 'openSpecialChars' | 'openEmoji' | 'openFind' | 'exportPdf' | 'exportWord' | 'exportInlineHtml' | 'importWord' | 'toggleFormatPainter' | 'openMergeField' | 'openTemplate' | 'openMath' | 'openMarkdown';
|
|
10
|
+
/** Detail payload of the internal `wysiwyg-command` event (toolbar → host). */
|
|
11
|
+
export interface WysiwygCommandDetail {
|
|
12
|
+
name: CommandName | UiCommandName;
|
|
13
|
+
attrs?: CommandAttrs;
|
|
14
|
+
}
|
|
15
|
+
/** Mention configuration: trigger character → items. Same shape as the
|
|
16
|
+
* legacy nile-rich-text-editor. */
|
|
17
|
+
export type MentionsConfig = Record<string, {
|
|
18
|
+
key: string;
|
|
19
|
+
label: string;
|
|
20
|
+
}[]>;
|
|
21
|
+
/** Reusable content snippet, offered through the "/" menu. */
|
|
22
|
+
export interface SnippetConfig {
|
|
23
|
+
key: string;
|
|
24
|
+
label: string;
|
|
25
|
+
html: string;
|
|
26
|
+
}
|
|
27
|
+
/** A mail-merge / personalization placeholder offered in the merge-field picker. */
|
|
28
|
+
export interface MergeFieldConfig {
|
|
29
|
+
/** Stable identifier substituted at render time (e.g. `first_name`). */
|
|
30
|
+
id: string;
|
|
31
|
+
/** Human-readable label shown in the chip and picker. */
|
|
32
|
+
label: string;
|
|
33
|
+
}
|
|
34
|
+
/** A predefined content structure offered in the template picker. */
|
|
35
|
+
export interface TemplateConfig {
|
|
36
|
+
label: string;
|
|
37
|
+
/** Optional secondary line shown under the label in the picker. */
|
|
38
|
+
description?: string;
|
|
39
|
+
/** HTML inserted at the cursor when chosen. */
|
|
40
|
+
html: string;
|
|
41
|
+
}
|
|
42
|
+
/** Detail payload of `nile-change` / `nile-input`. */
|
|
43
|
+
export interface WysiwygChangeDetail {
|
|
44
|
+
value: string;
|
|
45
|
+
json: Record<string, unknown>;
|
|
46
|
+
/** Alias of `value` for drop-in parity with nile-rich-text-editor. */
|
|
47
|
+
content: string;
|
|
48
|
+
}
|
|
49
|
+
export declare const DEFAULT_TOOLBAR: string;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export const DEFAULT_TOOLBAR = 'undo redo findReplace | heading | bold italic underline strike subscript superscript | fontFamily fontSize lineHeight | ' +
|
|
2
|
+
'textColor bgColor | alignLeft alignCenter alignRight alignJustify | ' +
|
|
3
|
+
'bulletList orderedList taskList listStyle indent outdent blockquote | ' +
|
|
4
|
+
'link bookmark table image embed codeBlock math horizontalRule specialChars emoji | ' +
|
|
5
|
+
'mergeField template | ' +
|
|
6
|
+
'formatPainter caseChange clearFormatting pastePlainText showBlocks sourceView | ' +
|
|
7
|
+
'importMarkdown importWord exportInlineHtml exportWord exportPdf | shortcutHelp fullscreen';
|
|
8
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/nile-wysiwyg-editor/types.ts"],"names":[],"mappings":"AA2EA,MAAM,CAAC,MAAM,eAAe,GAC1B,0HAA0H;IAC1H,sEAAsE;IACtE,wEAAwE;IACxE,qFAAqF;IACrF,wBAAwB;IACxB,kFAAkF;IAClF,2FAA2F,CAAC","sourcesContent":["import type { CommandAttrs, CommandName } from './engine/commands';\n\n/**\n * Toolbar configuration. The string form uses space-separated item names with\n * `|` as a group divider, e.g. `\"bold italic | heading | link\"`. `\"none\"`\n * hides the toolbar entirely.\n */\nexport type ToolbarConfig = string;\n\n/** Pseudo-commands handled by the host chrome rather than the registry. */\nexport type UiCommandName =\n | 'openLink'\n | 'openImage'\n | 'openEmbed'\n | 'openBookmark'\n | 'toggleSource'\n | 'togglePastePlainText'\n | 'toggleFullscreen'\n | 'toggleShowBlocks'\n | 'openShortcutHelp'\n | 'openSpecialChars'\n | 'openEmoji'\n | 'openFind'\n | 'exportPdf'\n | 'exportWord'\n | 'exportInlineHtml'\n | 'importWord'\n | 'toggleFormatPainter'\n | 'openMergeField'\n | 'openTemplate'\n | 'openMath'\n | 'openMarkdown';\n\n/** Detail payload of the internal `wysiwyg-command` event (toolbar → host). */\nexport interface WysiwygCommandDetail {\n name: CommandName | UiCommandName;\n attrs?: CommandAttrs;\n}\n\n/** Mention configuration: trigger character → items. Same shape as the\n * legacy nile-rich-text-editor. */\nexport type MentionsConfig = Record<string, { key: string; label: string }[]>;\n\n/** Reusable content snippet, offered through the \"/\" menu. */\nexport interface SnippetConfig {\n key: string;\n label: string;\n html: string;\n}\n\n/** A mail-merge / personalization placeholder offered in the merge-field picker. */\nexport interface MergeFieldConfig {\n /** Stable identifier substituted at render time (e.g. `first_name`). */\n id: string;\n /** Human-readable label shown in the chip and picker. */\n label: string;\n}\n\n/** A predefined content structure offered in the template picker. */\nexport interface TemplateConfig {\n label: string;\n /** Optional secondary line shown under the label in the picker. */\n description?: string;\n /** HTML inserted at the cursor when chosen. */\n html: string;\n}\n\n/** Detail payload of `nile-change` / `nile-input`. */\nexport interface WysiwygChangeDetail {\n value: string;\n json: Record<string, unknown>;\n /** Alias of `value` for drop-in parity with nile-rich-text-editor. */\n content: string;\n}\n\nexport const DEFAULT_TOOLBAR =\n 'undo redo findReplace | heading | bold italic underline strike subscript superscript | fontFamily fontSize lineHeight | ' +\n 'textColor bgColor | alignLeft alignCenter alignRight alignJustify | ' +\n 'bulletList orderedList taskList listStyle indent outdent blockquote | ' +\n 'link bookmark table image embed codeBlock math horizontalRule specialChars emoji | ' +\n 'mergeField template | ' +\n 'formatPainter caseChange clearFormatting pastePlainText showBlocks sourceView | ' +\n 'importMarkdown importWord exportInlineHtml exportWord exportPdf | shortcutHelp fullscreen';\n"]}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { TemplateResult, CSSResultArray } from 'lit';
|
|
2
|
+
import NileElement from '../../internal/nile-element';
|
|
3
|
+
/**
|
|
4
|
+
* Floating bookmark-insert panel: name an in-text anchor. Emits
|
|
5
|
+
* `wysiwyg-bookmark-apply` detail: { id } and `wysiwyg-bookmark-cancel`.
|
|
6
|
+
*/
|
|
7
|
+
export declare class NileWysiwygBookmarkPanel extends NileElement {
|
|
8
|
+
open: boolean;
|
|
9
|
+
private error;
|
|
10
|
+
nameInput?: HTMLInputElement;
|
|
11
|
+
static get styles(): CSSResultArray;
|
|
12
|
+
focusInput(): void;
|
|
13
|
+
private handleSubmit;
|
|
14
|
+
render(): TemplateResult;
|
|
15
|
+
}
|
|
16
|
+
declare global {
|
|
17
|
+
interface HTMLElementTagNameMap {
|
|
18
|
+
'nile-wysiwyg-bookmark-panel': NileWysiwygBookmarkPanel;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { html, css } from 'lit';
|
|
3
|
+
import { customElement, property, query, state } from 'lit/decorators.js';
|
|
4
|
+
import NileElement from '../../internal/nile-element';
|
|
5
|
+
/**
|
|
6
|
+
* Floating bookmark-insert panel: name an in-text anchor. Emits
|
|
7
|
+
* `wysiwyg-bookmark-apply` detail: { id } and `wysiwyg-bookmark-cancel`.
|
|
8
|
+
*/
|
|
9
|
+
let NileWysiwygBookmarkPanel = class NileWysiwygBookmarkPanel extends NileElement {
|
|
10
|
+
constructor() {
|
|
11
|
+
super(...arguments);
|
|
12
|
+
this.open = false;
|
|
13
|
+
this.error = '';
|
|
14
|
+
}
|
|
15
|
+
static get styles() {
|
|
16
|
+
return [
|
|
17
|
+
css `
|
|
18
|
+
:host {
|
|
19
|
+
font-family: var(
|
|
20
|
+
--nile-font-family-sans-serif,
|
|
21
|
+
var(--ng-font-family-body, system-ui, -apple-system, sans-serif)
|
|
22
|
+
);
|
|
23
|
+
position: absolute;
|
|
24
|
+
z-index: 20;
|
|
25
|
+
display: none;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
:host([open]) {
|
|
29
|
+
display: block;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
.bookmark-panel {
|
|
33
|
+
display: flex;
|
|
34
|
+
flex-direction: column;
|
|
35
|
+
gap: 8px;
|
|
36
|
+
min-width: 280px;
|
|
37
|
+
padding: 12px;
|
|
38
|
+
background: var(--nile-wysiwyg-popover-bg, #ffffff);
|
|
39
|
+
border: 1px solid var(--nile-colors-neutral-400, #d0d5dd);
|
|
40
|
+
border-radius: var(--nile-wysiwyg-radius, 8px);
|
|
41
|
+
box-shadow: var(--nile-wysiwyg-popover-shadow, 0 4px 12px rgba(16, 24, 40, 0.12));
|
|
42
|
+
font-size: 13px;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
label {
|
|
46
|
+
display: flex;
|
|
47
|
+
flex-direction: column;
|
|
48
|
+
gap: 4px;
|
|
49
|
+
color: var(--nile-colors-neutral-700, #344054);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
input {
|
|
53
|
+
font: inherit;
|
|
54
|
+
padding: 6px 8px;
|
|
55
|
+
border: 1px solid var(--nile-colors-neutral-400, #d0d5dd);
|
|
56
|
+
border-radius: 6px;
|
|
57
|
+
outline: none;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
input:focus {
|
|
61
|
+
border-color: var(--nile-colors-primary-600, var(--ng-componentcolors-utility-blue-600, #2563eb));
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
.hint {
|
|
65
|
+
font-size: 12px;
|
|
66
|
+
color: var(--nile-colors-neutral-500, #98a2b3);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
.error {
|
|
70
|
+
font-size: 12px;
|
|
71
|
+
color: var(--nile-colors-error-600, #d92d20);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
.actions {
|
|
75
|
+
display: flex;
|
|
76
|
+
gap: 8px;
|
|
77
|
+
justify-content: flex-end;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
button {
|
|
81
|
+
font: inherit;
|
|
82
|
+
padding: 6px 12px;
|
|
83
|
+
border-radius: 6px;
|
|
84
|
+
border: 1px solid transparent;
|
|
85
|
+
cursor: pointer;
|
|
86
|
+
background: transparent;
|
|
87
|
+
color: var(--nile-colors-neutral-700, #344054);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
button.primary {
|
|
91
|
+
background: var(--nile-colors-primary-600, var(--ng-componentcolors-utility-blue-600, #2563eb));
|
|
92
|
+
color: #ffffff;
|
|
93
|
+
}
|
|
94
|
+
`,
|
|
95
|
+
];
|
|
96
|
+
}
|
|
97
|
+
focusInput() {
|
|
98
|
+
this.error = '';
|
|
99
|
+
this.updateComplete.then(() => {
|
|
100
|
+
if (this.nameInput)
|
|
101
|
+
this.nameInput.value = '';
|
|
102
|
+
this.nameInput?.focus();
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
handleSubmit(event) {
|
|
106
|
+
event.preventDefault();
|
|
107
|
+
// Anchor ids can't contain whitespace; collapse runs to a single dash.
|
|
108
|
+
const id = (this.nameInput?.value ?? '').trim().replace(/\s+/g, '-');
|
|
109
|
+
if (!id) {
|
|
110
|
+
this.error = 'Enter a bookmark name.';
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
this.error = '';
|
|
114
|
+
this.emit('wysiwyg-bookmark-apply', { id });
|
|
115
|
+
}
|
|
116
|
+
render() {
|
|
117
|
+
return html `
|
|
118
|
+
<form
|
|
119
|
+
class="bookmark-panel"
|
|
120
|
+
part="bookmark-panel"
|
|
121
|
+
@submit=${this.handleSubmit}
|
|
122
|
+
@keydown=${(e) => {
|
|
123
|
+
if (e.key === 'Escape') {
|
|
124
|
+
e.stopPropagation();
|
|
125
|
+
this.emit('wysiwyg-bookmark-cancel');
|
|
126
|
+
}
|
|
127
|
+
}}
|
|
128
|
+
>
|
|
129
|
+
<label>
|
|
130
|
+
Bookmark name
|
|
131
|
+
<input class="bookmark-panel__name" type="text" placeholder="section-intro" />
|
|
132
|
+
</label>
|
|
133
|
+
${this.error
|
|
134
|
+
? html `<div class="error">${this.error}</div>`
|
|
135
|
+
: html `<div class="hint">An invisible anchor you can link to with #name</div>`}
|
|
136
|
+
<div class="actions">
|
|
137
|
+
<button type="button" @click=${() => this.emit('wysiwyg-bookmark-cancel')}>
|
|
138
|
+
Cancel
|
|
139
|
+
</button>
|
|
140
|
+
<button type="submit" class="primary">Insert</button>
|
|
141
|
+
</div>
|
|
142
|
+
</form>
|
|
143
|
+
`;
|
|
144
|
+
}
|
|
145
|
+
};
|
|
146
|
+
__decorate([
|
|
147
|
+
property({ type: Boolean, reflect: true })
|
|
148
|
+
], NileWysiwygBookmarkPanel.prototype, "open", void 0);
|
|
149
|
+
__decorate([
|
|
150
|
+
state()
|
|
151
|
+
], NileWysiwygBookmarkPanel.prototype, "error", void 0);
|
|
152
|
+
__decorate([
|
|
153
|
+
query('.bookmark-panel__name')
|
|
154
|
+
], NileWysiwygBookmarkPanel.prototype, "nameInput", void 0);
|
|
155
|
+
NileWysiwygBookmarkPanel = __decorate([
|
|
156
|
+
customElement('nile-wysiwyg-bookmark-panel')
|
|
157
|
+
], NileWysiwygBookmarkPanel);
|
|
158
|
+
export { NileWysiwygBookmarkPanel };
|
|
159
|
+
//# sourceMappingURL=bookmark-panel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bookmark-panel.js","sourceRoot":"","sources":["../../../../src/nile-wysiwyg-editor/ui/bookmark-panel.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,GAAG,EAAkC,MAAM,KAAK,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,WAAW,MAAM,6BAA6B,CAAC;AAEtD;;;GAGG;AAEI,IAAM,wBAAwB,GAA9B,MAAM,wBAAyB,SAAQ,WAAW;IAAlD;;QACuC,SAAI,GAAG,KAAK,CAAC;QAExC,UAAK,GAAG,EAAE,CAAC;IAwI9B,CAAC;IApIQ,MAAM,KAAK,MAAM;QACtB,OAAO;YACL,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6EF;SACF,CAAC;IACJ,CAAC;IAEM,UAAU;QACf,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE;YAC5B,IAAI,IAAI,CAAC,SAAS;gBAAE,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,EAAE,CAAC;YAC9C,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC;QAC1B,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,YAAY,CAAC,KAAY;QAC/B,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,uEAAuE;QACvE,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACrE,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,IAAI,CAAC,KAAK,GAAG,wBAAwB,CAAC;YACtC,OAAO;QACT,CAAC;QACD,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC9C,CAAC;IAEM,MAAM;QACX,OAAO,IAAI,CAAA;;;;kBAIG,IAAI,CAAC,YAAY;mBAChB,CAAC,CAAgB,EAAE,EAAE;YAC9B,IAAI,CAAC,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;gBACvB,CAAC,CAAC,eAAe,EAAE,CAAC;gBACpB,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;YACvC,CAAC;QACH,CAAC;;;;;;UAMC,IAAI,CAAC,KAAK;YACV,CAAC,CAAC,IAAI,CAAA,sBAAsB,IAAI,CAAC,KAAK,QAAQ;YAC9C,CAAC,CAAC,IAAI,CAAA,wEAAwE;;yCAE/C,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC;;;;;;KAM9E,CAAC;IACJ,CAAC;CACF,CAAA;AA1I6C;IAA3C,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;sDAAc;AAExC;IAAhB,KAAK,EAAE;uDAAoB;AAEI;IAA/B,KAAK,CAAC,uBAAuB,CAAC;2DAA8B;AALlD,wBAAwB;IADpC,aAAa,CAAC,6BAA6B,CAAC;GAChC,wBAAwB,CA2IpC","sourcesContent":["import { html, css, TemplateResult, CSSResultArray } from 'lit';\nimport { customElement, property, query, state } from 'lit/decorators.js';\nimport NileElement from '../../internal/nile-element';\n\n/**\n * Floating bookmark-insert panel: name an in-text anchor. Emits\n * `wysiwyg-bookmark-apply` detail: { id } and `wysiwyg-bookmark-cancel`.\n */\n@customElement('nile-wysiwyg-bookmark-panel')\nexport class NileWysiwygBookmarkPanel extends NileElement {\n @property({ type: Boolean, reflect: true }) open = false;\n\n @state() private error = '';\n\n @query('.bookmark-panel__name') nameInput?: HTMLInputElement;\n\n public static get styles(): CSSResultArray {\n return [\n css`\n :host {\n font-family: var(\n --nile-font-family-sans-serif,\n var(--ng-font-family-body, system-ui, -apple-system, sans-serif)\n );\n position: absolute;\n z-index: 20;\n display: none;\n }\n\n :host([open]) {\n display: block;\n }\n\n .bookmark-panel {\n display: flex;\n flex-direction: column;\n gap: 8px;\n min-width: 280px;\n padding: 12px;\n background: var(--nile-wysiwyg-popover-bg, #ffffff);\n border: 1px solid var(--nile-colors-neutral-400, #d0d5dd);\n border-radius: var(--nile-wysiwyg-radius, 8px);\n box-shadow: var(--nile-wysiwyg-popover-shadow, 0 4px 12px rgba(16, 24, 40, 0.12));\n font-size: 13px;\n }\n\n label {\n display: flex;\n flex-direction: column;\n gap: 4px;\n color: var(--nile-colors-neutral-700, #344054);\n }\n\n input {\n font: inherit;\n padding: 6px 8px;\n border: 1px solid var(--nile-colors-neutral-400, #d0d5dd);\n border-radius: 6px;\n outline: none;\n }\n\n input:focus {\n border-color: var(--nile-colors-primary-600, var(--ng-componentcolors-utility-blue-600, #2563eb));\n }\n\n .hint {\n font-size: 12px;\n color: var(--nile-colors-neutral-500, #98a2b3);\n }\n\n .error {\n font-size: 12px;\n color: var(--nile-colors-error-600, #d92d20);\n }\n\n .actions {\n display: flex;\n gap: 8px;\n justify-content: flex-end;\n }\n\n button {\n font: inherit;\n padding: 6px 12px;\n border-radius: 6px;\n border: 1px solid transparent;\n cursor: pointer;\n background: transparent;\n color: var(--nile-colors-neutral-700, #344054);\n }\n\n button.primary {\n background: var(--nile-colors-primary-600, var(--ng-componentcolors-utility-blue-600, #2563eb));\n color: #ffffff;\n }\n `,\n ];\n }\n\n public focusInput(): void {\n this.error = '';\n this.updateComplete.then(() => {\n if (this.nameInput) this.nameInput.value = '';\n this.nameInput?.focus();\n });\n }\n\n private handleSubmit(event: Event): void {\n event.preventDefault();\n // Anchor ids can't contain whitespace; collapse runs to a single dash.\n const id = (this.nameInput?.value ?? '').trim().replace(/\\s+/g, '-');\n if (!id) {\n this.error = 'Enter a bookmark name.';\n return;\n }\n this.error = '';\n this.emit('wysiwyg-bookmark-apply', { id });\n }\n\n public render(): TemplateResult {\n return html`\n <form\n class=\"bookmark-panel\"\n part=\"bookmark-panel\"\n @submit=${this.handleSubmit}\n @keydown=${(e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n e.stopPropagation();\n this.emit('wysiwyg-bookmark-cancel');\n }\n }}\n >\n <label>\n Bookmark name\n <input class=\"bookmark-panel__name\" type=\"text\" placeholder=\"section-intro\" />\n </label>\n ${this.error\n ? html`<div class=\"error\">${this.error}</div>`\n : html`<div class=\"hint\">An invisible anchor you can link to with #name</div>`}\n <div class=\"actions\">\n <button type=\"button\" @click=${() => this.emit('wysiwyg-bookmark-cancel')}>\n Cancel\n </button>\n <button type=\"submit\" class=\"primary\">Insert</button>\n </div>\n </form>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nile-wysiwyg-bookmark-panel': NileWysiwygBookmarkPanel;\n }\n}\n"]}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { TemplateResult, CSSResultArray } from 'lit';
|
|
2
|
+
import NileElement from '../../internal/nile-element';
|
|
3
|
+
import type { ToolbarState } from '../engine/selection-state';
|
|
4
|
+
/**
|
|
5
|
+
* Balloon toolbar shown over non-empty selections. The host owns positioning
|
|
6
|
+
* (absolute left/top) and visibility; commands bubble up as
|
|
7
|
+
* `wysiwyg-command` events, same contract as the main toolbar.
|
|
8
|
+
*/
|
|
9
|
+
export declare class NileWysiwygBubbleMenu extends NileElement {
|
|
10
|
+
open: boolean;
|
|
11
|
+
toolbarState?: ToolbarState;
|
|
12
|
+
static get styles(): CSSResultArray;
|
|
13
|
+
/** Same icon set as the main toolbar, so both surfaces look identical. */
|
|
14
|
+
private items;
|
|
15
|
+
render(): TemplateResult;
|
|
16
|
+
}
|
|
17
|
+
declare global {
|
|
18
|
+
interface HTMLElementTagNameMap {
|
|
19
|
+
'nile-wysiwyg-bubble-menu': NileWysiwygBubbleMenu;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { html, css } from 'lit';
|
|
3
|
+
import { customElement, property } from 'lit/decorators.js';
|
|
4
|
+
import NileElement from '../../internal/nile-element';
|
|
5
|
+
import { renderGlyph } from '../../internal/glyph';
|
|
6
|
+
/**
|
|
7
|
+
* Balloon toolbar shown over non-empty selections. The host owns positioning
|
|
8
|
+
* (absolute left/top) and visibility; commands bubble up as
|
|
9
|
+
* `wysiwyg-command` events, same contract as the main toolbar.
|
|
10
|
+
*/
|
|
11
|
+
let NileWysiwygBubbleMenu = class NileWysiwygBubbleMenu extends NileElement {
|
|
12
|
+
constructor() {
|
|
13
|
+
super(...arguments);
|
|
14
|
+
this.open = false;
|
|
15
|
+
/** Same icon set as the main toolbar, so both surfaces look identical. */
|
|
16
|
+
this.items = [
|
|
17
|
+
{ name: 'bold', label: 'Bold', icon: 'format_bold', active: s => s.bold },
|
|
18
|
+
{ name: 'italic', label: 'Italic', icon: 'format_italic', active: s => s.italic },
|
|
19
|
+
{
|
|
20
|
+
name: 'underline',
|
|
21
|
+
label: 'Underline',
|
|
22
|
+
icon: 'format_underline',
|
|
23
|
+
active: s => s.underline,
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
name: 'strike',
|
|
27
|
+
label: 'Strikethrough',
|
|
28
|
+
icon: 'ng-strikethrough',
|
|
29
|
+
active: s => s.strike,
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
name: 'openLink',
|
|
33
|
+
label: 'Link',
|
|
34
|
+
icon: 'link_2',
|
|
35
|
+
active: s => s.linkActive,
|
|
36
|
+
},
|
|
37
|
+
];
|
|
38
|
+
}
|
|
39
|
+
static get styles() {
|
|
40
|
+
return [
|
|
41
|
+
css `
|
|
42
|
+
:host {
|
|
43
|
+
font-family: var(
|
|
44
|
+
--nile-font-family-sans-serif,
|
|
45
|
+
var(--ng-font-family-body, system-ui, -apple-system, sans-serif)
|
|
46
|
+
);
|
|
47
|
+
position: absolute;
|
|
48
|
+
z-index: 15;
|
|
49
|
+
display: none;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
:host([open]) {
|
|
53
|
+
display: block;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
.bubble {
|
|
57
|
+
display: flex;
|
|
58
|
+
gap: 2px;
|
|
59
|
+
padding: 4px;
|
|
60
|
+
background: var(--nile-wysiwyg-popover-bg, #ffffff);
|
|
61
|
+
border: 1px solid
|
|
62
|
+
var(--nile-wysiwyg-border-color, var(--nile-colors-neutral-400, #d0d5dd));
|
|
63
|
+
border-radius: var(--nile-wysiwyg-radius, 8px);
|
|
64
|
+
box-shadow: var(
|
|
65
|
+
--nile-wysiwyg-popover-shadow,
|
|
66
|
+
0 4px 12px rgba(16, 24, 40, 0.12)
|
|
67
|
+
);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
button {
|
|
71
|
+
display: inline-flex;
|
|
72
|
+
align-items: center;
|
|
73
|
+
justify-content: center;
|
|
74
|
+
width: 26px;
|
|
75
|
+
height: 26px;
|
|
76
|
+
border: none;
|
|
77
|
+
border-radius: 5px;
|
|
78
|
+
background: transparent;
|
|
79
|
+
cursor: pointer;
|
|
80
|
+
font-size: 13px;
|
|
81
|
+
font-weight: 600;
|
|
82
|
+
color: var(--nile-colors-neutral-700, #344054);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
button:hover {
|
|
86
|
+
background: var(--nile-colors-neutral-100, #f2f4f7);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
button[data-active] {
|
|
90
|
+
background: var(--nile-colors-primary-50, var(--ng-componentcolors-utility-blue-50, #eff4ff));
|
|
91
|
+
color: var(--nile-colors-primary-700, var(--ng-componentcolors-utility-blue-700, #1d4ed8));
|
|
92
|
+
}
|
|
93
|
+
`,
|
|
94
|
+
];
|
|
95
|
+
}
|
|
96
|
+
render() {
|
|
97
|
+
const state = this.toolbarState;
|
|
98
|
+
return html `
|
|
99
|
+
<div class="bubble" part="bubble-menu" @mousedown=${(e) => e.preventDefault()}>
|
|
100
|
+
${this.items.map(item => html `
|
|
101
|
+
<button
|
|
102
|
+
type="button"
|
|
103
|
+
title=${item.label}
|
|
104
|
+
aria-label=${item.label}
|
|
105
|
+
?data-active=${state ? item.active(state) : false}
|
|
106
|
+
@click=${() => this.emit('wysiwyg-command', { name: item.name })}
|
|
107
|
+
>
|
|
108
|
+
${renderGlyph(item.icon, 16)}
|
|
109
|
+
</button>
|
|
110
|
+
`)}
|
|
111
|
+
</div>
|
|
112
|
+
`;
|
|
113
|
+
}
|
|
114
|
+
};
|
|
115
|
+
__decorate([
|
|
116
|
+
property({ type: Boolean, reflect: true })
|
|
117
|
+
], NileWysiwygBubbleMenu.prototype, "open", void 0);
|
|
118
|
+
__decorate([
|
|
119
|
+
property({ attribute: false })
|
|
120
|
+
], NileWysiwygBubbleMenu.prototype, "toolbarState", void 0);
|
|
121
|
+
NileWysiwygBubbleMenu = __decorate([
|
|
122
|
+
customElement('nile-wysiwyg-bubble-menu')
|
|
123
|
+
], NileWysiwygBubbleMenu);
|
|
124
|
+
export { NileWysiwygBubbleMenu };
|
|
125
|
+
//# sourceMappingURL=bubble-menu.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bubble-menu.js","sourceRoot":"","sources":["../../../../src/nile-wysiwyg-editor/ui/bubble-menu.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,GAAG,EAAkC,MAAM,KAAK,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,WAAW,MAAM,6BAA6B,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAYnD;;;;GAIG;AAEI,IAAM,qBAAqB,GAA3B,MAAM,qBAAsB,SAAQ,WAAW;IAA/C;;QACuC,SAAI,GAAG,KAAK,CAAC;QA8DzD,0EAA0E;QAClE,UAAK,GAAiB;YAC5B,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE;YACzE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE;YACjF;gBACE,IAAI,EAAE,WAAW;gBACjB,KAAK,EAAE,WAAW;gBAClB,IAAI,EAAE,kBAAkB;gBACxB,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS;aACzB;YACD;gBACE,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE,eAAe;gBACtB,IAAI,EAAE,kBAAkB;gBACxB,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM;aACtB;YACD;gBACE,IAAI,EAAE,UAAU;gBAChB,KAAK,EAAE,MAAM;gBACb,IAAI,EAAE,QAAQ;gBACd,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU;aAC1B;SACF,CAAC;IAsBJ,CAAC;IAtGQ,MAAM,KAAK,MAAM;QACtB,OAAO;YACL,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAoDF;SACF,CAAC;IACJ,CAAC;IA0BM,MAAM;QACX,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC;QAChC,OAAO,IAAI,CAAA;0DAC2C,CAAC,CAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,EAAE;UAChF,IAAI,CAAC,KAAK,CAAC,GAAG,CACd,IAAI,CAAC,EAAE,CAAC,IAAI,CAAA;;;sBAGA,IAAI,CAAC,KAAK;2BACL,IAAI,CAAC,KAAK;6BACR,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK;uBACxC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;;gBAE9D,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;;WAE/B,CACF;;KAEJ,CAAC;IACJ,CAAC;CACF,CAAA;AA1G6C;IAA3C,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;mDAAc;AAEzB;IAA/B,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;2DAA6B;AAHjD,qBAAqB;IADjC,aAAa,CAAC,0BAA0B,CAAC;GAC7B,qBAAqB,CA2GjC","sourcesContent":["import { html, css, TemplateResult, CSSResultArray } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport NileElement from '../../internal/nile-element';\nimport { renderGlyph } from '../../internal/glyph';\nimport type { ToolbarState } from '../engine/selection-state';\nimport type { WysiwygCommandDetail } from '../types';\n\ninterface BubbleItem {\n name: WysiwygCommandDetail['name'];\n label: string;\n /** nile-glyph icon name (ng-* names are stroke-drawn). */\n icon: string;\n active: (state: ToolbarState) => boolean;\n}\n\n/**\n * Balloon toolbar shown over non-empty selections. The host owns positioning\n * (absolute left/top) and visibility; commands bubble up as\n * `wysiwyg-command` events, same contract as the main toolbar.\n */\n@customElement('nile-wysiwyg-bubble-menu')\nexport class NileWysiwygBubbleMenu extends NileElement {\n @property({ type: Boolean, reflect: true }) open = false;\n\n @property({ attribute: false }) toolbarState?: ToolbarState;\n\n public static get styles(): CSSResultArray {\n return [\n css`\n :host {\n font-family: var(\n --nile-font-family-sans-serif,\n var(--ng-font-family-body, system-ui, -apple-system, sans-serif)\n );\n position: absolute;\n z-index: 15;\n display: none;\n }\n\n :host([open]) {\n display: block;\n }\n\n .bubble {\n display: flex;\n gap: 2px;\n padding: 4px;\n background: var(--nile-wysiwyg-popover-bg, #ffffff);\n border: 1px solid\n var(--nile-wysiwyg-border-color, var(--nile-colors-neutral-400, #d0d5dd));\n border-radius: var(--nile-wysiwyg-radius, 8px);\n box-shadow: var(\n --nile-wysiwyg-popover-shadow,\n 0 4px 12px rgba(16, 24, 40, 0.12)\n );\n }\n\n button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 26px;\n height: 26px;\n border: none;\n border-radius: 5px;\n background: transparent;\n cursor: pointer;\n font-size: 13px;\n font-weight: 600;\n color: var(--nile-colors-neutral-700, #344054);\n }\n\n button:hover {\n background: var(--nile-colors-neutral-100, #f2f4f7);\n }\n\n button[data-active] {\n background: var(--nile-colors-primary-50, var(--ng-componentcolors-utility-blue-50, #eff4ff));\n color: var(--nile-colors-primary-700, var(--ng-componentcolors-utility-blue-700, #1d4ed8));\n }\n `,\n ];\n }\n\n /** Same icon set as the main toolbar, so both surfaces look identical. */\n private items: BubbleItem[] = [\n { name: 'bold', label: 'Bold', icon: 'format_bold', active: s => s.bold },\n { name: 'italic', label: 'Italic', icon: 'format_italic', active: s => s.italic },\n {\n name: 'underline',\n label: 'Underline',\n icon: 'format_underline',\n active: s => s.underline,\n },\n {\n name: 'strike',\n label: 'Strikethrough',\n icon: 'ng-strikethrough',\n active: s => s.strike,\n },\n {\n name: 'openLink',\n label: 'Link',\n icon: 'link_2',\n active: s => s.linkActive,\n },\n ];\n\n public render(): TemplateResult {\n const state = this.toolbarState;\n return html`\n <div class=\"bubble\" part=\"bubble-menu\" @mousedown=${(e: Event) => e.preventDefault()}>\n ${this.items.map(\n item => html`\n <button\n type=\"button\"\n title=${item.label}\n aria-label=${item.label}\n ?data-active=${state ? item.active(state) : false}\n @click=${() => this.emit('wysiwyg-command', { name: item.name })}\n >\n ${renderGlyph(item.icon, 16)}\n </button>\n `\n )}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nile-wysiwyg-bubble-menu': NileWysiwygBubbleMenu;\n }\n}\n"]}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { TemplateResult, CSSResultArray } from 'lit';
|
|
2
|
+
import NileElement from '../../internal/nile-element';
|
|
3
|
+
/**
|
|
4
|
+
* Compact floating language picker shown while the cursor is inside a code
|
|
5
|
+
* block. Selection dispatches `wysiwyg-command` with setCodeBlockLanguage.
|
|
6
|
+
*/
|
|
7
|
+
export declare class NileWysiwygCodeMenu extends NileElement {
|
|
8
|
+
open: boolean;
|
|
9
|
+
/** Current language attr ('' = auto, null treated as ''). */
|
|
10
|
+
language: string | null;
|
|
11
|
+
static get styles(): CSSResultArray;
|
|
12
|
+
render(): TemplateResult;
|
|
13
|
+
}
|
|
14
|
+
declare global {
|
|
15
|
+
interface HTMLElementTagNameMap {
|
|
16
|
+
'nile-wysiwyg-code-menu': NileWysiwygCodeMenu;
|
|
17
|
+
}
|
|
18
|
+
}
|