@shelamkoff/rector 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/NOTICE +17 -0
- package/README.md +23 -0
- package/THIRD_PARTY_LICENSES.txt +298 -0
- package/dist/I18n.d.ts +1 -0
- package/dist/core/Block.d.ts +110 -0
- package/dist/core/Block.js +390 -0
- package/dist/core/BlockAnimator.d.ts +39 -0
- package/dist/core/BlockAnimator.js +106 -0
- package/dist/core/BlockManager.d.ts +163 -0
- package/dist/core/BlockManager.js +640 -0
- package/dist/core/BlockOperations.d.ts +67 -0
- package/dist/core/BlockOperations.js +238 -0
- package/dist/core/ChangeNotifier.d.ts +15 -0
- package/dist/core/ChangeNotifier.js +55 -0
- package/dist/core/CommandDispatcher.d.ts +52 -0
- package/dist/core/CommandDispatcher.js +208 -0
- package/dist/core/CrossBlockSelection.d.ts +30 -0
- package/dist/core/CrossBlockSelection.js +74 -0
- package/dist/core/Diagnostics.d.ts +23 -0
- package/dist/core/Diagnostics.js +62 -0
- package/dist/core/DocumentSchema.d.ts +29 -0
- package/dist/core/DocumentSchema.js +147 -0
- package/dist/core/DocumentSnapshotStore.d.ts +34 -0
- package/dist/core/DocumentSnapshotStore.js +153 -0
- package/dist/core/DragManager.d.ts +17 -0
- package/dist/core/DragManager.js +223 -0
- package/dist/core/EditorFacade.d.ts +154 -0
- package/dist/core/EditorFacade.js +361 -0
- package/dist/core/EditorHolderOwnership.d.ts +12 -0
- package/dist/core/EditorHolderOwnership.js +28 -0
- package/dist/core/I18n.d.ts +147 -0
- package/dist/core/I18n.js +296 -0
- package/dist/core/InlinePatternMatcher.d.ts +26 -0
- package/dist/core/InlinePatternMatcher.js +267 -0
- package/dist/core/InlinePluginRegistry.d.ts +55 -0
- package/dist/core/InlinePluginRegistry.js +128 -0
- package/dist/core/KeyboardManager.d.ts +17 -0
- package/dist/core/KeyboardManager.js +231 -0
- package/dist/core/LifecycleScope.d.ts +19 -0
- package/dist/core/LifecycleScope.js +41 -0
- package/dist/core/MouseSelectionManager.d.ts +30 -0
- package/dist/core/MouseSelectionManager.js +307 -0
- package/dist/core/PluginOwnership.d.ts +9 -0
- package/dist/core/PluginOwnership.js +40 -0
- package/dist/core/PopupManager.d.ts +50 -0
- package/dist/core/PopupManager.js +183 -0
- package/dist/core/PreservedBlockPlugin.d.ts +11 -0
- package/dist/core/PreservedBlockPlugin.js +42 -0
- package/dist/core/PublicEditorApi.d.ts +82 -0
- package/dist/core/PublicEditorApi.js +158 -0
- package/dist/core/SelectionManager.d.ts +50 -0
- package/dist/core/SelectionManager.js +205 -0
- package/dist/core/ShortcutRegistry.d.ts +29 -0
- package/dist/core/ShortcutRegistry.js +106 -0
- package/dist/core/SlashCommands.d.ts +34 -0
- package/dist/core/SlashCommands.js +483 -0
- package/dist/core/StyleInjector.d.ts +1 -0
- package/dist/core/StyleInjector.js +1 -0
- package/dist/core/Tooltip.d.ts +17 -0
- package/dist/core/Tooltip.js +60 -0
- package/dist/core/TriggerManager.d.ts +17 -0
- package/dist/core/TriggerManager.js +159 -0
- package/dist/core/TypeSelector.d.ts +31 -0
- package/dist/core/TypeSelector.js +464 -0
- package/dist/core/UndoManager.d.ts +72 -0
- package/dist/core/UndoManager.js +383 -0
- package/dist/core/block-settings-menu/BlockActions.d.ts +81 -0
- package/dist/core/block-settings-menu/BlockActions.js +233 -0
- package/dist/core/block-settings-menu/BlockSettingsMenu.d.ts +46 -0
- package/dist/core/block-settings-menu/BlockSettingsMenu.js +205 -0
- package/dist/core/block-settings-menu/MenuBuilder.d.ts +43 -0
- package/dist/core/block-settings-menu/MenuBuilder.js +203 -0
- package/dist/core/block-settings-menu/MenuPositioner.d.ts +22 -0
- package/dist/core/block-settings-menu/MenuPositioner.js +79 -0
- package/dist/core/clipboard/Clipboard.d.ts +47 -0
- package/dist/core/clipboard/Clipboard.js +653 -0
- package/dist/core/clipboard/CrossBlockEditor.d.ts +43 -0
- package/dist/core/clipboard/CrossBlockEditor.js +198 -0
- package/dist/core/clipboard/PasteRouter.d.ts +27 -0
- package/dist/core/clipboard/PasteRouter.js +86 -0
- package/dist/core/clipboard/pasteInsert.d.ts +35 -0
- package/dist/core/clipboard/pasteInsert.js +215 -0
- package/dist/core/clipboard/pasteUtils.d.ts +25 -0
- package/dist/core/clipboard/pasteUtils.js +98 -0
- package/dist/core/config.d.ts +77 -0
- package/dist/core/config.js +100 -0
- package/dist/core/constants.d.ts +23 -0
- package/dist/core/constants.js +30 -0
- package/dist/core/crossBlockConvert.d.ts +38 -0
- package/dist/core/crossBlockConvert.js +253 -0
- package/dist/core/dom.d.ts +35 -0
- package/dist/core/dom.js +65 -0
- package/dist/core/editorEvents.d.ts +89 -0
- package/dist/core/editorEvents.js +60 -0
- package/dist/core/hydrateInlinePlugins.d.ts +9 -0
- package/dist/core/hydrateInlinePlugins.js +36 -0
- package/dist/core/icons.d.ts +10 -0
- package/dist/core/icons.js +21 -0
- package/dist/core/index.d.ts +59 -0
- package/dist/core/index.js +703 -0
- package/dist/core/inline-toolbar/ActionsPanel.d.ts +61 -0
- package/dist/core/inline-toolbar/ActionsPanel.js +132 -0
- package/dist/core/inline-toolbar/InlinePositioner.d.ts +20 -0
- package/dist/core/inline-toolbar/InlinePositioner.js +63 -0
- package/dist/core/inline-toolbar/InlineToolbar.d.ts +45 -0
- package/dist/core/inline-toolbar/InlineToolbar.js +456 -0
- package/dist/core/inline-toolbar/PluginControlsSlot.d.ts +52 -0
- package/dist/core/inline-toolbar/PluginControlsSlot.js +118 -0
- package/dist/core/inline-toolbar/SelectionTracker.d.ts +63 -0
- package/dist/core/inline-toolbar/SelectionTracker.js +173 -0
- package/dist/core/inlinePluginInsert.d.ts +13 -0
- package/dist/core/inlinePluginInsert.js +56 -0
- package/dist/core/locale/en.d.ts +35 -0
- package/dist/core/locale/en.js +37 -0
- package/dist/core/locale/ru.d.ts +35 -0
- package/dist/core/locale/ru.js +37 -0
- package/dist/core/menuKeyboardNav.d.ts +15 -0
- package/dist/core/menuKeyboardNav.js +52 -0
- package/dist/core/sanitize.d.ts +2 -0
- package/dist/core/sanitize.js +6 -0
- package/dist/core/splitConvert.d.ts +46 -0
- package/dist/core/splitConvert.js +190 -0
- package/dist/core/textOffset.d.ts +46 -0
- package/dist/core/textOffset.js +180 -0
- package/dist/core/themes/dark.css +30 -0
- package/dist/core/themes/light.css +33 -0
- package/dist/core/themes/variables.css +1170 -0
- package/dist/core/toolbar/OffcanvasRoot.d.ts +37 -0
- package/dist/core/toolbar/OffcanvasRoot.js +127 -0
- package/dist/core/toolbar/Toolbar.d.ts +70 -0
- package/dist/core/toolbar/Toolbar.js +432 -0
- package/dist/core/toolbar/ToolbarPositioner.d.ts +60 -0
- package/dist/core/toolbar/ToolbarPositioner.js +188 -0
- package/dist/core/toolbar/ToolboxBuilder.d.ts +44 -0
- package/dist/core/toolbar/ToolboxBuilder.js +260 -0
- package/dist/core/types.d.ts +747 -0
- package/dist/core/uid.d.ts +6 -0
- package/dist/core/uid.js +29 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +1 -0
- package/dist/inline-plugins/README.md +35 -0
- package/dist/inline-plugins/README.ru.md +35 -0
- package/dist/inline-plugins/color/README.md +61 -0
- package/dist/inline-plugins/color/README.ru.md +61 -0
- package/dist/inline-plugins/color.d.ts +8 -0
- package/dist/inline-plugins/color.js +184 -0
- package/dist/inline-plugins/locale/en.d.ts +7 -0
- package/dist/inline-plugins/locale/en.js +6 -0
- package/dist/inline-plugins/locale/ru.d.ts +7 -0
- package/dist/inline-plugins/locale/ru.js +6 -0
- package/dist/inline-plugins/mention/README.md +97 -0
- package/dist/inline-plugins/mention/README.ru.md +97 -0
- package/dist/inline-plugins/mention/index.d.ts +110 -0
- package/dist/inline-plugins/mention/index.js +1897 -0
- package/dist/inline-plugins/mention/styles.css +183 -0
- package/dist/inline-plugins/mention/widget.d.ts +16 -0
- package/dist/inline-plugins/mention/widget.js +75 -0
- package/dist/inline-tools/align.d.ts +14 -0
- package/dist/inline-tools/align.js +120 -0
- package/dist/inline-tools/bold.d.ts +8 -0
- package/dist/inline-tools/bold.js +12 -0
- package/dist/inline-tools/caseTransform.d.ts +8 -0
- package/dist/inline-tools/caseTransform.js +87 -0
- package/dist/inline-tools/clearFormatting.d.ts +8 -0
- package/dist/inline-tools/clearFormatting.js +74 -0
- package/dist/inline-tools/code.d.ts +8 -0
- package/dist/inline-tools/code.js +12 -0
- package/dist/inline-tools/colorPicker.d.ts +7 -0
- package/dist/inline-tools/colorPicker.js +271 -0
- package/dist/inline-tools/defaults.d.ts +10 -0
- package/dist/inline-tools/defaults.js +57 -0
- package/dist/inline-tools/fontSize.d.ts +7 -0
- package/dist/inline-tools/fontSize.js +524 -0
- package/dist/inline-tools/italic.d.ts +8 -0
- package/dist/inline-tools/italic.js +12 -0
- package/dist/inline-tools/link.d.ts +12 -0
- package/dist/inline-tools/link.js +251 -0
- package/dist/inline-tools/marker.d.ts +8 -0
- package/dist/inline-tools/marker.js +12 -0
- package/dist/inline-tools/scriptTool.d.ts +11 -0
- package/dist/inline-tools/scriptTool.js +149 -0
- package/dist/inline-tools/strikethrough.d.ts +8 -0
- package/dist/inline-tools/strikethrough.js +12 -0
- package/dist/inline-tools/utils.d.ts +220 -0
- package/dist/inline-tools/utils.js +992 -0
- package/dist/locale/en.d.ts +311 -0
- package/dist/locale/en.js +52 -0
- package/dist/locale/ru.d.ts +315 -0
- package/dist/locale/ru.js +52 -0
- package/dist/plugins/BlockPluginAbstract.d.ts +82 -0
- package/dist/plugins/BlockPluginAbstract.js +111 -0
- package/dist/plugins/README.md +44 -0
- package/dist/plugins/README.ru.md +40 -0
- package/dist/plugins/async.d.ts +35 -0
- package/dist/plugins/async.js +79 -0
- package/dist/plugins/attaches/README.md +86 -0
- package/dist/plugins/attaches/README.ru.md +87 -0
- package/dist/plugins/attaches/attaches.css +374 -0
- package/dist/plugins/attaches/index.d.ts +133 -0
- package/dist/plugins/attaches/index.js +921 -0
- package/dist/plugins/attaches/locale/en.d.ts +23 -0
- package/dist/plugins/attaches/locale/en.js +19 -0
- package/dist/plugins/attaches/locale/keys.d.ts +5 -0
- package/dist/plugins/attaches/locale/ru.d.ts +25 -0
- package/dist/plugins/attaches/locale/ru.js +19 -0
- package/dist/plugins/carousel/README.md +108 -0
- package/dist/plugins/carousel/README.ru.md +109 -0
- package/dist/plugins/carousel/carousel.css +198 -0
- package/dist/plugins/carousel/icons.d.ts +12 -0
- package/dist/plugins/carousel/icons.js +13 -0
- package/dist/plugins/carousel/index.d.ts +137 -0
- package/dist/plugins/carousel/index.js +859 -0
- package/dist/plugins/carousel/locale/en.d.ts +41 -0
- package/dist/plugins/carousel/locale/en.js +40 -0
- package/dist/plugins/carousel/locale/keys.d.ts +2 -0
- package/dist/plugins/carousel/locale/ru.d.ts +41 -0
- package/dist/plugins/carousel/locale/ru.js +40 -0
- package/dist/plugins/carousel/state.d.ts +29 -0
- package/dist/plugins/carousel/state.js +42 -0
- package/dist/plugins/checklist/README.md +54 -0
- package/dist/plugins/checklist/README.ru.md +55 -0
- package/dist/plugins/checklist/checklist.css +80 -0
- package/dist/plugins/checklist/index.d.ts +75 -0
- package/dist/plugins/checklist/index.js +407 -0
- package/dist/plugins/checklist/locale/en.d.ts +5 -0
- package/dist/plugins/checklist/locale/en.js +4 -0
- package/dist/plugins/checklist/locale/keys.d.ts +5 -0
- package/dist/plugins/checklist/locale/ru.d.ts +5 -0
- package/dist/plugins/checklist/locale/ru.js +4 -0
- package/dist/plugins/checklist/mapTextFields.d.ts +1 -0
- package/dist/plugins/checklist/mapTextFields.js +1 -0
- package/dist/plugins/code/README.md +59 -0
- package/dist/plugins/code/README.ru.md +60 -0
- package/dist/plugins/code/code.css +360 -0
- package/dist/plugins/code/index.d.ts +109 -0
- package/dist/plugins/code/index.js +1012 -0
- package/dist/plugins/code/locale/en.d.ts +11 -0
- package/dist/plugins/code/locale/en.js +10 -0
- package/dist/plugins/code/locale/keys.d.ts +5 -0
- package/dist/plugins/code/locale/ru.d.ts +11 -0
- package/dist/plugins/code/locale/ru.js +10 -0
- package/dist/plugins/columns/README.md +55 -0
- package/dist/plugins/columns/README.ru.md +56 -0
- package/dist/plugins/columns/columns.css +103 -0
- package/dist/plugins/columns/index.d.ts +58 -0
- package/dist/plugins/columns/index.js +236 -0
- package/dist/plugins/columns/locale/en.d.ts +6 -0
- package/dist/plugins/columns/locale/en.js +5 -0
- package/dist/plugins/columns/locale/keys.d.ts +5 -0
- package/dist/plugins/columns/locale/ru.d.ts +6 -0
- package/dist/plugins/columns/locale/ru.js +5 -0
- package/dist/plugins/delimiter/README.md +48 -0
- package/dist/plugins/delimiter/README.ru.md +49 -0
- package/dist/plugins/delimiter/delimiter.css +22 -0
- package/dist/plugins/delimiter/index.d.ts +38 -0
- package/dist/plugins/delimiter/index.js +69 -0
- package/dist/plugins/delimiter/locale/en.d.ts +4 -0
- package/dist/plugins/delimiter/locale/en.js +3 -0
- package/dist/plugins/delimiter/locale/keys.d.ts +5 -0
- package/dist/plugins/delimiter/locale/ru.d.ts +4 -0
- package/dist/plugins/delimiter/locale/ru.js +3 -0
- package/dist/plugins/embed/README.md +81 -0
- package/dist/plugins/embed/README.ru.md +82 -0
- package/dist/plugins/embed/embed.css +558 -0
- package/dist/plugins/embed/index.d.ts +271 -0
- package/dist/plugins/embed/index.js +967 -0
- package/dist/plugins/embed/locale/en.d.ts +20 -0
- package/dist/plugins/embed/locale/en.js +19 -0
- package/dist/plugins/embed/locale/keys.d.ts +5 -0
- package/dist/plugins/embed/locale/ru.d.ts +20 -0
- package/dist/plugins/embed/locale/ru.js +19 -0
- package/dist/plugins/embed/player.d.ts +1 -0
- package/dist/plugins/embed/player.js +1 -0
- package/dist/plugins/gallery/README.md +92 -0
- package/dist/plugins/gallery/README.ru.md +93 -0
- package/dist/plugins/gallery/css.d.ts +52 -0
- package/dist/plugins/gallery/css.js +67 -0
- package/dist/plugins/gallery/gallery.css +860 -0
- package/dist/plugins/gallery/icons.d.ts +13 -0
- package/dist/plugins/gallery/icons.js +45 -0
- package/dist/plugins/gallery/index.d.ts +126 -0
- package/dist/plugins/gallery/index.js +355 -0
- package/dist/plugins/gallery/layout.d.ts +35 -0
- package/dist/plugins/gallery/layout.js +79 -0
- package/dist/plugins/gallery/locale/en.d.ts +36 -0
- package/dist/plugins/gallery/locale/en.js +35 -0
- package/dist/plugins/gallery/locale/keys.d.ts +5 -0
- package/dist/plugins/gallery/locale/ru.d.ts +36 -0
- package/dist/plugins/gallery/locale/ru.js +35 -0
- package/dist/plugins/gallery/settings.d.ts +25 -0
- package/dist/plugins/gallery/settings.js +199 -0
- package/dist/plugins/gallery/slot.d.ts +73 -0
- package/dist/plugins/gallery/slot.js +260 -0
- package/dist/plugins/gallery/state.d.ts +67 -0
- package/dist/plugins/gallery/state.js +133 -0
- package/dist/plugins/gallery/styles.d.ts +10 -0
- package/dist/plugins/gallery/styles.js +24 -0
- package/dist/plugins/gallery/uploader.d.ts +31 -0
- package/dist/plugins/gallery/uploader.js +111 -0
- package/dist/plugins/gallery/view-empty.d.ts +41 -0
- package/dist/plugins/gallery/view-empty.js +56 -0
- package/dist/plugins/gallery/view-filled.d.ts +55 -0
- package/dist/plugins/gallery/view-filled.js +353 -0
- package/dist/plugins/heading/HeadingLevelSelect.d.ts +16 -0
- package/dist/plugins/heading/HeadingLevelSelect.js +183 -0
- package/dist/plugins/heading/README.md +58 -0
- package/dist/plugins/heading/README.ru.md +59 -0
- package/dist/plugins/heading/heading.css +76 -0
- package/dist/plugins/heading/index.d.ts +124 -0
- package/dist/plugins/heading/index.js +273 -0
- package/dist/plugins/heading/locale/en.d.ts +11 -0
- package/dist/plugins/heading/locale/en.js +10 -0
- package/dist/plugins/heading/locale/keys.d.ts +5 -0
- package/dist/plugins/heading/locale/ru.d.ts +11 -0
- package/dist/plugins/heading/locale/ru.js +10 -0
- package/dist/plugins/heading/mapTextFields.d.ts +1 -0
- package/dist/plugins/heading/mapTextFields.js +1 -0
- package/dist/plugins/image/README.md +93 -0
- package/dist/plugins/image/README.ru.md +94 -0
- package/dist/plugins/image/css.d.ts +47 -0
- package/dist/plugins/image/css.js +47 -0
- package/dist/plugins/image/icons.d.ts +13 -0
- package/dist/plugins/image/icons.js +26 -0
- package/dist/plugins/image/image.css +559 -0
- package/dist/plugins/image/index.d.ts +129 -0
- package/dist/plugins/image/index.js +346 -0
- package/dist/plugins/image/locale/en.d.ts +39 -0
- package/dist/plugins/image/locale/en.js +38 -0
- package/dist/plugins/image/locale/keys.d.ts +5 -0
- package/dist/plugins/image/locale/ru.d.ts +39 -0
- package/dist/plugins/image/locale/ru.js +38 -0
- package/dist/plugins/image/settings.d.ts +23 -0
- package/dist/plugins/image/settings.js +347 -0
- package/dist/plugins/image/state.d.ts +86 -0
- package/dist/plugins/image/state.js +151 -0
- package/dist/plugins/image/styles.d.ts +21 -0
- package/dist/plugins/image/styles.js +58 -0
- package/dist/plugins/image/uploader.d.ts +31 -0
- package/dist/plugins/image/uploader.js +92 -0
- package/dist/plugins/image/view-empty.d.ts +44 -0
- package/dist/plugins/image/view-empty.js +61 -0
- package/dist/plugins/image/view-filled.d.ts +49 -0
- package/dist/plugins/image/view-filled.js +282 -0
- package/dist/plugins/index.d.ts +21 -0
- package/dist/plugins/index.js +22 -0
- package/dist/plugins/link-preview/README.md +69 -0
- package/dist/plugins/link-preview/README.ru.md +70 -0
- package/dist/plugins/link-preview/index.d.ts +169 -0
- package/dist/plugins/link-preview/index.js +698 -0
- package/dist/plugins/link-preview/link-preview.css +254 -0
- package/dist/plugins/link-preview/locale/en.d.ts +14 -0
- package/dist/plugins/link-preview/locale/en.js +13 -0
- package/dist/plugins/link-preview/locale/keys.d.ts +5 -0
- package/dist/plugins/link-preview/locale/ru.d.ts +14 -0
- package/dist/plugins/link-preview/locale/ru.js +13 -0
- package/dist/plugins/list/README.md +59 -0
- package/dist/plugins/list/README.ru.md +60 -0
- package/dist/plugins/list/index.d.ts +134 -0
- package/dist/plugins/list/index.js +566 -0
- package/dist/plugins/list/list.css +57 -0
- package/dist/plugins/list/locale/en.d.ts +5 -0
- package/dist/plugins/list/locale/en.js +4 -0
- package/dist/plugins/list/locale/keys.d.ts +5 -0
- package/dist/plugins/list/locale/ru.d.ts +5 -0
- package/dist/plugins/list/locale/ru.js +4 -0
- package/dist/plugins/list/mapTextFields.d.ts +1 -0
- package/dist/plugins/list/mapTextFields.js +1 -0
- package/dist/plugins/paragraph/README.md +57 -0
- package/dist/plugins/paragraph/README.ru.md +58 -0
- package/dist/plugins/paragraph/index.d.ts +112 -0
- package/dist/plugins/paragraph/index.js +158 -0
- package/dist/plugins/paragraph/locale/en.d.ts +5 -0
- package/dist/plugins/paragraph/locale/en.js +4 -0
- package/dist/plugins/paragraph/locale/keys.d.ts +5 -0
- package/dist/plugins/paragraph/locale/ru.d.ts +5 -0
- package/dist/plugins/paragraph/locale/ru.js +4 -0
- package/dist/plugins/paragraph/mapTextFields.d.ts +1 -0
- package/dist/plugins/paragraph/mapTextFields.js +1 -0
- package/dist/plugins/paragraph/paragraph.css +56 -0
- package/dist/plugins/person/README.md +72 -0
- package/dist/plugins/person/README.ru.md +73 -0
- package/dist/plugins/person/index.d.ts +189 -0
- package/dist/plugins/person/index.js +777 -0
- package/dist/plugins/person/locale/en.d.ts +18 -0
- package/dist/plugins/person/locale/en.js +17 -0
- package/dist/plugins/person/locale/keys.d.ts +5 -0
- package/dist/plugins/person/locale/ru.d.ts +18 -0
- package/dist/plugins/person/locale/ru.js +17 -0
- package/dist/plugins/person/person.css +431 -0
- package/dist/plugins/person/socialResolver.d.ts +18 -0
- package/dist/plugins/person/socialResolver.js +69 -0
- package/dist/plugins/poll/README.md +96 -0
- package/dist/plugins/poll/README.ru.md +97 -0
- package/dist/plugins/poll/index.d.ts +134 -0
- package/dist/plugins/poll/index.js +825 -0
- package/dist/plugins/poll/locale/en.d.ts +23 -0
- package/dist/plugins/poll/locale/en.js +22 -0
- package/dist/plugins/poll/locale/keys.d.ts +5 -0
- package/dist/plugins/poll/locale/ru.d.ts +23 -0
- package/dist/plugins/poll/locale/ru.js +22 -0
- package/dist/plugins/poll/poll.css +400 -0
- package/dist/plugins/quote/README.md +55 -0
- package/dist/plugins/quote/README.ru.md +56 -0
- package/dist/plugins/quote/index.d.ts +81 -0
- package/dist/plugins/quote/index.js +165 -0
- package/dist/plugins/quote/locale/en.d.ts +6 -0
- package/dist/plugins/quote/locale/en.js +5 -0
- package/dist/plugins/quote/locale/keys.d.ts +5 -0
- package/dist/plugins/quote/locale/ru.d.ts +6 -0
- package/dist/plugins/quote/locale/ru.js +5 -0
- package/dist/plugins/quote/mapTextFields.d.ts +1 -0
- package/dist/plugins/quote/mapTextFields.js +1 -0
- package/dist/plugins/quote/quote.css +72 -0
- package/dist/plugins/raw/README.md +54 -0
- package/dist/plugins/raw/README.ru.md +55 -0
- package/dist/plugins/raw/index.d.ts +62 -0
- package/dist/plugins/raw/index.js +227 -0
- package/dist/plugins/raw/locale/en.d.ts +7 -0
- package/dist/plugins/raw/locale/en.js +6 -0
- package/dist/plugins/raw/locale/keys.d.ts +5 -0
- package/dist/plugins/raw/locale/ru.d.ts +7 -0
- package/dist/plugins/raw/locale/ru.js +6 -0
- package/dist/plugins/raw/raw.css +127 -0
- package/dist/plugins/shared/actionBar.d.ts +19 -0
- package/dist/plugins/shared/actionBar.js +35 -0
- package/dist/plugins/shared/dropzone.d.ts +106 -0
- package/dist/plugins/shared/dropzone.js +107 -0
- package/dist/plugins/shared/fileInput.d.ts +44 -0
- package/dist/plugins/shared/fileInput.js +62 -0
- package/dist/plugins/spoiler/README.md +55 -0
- package/dist/plugins/spoiler/README.ru.md +56 -0
- package/dist/plugins/spoiler/index.d.ts +61 -0
- package/dist/plugins/spoiler/index.js +169 -0
- package/dist/plugins/spoiler/locale/en.d.ts +7 -0
- package/dist/plugins/spoiler/locale/en.js +6 -0
- package/dist/plugins/spoiler/locale/keys.d.ts +5 -0
- package/dist/plugins/spoiler/locale/ru.d.ts +7 -0
- package/dist/plugins/spoiler/locale/ru.js +6 -0
- package/dist/plugins/spoiler/spoiler.css +101 -0
- package/dist/plugins/table/README.md +55 -0
- package/dist/plugins/table/README.ru.md +56 -0
- package/dist/plugins/table/index.d.ts +85 -0
- package/dist/plugins/table/index.js +399 -0
- package/dist/plugins/table/locale/en.d.ts +9 -0
- package/dist/plugins/table/locale/en.js +8 -0
- package/dist/plugins/table/locale/keys.d.ts +5 -0
- package/dist/plugins/table/locale/ru.d.ts +9 -0
- package/dist/plugins/table/locale/ru.js +8 -0
- package/dist/plugins/table/table.css +58 -0
- package/dist/plugins/toggle/README.md +56 -0
- package/dist/plugins/toggle/README.ru.md +57 -0
- package/dist/plugins/toggle/index.d.ts +69 -0
- package/dist/plugins/toggle/index.js +191 -0
- package/dist/plugins/toggle/locale/en.d.ts +7 -0
- package/dist/plugins/toggle/locale/en.js +6 -0
- package/dist/plugins/toggle/locale/keys.d.ts +5 -0
- package/dist/plugins/toggle/locale/ru.d.ts +7 -0
- package/dist/plugins/toggle/locale/ru.js +6 -0
- package/dist/plugins/toggle/toggle.css +101 -0
- package/dist/plugins/warning/README.md +55 -0
- package/dist/plugins/warning/README.ru.md +56 -0
- package/dist/plugins/warning/index.d.ts +66 -0
- package/dist/plugins/warning/index.js +167 -0
- package/dist/plugins/warning/locale/en.d.ts +6 -0
- package/dist/plugins/warning/locale/en.js +5 -0
- package/dist/plugins/warning/locale/keys.d.ts +5 -0
- package/dist/plugins/warning/locale/ru.d.ts +6 -0
- package/dist/plugins/warning/locale/ru.js +5 -0
- package/dist/plugins/warning/warning.css +63 -0
- package/dist/renderer/async.d.ts +1 -0
- package/dist/renderer/async.js +7 -0
- package/dist/renderer/errors.d.ts +27 -0
- package/dist/renderer/errors.js +48 -0
- package/dist/renderer/index.d.ts +82 -0
- package/dist/renderer/index.js +413 -0
- package/dist/renderer/inline.d.ts +5 -0
- package/dist/renderer/inline.js +61 -0
- package/dist/renderer/locale/en.d.ts +35 -0
- package/dist/renderer/locale/en.js +29 -0
- package/dist/renderer/locale/ru.d.ts +37 -0
- package/dist/renderer/locale/ru.js +29 -0
- package/dist/renderer/renderers/README.md +7 -0
- package/dist/renderer/renderers/README.ru.md +5 -0
- package/dist/renderer/renderers/async.d.ts +51 -0
- package/dist/renderer/renderers/async.js +99 -0
- package/dist/renderer/renderers/attaches/README.md +48 -0
- package/dist/renderer/renderers/attaches/README.ru.md +48 -0
- package/dist/renderer/renderers/attaches/index.d.ts +37 -0
- package/dist/renderer/renderers/attaches/index.js +451 -0
- package/dist/renderer/renderers/attaches/locale/en.d.ts +11 -0
- package/dist/renderer/renderers/attaches/locale/en.js +7 -0
- package/dist/renderer/renderers/attaches/locale/ru.d.ts +13 -0
- package/dist/renderer/renderers/attaches/locale/ru.js +7 -0
- package/dist/renderer/renderers/attaches/styles.css +196 -0
- package/dist/renderer/renderers/carousel/README.md +43 -0
- package/dist/renderer/renderers/carousel/README.ru.md +43 -0
- package/dist/renderer/renderers/carousel/index.d.ts +7 -0
- package/dist/renderer/renderers/carousel/index.js +110 -0
- package/dist/renderer/renderers/carousel/styles.css +7 -0
- package/dist/renderer/renderers/checklist/README.md +33 -0
- package/dist/renderer/renderers/checklist/README.ru.md +33 -0
- package/dist/renderer/renderers/checklist/index.d.ts +7 -0
- package/dist/renderer/renderers/checklist/index.js +55 -0
- package/dist/renderer/renderers/checklist/styles.css +54 -0
- package/dist/renderer/renderers/code/README.md +33 -0
- package/dist/renderer/renderers/code/README.ru.md +33 -0
- package/dist/renderer/renderers/code/index.d.ts +9 -0
- package/dist/renderer/renderers/code/index.js +137 -0
- package/dist/renderer/renderers/code/locale/en.d.ts +5 -0
- package/dist/renderer/renderers/code/locale/en.js +4 -0
- package/dist/renderer/renderers/code/locale/ru.d.ts +5 -0
- package/dist/renderer/renderers/code/locale/ru.js +4 -0
- package/dist/renderer/renderers/code/styles.css +330 -0
- package/dist/renderer/renderers/columns/README.md +33 -0
- package/dist/renderer/renderers/columns/README.ru.md +33 -0
- package/dist/renderer/renderers/columns/index.d.ts +7 -0
- package/dist/renderer/renderers/columns/index.js +53 -0
- package/dist/renderer/renderers/columns/styles.css +5 -0
- package/dist/renderer/renderers/delimiter/README.md +33 -0
- package/dist/renderer/renderers/delimiter/README.ru.md +33 -0
- package/dist/renderer/renderers/delimiter/index.d.ts +7 -0
- package/dist/renderer/renderers/delimiter/index.js +28 -0
- package/dist/renderer/renderers/delimiter/styles.css +12 -0
- package/dist/renderer/renderers/embed/README.md +35 -0
- package/dist/renderer/renderers/embed/README.ru.md +35 -0
- package/dist/renderer/renderers/embed/index.d.ts +8 -0
- package/dist/renderer/renderers/embed/index.js +66 -0
- package/dist/renderer/renderers/embed/styles.css +217 -0
- package/dist/renderer/renderers/gallery/README.md +41 -0
- package/dist/renderer/renderers/gallery/README.ru.md +41 -0
- package/dist/renderer/renderers/gallery/index.d.ts +8 -0
- package/dist/renderer/renderers/gallery/index.js +329 -0
- package/dist/renderer/renderers/gallery/styles.css +419 -0
- package/dist/renderer/renderers/heading/README.md +33 -0
- package/dist/renderer/renderers/heading/README.ru.md +33 -0
- package/dist/renderer/renderers/heading/index.d.ts +8 -0
- package/dist/renderer/renderers/heading/index.js +38 -0
- package/dist/renderer/renderers/heading/styles.css +26 -0
- package/dist/renderer/renderers/image/README.md +42 -0
- package/dist/renderer/renderers/image/README.ru.md +42 -0
- package/dist/renderer/renderers/image/index.d.ts +7 -0
- package/dist/renderer/renderers/image/index.js +93 -0
- package/dist/renderer/renderers/image/styles.css +40 -0
- package/dist/renderer/renderers/index.d.ts +47 -0
- package/dist/renderer/renderers/index.js +125 -0
- package/dist/renderer/renderers/link-preview/README.md +43 -0
- package/dist/renderer/renderers/link-preview/README.ru.md +43 -0
- package/dist/renderer/renderers/link-preview/index.d.ts +9 -0
- package/dist/renderer/renderers/link-preview/index.js +118 -0
- package/dist/renderer/renderers/link-preview/styles.css +246 -0
- package/dist/renderer/renderers/list/README.md +33 -0
- package/dist/renderer/renderers/list/README.ru.md +33 -0
- package/dist/renderer/renderers/list/index.d.ts +8 -0
- package/dist/renderer/renderers/list/index.js +42 -0
- package/dist/renderer/renderers/list/styles.css +20 -0
- package/dist/renderer/renderers/paragraph/README.md +33 -0
- package/dist/renderer/renderers/paragraph/README.ru.md +33 -0
- package/dist/renderer/renderers/paragraph/index.d.ts +7 -0
- package/dist/renderer/renderers/paragraph/index.js +35 -0
- package/dist/renderer/renderers/paragraph/styles.css +3 -0
- package/dist/renderer/renderers/person/README.md +44 -0
- package/dist/renderer/renderers/person/README.ru.md +44 -0
- package/dist/renderer/renderers/person/index.d.ts +7 -0
- package/dist/renderer/renderers/person/index.js +213 -0
- package/dist/renderer/renderers/person/locale/en.d.ts +6 -0
- package/dist/renderer/renderers/person/locale/en.js +5 -0
- package/dist/renderer/renderers/person/locale/ru.d.ts +6 -0
- package/dist/renderer/renderers/person/locale/ru.js +5 -0
- package/dist/renderer/renderers/person/styles.css +47 -0
- package/dist/renderer/renderers/poll/README.md +68 -0
- package/dist/renderer/renderers/poll/README.ru.md +68 -0
- package/dist/renderer/renderers/poll/index.d.ts +9 -0
- package/dist/renderer/renderers/poll/index.js +339 -0
- package/dist/renderer/renderers/poll/styles.css +148 -0
- package/dist/renderer/renderers/quote/README.md +33 -0
- package/dist/renderer/renderers/quote/README.ru.md +33 -0
- package/dist/renderer/renderers/quote/index.d.ts +7 -0
- package/dist/renderer/renderers/quote/index.js +59 -0
- package/dist/renderer/renderers/quote/styles.css +43 -0
- package/dist/renderer/renderers/raw/README.md +33 -0
- package/dist/renderer/renderers/raw/README.ru.md +33 -0
- package/dist/renderer/renderers/raw/index.d.ts +7 -0
- package/dist/renderer/renderers/raw/index.js +27 -0
- package/dist/renderer/renderers/spoiler/README.md +33 -0
- package/dist/renderer/renderers/spoiler/README.ru.md +33 -0
- package/dist/renderer/renderers/spoiler/index.d.ts +9 -0
- package/dist/renderer/renderers/spoiler/index.js +84 -0
- package/dist/renderer/renderers/spoiler/locale/en.d.ts +4 -0
- package/dist/renderer/renderers/spoiler/locale/en.js +3 -0
- package/dist/renderer/renderers/spoiler/locale/ru.d.ts +4 -0
- package/dist/renderer/renderers/spoiler/locale/ru.js +3 -0
- package/dist/renderer/renderers/spoiler/styles.css +61 -0
- package/dist/renderer/renderers/table/README.md +33 -0
- package/dist/renderer/renderers/table/README.ru.md +33 -0
- package/dist/renderer/renderers/table/index.d.ts +7 -0
- package/dist/renderer/renderers/table/index.js +83 -0
- package/dist/renderer/renderers/table/styles.css +34 -0
- package/dist/renderer/renderers/toggle/README.md +33 -0
- package/dist/renderer/renderers/toggle/README.ru.md +33 -0
- package/dist/renderer/renderers/toggle/index.d.ts +7 -0
- package/dist/renderer/renderers/toggle/index.js +59 -0
- package/dist/renderer/renderers/toggle/styles.css +49 -0
- package/dist/renderer/renderers/warning/README.md +33 -0
- package/dist/renderer/renderers/warning/README.ru.md +33 -0
- package/dist/renderer/renderers/warning/index.d.ts +7 -0
- package/dist/renderer/renderers/warning/index.js +62 -0
- package/dist/renderer/renderers/warning/styles.css +41 -0
- package/dist/renderer/styles/base.css +168 -0
- package/dist/renderer/types.d.ts +464 -0
- package/dist/shared/blockDataNormalizers.d.ts +14 -0
- package/dist/shared/blockDataNormalizers.js +235 -0
- package/dist/shared/blockDataValidators.d.ts +81 -0
- package/dist/shared/blockDataValidators.js +313 -0
- package/dist/shared/blockTypes.d.ts +2 -0
- package/dist/shared/blockTypes.js +26 -0
- package/dist/shared/carouselData.d.ts +34 -0
- package/dist/shared/carouselData.js +111 -0
- package/dist/shared/cloneEditorData.d.ts +11 -0
- package/dist/shared/cloneEditorData.js +20 -0
- package/dist/shared/documentTypes.d.ts +35 -0
- package/dist/shared/embedPlayer.d.ts +42 -0
- package/dist/shared/embedPlayer.js +141 -0
- package/dist/shared/fileUtils.d.ts +33 -0
- package/dist/shared/fileUtils.js +109 -0
- package/dist/shared/highlightRuntime.d.ts +38 -0
- package/dist/shared/highlightRuntime.js +75 -0
- package/dist/shared/inlineMarshal.d.ts +82 -0
- package/dist/shared/inlineMarshal.js +215 -0
- package/dist/shared/jsonData.d.ts +11 -0
- package/dist/shared/jsonData.js +53 -0
- package/dist/shared/localeTypes.d.ts +11 -0
- package/dist/shared/mapTextFields.d.ts +89 -0
- package/dist/shared/mapTextFields.js +119 -0
- package/dist/shared/pollData.d.ts +90 -0
- package/dist/shared/pollData.js +231 -0
- package/dist/shared/resolvePath.d.ts +8 -0
- package/dist/shared/resolvePath.js +10 -0
- package/dist/shared/runtime/dompurify.js +2424 -0
- package/dist/shared/runtime/highlightBundle.js +10 -0
- package/dist/shared/runtime/jszip.js +13 -0
- package/dist/shared/sanitize/allowlist.d.ts +21 -0
- package/dist/shared/sanitize/allowlist.js +40 -0
- package/dist/shared/sanitize/escapeHtml.d.ts +6 -0
- package/dist/shared/sanitize/escapeHtml.js +11 -0
- package/dist/shared/sanitize/index.d.ts +8 -0
- package/dist/shared/sanitize/index.js +8 -0
- package/dist/shared/sanitize/parseInline.d.ts +11 -0
- package/dist/shared/sanitize/parseInline.js +25 -0
- package/dist/shared/sanitize/sanitizeHtml.d.ts +8 -0
- package/dist/shared/sanitize/sanitizeHtml.js +19 -0
- package/dist/shared/sanitize/sanitizeRawHtml.d.ts +15 -0
- package/dist/shared/sanitize/sanitizeRawHtml.js +162 -0
- package/dist/shared/sanitize/sanitizeStyle.d.ts +9 -0
- package/dist/shared/sanitize/sanitizeStyle.js +39 -0
- package/dist/shared/sanitize/sanitizeUrl.d.ts +28 -0
- package/dist/shared/sanitize/sanitizeUrl.js +86 -0
- package/dist/shared/sanitize/walker.d.ts +15 -0
- package/dist/shared/sanitize/walker.js +98 -0
- package/dist/shared/styleRegistry.d.ts +4 -0
- package/dist/shared/styleRegistry.js +38 -0
- package/dist/shared/textFormat.d.ts +32 -0
- package/dist/shared/textFormat.js +48 -0
- package/dist/shared/zipRuntime.d.ts +19 -0
- package/dist/shared/zipRuntime.js +54 -0
- package/dist/styles/editor.css +3 -0
- package/dist/types.d.ts +1 -0
- package/package.json +149 -0
|
@@ -0,0 +1,407 @@
|
|
|
1
|
+
import { sanitizeHtml } from '../../core/sanitize.js'
|
|
2
|
+
import { resolvePath } from '../../shared/resolvePath.js'
|
|
3
|
+
import { BlockPluginAbstract } from '../BlockPluginAbstract.js'
|
|
4
|
+
import { validateChecklistData } from '../../shared/blockDataValidators.js'
|
|
5
|
+
import { mapTextFields } from './mapTextFields.js'
|
|
6
|
+
import { normalizeTextValue } from '../../shared/textFormat.js'
|
|
7
|
+
|
|
8
|
+
const editorStyles = resolvePath('./checklist.css', import.meta.url)
|
|
9
|
+
|
|
10
|
+
// Tabler icon: list-check
|
|
11
|
+
const ICON = '<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3.5 5.5l1.5 1.5l2.5-2.5"/><path d="M3.5 11.5l1.5 1.5l2.5-2.5"/><path d="M3.5 17.5l1.5 1.5l2.5-2.5"/><path d="M11 6h9"/><path d="M11 12h9"/><path d="M11 18h9"/></svg>'
|
|
12
|
+
|
|
13
|
+
// Check icon inside checkbox
|
|
14
|
+
const CHECK_SVG = '<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg>'
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
const mutationContexts = new WeakMap()
|
|
18
|
+
/** Editable checklist block with independently toggleable rich-text items. */
|
|
19
|
+
export class Checklist extends BlockPluginAbstract {
|
|
20
|
+
static isTextBlock = true
|
|
21
|
+
static styles = [editorStyles]
|
|
22
|
+
type = 'checklist'
|
|
23
|
+
icon = ICON
|
|
24
|
+
inlineTools = true
|
|
25
|
+
mapTextFields = mapTextFields
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Return the localized toolbox label for this block.
|
|
29
|
+
* @returns {string}
|
|
30
|
+
*/
|
|
31
|
+
get title() {
|
|
32
|
+
return this._t('title', 'Checklist')
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Create the editable DOM owned by this block instance.
|
|
37
|
+
* @param {{ items?: Array<{ text: string, checked: boolean } | string>, text?: string }} data
|
|
38
|
+
* @param {import('../../core/types').BlockMutationContext} context
|
|
39
|
+
* @returns {HTMLElement}
|
|
40
|
+
*/
|
|
41
|
+
render(data, context) {
|
|
42
|
+
const wrapper = document.createElement('div')
|
|
43
|
+
wrapper.classList.add('oe-checklist')
|
|
44
|
+
mutationContexts.set(wrapper, context)
|
|
45
|
+
|
|
46
|
+
const serializedItems = Array.isArray(data?.items)
|
|
47
|
+
? data.items.flatMap(item => {
|
|
48
|
+
if (typeof item === 'string') return [{ text: item, checked: false }]
|
|
49
|
+
if (item && typeof item === 'object' && !Array.isArray(item)) {
|
|
50
|
+
return [{
|
|
51
|
+
text: typeof item.text === 'string' ? item.text : '',
|
|
52
|
+
checked: item.checked === true,
|
|
53
|
+
}]
|
|
54
|
+
}
|
|
55
|
+
return []
|
|
56
|
+
})
|
|
57
|
+
: []
|
|
58
|
+
const transferredText = normalizeTextValue(data?.text)
|
|
59
|
+
const items = serializedItems.length > 0
|
|
60
|
+
? serializedItems
|
|
61
|
+
: [{ text: transferredText, checked: false }]
|
|
62
|
+
|
|
63
|
+
for (const item of items) {
|
|
64
|
+
this.#addItem(wrapper, typeof item.text === 'string' ? item.text : '', item.checked === true)
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
wrapper.addEventListener('keydown', (e) => {
|
|
68
|
+
if (e.key === 'Enter' && !e.shiftKey) {
|
|
69
|
+
if (this.#handleEnter(wrapper)) {
|
|
70
|
+
e.preventDefault()
|
|
71
|
+
e.stopPropagation()
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
if (e.key === 'Backspace') {
|
|
75
|
+
this.#handleBackspace(wrapper, e)
|
|
76
|
+
}
|
|
77
|
+
})
|
|
78
|
+
|
|
79
|
+
return wrapper
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Serialize the current block DOM into document data.
|
|
84
|
+
* @param {HTMLElement} element
|
|
85
|
+
* @returns {{ items: Array<{ text: string, checked: boolean }> }}
|
|
86
|
+
*/
|
|
87
|
+
save(element) {
|
|
88
|
+
const items = []
|
|
89
|
+
for (const item of element.querySelectorAll('.oe-checklist__item')) {
|
|
90
|
+
const text = item.querySelector('.oe-checklist__text')
|
|
91
|
+
const checked = item.classList.contains('oe-checklist__item--checked')
|
|
92
|
+
items.push({
|
|
93
|
+
text: sanitizeHtml(text?.innerHTML?.trim() || ''),
|
|
94
|
+
checked,
|
|
95
|
+
})
|
|
96
|
+
}
|
|
97
|
+
return { items }
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Check whether serialized data satisfies this block's schema.
|
|
102
|
+
* @param {{ items?: Array<{ text: string, checked: boolean }> }} data
|
|
103
|
+
* @returns {boolean}
|
|
104
|
+
*/
|
|
105
|
+
validate(data) {
|
|
106
|
+
return validateChecklistData(data)
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Check whether the block has no meaningful user content.
|
|
111
|
+
* @param {HTMLElement} element
|
|
112
|
+
* @returns {boolean}
|
|
113
|
+
*/
|
|
114
|
+
isEmpty(element) {
|
|
115
|
+
const items = element.querySelectorAll('.oe-checklist__item')
|
|
116
|
+
if (items.length === 0) return true
|
|
117
|
+
if (items.length === 1) {
|
|
118
|
+
const text = items[0]?.querySelector('.oe-checklist__text')
|
|
119
|
+
return !text?.textContent?.trim()
|
|
120
|
+
}
|
|
121
|
+
return false
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* Extract neutral text that can initialize another block type.
|
|
126
|
+
* @param {HTMLElement} element
|
|
127
|
+
* @returns {{ text: string }}
|
|
128
|
+
*/
|
|
129
|
+
exportData(element) {
|
|
130
|
+
const texts = []
|
|
131
|
+
for (const item of element.querySelectorAll('.oe-checklist__text')) {
|
|
132
|
+
const t = sanitizeHtml(item.innerHTML?.trim() || '')
|
|
133
|
+
if (t) texts.push(t)
|
|
134
|
+
}
|
|
135
|
+
return { text: texts.join('<br>') }
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
/**
|
|
139
|
+
* Merge incoming text into the current block.
|
|
140
|
+
* @param {HTMLElement} element
|
|
141
|
+
* @param {Record<string, unknown>} data
|
|
142
|
+
* @returns {void}
|
|
143
|
+
*/
|
|
144
|
+
merge(element, data) {
|
|
145
|
+
if (Array.isArray(data?.items)) {
|
|
146
|
+
for (const item of data.items) {
|
|
147
|
+
if (!item || typeof item !== 'object' || Array.isArray(item)) continue
|
|
148
|
+
this.#addItem(element, typeof item.text === 'string' ? item.text : '', item.checked === true)
|
|
149
|
+
}
|
|
150
|
+
} else {
|
|
151
|
+
const text = normalizeTextValue(data?.text)
|
|
152
|
+
if (text) this.#addItem(element, text, false)
|
|
153
|
+
}
|
|
154
|
+
const lastText = /** @type {HTMLElement | null} */ (element.querySelector('.oe-checklist__item:last-child .oe-checklist__text'))
|
|
155
|
+
if (lastText) {
|
|
156
|
+
lastText.focus()
|
|
157
|
+
const sel = window.getSelection()
|
|
158
|
+
if (sel) {
|
|
159
|
+
const range = document.createRange()
|
|
160
|
+
range.selectNodeContents(lastText)
|
|
161
|
+
range.collapse(false)
|
|
162
|
+
sel.removeAllRanges()
|
|
163
|
+
sel.addRange(range)
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
// ── Private ─────────────────────────────────────────────────────────────────
|
|
169
|
+
|
|
170
|
+
/**
|
|
171
|
+
* @param {HTMLElement} wrapper
|
|
172
|
+
* @param {string} text
|
|
173
|
+
* @param {boolean} checked
|
|
174
|
+
* @returns {void}
|
|
175
|
+
*/
|
|
176
|
+
#addItem(wrapper, text, checked) {
|
|
177
|
+
const item = document.createElement('div')
|
|
178
|
+
item.className = `oe-checklist__item${checked ? ' oe-checklist__item--checked' : ''}`
|
|
179
|
+
|
|
180
|
+
const checkbox = this.#createCheckbox(wrapper, item, checked)
|
|
181
|
+
|
|
182
|
+
const content = document.createElement('div')
|
|
183
|
+
content.className = 'oe-checklist__text'
|
|
184
|
+
content.contentEditable = 'true'
|
|
185
|
+
if (text) content.innerHTML = sanitizeHtml(text)
|
|
186
|
+
|
|
187
|
+
item.append(checkbox, content)
|
|
188
|
+
wrapper.appendChild(item)
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
/** @param {HTMLElement} wrapper @returns {boolean} Whether the key press was handled by this checklist. */
|
|
192
|
+
#handleEnter(wrapper) {
|
|
193
|
+
const sel = window.getSelection()
|
|
194
|
+
if (!sel?.rangeCount) return false
|
|
195
|
+
|
|
196
|
+
const range = sel.getRangeAt(0)
|
|
197
|
+
const currentText = range.startContainer.nodeType === Node.TEXT_NODE
|
|
198
|
+
? range.startContainer.parentElement?.closest('.oe-checklist__text')
|
|
199
|
+
: /** @type {HTMLElement} */ (range.startContainer).closest('.oe-checklist__text')
|
|
200
|
+
const endText = range.endContainer.nodeType === Node.TEXT_NODE
|
|
201
|
+
? range.endContainer.parentElement?.closest('.oe-checklist__text')
|
|
202
|
+
: /** @type {HTMLElement} */ (range.endContainer).closest('.oe-checklist__text')
|
|
203
|
+
if (!currentText || !endText || !wrapper.contains(currentText) || !wrapper.contains(endText)) return false
|
|
204
|
+
|
|
205
|
+
const currentItem = currentText.closest('.oe-checklist__item')
|
|
206
|
+
const endItem = endText.closest('.oe-checklist__item')
|
|
207
|
+
if (!currentItem || !endItem || currentItem.parentElement !== wrapper || endItem.parentElement !== wrapper) return false
|
|
208
|
+
|
|
209
|
+
const context = mutationContexts.get(wrapper)
|
|
210
|
+
if (!context) return false
|
|
211
|
+
|
|
212
|
+
const itemCount = wrapper.querySelectorAll('.oe-checklist__item').length
|
|
213
|
+
if (!currentText.textContent?.trim()) {
|
|
214
|
+
if (itemCount <= 1) {
|
|
215
|
+
context.exitEmptyBlock()
|
|
216
|
+
return true
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
context.mutate(() => {
|
|
220
|
+
const isLast = currentItem === wrapper.lastElementChild
|
|
221
|
+
const nextItem = currentItem.nextElementSibling
|
|
222
|
+
currentItem.remove()
|
|
223
|
+
|
|
224
|
+
if (isLast) {
|
|
225
|
+
const lastText = /** @type {HTMLElement | null} */ (
|
|
226
|
+
wrapper.querySelector('.oe-checklist__item:last-child .oe-checklist__text')
|
|
227
|
+
)
|
|
228
|
+
if (lastText) {
|
|
229
|
+
lastText.focus()
|
|
230
|
+
const end = document.createRange()
|
|
231
|
+
end.selectNodeContents(lastText)
|
|
232
|
+
end.collapse(false)
|
|
233
|
+
sel.removeAllRanges()
|
|
234
|
+
sel.addRange(end)
|
|
235
|
+
}
|
|
236
|
+
context.splitBlock()
|
|
237
|
+
return
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
const nextText = /** @type {HTMLElement | null} */ (nextItem?.querySelector('.oe-checklist__text'))
|
|
241
|
+
if (nextText) {
|
|
242
|
+
nextText.focus()
|
|
243
|
+
const start = document.createRange()
|
|
244
|
+
start.setStart(nextText, 0)
|
|
245
|
+
start.collapse(true)
|
|
246
|
+
sel.removeAllRanges()
|
|
247
|
+
sel.addRange(start)
|
|
248
|
+
}
|
|
249
|
+
})
|
|
250
|
+
return true
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
context.mutate(() => {
|
|
254
|
+
const selectionEnd = document.createRange()
|
|
255
|
+
selectionEnd.setStart(range.endContainer, range.endOffset)
|
|
256
|
+
selectionEnd.setEnd(endText, endText.childNodes.length)
|
|
257
|
+
const afterFrag = selectionEnd.extractContents()
|
|
258
|
+
|
|
259
|
+
if (currentItem === endItem) {
|
|
260
|
+
range.deleteContents()
|
|
261
|
+
} else {
|
|
262
|
+
const selectedStart = document.createRange()
|
|
263
|
+
selectedStart.setStart(range.startContainer, range.startOffset)
|
|
264
|
+
selectedStart.setEnd(currentText, currentText.childNodes.length)
|
|
265
|
+
selectedStart.deleteContents()
|
|
266
|
+
|
|
267
|
+
let item = currentItem.nextElementSibling
|
|
268
|
+
while (item) {
|
|
269
|
+
const next = item.nextElementSibling
|
|
270
|
+
const reachedEnd = item === endItem
|
|
271
|
+
item.remove()
|
|
272
|
+
if (reachedEnd) break
|
|
273
|
+
item = next
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
const afterText = document.createElement('div')
|
|
278
|
+
afterText.appendChild(afterFrag)
|
|
279
|
+
const newText = afterText.innerHTML.trim()
|
|
280
|
+
|
|
281
|
+
// Create new item after current
|
|
282
|
+
const newItem = document.createElement('div')
|
|
283
|
+
newItem.className = 'oe-checklist__item'
|
|
284
|
+
|
|
285
|
+
const checkbox = this.#createCheckbox(wrapper, newItem, false)
|
|
286
|
+
|
|
287
|
+
const content = document.createElement('div')
|
|
288
|
+
content.className = 'oe-checklist__text'
|
|
289
|
+
content.contentEditable = 'true'
|
|
290
|
+
if (newText) content.innerHTML = newText
|
|
291
|
+
|
|
292
|
+
newItem.append(checkbox, content)
|
|
293
|
+
currentItem.after(newItem)
|
|
294
|
+
|
|
295
|
+
// Focus new item
|
|
296
|
+
content.focus()
|
|
297
|
+
const newRange = document.createRange()
|
|
298
|
+
newRange.setStart(content, 0)
|
|
299
|
+
newRange.collapse(true)
|
|
300
|
+
sel.removeAllRanges()
|
|
301
|
+
sel.addRange(newRange)
|
|
302
|
+
})
|
|
303
|
+
return true
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
/**
|
|
307
|
+
* @param {HTMLElement} wrapper
|
|
308
|
+
* @param {HTMLElement} item
|
|
309
|
+
* @param {boolean} checked
|
|
310
|
+
* @returns {HTMLButtonElement}
|
|
311
|
+
*/
|
|
312
|
+
#createCheckbox(wrapper, item, checked) {
|
|
313
|
+
const checkbox = document.createElement('button')
|
|
314
|
+
checkbox.type = 'button'
|
|
315
|
+
checkbox.className = 'oe-checklist__checkbox'
|
|
316
|
+
checkbox.innerHTML = CHECK_SVG
|
|
317
|
+
checkbox.setAttribute('aria-label', this._t('toggle', 'Toggle checklist item'))
|
|
318
|
+
checkbox.setAttribute('aria-pressed', String(checked))
|
|
319
|
+
checkbox.addEventListener('mousedown', (event) => event.preventDefault())
|
|
320
|
+
checkbox.addEventListener('click', (event) => {
|
|
321
|
+
event.stopPropagation()
|
|
322
|
+
mutationContexts.get(wrapper)?.mutate(() => {
|
|
323
|
+
const next = !item.classList.contains('oe-checklist__item--checked')
|
|
324
|
+
item.classList.toggle('oe-checklist__item--checked', next)
|
|
325
|
+
checkbox.setAttribute('aria-pressed', String(next))
|
|
326
|
+
})
|
|
327
|
+
})
|
|
328
|
+
return checkbox
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
/**
|
|
332
|
+
* @param {HTMLElement} wrapper
|
|
333
|
+
* @param {KeyboardEvent} e
|
|
334
|
+
* @returns {void}
|
|
335
|
+
*/
|
|
336
|
+
#handleBackspace(wrapper, e) {
|
|
337
|
+
const items = wrapper.querySelectorAll('.oe-checklist__item')
|
|
338
|
+
if (items.length <= 1) return
|
|
339
|
+
|
|
340
|
+
const sel = window.getSelection()
|
|
341
|
+
if (!sel?.rangeCount) return
|
|
342
|
+
const range = sel.getRangeAt(0)
|
|
343
|
+
if (!range.collapsed) return
|
|
344
|
+
|
|
345
|
+
const currentText = range.startContainer.nodeType === Node.TEXT_NODE
|
|
346
|
+
? range.startContainer.parentElement?.closest('.oe-checklist__text')
|
|
347
|
+
: /** @type {HTMLElement} */ (range.startContainer).closest('.oe-checklist__text')
|
|
348
|
+
if (!(currentText instanceof HTMLElement) || !wrapper.contains(currentText)) return
|
|
349
|
+
|
|
350
|
+
if (!this.#isCaretAtStart(currentText, range)) return
|
|
351
|
+
|
|
352
|
+
const currentItem = currentText.closest('.oe-checklist__item')
|
|
353
|
+
if (!currentItem || currentItem.parentElement !== wrapper) return
|
|
354
|
+
const prevItem = currentItem?.previousElementSibling
|
|
355
|
+
if (!prevItem) return
|
|
356
|
+
|
|
357
|
+
e.preventDefault()
|
|
358
|
+
e.stopPropagation()
|
|
359
|
+
|
|
360
|
+
const prevText = /** @type {HTMLElement | null} */ (prevItem.querySelector('.oe-checklist__text'))
|
|
361
|
+
if (!prevText) return
|
|
362
|
+
|
|
363
|
+
const context = mutationContexts.get(wrapper)
|
|
364
|
+
if (!context) return
|
|
365
|
+
|
|
366
|
+
context.mutate(() => {
|
|
367
|
+
// Merge into previous
|
|
368
|
+
const mergePoint = prevText.childNodes.length
|
|
369
|
+
while (currentText.firstChild) {
|
|
370
|
+
prevText.appendChild(currentText.firstChild)
|
|
371
|
+
}
|
|
372
|
+
currentItem.remove()
|
|
373
|
+
|
|
374
|
+
// Set caret at merge point
|
|
375
|
+
prevText.focus()
|
|
376
|
+
const newRange = document.createRange()
|
|
377
|
+
if (prevText.childNodes[mergePoint]) {
|
|
378
|
+
newRange.setStartBefore(prevText.childNodes[mergePoint])
|
|
379
|
+
} else {
|
|
380
|
+
newRange.setStart(prevText, prevText.childNodes.length)
|
|
381
|
+
}
|
|
382
|
+
newRange.collapse(true)
|
|
383
|
+
sel.removeAllRanges()
|
|
384
|
+
sel.addRange(newRange)
|
|
385
|
+
})
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
/**
|
|
389
|
+
* @param {HTMLElement} text
|
|
390
|
+
* @param {Range} range
|
|
391
|
+
* @returns {boolean}
|
|
392
|
+
*/
|
|
393
|
+
#isCaretAtStart(text, range) {
|
|
394
|
+
const { startContainer, startOffset } = range
|
|
395
|
+
if (startContainer === text && startOffset === 0) return true
|
|
396
|
+
if (startContainer.nodeType !== Node.TEXT_NODE || startOffset !== 0) return false
|
|
397
|
+
|
|
398
|
+
/** @type {Node | null} */
|
|
399
|
+
let node = startContainer
|
|
400
|
+
while (node && node !== text) {
|
|
401
|
+
if (node.previousSibling) return false
|
|
402
|
+
node = node.parentNode
|
|
403
|
+
}
|
|
404
|
+
return node === text
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { mapChecklistTextFields as mapTextFields } from "../../shared/mapTextFields.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { mapChecklistTextFields as mapTextFields } from '../../shared/mapTextFields.js'
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# Code block plugin
|
|
2
|
+
|
|
3
|
+
Code block with a language selector and optional syntax highlighting.
|
|
4
|
+
|
|
5
|
+
## Install and register
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install @shelamkoff/rector
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
```js
|
|
12
|
+
import { createEditor } from '@shelamkoff/rector'
|
|
13
|
+
import { Code } from '@shelamkoff/rector/plugins/code'
|
|
14
|
+
import '@shelamkoff/rector/styles/editor.css'
|
|
15
|
+
|
|
16
|
+
const editor = createEditor({
|
|
17
|
+
holder: document.querySelector('#editor'),
|
|
18
|
+
plugins: [new Code()],
|
|
19
|
+
})
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
The registered block type is `code`. The class is also exported by the complete `@shelamkoff/rector/plugins` preset and can be loaded through `@shelamkoff/rector/plugins/async`.
|
|
23
|
+
|
|
24
|
+
## Data
|
|
25
|
+
|
|
26
|
+
```json
|
|
27
|
+
{ "code": "const value = 1", "language": "javascript" }
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
### Field reference
|
|
31
|
+
|
|
32
|
+
| Field | Required | Meaning and constraints |
|
|
33
|
+
| --- | --- | --- |
|
|
34
|
+
| `code` | yes | Non-blank source text. It is never executed as HTML. |
|
|
35
|
+
| `language` | no | Language identifier used for highlighting. Saving a new block writes `auto` until the user selects another language. Unknown strings remain valid data and fall back to plain text when the highlighter cannot resolve them. |
|
|
36
|
+
|
|
37
|
+
An empty code block is allowed as an editing draft but fails strict persisted-data validation.
|
|
38
|
+
|
|
39
|
+
## Configuration
|
|
40
|
+
|
|
41
|
+
Every built-in block plugin accepts two style ownership options: `injectStyles?: boolean` defaults to `true`; set it to `false` when the host bundles that plugin's CSS. `css?: string` adds one host-provided stylesheet URL after the plugin default, or acts as the replacement URL when default injection is disabled.
|
|
42
|
+
|
|
43
|
+
`hljs?: object` supplies a compatible highlight.js instance. Without it the bundled highlighting runtime is loaded lazily; if highlighting is unavailable, code remains readable as plain text.
|
|
44
|
+
|
|
45
|
+
The language menu contains the built-in identifiers used by the bundled highlighter. Documents may also contain any non-empty language string. Such a value is preserved and displayed even when it is absent from the menu; if the active highlighting runtime does not recognize it, the block falls back to escaped plain text. The copy button uses the browser Clipboard API. When that API is unavailable or rejects the write, the document and button state remain unchanged.
|
|
46
|
+
|
|
47
|
+
## Capabilities
|
|
48
|
+
|
|
49
|
+
Code/pre tag paste; fenced-code pattern paste; keyboard-accessible language selection and filtering; optional syntax highlighting; Clipboard API copy; export for conversion.
|
|
50
|
+
|
|
51
|
+
## Undo, lifecycle, and styles
|
|
52
|
+
|
|
53
|
+
User actions exposed by the plugin enter the command pipeline through the supplied `context.mutate()` capability, so each completed action is one undo/redo step. The editor reference-counts the plugin's declared stylesheet URLs. Removing a block calls its cleanup hook; removing the editor calls `destroy()` for every remaining block and then releases shared plugin resources.
|
|
54
|
+
|
|
55
|
+
Do not remove the editor holder without first calling `editor.destroy()`.
|
|
56
|
+
|
|
57
|
+
## Document output
|
|
58
|
+
|
|
59
|
+
Use the matching renderer from `@shelamkoff/rector/renderer/renderers/code`. The VitePress guide documents configuration, commands and history, extension contracts, document migrations, styling, security, and lifecycle in a sequential form.
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# Блочный плагин Code
|
|
2
|
+
|
|
3
|
+
Блок кода с выбором языка и необязательной подсветкой синтаксиса.
|
|
4
|
+
|
|
5
|
+
## Установка и регистрация
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install @shelamkoff/rector
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
```js
|
|
12
|
+
import { createEditor } from '@shelamkoff/rector'
|
|
13
|
+
import { Code } from '@shelamkoff/rector/plugins/code'
|
|
14
|
+
import '@shelamkoff/rector/styles/editor.css'
|
|
15
|
+
|
|
16
|
+
const editor = createEditor({
|
|
17
|
+
holder: document.querySelector('#editor'),
|
|
18
|
+
plugins: [new Code()],
|
|
19
|
+
})
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
Тип блока — `code`. Класс также экспортируется общей точкой входа `@shelamkoff/rector/plugins` и может загружаться по типу документа через `@shelamkoff/rector/plugins/async`.
|
|
23
|
+
|
|
24
|
+
## Данные
|
|
25
|
+
|
|
26
|
+
```json
|
|
27
|
+
{ "code": "const value = 1", "language": "javascript" }
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
### Поля данных
|
|
31
|
+
|
|
32
|
+
| Поле | Обязательно | Назначение и ограничения |
|
|
33
|
+
| --- | --- | --- |
|
|
34
|
+
| `code` | да | Непустой исходный текст. Он никогда не выполняется как HTML. |
|
|
35
|
+
| `language` | нет | Идентификатор языка для подсветки. Новый блок сохраняет `auto`, пока пользователь не выберет другой язык. Неизвестная строка остаётся допустимыми данными; если модуль подсветки не распознает её, код отображается как обычный текст. |
|
|
36
|
+
|
|
37
|
+
Пустой блок кода допустим как черновик, но не проходит строгую проверку сохранённых данных.
|
|
38
|
+
|
|
39
|
+
## Конфигурация
|
|
40
|
+
|
|
41
|
+
Каждый встроенный блочный плагин принимает два параметра владения стилями: `injectStyles?: boolean` по умолчанию равен `true`; укажите `false`, если приложение само включает CSS этого плагина. `css?: string` добавляет URL таблицы стилей приложения после стандартной, а при отключённой стандартной инъекции служит URL замены.
|
|
42
|
+
|
|
43
|
+
`hljs?: object` передаёт совместимый экземпляр highlight.js. Без него встроенная подсветка загружается по требованию; если она недоступна, код остаётся обычным текстом.
|
|
44
|
+
|
|
45
|
+
Меню языка содержит встроенные идентификаторы, поддерживаемые поставляемой подсветкой. Документ может хранить и любую другую непустую строку языка. Она сохраняется и отображается, даже если отсутствует в меню; когда текущий модуль подсветки её не распознаёт, блок показывает экранированный исходный текст без подсветки. Кнопка копирования использует браузерный API буфера обмена `navigator.clipboard`. Если этот интерфейс недоступен или запись отклонена, документ и состояние кнопки не меняются.
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
## Возможности
|
|
49
|
+
|
|
50
|
+
Вставка `code`, `pre` и ограждённого блока кода; доступные с клавиатуры выбор и фильтрация языка; необязательная подсветка; копирование через API буфера обмена; преобразование блока.
|
|
51
|
+
|
|
52
|
+
## История, жизненный цикл и стили
|
|
53
|
+
|
|
54
|
+
Действия плагина входят в конвейер команд через предоставленный контекст `mutate()`, поэтому одно завершённое действие создаёт один шаг отмены и повтора. Редактор подсчитывает владельцев объявленных URL стилей. Удаление блока вызывает его метод освобождения ресурсов; `editor.destroy()` освобождает оставшиеся блоки и общие ресурсы.
|
|
55
|
+
|
|
56
|
+
Не удаляйте контейнер редактора до вызова `editor.destroy()`.
|
|
57
|
+
|
|
58
|
+
## Вывод документа
|
|
59
|
+
|
|
60
|
+
Используйте фабричную функцию из `@shelamkoff/rector/renderer/renderers/code`. Последовательное руководство VitePress описывает проверку данных, миграции, разработку расширений, диагностику, безопасность и стили.
|