@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,58 @@
|
|
|
1
|
+
# Heading block plugin
|
|
2
|
+
|
|
3
|
+
Heading levels 2-6 with alignment, inline formatting, inline widgets, paste handling, and level controls.
|
|
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 { Heading } from '@shelamkoff/rector/plugins/heading'
|
|
14
|
+
import '@shelamkoff/rector/styles/editor.css'
|
|
15
|
+
|
|
16
|
+
const editor = createEditor({
|
|
17
|
+
holder: document.querySelector('#editor'),
|
|
18
|
+
plugins: [new Heading()],
|
|
19
|
+
})
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
The registered block type is `heading`. The class is also exported by the complete `@shelamkoff/rector/plugins` preset and can be loaded through `@shelamkoff/rector/plugins/async`.
|
|
23
|
+
|
|
24
|
+
The same subpath exports `HEADING_LEVELS`, a read-only array of `{ level, key, icon }` entries for H2-H6. `key` is a plugin-local localization key and `icon` is trusted built-in SVG markup. Use the array when an application-level heading control must expose exactly the levels supported by the plugin; do not mutate its entries.
|
|
25
|
+
|
|
26
|
+
## Data
|
|
27
|
+
|
|
28
|
+
```json
|
|
29
|
+
{ "text": "Section", "level": 2, "align": "left" }
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
### Field reference
|
|
33
|
+
|
|
34
|
+
| Field | Required | Meaning and constraints |
|
|
35
|
+
| --- | --- | --- |
|
|
36
|
+
| `text` | yes | Non-blank sanitized inline HTML. It may reference values from the block's `inline` map. |
|
|
37
|
+
| `level` | yes | Integer from `2` through `6`. A newly inserted heading starts at level `2`. |
|
|
38
|
+
| `align` | no | `left`, `center`, `right`, or `justify`; omitted means normal text alignment. |
|
|
39
|
+
|
|
40
|
+
An empty heading may exist as an editing draft, but strict document validation rejects it until `text` is non-blank.
|
|
41
|
+
|
|
42
|
+
## Configuration
|
|
43
|
+
|
|
44
|
+
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.
|
|
45
|
+
|
|
46
|
+
## Capabilities
|
|
47
|
+
|
|
48
|
+
Inline tools and widgets; heading-tag paste; level changes; export for conversion.
|
|
49
|
+
|
|
50
|
+
## Undo, lifecycle, and styles
|
|
51
|
+
|
|
52
|
+
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.
|
|
53
|
+
|
|
54
|
+
Do not remove the editor holder without first calling `editor.destroy()`.
|
|
55
|
+
|
|
56
|
+
## Document output
|
|
57
|
+
|
|
58
|
+
Use the matching renderer from `@shelamkoff/rector/renderer/renderers/heading`. The VitePress guide documents configuration, commands and history, extension contracts, document migrations, styling, security, and lifecycle in a sequential form.
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# Блочный плагин Heading
|
|
2
|
+
|
|
3
|
+
Заголовок уровня 2–6 с выравниванием, форматированием, виджетами и выбором уровня.
|
|
4
|
+
|
|
5
|
+
## Установка и регистрация
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install @shelamkoff/rector
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
```js
|
|
12
|
+
import { createEditor } from '@shelamkoff/rector'
|
|
13
|
+
import { Heading } from '@shelamkoff/rector/plugins/heading'
|
|
14
|
+
import '@shelamkoff/rector/styles/editor.css'
|
|
15
|
+
|
|
16
|
+
const editor = createEditor({
|
|
17
|
+
holder: document.querySelector('#editor'),
|
|
18
|
+
plugins: [new Heading()],
|
|
19
|
+
})
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
Тип блока — `heading`. Класс также экспортируется общей точкой входа `@shelamkoff/rector/plugins` и может загружаться по типу документа через `@shelamkoff/rector/plugins/async`.
|
|
23
|
+
|
|
24
|
+
Эта же точка входа экспортирует `HEADING_LEVELS` — доступный только для чтения массив элементов `{ level, key, icon }` для уровней `h2`–`h6`. Поле `key` содержит локальный ключ перевода плагина, а `icon` — доверенную встроенную SVG-разметку. Массив нужен, когда элемент управления приложения должен предлагать ровно те же уровни, что и плагин; не изменяйте его элементы.
|
|
25
|
+
|
|
26
|
+
## Данные
|
|
27
|
+
|
|
28
|
+
```json
|
|
29
|
+
{ "text": "Раздел", "level": 2, "align": "left" }
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
### Поля данных
|
|
33
|
+
|
|
34
|
+
| Поле | Обязательно | Назначение и ограничения |
|
|
35
|
+
| --- | --- | --- |
|
|
36
|
+
| `text` | да | Непустой очищенный внутристрочный HTML. Он может ссылаться на значения из карты `inline` блока. |
|
|
37
|
+
| `level` | да | Целое число от `2` до `6`. Новый заголовок создаётся с уровнем `2`. |
|
|
38
|
+
| `align` | нет | `left`, `center`, `right` или `justify`; отсутствие поля означает обычное выравнивание текста. |
|
|
39
|
+
|
|
40
|
+
Пустой заголовок может существовать как черновик, но строгая проверка документа отклоняет его, пока поле `text` остаётся пустым.
|
|
41
|
+
|
|
42
|
+
## Конфигурация
|
|
43
|
+
|
|
44
|
+
Каждый встроенный блочный плагин принимает два параметра владения стилями: `injectStyles?: boolean` по умолчанию равен `true`; укажите `false`, если приложение само включает CSS этого плагина. `css?: string` добавляет URL таблицы стилей приложения после стандартной, а при отключённой стандартной инъекции служит URL замены.
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
## Возможности
|
|
48
|
+
|
|
49
|
+
Внутристрочные инструменты и виджеты; вставка тегов заголовка; смена уровня; преобразование блока.
|
|
50
|
+
|
|
51
|
+
## История, жизненный цикл и стили
|
|
52
|
+
|
|
53
|
+
Действия плагина входят в конвейер команд через предоставленный контекст `mutate()`, поэтому одно завершённое действие создаёт один шаг отмены и повтора. Редактор подсчитывает владельцев объявленных URL стилей. Удаление блока вызывает его метод освобождения ресурсов; `editor.destroy()` освобождает оставшиеся блоки и общие ресурсы.
|
|
54
|
+
|
|
55
|
+
Не удаляйте контейнер редактора до вызова `editor.destroy()`.
|
|
56
|
+
|
|
57
|
+
## Вывод документа
|
|
58
|
+
|
|
59
|
+
Используйте фабричную функцию из `@shelamkoff/rector/renderer/renderers/heading`. Последовательное руководство VitePress описывает проверку данных, миграции, разработку расширений, диагностику, безопасность и стили.
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/* =============================================================================
|
|
2
|
+
Heading plugin — edit mode styles
|
|
3
|
+
============================================================================= */
|
|
4
|
+
|
|
5
|
+
.oe-heading {
|
|
6
|
+
margin: 0;
|
|
7
|
+
padding: 0;
|
|
8
|
+
color: var(--oe-text-1, #f5f5f5);
|
|
9
|
+
font-family: var(--oe-font, inherit);
|
|
10
|
+
font-weight: 700;
|
|
11
|
+
outline: none;
|
|
12
|
+
word-break: break-word;
|
|
13
|
+
white-space: pre-wrap;
|
|
14
|
+
letter-spacing: -0.02em;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.oe-heading--h2 {
|
|
18
|
+
font-size: 1.6em;
|
|
19
|
+
line-height: 1.35;
|
|
20
|
+
margin-top: 0.3em;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.oe-heading--h3 {
|
|
24
|
+
font-size: 1.3em;
|
|
25
|
+
line-height: 1.4;
|
|
26
|
+
margin-top: 0.2em;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
.oe-heading--h4 {
|
|
30
|
+
font-size: 1.1em;
|
|
31
|
+
line-height: 1.5;
|
|
32
|
+
margin-top: 0.1em;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.oe-heading--h5 {
|
|
36
|
+
font-size: 0.95em;
|
|
37
|
+
line-height: 1.5;
|
|
38
|
+
margin-top: 0.1em;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
.oe-heading--h6 {
|
|
42
|
+
font-size: 0.85em;
|
|
43
|
+
line-height: 1.5;
|
|
44
|
+
margin-top: 0.1em;
|
|
45
|
+
letter-spacing: 0.03em;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/* Placeholder */
|
|
49
|
+
.oe-heading:empty::before {
|
|
50
|
+
content: attr(data-placeholder);
|
|
51
|
+
color: var(--oe-text-3, #908c8c);
|
|
52
|
+
pointer-events: none;
|
|
53
|
+
font-weight: 400;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/* Inline formatting inside headings */
|
|
57
|
+
.oe-heading b,
|
|
58
|
+
.oe-heading strong {
|
|
59
|
+
font-weight: 800;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
.oe-heading a {
|
|
63
|
+
color: var(--oe-text-2, #c4c4c4);
|
|
64
|
+
text-decoration: underline;
|
|
65
|
+
text-underline-offset: 3px;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
.oe-heading a:hover {
|
|
69
|
+
color: var(--oe-text-1, #f5f5f5);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
.oe-heading mark {
|
|
73
|
+
padding: 1px 4px;
|
|
74
|
+
background: var(--oe-mark-bg, rgba(245, 166, 35, 0.2));
|
|
75
|
+
border-radius: 3px;
|
|
76
|
+
}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import type {} from './locale/keys.js'
|
|
2
|
+
/**
|
|
3
|
+
* Immutable metadata for the heading levels exposed by the plugin UI.
|
|
4
|
+
* Consumers may reuse it to build controls that stay aligned with Rector's
|
|
5
|
+
* supported H2-H6 range; `key` is the plugin-local localization key.
|
|
6
|
+
* @type {ReadonlyArray<{ level: number, key: string, icon: string }>}
|
|
7
|
+
*/
|
|
8
|
+
export const HEADING_LEVELS: ReadonlyArray<{
|
|
9
|
+
level: number;
|
|
10
|
+
key: string;
|
|
11
|
+
icon: string;
|
|
12
|
+
}>;
|
|
13
|
+
/** Editable H2-H6 heading block with alignment and inline formatting. */
|
|
14
|
+
export class Heading extends BlockPluginAbstract<Record<string, any>> {
|
|
15
|
+
static isTextBlock: boolean;
|
|
16
|
+
static styles: string[];
|
|
17
|
+
constructor(config?: Record<string, any>);
|
|
18
|
+
type: string;
|
|
19
|
+
icon: string;
|
|
20
|
+
inlineTools: boolean;
|
|
21
|
+
mapTextFields: typeof mapTextFields;
|
|
22
|
+
pasteConfig: {
|
|
23
|
+
tags: string[];
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Return the localized toolbox label for this block.
|
|
27
|
+
* @returns {string}
|
|
28
|
+
*/
|
|
29
|
+
get title(): string;
|
|
30
|
+
/**
|
|
31
|
+
* Create the editable DOM owned by this block instance.
|
|
32
|
+
* @param {{ text?: string, level?: number, align?: string }} data
|
|
33
|
+
* @returns {HTMLElement}
|
|
34
|
+
*/
|
|
35
|
+
render(data: {
|
|
36
|
+
text?: string;
|
|
37
|
+
level?: number;
|
|
38
|
+
align?: string;
|
|
39
|
+
}): HTMLElement;
|
|
40
|
+
/**
|
|
41
|
+
* Change heading level in-place (preserves caret position).
|
|
42
|
+
* Returns the new element (replaces old in DOM).
|
|
43
|
+
* @param {HTMLElement} element — current heading element
|
|
44
|
+
* @param {number} newLevel
|
|
45
|
+
* @returns {HTMLElement}
|
|
46
|
+
*/
|
|
47
|
+
changeLevel(element: HTMLElement, newLevel: number): HTMLElement;
|
|
48
|
+
/**
|
|
49
|
+
* Get current level from element.
|
|
50
|
+
* @param {HTMLElement} element
|
|
51
|
+
* @returns {number}
|
|
52
|
+
*/
|
|
53
|
+
getLevel(element: HTMLElement): number;
|
|
54
|
+
/**
|
|
55
|
+
* Serialize the current block DOM into document data.
|
|
56
|
+
* @param {HTMLElement} element
|
|
57
|
+
* @returns {{ text: string, level: number, align?: string }}
|
|
58
|
+
*/
|
|
59
|
+
save(element: HTMLElement): {
|
|
60
|
+
text: string;
|
|
61
|
+
level: number;
|
|
62
|
+
align?: string;
|
|
63
|
+
};
|
|
64
|
+
/**
|
|
65
|
+
* Check whether serialized data satisfies this block's schema.
|
|
66
|
+
* @param {{ text: string, level?: number }} data
|
|
67
|
+
* @returns {boolean}
|
|
68
|
+
*/
|
|
69
|
+
validate(data: {
|
|
70
|
+
text: string;
|
|
71
|
+
level?: number;
|
|
72
|
+
}): boolean;
|
|
73
|
+
/**
|
|
74
|
+
* Merge incoming text into the current block.
|
|
75
|
+
* @param {HTMLElement} element
|
|
76
|
+
* @param {{ text?: string }} data
|
|
77
|
+
* @returns {void}
|
|
78
|
+
*/
|
|
79
|
+
merge(element: HTMLElement, data: {
|
|
80
|
+
text?: string;
|
|
81
|
+
}): void;
|
|
82
|
+
/**
|
|
83
|
+
* Extract neutral rich text and heading metadata for block conversion.
|
|
84
|
+
* @param {HTMLElement} element
|
|
85
|
+
* @returns {{ text: string, level: number, align?: string }}
|
|
86
|
+
*/
|
|
87
|
+
exportData(element: HTMLElement): {
|
|
88
|
+
text: string;
|
|
89
|
+
level: number;
|
|
90
|
+
align?: string;
|
|
91
|
+
};
|
|
92
|
+
/**
|
|
93
|
+
* Check whether the block has no meaningful user content.
|
|
94
|
+
* @param {HTMLElement} element
|
|
95
|
+
* @returns {boolean}
|
|
96
|
+
*/
|
|
97
|
+
isEmpty(element: HTMLElement): boolean;
|
|
98
|
+
/**
|
|
99
|
+
* Render settings items for the block settings menu.
|
|
100
|
+
* Returns H2-H6 buttons shown directly in the main settings view.
|
|
101
|
+
* @param {HTMLElement} element
|
|
102
|
+
* @returns {HTMLElement[]}
|
|
103
|
+
*/
|
|
104
|
+
renderSettings(element: HTMLElement): HTMLElement[];
|
|
105
|
+
/**
|
|
106
|
+
* Render heading level select dropdown for the inline toolbar.
|
|
107
|
+
* @param {HTMLElement} element
|
|
108
|
+
* @param {import('../../types.js').InlineControlContext} ctx
|
|
109
|
+
* @returns {import('../../types.js').InlineControlGroup}
|
|
110
|
+
*/
|
|
111
|
+
renderInlineControls(element: HTMLElement, ctx: import("../../types.js").InlineControlContext): import("../../types.js").InlineControlGroup;
|
|
112
|
+
/**
|
|
113
|
+
* Handle pasted heading elements.
|
|
114
|
+
* @param {import('../../types.js').TagPasteEvent} event
|
|
115
|
+
* @returns {{ text: string, level: number } | null}
|
|
116
|
+
*/
|
|
117
|
+
onPaste(event: import("../../types.js").TagPasteEvent): {
|
|
118
|
+
text: string;
|
|
119
|
+
level: number;
|
|
120
|
+
} | null;
|
|
121
|
+
#private;
|
|
122
|
+
}
|
|
123
|
+
import { BlockPluginAbstract } from '../BlockPluginAbstract.js';
|
|
124
|
+
import { mapTextFields } from './mapTextFields.js';
|
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
import { sanitizeHtml } from '../../core/sanitize.js'
|
|
2
|
+
import { resolvePath } from '../../shared/resolvePath.js'
|
|
3
|
+
import { BlockPluginAbstract } from '../BlockPluginAbstract.js'
|
|
4
|
+
import { createHeadingLevelSelect } from './HeadingLevelSelect.js'
|
|
5
|
+
import { mapTextFields } from './mapTextFields.js'
|
|
6
|
+
import { validateHeadingData } from '../../shared/blockDataValidators.js'
|
|
7
|
+
import { normalizeHeadingLevel, normalizeTextAlign, normalizeTextValue } from '../../shared/textFormat.js'
|
|
8
|
+
|
|
9
|
+
const editorStyles = resolvePath('./heading.css', import.meta.url)
|
|
10
|
+
|
|
11
|
+
// Tabler icon: heading
|
|
12
|
+
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="M7 12h10"/><path d="M7 5v14"/><path d="M17 5v14"/><path d="M15 19h4"/><path d="M15 5h4"/><path d="M5 19h4"/><path d="M5 5h4"/></svg>'
|
|
13
|
+
|
|
14
|
+
const ICON_H2 = '<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="M17 12a2 2 0 1 1 4 0c0 .591-.417 1.318-.816 1.858L17 18h4"/><path d="M4 6v12"/><path d="M12 6v12"/><path d="M11 18h2"/><path d="M3 18h2"/><path d="M4 12h8"/><path d="M3 6h2"/><path d="M11 6h2"/></svg>'
|
|
15
|
+
const ICON_H3 = '<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="M19 14a2 2 0 1 0 -2 -2"/><path d="M17 16a2 2 0 1 0 2 -2"/><path d="M4 6v12"/><path d="M12 6v12"/><path d="M11 18h2"/><path d="M3 18h2"/><path d="M4 12h8"/><path d="M3 6h2"/><path d="M11 6h2"/></svg>'
|
|
16
|
+
const ICON_H4 = '<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="M20 18v-8l-4 6h5"/><path d="M4 6v12"/><path d="M12 6v12"/><path d="M11 18h2"/><path d="M3 18h2"/><path d="M4 12h8"/><path d="M3 6h2"/><path d="M11 6h2"/></svg>'
|
|
17
|
+
// Tabler: h5
|
|
18
|
+
const ICON_H5 = '<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="M17 18h2a2 2 0 1 0 0 -4h-2v-4h4"/><path d="M4 6v12"/><path d="M12 6v12"/><path d="M11 18h2"/><path d="M3 18h2"/><path d="M4 12h8"/><path d="M3 6h2"/><path d="M11 6h2"/></svg>'
|
|
19
|
+
// Tabler: h6
|
|
20
|
+
const ICON_H6 = '<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="M19 14a2 2 0 1 0 0 4a2 2 0 0 0 0 -4z"/><path d="M21 12a2 2 0 1 0 -4 0v4"/><path d="M4 6v12"/><path d="M12 6v12"/><path d="M11 18h2"/><path d="M3 18h2"/><path d="M4 12h8"/><path d="M3 6h2"/><path d="M11 6h2"/></svg>'
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Immutable metadata for the heading levels exposed by the plugin UI.
|
|
24
|
+
* Consumers may reuse it to build controls that stay aligned with Rector's
|
|
25
|
+
* supported H2-H6 range; `key` is the plugin-local localization key.
|
|
26
|
+
* @type {ReadonlyArray<{ level: number, key: string, icon: string }>}
|
|
27
|
+
*/
|
|
28
|
+
export const HEADING_LEVELS = Object.freeze([
|
|
29
|
+
Object.freeze({ level: 2, key: 'h2', icon: ICON_H2 }),
|
|
30
|
+
Object.freeze({ level: 3, key: 'h3', icon: ICON_H3 }),
|
|
31
|
+
Object.freeze({ level: 4, key: 'h4', icon: ICON_H4 }),
|
|
32
|
+
Object.freeze({ level: 5, key: 'h5', icon: ICON_H5 }),
|
|
33
|
+
Object.freeze({ level: 6, key: 'h6', icon: ICON_H6 }),
|
|
34
|
+
])
|
|
35
|
+
|
|
36
|
+
/** Editable H2-H6 heading block with alignment and inline formatting. */
|
|
37
|
+
export class Heading extends BlockPluginAbstract {
|
|
38
|
+
static isTextBlock = true
|
|
39
|
+
static styles = [editorStyles]
|
|
40
|
+
type = 'heading'
|
|
41
|
+
icon = ICON
|
|
42
|
+
inlineTools = true
|
|
43
|
+
mapTextFields = mapTextFields
|
|
44
|
+
pasteConfig = {
|
|
45
|
+
tags: ['h2', 'h3', 'h4', 'h5', 'h6'],
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Return the localized toolbox label for this block.
|
|
50
|
+
* @returns {string}
|
|
51
|
+
*/
|
|
52
|
+
get title() {
|
|
53
|
+
return this._t('title', 'Heading')
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Get localized placeholder for heading.
|
|
58
|
+
* @param {number} level
|
|
59
|
+
* @returns {string}
|
|
60
|
+
*/
|
|
61
|
+
#placeholder(level) {
|
|
62
|
+
return this._t('placeholder', `Heading ${level}`, { level })
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Create the editable DOM owned by this block instance.
|
|
67
|
+
* @param {{ text?: string, level?: number, align?: string }} data
|
|
68
|
+
* @returns {HTMLElement}
|
|
69
|
+
*/
|
|
70
|
+
render(data) {
|
|
71
|
+
const level = normalizeHeadingLevel(data?.level)
|
|
72
|
+
const tag = `h${level}`
|
|
73
|
+
const heading = document.createElement(tag)
|
|
74
|
+
heading.classList.add('oe-heading', `oe-heading--${tag}`)
|
|
75
|
+
heading.contentEditable = 'true'
|
|
76
|
+
|
|
77
|
+
const text = normalizeTextValue(data?.text)
|
|
78
|
+
if (text) {
|
|
79
|
+
heading.innerHTML = sanitizeHtml(text)
|
|
80
|
+
}
|
|
81
|
+
const align = normalizeTextAlign(data?.align)
|
|
82
|
+
if (align) {
|
|
83
|
+
heading.style.textAlign = align
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
heading.dataset.placeholder = this.#placeholder(level)
|
|
87
|
+
|
|
88
|
+
return heading
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Change heading level in-place (preserves caret position).
|
|
93
|
+
* Returns the new element (replaces old in DOM).
|
|
94
|
+
* @param {HTMLElement} element — current heading element
|
|
95
|
+
* @param {number} newLevel
|
|
96
|
+
* @returns {HTMLElement}
|
|
97
|
+
*/
|
|
98
|
+
changeLevel(element, newLevel) {
|
|
99
|
+
const level = normalizeHeadingLevel(newLevel)
|
|
100
|
+
const tag = `h${level}`
|
|
101
|
+
|
|
102
|
+
// If already at this level, do nothing
|
|
103
|
+
if (element.tagName.toLowerCase() === tag) return element
|
|
104
|
+
|
|
105
|
+
// Save full selection range (not just caret) so inline tools keep working
|
|
106
|
+
const sel = window.getSelection()
|
|
107
|
+
let startNode = null, startOffset = 0
|
|
108
|
+
let endNode = null, endOffset = 0
|
|
109
|
+
let wasCollapsed = true
|
|
110
|
+
if (sel && sel.rangeCount > 0) {
|
|
111
|
+
const range = sel.getRangeAt(0)
|
|
112
|
+
startNode = range.startContainer
|
|
113
|
+
startOffset = range.startOffset
|
|
114
|
+
endNode = range.endContainer
|
|
115
|
+
endOffset = range.endOffset
|
|
116
|
+
wasCollapsed = range.collapsed
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
// Create new element with same content
|
|
120
|
+
const newEl = document.createElement(tag)
|
|
121
|
+
newEl.className = `oe-heading oe-heading--${tag}`
|
|
122
|
+
newEl.contentEditable = 'true'
|
|
123
|
+
newEl.dataset.placeholder = this.#placeholder(level)
|
|
124
|
+
newEl.style.textAlign = normalizeTextAlign(element.style.textAlign)
|
|
125
|
+
|
|
126
|
+
// Move all children (nodes are moved, not cloned — refs stay valid)
|
|
127
|
+
while (element.firstChild) {
|
|
128
|
+
newEl.appendChild(element.firstChild)
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
// Replace in DOM
|
|
132
|
+
element.replaceWith(newEl)
|
|
133
|
+
|
|
134
|
+
// Restore full selection range
|
|
135
|
+
if (sel && startNode) {
|
|
136
|
+
try {
|
|
137
|
+
const range = document.createRange()
|
|
138
|
+
range.setStart(startNode, startOffset)
|
|
139
|
+
if (!wasCollapsed && endNode) {
|
|
140
|
+
range.setEnd(endNode, endOffset)
|
|
141
|
+
} else {
|
|
142
|
+
range.collapse(true)
|
|
143
|
+
}
|
|
144
|
+
sel.removeAllRanges()
|
|
145
|
+
sel.addRange(range)
|
|
146
|
+
} catch {
|
|
147
|
+
// Node may be detached in edge cases — fall back to focusing element
|
|
148
|
+
newEl.focus()
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
return newEl
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* Get current level from element.
|
|
157
|
+
* @param {HTMLElement} element
|
|
158
|
+
* @returns {number}
|
|
159
|
+
*/
|
|
160
|
+
getLevel(element) {
|
|
161
|
+
const tag = element.tagName.toLowerCase()
|
|
162
|
+
return parseInt(tag.charAt(1), 10) || 2
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
/**
|
|
166
|
+
* Serialize the current block DOM into document data.
|
|
167
|
+
* @param {HTMLElement} element
|
|
168
|
+
* @returns {{ text: string, level: number, align?: string }}
|
|
169
|
+
*/
|
|
170
|
+
save(element) {
|
|
171
|
+
const data = { text: element.innerHTML.trim(), level: this.getLevel(element) }
|
|
172
|
+
if (element.style.textAlign) data.align = element.style.textAlign
|
|
173
|
+
return data
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
/**
|
|
177
|
+
* Check whether serialized data satisfies this block's schema.
|
|
178
|
+
* @param {{ text: string, level?: number }} data
|
|
179
|
+
* @returns {boolean}
|
|
180
|
+
*/
|
|
181
|
+
validate(data) {
|
|
182
|
+
return validateHeadingData(data)
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
/**
|
|
186
|
+
* Merge incoming text into the current block.
|
|
187
|
+
* @param {HTMLElement} element
|
|
188
|
+
* @param {{ text?: string }} data
|
|
189
|
+
* @returns {void}
|
|
190
|
+
*/
|
|
191
|
+
merge(element, data) {
|
|
192
|
+
const text = normalizeTextValue(data.text)
|
|
193
|
+
if (text) {
|
|
194
|
+
element.innerHTML += sanitizeHtml(text)
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
/**
|
|
199
|
+
* Extract neutral rich text and heading metadata for block conversion.
|
|
200
|
+
* @param {HTMLElement} element
|
|
201
|
+
* @returns {{ text: string, level: number, align?: string }}
|
|
202
|
+
*/
|
|
203
|
+
exportData(element) {
|
|
204
|
+
const data = { text: element.innerHTML.trim(), level: this.getLevel(element) }
|
|
205
|
+
if (element.style.textAlign) data.align = element.style.textAlign
|
|
206
|
+
return data
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
/**
|
|
210
|
+
* Check whether the block has no meaningful user content.
|
|
211
|
+
* @param {HTMLElement} element
|
|
212
|
+
* @returns {boolean}
|
|
213
|
+
*/
|
|
214
|
+
isEmpty(element) {
|
|
215
|
+
return (element.textContent?.trim().length ?? 0) === 0
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
/**
|
|
219
|
+
* Render settings items for the block settings menu.
|
|
220
|
+
* Returns H2-H6 buttons shown directly in the main settings view.
|
|
221
|
+
* @param {HTMLElement} element
|
|
222
|
+
* @returns {HTMLElement[]}
|
|
223
|
+
*/
|
|
224
|
+
renderSettings(element) {
|
|
225
|
+
const currentLevel = this.getLevel(element)
|
|
226
|
+
return HEADING_LEVELS.map(({ level, key, icon }) => {
|
|
227
|
+
const btn = document.createElement('li')
|
|
228
|
+
btn.setAttribute('role', 'menuitem')
|
|
229
|
+
btn.setAttribute('tabindex', '-1')
|
|
230
|
+
btn.className = 'oe-settings-menu__item'
|
|
231
|
+
if (level === currentLevel) {
|
|
232
|
+
btn.classList.add('oe-settings-menu__item--active')
|
|
233
|
+
}
|
|
234
|
+
btn.dataset.level = String(level)
|
|
235
|
+
|
|
236
|
+
const iconSpan = document.createElement('span')
|
|
237
|
+
iconSpan.className = 'oe-settings-menu__icon'
|
|
238
|
+
iconSpan.innerHTML = icon
|
|
239
|
+
btn.appendChild(iconSpan)
|
|
240
|
+
|
|
241
|
+
const labelSpan = document.createElement('span')
|
|
242
|
+
labelSpan.className = 'oe-settings-menu__label'
|
|
243
|
+
labelSpan.textContent = this._t(key, `Heading ${level}`)
|
|
244
|
+
btn.appendChild(labelSpan)
|
|
245
|
+
|
|
246
|
+
return btn
|
|
247
|
+
})
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
/**
|
|
251
|
+
* Render heading level select dropdown for the inline toolbar.
|
|
252
|
+
* @param {HTMLElement} element
|
|
253
|
+
* @param {import('../../types').InlineControlContext} ctx
|
|
254
|
+
* @returns {import('../../types').InlineControlGroup}
|
|
255
|
+
*/
|
|
256
|
+
renderInlineControls(element, ctx) {
|
|
257
|
+
return createHeadingLevelSelect(this, element, ctx, (key, fallback) => this._t(key, fallback), HEADING_LEVELS)
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
/**
|
|
261
|
+
* Handle pasted heading elements.
|
|
262
|
+
* @param {import('../../types').TagPasteEvent} event
|
|
263
|
+
* @returns {{ text: string, level: number } | null}
|
|
264
|
+
*/
|
|
265
|
+
onPaste(event) {
|
|
266
|
+
if (event.type !== 'tag') return null
|
|
267
|
+
const tag = event.tag.toLowerCase()
|
|
268
|
+
const level = parseInt(tag.charAt(1), 10)
|
|
269
|
+
if (level < 2 || level > 6) return null
|
|
270
|
+
return { text: event.element.innerHTML, level }
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
declare const _default: {
|
|
2
|
+
'plugin.heading.title': string;
|
|
3
|
+
'plugin.heading.h2': string;
|
|
4
|
+
'plugin.heading.h3': string;
|
|
5
|
+
'plugin.heading.h4': string;
|
|
6
|
+
'plugin.heading.h5': string;
|
|
7
|
+
'plugin.heading.h6': string;
|
|
8
|
+
'plugin.heading.placeholder': string;
|
|
9
|
+
'plugin.heading.level': string;
|
|
10
|
+
};
|
|
11
|
+
export default _default;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export default {
|
|
2
|
+
'plugin.heading.title': 'Heading',
|
|
3
|
+
'plugin.heading.h2': 'Heading 2',
|
|
4
|
+
'plugin.heading.h3': 'Heading 3',
|
|
5
|
+
'plugin.heading.h4': 'Heading 4',
|
|
6
|
+
'plugin.heading.h5': 'Heading 5',
|
|
7
|
+
'plugin.heading.h6': 'Heading 6',
|
|
8
|
+
'plugin.heading.placeholder': 'Heading {level}',
|
|
9
|
+
'plugin.heading.level': 'Heading level',
|
|
10
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
declare const _default: {
|
|
2
|
+
'plugin.heading.title': string;
|
|
3
|
+
'plugin.heading.h2': string;
|
|
4
|
+
'plugin.heading.h3': string;
|
|
5
|
+
'plugin.heading.h4': string;
|
|
6
|
+
'plugin.heading.h5': string;
|
|
7
|
+
'plugin.heading.h6': string;
|
|
8
|
+
'plugin.heading.placeholder': string;
|
|
9
|
+
'plugin.heading.level': string;
|
|
10
|
+
};
|
|
11
|
+
export default _default;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export default {
|
|
2
|
+
'plugin.heading.title': 'Заголовок',
|
|
3
|
+
'plugin.heading.h2': 'Заголовок 2',
|
|
4
|
+
'plugin.heading.h3': 'Заголовок 3',
|
|
5
|
+
'plugin.heading.h4': 'Заголовок 4',
|
|
6
|
+
'plugin.heading.h5': 'Заголовок 5',
|
|
7
|
+
'plugin.heading.h6': 'Заголовок 6',
|
|
8
|
+
'plugin.heading.placeholder': 'Заголовок {level}',
|
|
9
|
+
'plugin.heading.level': 'Уровень заголовка',
|
|
10
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { mapHeadingTextFields as mapTextFields } from "../../shared/mapTextFields.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { mapHeadingTextFields as mapTextFields } from '../../shared/mapTextFields.js'
|