@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,11 @@
|
|
|
1
|
+
declare const _default: {
|
|
2
|
+
'plugin.code.title': string;
|
|
3
|
+
'plugin.code.placeholder': string;
|
|
4
|
+
'plugin.code.copy': string;
|
|
5
|
+
'plugin.code.edit': string;
|
|
6
|
+
'plugin.code.done': string;
|
|
7
|
+
'plugin.code.search': string;
|
|
8
|
+
'plugin.code.languageAuto': string;
|
|
9
|
+
'plugin.code.languagePlainText': string;
|
|
10
|
+
};
|
|
11
|
+
export default _default;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export default {
|
|
2
|
+
'plugin.code.title': 'Code',
|
|
3
|
+
'plugin.code.placeholder': '// Write code...',
|
|
4
|
+
'plugin.code.copy': 'Copy',
|
|
5
|
+
'plugin.code.edit': 'Edit',
|
|
6
|
+
'plugin.code.done': 'Done',
|
|
7
|
+
'plugin.code.search': 'Search...',
|
|
8
|
+
'plugin.code.languageAuto': 'Auto',
|
|
9
|
+
'plugin.code.languagePlainText': 'Plain text',
|
|
10
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
declare const _default: {
|
|
2
|
+
'plugin.code.title': string;
|
|
3
|
+
'plugin.code.placeholder': string;
|
|
4
|
+
'plugin.code.copy': string;
|
|
5
|
+
'plugin.code.edit': string;
|
|
6
|
+
'plugin.code.done': string;
|
|
7
|
+
'plugin.code.search': string;
|
|
8
|
+
'plugin.code.languageAuto': string;
|
|
9
|
+
'plugin.code.languagePlainText': string;
|
|
10
|
+
};
|
|
11
|
+
export default _default;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export default {
|
|
2
|
+
'plugin.code.title': 'Код',
|
|
3
|
+
'plugin.code.placeholder': '// Введите код...',
|
|
4
|
+
'plugin.code.copy': 'Копировать',
|
|
5
|
+
'plugin.code.edit': 'Редактировать',
|
|
6
|
+
'plugin.code.done': 'Готово',
|
|
7
|
+
'plugin.code.search': 'Поиск...',
|
|
8
|
+
'plugin.code.languageAuto': 'Авто',
|
|
9
|
+
'plugin.code.languagePlainText': 'Обычный текст',
|
|
10
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# Columns block plugin
|
|
2
|
+
|
|
3
|
+
Two- or three-column rich-content layouts.
|
|
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 { Columns } from '@shelamkoff/rector/plugins/columns'
|
|
14
|
+
import '@shelamkoff/rector/styles/editor.css'
|
|
15
|
+
|
|
16
|
+
const editor = createEditor({
|
|
17
|
+
holder: document.querySelector('#editor'),
|
|
18
|
+
plugins: [new Columns()],
|
|
19
|
+
})
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
The registered block type is `columns`. 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
|
+
{ "columns": [{ "content": "Left" }, { "content": "Right" }], "layout": "1-1" }
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
### Field reference
|
|
31
|
+
|
|
32
|
+
| Field | Required | Meaning and constraints |
|
|
33
|
+
| --- | --- | --- |
|
|
34
|
+
| `layout` | yes | `1-1`, `1-2`, `2-1`, or `1-1-1`. A new block defaults to `1-1`. |
|
|
35
|
+
| `columns` | yes | Array of `{ content: string }` objects. Two-column layouts require exactly two entries; `1-1-1` requires exactly three. Content stores sanitized inline HTML. |
|
|
36
|
+
|
|
37
|
+
Empty column strings are valid. Changing the layout preserves columns in order. Expanding from two to three columns adds an empty final column. Reducing from three to two columns appends the removed column's non-blank rich text to the second column, separated by `<br>`, so changing the layout does not discard content. Every column supports the editor's enabled inline tools and persistent inline widgets.
|
|
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
|
+
## Capabilities
|
|
44
|
+
|
|
45
|
+
Layout controls; editable column content; validation and document rendering.
|
|
46
|
+
|
|
47
|
+
## Undo, lifecycle, and styles
|
|
48
|
+
|
|
49
|
+
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.
|
|
50
|
+
|
|
51
|
+
Do not remove the editor holder without first calling `editor.destroy()`.
|
|
52
|
+
|
|
53
|
+
## Document output
|
|
54
|
+
|
|
55
|
+
Use the matching renderer from `@shelamkoff/rector/renderer/renderers/columns`. The VitePress guide documents configuration, commands and history, extension contracts, document migrations, styling, security, and lifecycle in a sequential form.
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# Блочный плагин Columns
|
|
2
|
+
|
|
3
|
+
Двух- и трёхколоночные макеты для форматируемого содержимого.
|
|
4
|
+
|
|
5
|
+
## Установка и регистрация
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install @shelamkoff/rector
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
```js
|
|
12
|
+
import { createEditor } from '@shelamkoff/rector'
|
|
13
|
+
import { Columns } from '@shelamkoff/rector/plugins/columns'
|
|
14
|
+
import '@shelamkoff/rector/styles/editor.css'
|
|
15
|
+
|
|
16
|
+
const editor = createEditor({
|
|
17
|
+
holder: document.querySelector('#editor'),
|
|
18
|
+
plugins: [new Columns()],
|
|
19
|
+
})
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
Тип блока — `columns`. Класс также экспортируется общей точкой входа `@shelamkoff/rector/plugins` и может загружаться по типу документа через `@shelamkoff/rector/plugins/async`.
|
|
23
|
+
|
|
24
|
+
## Данные
|
|
25
|
+
|
|
26
|
+
```json
|
|
27
|
+
{ "columns": [{ "content": "Слева" }, { "content": "Справа" }], "layout": "1-1" }
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
### Поля данных
|
|
31
|
+
|
|
32
|
+
| Поле | Обязательно | Назначение и ограничения |
|
|
33
|
+
| --- | --- | --- |
|
|
34
|
+
| `layout` | да | `1-1`, `1-2`, `2-1` или `1-1-1`. Новый блок по умолчанию использует `1-1`. |
|
|
35
|
+
| `columns` | да | Массив объектов `{ content: string }`. Двухколоночным макетам нужны ровно два элемента, а `1-1-1` — ровно три. `content` содержит очищенный внутристрочный HTML. |
|
|
36
|
+
|
|
37
|
+
Пустые строки в колонках допустимы. При смене макета колонки сохраняются по порядку. Переход от двух колонок к трём добавляет пустую последнюю колонку. При переходе от трёх колонок к двум непустое содержимое удаляемой колонки добавляется во вторую через `<br>`, поэтому смена макета не теряет данные. В каждой колонке работают включённые внутристрочные инструменты и постоянные внутристрочные виджеты.
|
|
38
|
+
|
|
39
|
+
## Конфигурация
|
|
40
|
+
|
|
41
|
+
Каждый встроенный блочный плагин принимает два параметра владения стилями: `injectStyles?: boolean` по умолчанию равен `true`; укажите `false`, если приложение само включает CSS этого плагина. `css?: string` добавляет URL таблицы стилей приложения после стандартной, а при отключённой стандартной инъекции служит URL замены.
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
## Возможности
|
|
45
|
+
|
|
46
|
+
Выбор макета; редактирование колонок; проверка данных; отображение документа.
|
|
47
|
+
|
|
48
|
+
## История, жизненный цикл и стили
|
|
49
|
+
|
|
50
|
+
Действия плагина входят в конвейер команд через предоставленный контекст `mutate()`, поэтому одно завершённое действие создаёт один шаг отмены и повтора. Редактор подсчитывает владельцев объявленных URL стилей. Удаление блока вызывает его метод освобождения ресурсов; `editor.destroy()` освобождает оставшиеся блоки и общие ресурсы.
|
|
51
|
+
|
|
52
|
+
Не удаляйте контейнер редактора до вызова `editor.destroy()`.
|
|
53
|
+
|
|
54
|
+
## Вывод документа
|
|
55
|
+
|
|
56
|
+
Используйте фабричную функцию из `@shelamkoff/rector/renderer/renderers/columns`. Последовательное руководство VitePress описывает проверку данных, миграции, разработку расширений, диагностику, безопасность и стили.
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/* =============================================================================
|
|
2
|
+
Columns plugin — multi-column layout
|
|
3
|
+
============================================================================= */
|
|
4
|
+
|
|
5
|
+
.oe-columns {
|
|
6
|
+
outline: none;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
/* ── Grid ─────────────────────────────────────────────────────────────────── */
|
|
10
|
+
|
|
11
|
+
.oe-columns__grid {
|
|
12
|
+
display: grid;
|
|
13
|
+
gap: 0.75rem;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/* ── Column ───────────────────────────────────────────────────────────────── */
|
|
17
|
+
|
|
18
|
+
.oe-columns__col {
|
|
19
|
+
min-height: 3rem;
|
|
20
|
+
padding: 0.75rem;
|
|
21
|
+
border: 1px dashed var(--oe-border, #2e2e35);
|
|
22
|
+
border-radius: 0.375rem;
|
|
23
|
+
outline: none;
|
|
24
|
+
font-size: 0.875rem;
|
|
25
|
+
line-height: 1.6;
|
|
26
|
+
transition: border-color 0.15s;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
.oe-columns__col:focus {
|
|
30
|
+
border-color: var(--oe-accent, #4357b4);
|
|
31
|
+
border-style: solid;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.oe-columns__col:empty::before {
|
|
35
|
+
content: attr(data-placeholder);
|
|
36
|
+
color: var(--oe-text-3, #6e6e78);
|
|
37
|
+
opacity: 0.35;
|
|
38
|
+
pointer-events: none;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/* ── Layout selector ──────────────────────────────────────────────────────── */
|
|
42
|
+
|
|
43
|
+
.oe-columns__actions {
|
|
44
|
+
display: inline-flex;
|
|
45
|
+
gap: 0.25rem;
|
|
46
|
+
margin-top: 0.5rem;
|
|
47
|
+
background: var(--oe-surface, #0e0e10);
|
|
48
|
+
border: 1px solid var(--oe-border, #1a1a1f);
|
|
49
|
+
border-radius: 0.375rem;
|
|
50
|
+
padding: 0.1875rem;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
.oe-columns__layout-btn {
|
|
54
|
+
display: flex;
|
|
55
|
+
align-items: center;
|
|
56
|
+
justify-content: center;
|
|
57
|
+
padding: 0.3125rem 0.5rem;
|
|
58
|
+
border: none;
|
|
59
|
+
border-radius: 0.25rem;
|
|
60
|
+
background: transparent;
|
|
61
|
+
color: var(--oe-text-3, #6e6e78);
|
|
62
|
+
cursor: pointer;
|
|
63
|
+
transition: background 0.12s, color 0.12s;
|
|
64
|
+
outline: none;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
.oe-columns__layout-btn:hover {
|
|
68
|
+
background: var(--oe-surface-hover, #1e1e24);
|
|
69
|
+
color: var(--oe-text-1, #e8e8ec);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
.oe-columns__layout-btn--active {
|
|
73
|
+
background: var(--oe-accent, #4357b4);
|
|
74
|
+
color: var(--oe-text-on-accent, #fff);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.oe-columns__layout-btn--active:hover {
|
|
78
|
+
opacity: 0.9;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/* ── Light theme ──────────────────────────────────────────────────────────── */
|
|
82
|
+
|
|
83
|
+
.oe-theme-light .oe-columns__col {
|
|
84
|
+
border-color: var(--oe-border, #e0e0e0);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
.oe-theme-light .oe-columns__col:focus {
|
|
88
|
+
border-color: var(--oe-accent, #4357b4);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
.oe-theme-light .oe-columns__actions {
|
|
92
|
+
background: var(--oe-surface, #fafafa);
|
|
93
|
+
border-color: var(--oe-border, #e0e0e0);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
.oe-theme-light .oe-columns__layout-btn {
|
|
97
|
+
color: var(--oe-text-3, #6e6e78);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
.oe-theme-light .oe-columns__layout-btn:hover {
|
|
101
|
+
background: var(--oe-surface-hover, #f0f0f0);
|
|
102
|
+
color: var(--oe-text-1, #1a1a1a);
|
|
103
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import type {} from './locale/keys.js'
|
|
2
|
+
/** Editable two- or three-column rich-text layout block. */
|
|
3
|
+
export class Columns extends BlockPluginAbstract<Record<string, any>> {
|
|
4
|
+
static isTextBlock: boolean;
|
|
5
|
+
static styles: string[];
|
|
6
|
+
constructor(config?: Record<string, any>);
|
|
7
|
+
type: string;
|
|
8
|
+
icon: string;
|
|
9
|
+
inlineTools: boolean;
|
|
10
|
+
mapTextFields: typeof mapColumnsTextFields;
|
|
11
|
+
/**
|
|
12
|
+
* Return the localized toolbox label for this block.
|
|
13
|
+
* @returns {string}
|
|
14
|
+
*/
|
|
15
|
+
get title(): string;
|
|
16
|
+
/**
|
|
17
|
+
* Create the editable DOM owned by this block instance.
|
|
18
|
+
* @param {Record<string, unknown>} data
|
|
19
|
+
* @param {import('../../core/types.js').BlockMutationContext} context
|
|
20
|
+
* @returns {HTMLElement}
|
|
21
|
+
*/
|
|
22
|
+
render(data: Record<string, unknown>, context: import("../../core/types.js").BlockMutationContext): HTMLElement;
|
|
23
|
+
/**
|
|
24
|
+
* Serialize the current block DOM into document data.
|
|
25
|
+
* @param {HTMLElement} element @returns {{ columns: Array<{ content: string }>, layout: string }}
|
|
26
|
+
*/
|
|
27
|
+
save(element: HTMLElement): {
|
|
28
|
+
columns: Array<{
|
|
29
|
+
content: string;
|
|
30
|
+
}>;
|
|
31
|
+
layout: string;
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* Check whether serialized data satisfies this block's schema.
|
|
35
|
+
* @param {Record<string, unknown>} data @returns {boolean}
|
|
36
|
+
*/
|
|
37
|
+
validate(data: Record<string, unknown>): boolean;
|
|
38
|
+
/**
|
|
39
|
+
* Check whether the block has no meaningful user content.
|
|
40
|
+
* @param {HTMLElement} element @returns {boolean}
|
|
41
|
+
*/
|
|
42
|
+
isEmpty(element: HTMLElement): boolean;
|
|
43
|
+
/**
|
|
44
|
+
* Extract neutral rich text that can initialize another block type.
|
|
45
|
+
* @param {HTMLElement} element @returns {{ text: string }}
|
|
46
|
+
*/
|
|
47
|
+
exportData(element: HTMLElement): {
|
|
48
|
+
text: string;
|
|
49
|
+
};
|
|
50
|
+
/**
|
|
51
|
+
* Release listeners and resources owned by this block element.
|
|
52
|
+
* @param {HTMLElement} element @returns {void}
|
|
53
|
+
*/
|
|
54
|
+
destroy(element: HTMLElement): void;
|
|
55
|
+
#private;
|
|
56
|
+
}
|
|
57
|
+
import { BlockPluginAbstract } from '../BlockPluginAbstract.js';
|
|
58
|
+
import { mapColumnsTextFields } from '../../shared/mapTextFields.js';
|
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
import { sanitizeHtml } from '../../core/sanitize.js'
|
|
2
|
+
import { resolvePath } from '../../shared/resolvePath.js'
|
|
3
|
+
import { BlockPluginAbstract } from '../BlockPluginAbstract.js'
|
|
4
|
+
import { validateColumnsData } from '../../shared/blockDataValidators.js'
|
|
5
|
+
import { normalizeTextValue } from '../../shared/textFormat.js'
|
|
6
|
+
import { mapColumnsTextFields } from '../../shared/mapTextFields.js'
|
|
7
|
+
|
|
8
|
+
const editorStyles = resolvePath('./columns.css', import.meta.url)
|
|
9
|
+
|
|
10
|
+
// Tabler icon: columns-2
|
|
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 3m0 1a1 1 0 0 1 1-1h16a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1z"/><path d="M12 3v18"/></svg>'
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
const LAYOUTS = {
|
|
15
|
+
'1-1': { cols: 2, grid: '1fr 1fr', label: '50 / 50' },
|
|
16
|
+
'1-2': { cols: 2, grid: '1fr 2fr', label: '33 / 67' },
|
|
17
|
+
'2-1': { cols: 2, grid: '2fr 1fr', label: '67 / 33' },
|
|
18
|
+
'1-1-1': { cols: 3, grid: '1fr 1fr 1fr', label: '33 / 33 / 33' },
|
|
19
|
+
}
|
|
20
|
+
/** @type {(keyof typeof LAYOUTS)[]} */
|
|
21
|
+
const LAYOUT_KEYS = ['1-1', '1-2', '2-1', '1-1-1']
|
|
22
|
+
// Layout preview icons (small SVGs for selector)
|
|
23
|
+
/** @type {Record<string, string>} */
|
|
24
|
+
const LAYOUT_ICONS = {
|
|
25
|
+
'1-1': '<svg width="20" height="14" viewBox="0 0 20 14"><rect x="0.5" y="0.5" width="9" height="13" rx="1" fill="none" stroke="currentColor" stroke-width="1"/><rect x="10.5" y="0.5" width="9" height="13" rx="1" fill="none" stroke="currentColor" stroke-width="1"/></svg>',
|
|
26
|
+
'1-2': '<svg width="20" height="14" viewBox="0 0 20 14"><rect x="0.5" y="0.5" width="6" height="13" rx="1" fill="none" stroke="currentColor" stroke-width="1"/><rect x="7.5" y="0.5" width="12" height="13" rx="1" fill="none" stroke="currentColor" stroke-width="1"/></svg>',
|
|
27
|
+
'2-1': '<svg width="20" height="14" viewBox="0 0 20 14"><rect x="0.5" y="0.5" width="12" height="13" rx="1" fill="none" stroke="currentColor" stroke-width="1"/><rect x="13.5" y="0.5" width="6" height="13" rx="1" fill="none" stroke="currentColor" stroke-width="1"/></svg>',
|
|
28
|
+
'1-1-1': '<svg width="20" height="14" viewBox="0 0 20 14"><rect x="0.5" y="0.5" width="5.67" height="13" rx="1" fill="none" stroke="currentColor" stroke-width="1"/><rect x="7.17" y="0.5" width="5.67" height="13" rx="1" fill="none" stroke="currentColor" stroke-width="1"/><rect x="13.83" y="0.5" width="5.67" height="13" rx="1" fill="none" stroke="currentColor" stroke-width="1"/></svg>',
|
|
29
|
+
}
|
|
30
|
+
/** @type {WeakMap<HTMLElement, { data: { columns: Array<{content: string}>, layout: string } }>} */
|
|
31
|
+
const stateMap = new WeakMap()
|
|
32
|
+
/** Editable two- or three-column rich-text layout block. */
|
|
33
|
+
export class Columns extends BlockPluginAbstract {
|
|
34
|
+
static isTextBlock = false
|
|
35
|
+
static styles = [editorStyles]
|
|
36
|
+
type = 'columns'
|
|
37
|
+
icon = ICON
|
|
38
|
+
inlineTools = true
|
|
39
|
+
mapTextFields = mapColumnsTextFields
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Return the localized toolbox label for this block.
|
|
43
|
+
* @returns {string}
|
|
44
|
+
*/
|
|
45
|
+
get title() {
|
|
46
|
+
return this._t('title', 'Columns')
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Create the editable DOM owned by this block instance.
|
|
51
|
+
* @param {Record<string, unknown>} data
|
|
52
|
+
* @param {import('../../core/types').BlockMutationContext} context
|
|
53
|
+
* @returns {HTMLElement}
|
|
54
|
+
*/
|
|
55
|
+
render(data, context) {
|
|
56
|
+
const layout = LAYOUT_KEYS.includes(/** @type {any} */ (data?.layout)) ? String(data.layout) : '1-1'
|
|
57
|
+
const layoutDef = /** @type {{ cols: number, grid: string, label: string }} */ (LAYOUTS[layout])
|
|
58
|
+
const columns = Array.isArray(data?.columns)
|
|
59
|
+
? data.columns.map((c) => ({ content: normalizeTextValue(c?.content) }))
|
|
60
|
+
: []
|
|
61
|
+
|
|
62
|
+
// Ensure correct number of columns for layout
|
|
63
|
+
while (columns.length < layoutDef.cols) columns.push({ content: '' })
|
|
64
|
+
if (columns.length > layoutDef.cols) columns.length = layoutDef.cols
|
|
65
|
+
|
|
66
|
+
const wrapper = document.createElement('div')
|
|
67
|
+
wrapper.classList.add('oe-columns')
|
|
68
|
+
wrapper.contentEditable = 'false'
|
|
69
|
+
wrapper.tabIndex = -1
|
|
70
|
+
|
|
71
|
+
stateMap.set(wrapper, { data: { columns, layout } })
|
|
72
|
+
|
|
73
|
+
this.#build(wrapper, context)
|
|
74
|
+
return wrapper
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Serialize the current block DOM into document data.
|
|
79
|
+
* @param {HTMLElement} element @returns {{ columns: Array<{ content: string }>, layout: string }}
|
|
80
|
+
*/
|
|
81
|
+
save(element) {
|
|
82
|
+
this.#syncFromDom(element)
|
|
83
|
+
const s = stateMap.get(element)
|
|
84
|
+
if (!s) return { columns: [], layout: '1-1' }
|
|
85
|
+
return {
|
|
86
|
+
columns: s.data.columns.map((c) => ({ ...c })),
|
|
87
|
+
layout: s.data.layout,
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Check whether serialized data satisfies this block's schema.
|
|
93
|
+
* @param {Record<string, unknown>} data @returns {boolean}
|
|
94
|
+
*/
|
|
95
|
+
validate(data) {
|
|
96
|
+
return validateColumnsData(data)
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Check whether the block has no meaningful user content.
|
|
101
|
+
* @param {HTMLElement} element @returns {boolean}
|
|
102
|
+
*/
|
|
103
|
+
isEmpty(element) {
|
|
104
|
+
this.#syncFromDom(element)
|
|
105
|
+
const s = stateMap.get(element)
|
|
106
|
+
if (!s) return true
|
|
107
|
+
return s.data.columns.every((c) => !c.content.trim())
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* Extract neutral rich text that can initialize another block type.
|
|
112
|
+
* @param {HTMLElement} element @returns {{ text: string }}
|
|
113
|
+
*/
|
|
114
|
+
exportData(element) {
|
|
115
|
+
this.#syncFromDom(element)
|
|
116
|
+
const s = stateMap.get(element)
|
|
117
|
+
if (!s) return { text: '' }
|
|
118
|
+
return { text: s.data.columns.map((c) => c.content).filter(Boolean).join('<br>') }
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* Release listeners and resources owned by this block element.
|
|
123
|
+
* @param {HTMLElement} element @returns {void}
|
|
124
|
+
*/
|
|
125
|
+
destroy(element) {
|
|
126
|
+
stateMap.delete(element)
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
// ── Private ─────────────────────────────────────────────────────────────────
|
|
130
|
+
|
|
131
|
+
/** @param {HTMLElement} wrapper @returns {void} */
|
|
132
|
+
#syncFromDom(wrapper) {
|
|
133
|
+
const s = stateMap.get(wrapper)
|
|
134
|
+
if (!s) return
|
|
135
|
+
const colEls = wrapper.querySelectorAll('.oe-columns__col')
|
|
136
|
+
colEls.forEach((el, i) => {
|
|
137
|
+
const col = s.data.columns[i]
|
|
138
|
+
if (col) {
|
|
139
|
+
col.content = sanitizeHtml(el.innerHTML?.trim() || '')
|
|
140
|
+
}
|
|
141
|
+
})
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* @param {HTMLElement} wrapper
|
|
146
|
+
* @param {import('../../core/types').BlockMutationContext} context
|
|
147
|
+
* @returns {void}
|
|
148
|
+
*/
|
|
149
|
+
#build(wrapper, context) {
|
|
150
|
+
const s = stateMap.get(wrapper)
|
|
151
|
+
if (!s) return
|
|
152
|
+
wrapper.innerHTML = ''
|
|
153
|
+
|
|
154
|
+
const layoutDef = /** @type {{ cols: number, grid: string, label: string }} */ (LAYOUTS[s.data.layout] || LAYOUTS['1-1'])
|
|
155
|
+
|
|
156
|
+
// Grid container
|
|
157
|
+
const grid = document.createElement('div')
|
|
158
|
+
grid.className = 'oe-columns__grid'
|
|
159
|
+
grid.style.gridTemplateColumns = layoutDef.grid
|
|
160
|
+
|
|
161
|
+
for (let i = 0; i < s.data.columns.length; i++) {
|
|
162
|
+
const colData = /** @type {{content: string}} */ (s.data.columns[i])
|
|
163
|
+
const col = document.createElement('div')
|
|
164
|
+
col.className = 'oe-columns__col'
|
|
165
|
+
col.contentEditable = 'true'
|
|
166
|
+
col.dataset.placeholder = `${this._t('colPlaceholder', 'Column')} ${i + 1}`
|
|
167
|
+
if (colData.content) {
|
|
168
|
+
col.innerHTML = sanitizeHtml(colData.content)
|
|
169
|
+
}
|
|
170
|
+
col.addEventListener('keydown', (e) => {
|
|
171
|
+
if (e.key === 'Enter' && !e.shiftKey) { e.stopPropagation(); return }
|
|
172
|
+
// Let modifier combos (Ctrl+Z, Ctrl+A, etc.) bubble to ShortcutRegistry
|
|
173
|
+
if (!e.ctrlKey && !e.metaKey) e.stopPropagation()
|
|
174
|
+
})
|
|
175
|
+
grid.appendChild(col)
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
wrapper.appendChild(grid)
|
|
179
|
+
|
|
180
|
+
// Layout selector
|
|
181
|
+
const actions = document.createElement('div')
|
|
182
|
+
actions.className = 'oe-columns__actions'
|
|
183
|
+
|
|
184
|
+
for (const key of LAYOUT_KEYS) {
|
|
185
|
+
const btn = document.createElement('button')
|
|
186
|
+
btn.type = 'button'
|
|
187
|
+
btn.className = `oe-columns__layout-btn${s.data.layout === key ? ' oe-columns__layout-btn--active' : ''}`
|
|
188
|
+
btn.innerHTML = LAYOUT_ICONS[key] || ''
|
|
189
|
+
btn.title = LAYOUTS[key]?.label || ''
|
|
190
|
+
btn.setAttribute('aria-label', `${this._t('layout', 'Layout')} ${btn.title}`)
|
|
191
|
+
btn.setAttribute('aria-pressed', String(s.data.layout === key))
|
|
192
|
+
btn.addEventListener('mousedown', (e) => e.preventDefault())
|
|
193
|
+
btn.addEventListener('click', () => {
|
|
194
|
+
context.mutate(() => {
|
|
195
|
+
this.#syncFromDom(wrapper)
|
|
196
|
+
this.#changeLayout(wrapper, key, context)
|
|
197
|
+
})
|
|
198
|
+
})
|
|
199
|
+
actions.appendChild(btn)
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
wrapper.appendChild(actions)
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
/**
|
|
206
|
+
* @param {HTMLElement} wrapper
|
|
207
|
+
* @param {string} newLayout
|
|
208
|
+
* @param {import('../../core/types').BlockMutationContext} context
|
|
209
|
+
* @returns {void}
|
|
210
|
+
*/
|
|
211
|
+
#changeLayout(wrapper, newLayout, context) {
|
|
212
|
+
const newDef = LAYOUTS[newLayout]
|
|
213
|
+
if (!newDef) return
|
|
214
|
+
|
|
215
|
+
const s = stateMap.get(wrapper)
|
|
216
|
+
if (!s) return
|
|
217
|
+
|
|
218
|
+
// Adjust columns count
|
|
219
|
+
while (s.data.columns.length < newDef.cols) {
|
|
220
|
+
s.data.columns.push({ content: '' })
|
|
221
|
+
}
|
|
222
|
+
if (s.data.columns.length > newDef.cols) {
|
|
223
|
+
// Merge overflow into last column
|
|
224
|
+
const overflow = s.data.columns.splice(newDef.cols)
|
|
225
|
+
const last = /** @type {{content: string}} */ (s.data.columns[newDef.cols - 1])
|
|
226
|
+
for (const col of overflow) {
|
|
227
|
+
if (col.content.trim()) {
|
|
228
|
+
last.content = last.content ? last.content + '<br>' + col.content : col.content
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
s.data.layout = newLayout
|
|
234
|
+
this.#build(wrapper, context)
|
|
235
|
+
}
|
|
236
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# Delimiter block plugin
|
|
2
|
+
|
|
3
|
+
A visual section separator with no content payload.
|
|
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 { Delimiter } from '@shelamkoff/rector/plugins/delimiter'
|
|
14
|
+
import '@shelamkoff/rector/styles/editor.css'
|
|
15
|
+
|
|
16
|
+
const editor = createEditor({
|
|
17
|
+
holder: document.querySelector('#editor'),
|
|
18
|
+
plugins: [new Delimiter()],
|
|
19
|
+
})
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
The registered block type is `delimiter`. 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
|
+
{}
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
The block accepts an object as `data` and serializes it as `{}`. It has no configurable data fields; non-object values fail validation.
|
|
31
|
+
|
|
32
|
+
## Configuration
|
|
33
|
+
|
|
34
|
+
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.
|
|
35
|
+
|
|
36
|
+
## Capabilities
|
|
37
|
+
|
|
38
|
+
Toolbox insertion and document rendering.
|
|
39
|
+
|
|
40
|
+
## Undo, lifecycle, and styles
|
|
41
|
+
|
|
42
|
+
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.
|
|
43
|
+
|
|
44
|
+
Do not remove the editor holder without first calling `editor.destroy()`.
|
|
45
|
+
|
|
46
|
+
## Document output
|
|
47
|
+
|
|
48
|
+
Use the matching renderer from `@shelamkoff/rector/renderer/renderers/delimiter`. The VitePress guide documents configuration, commands and history, extension contracts, document migrations, styling, security, and lifecycle in a sequential form.
|