@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.
Files changed (668) hide show
  1. package/LICENSE +21 -0
  2. package/NOTICE +17 -0
  3. package/README.md +23 -0
  4. package/THIRD_PARTY_LICENSES.txt +298 -0
  5. package/dist/I18n.d.ts +1 -0
  6. package/dist/core/Block.d.ts +110 -0
  7. package/dist/core/Block.js +390 -0
  8. package/dist/core/BlockAnimator.d.ts +39 -0
  9. package/dist/core/BlockAnimator.js +106 -0
  10. package/dist/core/BlockManager.d.ts +163 -0
  11. package/dist/core/BlockManager.js +640 -0
  12. package/dist/core/BlockOperations.d.ts +67 -0
  13. package/dist/core/BlockOperations.js +238 -0
  14. package/dist/core/ChangeNotifier.d.ts +15 -0
  15. package/dist/core/ChangeNotifier.js +55 -0
  16. package/dist/core/CommandDispatcher.d.ts +52 -0
  17. package/dist/core/CommandDispatcher.js +208 -0
  18. package/dist/core/CrossBlockSelection.d.ts +30 -0
  19. package/dist/core/CrossBlockSelection.js +74 -0
  20. package/dist/core/Diagnostics.d.ts +23 -0
  21. package/dist/core/Diagnostics.js +62 -0
  22. package/dist/core/DocumentSchema.d.ts +29 -0
  23. package/dist/core/DocumentSchema.js +147 -0
  24. package/dist/core/DocumentSnapshotStore.d.ts +34 -0
  25. package/dist/core/DocumentSnapshotStore.js +153 -0
  26. package/dist/core/DragManager.d.ts +17 -0
  27. package/dist/core/DragManager.js +223 -0
  28. package/dist/core/EditorFacade.d.ts +154 -0
  29. package/dist/core/EditorFacade.js +361 -0
  30. package/dist/core/EditorHolderOwnership.d.ts +12 -0
  31. package/dist/core/EditorHolderOwnership.js +28 -0
  32. package/dist/core/I18n.d.ts +147 -0
  33. package/dist/core/I18n.js +296 -0
  34. package/dist/core/InlinePatternMatcher.d.ts +26 -0
  35. package/dist/core/InlinePatternMatcher.js +267 -0
  36. package/dist/core/InlinePluginRegistry.d.ts +55 -0
  37. package/dist/core/InlinePluginRegistry.js +128 -0
  38. package/dist/core/KeyboardManager.d.ts +17 -0
  39. package/dist/core/KeyboardManager.js +231 -0
  40. package/dist/core/LifecycleScope.d.ts +19 -0
  41. package/dist/core/LifecycleScope.js +41 -0
  42. package/dist/core/MouseSelectionManager.d.ts +30 -0
  43. package/dist/core/MouseSelectionManager.js +307 -0
  44. package/dist/core/PluginOwnership.d.ts +9 -0
  45. package/dist/core/PluginOwnership.js +40 -0
  46. package/dist/core/PopupManager.d.ts +50 -0
  47. package/dist/core/PopupManager.js +183 -0
  48. package/dist/core/PreservedBlockPlugin.d.ts +11 -0
  49. package/dist/core/PreservedBlockPlugin.js +42 -0
  50. package/dist/core/PublicEditorApi.d.ts +82 -0
  51. package/dist/core/PublicEditorApi.js +158 -0
  52. package/dist/core/SelectionManager.d.ts +50 -0
  53. package/dist/core/SelectionManager.js +205 -0
  54. package/dist/core/ShortcutRegistry.d.ts +29 -0
  55. package/dist/core/ShortcutRegistry.js +106 -0
  56. package/dist/core/SlashCommands.d.ts +34 -0
  57. package/dist/core/SlashCommands.js +483 -0
  58. package/dist/core/StyleInjector.d.ts +1 -0
  59. package/dist/core/StyleInjector.js +1 -0
  60. package/dist/core/Tooltip.d.ts +17 -0
  61. package/dist/core/Tooltip.js +60 -0
  62. package/dist/core/TriggerManager.d.ts +17 -0
  63. package/dist/core/TriggerManager.js +159 -0
  64. package/dist/core/TypeSelector.d.ts +31 -0
  65. package/dist/core/TypeSelector.js +464 -0
  66. package/dist/core/UndoManager.d.ts +72 -0
  67. package/dist/core/UndoManager.js +383 -0
  68. package/dist/core/block-settings-menu/BlockActions.d.ts +81 -0
  69. package/dist/core/block-settings-menu/BlockActions.js +233 -0
  70. package/dist/core/block-settings-menu/BlockSettingsMenu.d.ts +46 -0
  71. package/dist/core/block-settings-menu/BlockSettingsMenu.js +205 -0
  72. package/dist/core/block-settings-menu/MenuBuilder.d.ts +43 -0
  73. package/dist/core/block-settings-menu/MenuBuilder.js +203 -0
  74. package/dist/core/block-settings-menu/MenuPositioner.d.ts +22 -0
  75. package/dist/core/block-settings-menu/MenuPositioner.js +79 -0
  76. package/dist/core/clipboard/Clipboard.d.ts +47 -0
  77. package/dist/core/clipboard/Clipboard.js +653 -0
  78. package/dist/core/clipboard/CrossBlockEditor.d.ts +43 -0
  79. package/dist/core/clipboard/CrossBlockEditor.js +198 -0
  80. package/dist/core/clipboard/PasteRouter.d.ts +27 -0
  81. package/dist/core/clipboard/PasteRouter.js +86 -0
  82. package/dist/core/clipboard/pasteInsert.d.ts +35 -0
  83. package/dist/core/clipboard/pasteInsert.js +215 -0
  84. package/dist/core/clipboard/pasteUtils.d.ts +25 -0
  85. package/dist/core/clipboard/pasteUtils.js +98 -0
  86. package/dist/core/config.d.ts +77 -0
  87. package/dist/core/config.js +100 -0
  88. package/dist/core/constants.d.ts +23 -0
  89. package/dist/core/constants.js +30 -0
  90. package/dist/core/crossBlockConvert.d.ts +38 -0
  91. package/dist/core/crossBlockConvert.js +253 -0
  92. package/dist/core/dom.d.ts +35 -0
  93. package/dist/core/dom.js +65 -0
  94. package/dist/core/editorEvents.d.ts +89 -0
  95. package/dist/core/editorEvents.js +60 -0
  96. package/dist/core/hydrateInlinePlugins.d.ts +9 -0
  97. package/dist/core/hydrateInlinePlugins.js +36 -0
  98. package/dist/core/icons.d.ts +10 -0
  99. package/dist/core/icons.js +21 -0
  100. package/dist/core/index.d.ts +59 -0
  101. package/dist/core/index.js +703 -0
  102. package/dist/core/inline-toolbar/ActionsPanel.d.ts +61 -0
  103. package/dist/core/inline-toolbar/ActionsPanel.js +132 -0
  104. package/dist/core/inline-toolbar/InlinePositioner.d.ts +20 -0
  105. package/dist/core/inline-toolbar/InlinePositioner.js +63 -0
  106. package/dist/core/inline-toolbar/InlineToolbar.d.ts +45 -0
  107. package/dist/core/inline-toolbar/InlineToolbar.js +456 -0
  108. package/dist/core/inline-toolbar/PluginControlsSlot.d.ts +52 -0
  109. package/dist/core/inline-toolbar/PluginControlsSlot.js +118 -0
  110. package/dist/core/inline-toolbar/SelectionTracker.d.ts +63 -0
  111. package/dist/core/inline-toolbar/SelectionTracker.js +173 -0
  112. package/dist/core/inlinePluginInsert.d.ts +13 -0
  113. package/dist/core/inlinePluginInsert.js +56 -0
  114. package/dist/core/locale/en.d.ts +35 -0
  115. package/dist/core/locale/en.js +37 -0
  116. package/dist/core/locale/ru.d.ts +35 -0
  117. package/dist/core/locale/ru.js +37 -0
  118. package/dist/core/menuKeyboardNav.d.ts +15 -0
  119. package/dist/core/menuKeyboardNav.js +52 -0
  120. package/dist/core/sanitize.d.ts +2 -0
  121. package/dist/core/sanitize.js +6 -0
  122. package/dist/core/splitConvert.d.ts +46 -0
  123. package/dist/core/splitConvert.js +190 -0
  124. package/dist/core/textOffset.d.ts +46 -0
  125. package/dist/core/textOffset.js +180 -0
  126. package/dist/core/themes/dark.css +30 -0
  127. package/dist/core/themes/light.css +33 -0
  128. package/dist/core/themes/variables.css +1170 -0
  129. package/dist/core/toolbar/OffcanvasRoot.d.ts +37 -0
  130. package/dist/core/toolbar/OffcanvasRoot.js +127 -0
  131. package/dist/core/toolbar/Toolbar.d.ts +70 -0
  132. package/dist/core/toolbar/Toolbar.js +432 -0
  133. package/dist/core/toolbar/ToolbarPositioner.d.ts +60 -0
  134. package/dist/core/toolbar/ToolbarPositioner.js +188 -0
  135. package/dist/core/toolbar/ToolboxBuilder.d.ts +44 -0
  136. package/dist/core/toolbar/ToolboxBuilder.js +260 -0
  137. package/dist/core/types.d.ts +747 -0
  138. package/dist/core/uid.d.ts +6 -0
  139. package/dist/core/uid.js +29 -0
  140. package/dist/index.d.ts +2 -0
  141. package/dist/index.js +1 -0
  142. package/dist/inline-plugins/README.md +35 -0
  143. package/dist/inline-plugins/README.ru.md +35 -0
  144. package/dist/inline-plugins/color/README.md +61 -0
  145. package/dist/inline-plugins/color/README.ru.md +61 -0
  146. package/dist/inline-plugins/color.d.ts +8 -0
  147. package/dist/inline-plugins/color.js +184 -0
  148. package/dist/inline-plugins/locale/en.d.ts +7 -0
  149. package/dist/inline-plugins/locale/en.js +6 -0
  150. package/dist/inline-plugins/locale/ru.d.ts +7 -0
  151. package/dist/inline-plugins/locale/ru.js +6 -0
  152. package/dist/inline-plugins/mention/README.md +97 -0
  153. package/dist/inline-plugins/mention/README.ru.md +97 -0
  154. package/dist/inline-plugins/mention/index.d.ts +110 -0
  155. package/dist/inline-plugins/mention/index.js +1897 -0
  156. package/dist/inline-plugins/mention/styles.css +183 -0
  157. package/dist/inline-plugins/mention/widget.d.ts +16 -0
  158. package/dist/inline-plugins/mention/widget.js +75 -0
  159. package/dist/inline-tools/align.d.ts +14 -0
  160. package/dist/inline-tools/align.js +120 -0
  161. package/dist/inline-tools/bold.d.ts +8 -0
  162. package/dist/inline-tools/bold.js +12 -0
  163. package/dist/inline-tools/caseTransform.d.ts +8 -0
  164. package/dist/inline-tools/caseTransform.js +87 -0
  165. package/dist/inline-tools/clearFormatting.d.ts +8 -0
  166. package/dist/inline-tools/clearFormatting.js +74 -0
  167. package/dist/inline-tools/code.d.ts +8 -0
  168. package/dist/inline-tools/code.js +12 -0
  169. package/dist/inline-tools/colorPicker.d.ts +7 -0
  170. package/dist/inline-tools/colorPicker.js +271 -0
  171. package/dist/inline-tools/defaults.d.ts +10 -0
  172. package/dist/inline-tools/defaults.js +57 -0
  173. package/dist/inline-tools/fontSize.d.ts +7 -0
  174. package/dist/inline-tools/fontSize.js +524 -0
  175. package/dist/inline-tools/italic.d.ts +8 -0
  176. package/dist/inline-tools/italic.js +12 -0
  177. package/dist/inline-tools/link.d.ts +12 -0
  178. package/dist/inline-tools/link.js +251 -0
  179. package/dist/inline-tools/marker.d.ts +8 -0
  180. package/dist/inline-tools/marker.js +12 -0
  181. package/dist/inline-tools/scriptTool.d.ts +11 -0
  182. package/dist/inline-tools/scriptTool.js +149 -0
  183. package/dist/inline-tools/strikethrough.d.ts +8 -0
  184. package/dist/inline-tools/strikethrough.js +12 -0
  185. package/dist/inline-tools/utils.d.ts +220 -0
  186. package/dist/inline-tools/utils.js +992 -0
  187. package/dist/locale/en.d.ts +311 -0
  188. package/dist/locale/en.js +52 -0
  189. package/dist/locale/ru.d.ts +315 -0
  190. package/dist/locale/ru.js +52 -0
  191. package/dist/plugins/BlockPluginAbstract.d.ts +82 -0
  192. package/dist/plugins/BlockPluginAbstract.js +111 -0
  193. package/dist/plugins/README.md +44 -0
  194. package/dist/plugins/README.ru.md +40 -0
  195. package/dist/plugins/async.d.ts +35 -0
  196. package/dist/plugins/async.js +79 -0
  197. package/dist/plugins/attaches/README.md +86 -0
  198. package/dist/plugins/attaches/README.ru.md +87 -0
  199. package/dist/plugins/attaches/attaches.css +374 -0
  200. package/dist/plugins/attaches/index.d.ts +133 -0
  201. package/dist/plugins/attaches/index.js +921 -0
  202. package/dist/plugins/attaches/locale/en.d.ts +23 -0
  203. package/dist/plugins/attaches/locale/en.js +19 -0
  204. package/dist/plugins/attaches/locale/keys.d.ts +5 -0
  205. package/dist/plugins/attaches/locale/ru.d.ts +25 -0
  206. package/dist/plugins/attaches/locale/ru.js +19 -0
  207. package/dist/plugins/carousel/README.md +108 -0
  208. package/dist/plugins/carousel/README.ru.md +109 -0
  209. package/dist/plugins/carousel/carousel.css +198 -0
  210. package/dist/plugins/carousel/icons.d.ts +12 -0
  211. package/dist/plugins/carousel/icons.js +13 -0
  212. package/dist/plugins/carousel/index.d.ts +137 -0
  213. package/dist/plugins/carousel/index.js +859 -0
  214. package/dist/plugins/carousel/locale/en.d.ts +41 -0
  215. package/dist/plugins/carousel/locale/en.js +40 -0
  216. package/dist/plugins/carousel/locale/keys.d.ts +2 -0
  217. package/dist/plugins/carousel/locale/ru.d.ts +41 -0
  218. package/dist/plugins/carousel/locale/ru.js +40 -0
  219. package/dist/plugins/carousel/state.d.ts +29 -0
  220. package/dist/plugins/carousel/state.js +42 -0
  221. package/dist/plugins/checklist/README.md +54 -0
  222. package/dist/plugins/checklist/README.ru.md +55 -0
  223. package/dist/plugins/checklist/checklist.css +80 -0
  224. package/dist/plugins/checklist/index.d.ts +75 -0
  225. package/dist/plugins/checklist/index.js +407 -0
  226. package/dist/plugins/checklist/locale/en.d.ts +5 -0
  227. package/dist/plugins/checklist/locale/en.js +4 -0
  228. package/dist/plugins/checklist/locale/keys.d.ts +5 -0
  229. package/dist/plugins/checklist/locale/ru.d.ts +5 -0
  230. package/dist/plugins/checklist/locale/ru.js +4 -0
  231. package/dist/plugins/checklist/mapTextFields.d.ts +1 -0
  232. package/dist/plugins/checklist/mapTextFields.js +1 -0
  233. package/dist/plugins/code/README.md +59 -0
  234. package/dist/plugins/code/README.ru.md +60 -0
  235. package/dist/plugins/code/code.css +360 -0
  236. package/dist/plugins/code/index.d.ts +109 -0
  237. package/dist/plugins/code/index.js +1012 -0
  238. package/dist/plugins/code/locale/en.d.ts +11 -0
  239. package/dist/plugins/code/locale/en.js +10 -0
  240. package/dist/plugins/code/locale/keys.d.ts +5 -0
  241. package/dist/plugins/code/locale/ru.d.ts +11 -0
  242. package/dist/plugins/code/locale/ru.js +10 -0
  243. package/dist/plugins/columns/README.md +55 -0
  244. package/dist/plugins/columns/README.ru.md +56 -0
  245. package/dist/plugins/columns/columns.css +103 -0
  246. package/dist/plugins/columns/index.d.ts +58 -0
  247. package/dist/plugins/columns/index.js +236 -0
  248. package/dist/plugins/columns/locale/en.d.ts +6 -0
  249. package/dist/plugins/columns/locale/en.js +5 -0
  250. package/dist/plugins/columns/locale/keys.d.ts +5 -0
  251. package/dist/plugins/columns/locale/ru.d.ts +6 -0
  252. package/dist/plugins/columns/locale/ru.js +5 -0
  253. package/dist/plugins/delimiter/README.md +48 -0
  254. package/dist/plugins/delimiter/README.ru.md +49 -0
  255. package/dist/plugins/delimiter/delimiter.css +22 -0
  256. package/dist/plugins/delimiter/index.d.ts +38 -0
  257. package/dist/plugins/delimiter/index.js +69 -0
  258. package/dist/plugins/delimiter/locale/en.d.ts +4 -0
  259. package/dist/plugins/delimiter/locale/en.js +3 -0
  260. package/dist/plugins/delimiter/locale/keys.d.ts +5 -0
  261. package/dist/plugins/delimiter/locale/ru.d.ts +4 -0
  262. package/dist/plugins/delimiter/locale/ru.js +3 -0
  263. package/dist/plugins/embed/README.md +81 -0
  264. package/dist/plugins/embed/README.ru.md +82 -0
  265. package/dist/plugins/embed/embed.css +558 -0
  266. package/dist/plugins/embed/index.d.ts +271 -0
  267. package/dist/plugins/embed/index.js +967 -0
  268. package/dist/plugins/embed/locale/en.d.ts +20 -0
  269. package/dist/plugins/embed/locale/en.js +19 -0
  270. package/dist/plugins/embed/locale/keys.d.ts +5 -0
  271. package/dist/plugins/embed/locale/ru.d.ts +20 -0
  272. package/dist/plugins/embed/locale/ru.js +19 -0
  273. package/dist/plugins/embed/player.d.ts +1 -0
  274. package/dist/plugins/embed/player.js +1 -0
  275. package/dist/plugins/gallery/README.md +92 -0
  276. package/dist/plugins/gallery/README.ru.md +93 -0
  277. package/dist/plugins/gallery/css.d.ts +52 -0
  278. package/dist/plugins/gallery/css.js +67 -0
  279. package/dist/plugins/gallery/gallery.css +860 -0
  280. package/dist/plugins/gallery/icons.d.ts +13 -0
  281. package/dist/plugins/gallery/icons.js +45 -0
  282. package/dist/plugins/gallery/index.d.ts +126 -0
  283. package/dist/plugins/gallery/index.js +355 -0
  284. package/dist/plugins/gallery/layout.d.ts +35 -0
  285. package/dist/plugins/gallery/layout.js +79 -0
  286. package/dist/plugins/gallery/locale/en.d.ts +36 -0
  287. package/dist/plugins/gallery/locale/en.js +35 -0
  288. package/dist/plugins/gallery/locale/keys.d.ts +5 -0
  289. package/dist/plugins/gallery/locale/ru.d.ts +36 -0
  290. package/dist/plugins/gallery/locale/ru.js +35 -0
  291. package/dist/plugins/gallery/settings.d.ts +25 -0
  292. package/dist/plugins/gallery/settings.js +199 -0
  293. package/dist/plugins/gallery/slot.d.ts +73 -0
  294. package/dist/plugins/gallery/slot.js +260 -0
  295. package/dist/plugins/gallery/state.d.ts +67 -0
  296. package/dist/plugins/gallery/state.js +133 -0
  297. package/dist/plugins/gallery/styles.d.ts +10 -0
  298. package/dist/plugins/gallery/styles.js +24 -0
  299. package/dist/plugins/gallery/uploader.d.ts +31 -0
  300. package/dist/plugins/gallery/uploader.js +111 -0
  301. package/dist/plugins/gallery/view-empty.d.ts +41 -0
  302. package/dist/plugins/gallery/view-empty.js +56 -0
  303. package/dist/plugins/gallery/view-filled.d.ts +55 -0
  304. package/dist/plugins/gallery/view-filled.js +353 -0
  305. package/dist/plugins/heading/HeadingLevelSelect.d.ts +16 -0
  306. package/dist/plugins/heading/HeadingLevelSelect.js +183 -0
  307. package/dist/plugins/heading/README.md +58 -0
  308. package/dist/plugins/heading/README.ru.md +59 -0
  309. package/dist/plugins/heading/heading.css +76 -0
  310. package/dist/plugins/heading/index.d.ts +124 -0
  311. package/dist/plugins/heading/index.js +273 -0
  312. package/dist/plugins/heading/locale/en.d.ts +11 -0
  313. package/dist/plugins/heading/locale/en.js +10 -0
  314. package/dist/plugins/heading/locale/keys.d.ts +5 -0
  315. package/dist/plugins/heading/locale/ru.d.ts +11 -0
  316. package/dist/plugins/heading/locale/ru.js +10 -0
  317. package/dist/plugins/heading/mapTextFields.d.ts +1 -0
  318. package/dist/plugins/heading/mapTextFields.js +1 -0
  319. package/dist/plugins/image/README.md +93 -0
  320. package/dist/plugins/image/README.ru.md +94 -0
  321. package/dist/plugins/image/css.d.ts +47 -0
  322. package/dist/plugins/image/css.js +47 -0
  323. package/dist/plugins/image/icons.d.ts +13 -0
  324. package/dist/plugins/image/icons.js +26 -0
  325. package/dist/plugins/image/image.css +559 -0
  326. package/dist/plugins/image/index.d.ts +129 -0
  327. package/dist/plugins/image/index.js +346 -0
  328. package/dist/plugins/image/locale/en.d.ts +39 -0
  329. package/dist/plugins/image/locale/en.js +38 -0
  330. package/dist/plugins/image/locale/keys.d.ts +5 -0
  331. package/dist/plugins/image/locale/ru.d.ts +39 -0
  332. package/dist/plugins/image/locale/ru.js +38 -0
  333. package/dist/plugins/image/settings.d.ts +23 -0
  334. package/dist/plugins/image/settings.js +347 -0
  335. package/dist/plugins/image/state.d.ts +86 -0
  336. package/dist/plugins/image/state.js +151 -0
  337. package/dist/plugins/image/styles.d.ts +21 -0
  338. package/dist/plugins/image/styles.js +58 -0
  339. package/dist/plugins/image/uploader.d.ts +31 -0
  340. package/dist/plugins/image/uploader.js +92 -0
  341. package/dist/plugins/image/view-empty.d.ts +44 -0
  342. package/dist/plugins/image/view-empty.js +61 -0
  343. package/dist/plugins/image/view-filled.d.ts +49 -0
  344. package/dist/plugins/image/view-filled.js +282 -0
  345. package/dist/plugins/index.d.ts +21 -0
  346. package/dist/plugins/index.js +22 -0
  347. package/dist/plugins/link-preview/README.md +69 -0
  348. package/dist/plugins/link-preview/README.ru.md +70 -0
  349. package/dist/plugins/link-preview/index.d.ts +169 -0
  350. package/dist/plugins/link-preview/index.js +698 -0
  351. package/dist/plugins/link-preview/link-preview.css +254 -0
  352. package/dist/plugins/link-preview/locale/en.d.ts +14 -0
  353. package/dist/plugins/link-preview/locale/en.js +13 -0
  354. package/dist/plugins/link-preview/locale/keys.d.ts +5 -0
  355. package/dist/plugins/link-preview/locale/ru.d.ts +14 -0
  356. package/dist/plugins/link-preview/locale/ru.js +13 -0
  357. package/dist/plugins/list/README.md +59 -0
  358. package/dist/plugins/list/README.ru.md +60 -0
  359. package/dist/plugins/list/index.d.ts +134 -0
  360. package/dist/plugins/list/index.js +566 -0
  361. package/dist/plugins/list/list.css +57 -0
  362. package/dist/plugins/list/locale/en.d.ts +5 -0
  363. package/dist/plugins/list/locale/en.js +4 -0
  364. package/dist/plugins/list/locale/keys.d.ts +5 -0
  365. package/dist/plugins/list/locale/ru.d.ts +5 -0
  366. package/dist/plugins/list/locale/ru.js +4 -0
  367. package/dist/plugins/list/mapTextFields.d.ts +1 -0
  368. package/dist/plugins/list/mapTextFields.js +1 -0
  369. package/dist/plugins/paragraph/README.md +57 -0
  370. package/dist/plugins/paragraph/README.ru.md +58 -0
  371. package/dist/plugins/paragraph/index.d.ts +112 -0
  372. package/dist/plugins/paragraph/index.js +158 -0
  373. package/dist/plugins/paragraph/locale/en.d.ts +5 -0
  374. package/dist/plugins/paragraph/locale/en.js +4 -0
  375. package/dist/plugins/paragraph/locale/keys.d.ts +5 -0
  376. package/dist/plugins/paragraph/locale/ru.d.ts +5 -0
  377. package/dist/plugins/paragraph/locale/ru.js +4 -0
  378. package/dist/plugins/paragraph/mapTextFields.d.ts +1 -0
  379. package/dist/plugins/paragraph/mapTextFields.js +1 -0
  380. package/dist/plugins/paragraph/paragraph.css +56 -0
  381. package/dist/plugins/person/README.md +72 -0
  382. package/dist/plugins/person/README.ru.md +73 -0
  383. package/dist/plugins/person/index.d.ts +189 -0
  384. package/dist/plugins/person/index.js +777 -0
  385. package/dist/plugins/person/locale/en.d.ts +18 -0
  386. package/dist/plugins/person/locale/en.js +17 -0
  387. package/dist/plugins/person/locale/keys.d.ts +5 -0
  388. package/dist/plugins/person/locale/ru.d.ts +18 -0
  389. package/dist/plugins/person/locale/ru.js +17 -0
  390. package/dist/plugins/person/person.css +431 -0
  391. package/dist/plugins/person/socialResolver.d.ts +18 -0
  392. package/dist/plugins/person/socialResolver.js +69 -0
  393. package/dist/plugins/poll/README.md +96 -0
  394. package/dist/plugins/poll/README.ru.md +97 -0
  395. package/dist/plugins/poll/index.d.ts +134 -0
  396. package/dist/plugins/poll/index.js +825 -0
  397. package/dist/plugins/poll/locale/en.d.ts +23 -0
  398. package/dist/plugins/poll/locale/en.js +22 -0
  399. package/dist/plugins/poll/locale/keys.d.ts +5 -0
  400. package/dist/plugins/poll/locale/ru.d.ts +23 -0
  401. package/dist/plugins/poll/locale/ru.js +22 -0
  402. package/dist/plugins/poll/poll.css +400 -0
  403. package/dist/plugins/quote/README.md +55 -0
  404. package/dist/plugins/quote/README.ru.md +56 -0
  405. package/dist/plugins/quote/index.d.ts +81 -0
  406. package/dist/plugins/quote/index.js +165 -0
  407. package/dist/plugins/quote/locale/en.d.ts +6 -0
  408. package/dist/plugins/quote/locale/en.js +5 -0
  409. package/dist/plugins/quote/locale/keys.d.ts +5 -0
  410. package/dist/plugins/quote/locale/ru.d.ts +6 -0
  411. package/dist/plugins/quote/locale/ru.js +5 -0
  412. package/dist/plugins/quote/mapTextFields.d.ts +1 -0
  413. package/dist/plugins/quote/mapTextFields.js +1 -0
  414. package/dist/plugins/quote/quote.css +72 -0
  415. package/dist/plugins/raw/README.md +54 -0
  416. package/dist/plugins/raw/README.ru.md +55 -0
  417. package/dist/plugins/raw/index.d.ts +62 -0
  418. package/dist/plugins/raw/index.js +227 -0
  419. package/dist/plugins/raw/locale/en.d.ts +7 -0
  420. package/dist/plugins/raw/locale/en.js +6 -0
  421. package/dist/plugins/raw/locale/keys.d.ts +5 -0
  422. package/dist/plugins/raw/locale/ru.d.ts +7 -0
  423. package/dist/plugins/raw/locale/ru.js +6 -0
  424. package/dist/plugins/raw/raw.css +127 -0
  425. package/dist/plugins/shared/actionBar.d.ts +19 -0
  426. package/dist/plugins/shared/actionBar.js +35 -0
  427. package/dist/plugins/shared/dropzone.d.ts +106 -0
  428. package/dist/plugins/shared/dropzone.js +107 -0
  429. package/dist/plugins/shared/fileInput.d.ts +44 -0
  430. package/dist/plugins/shared/fileInput.js +62 -0
  431. package/dist/plugins/spoiler/README.md +55 -0
  432. package/dist/plugins/spoiler/README.ru.md +56 -0
  433. package/dist/plugins/spoiler/index.d.ts +61 -0
  434. package/dist/plugins/spoiler/index.js +169 -0
  435. package/dist/plugins/spoiler/locale/en.d.ts +7 -0
  436. package/dist/plugins/spoiler/locale/en.js +6 -0
  437. package/dist/plugins/spoiler/locale/keys.d.ts +5 -0
  438. package/dist/plugins/spoiler/locale/ru.d.ts +7 -0
  439. package/dist/plugins/spoiler/locale/ru.js +6 -0
  440. package/dist/plugins/spoiler/spoiler.css +101 -0
  441. package/dist/plugins/table/README.md +55 -0
  442. package/dist/plugins/table/README.ru.md +56 -0
  443. package/dist/plugins/table/index.d.ts +85 -0
  444. package/dist/plugins/table/index.js +399 -0
  445. package/dist/plugins/table/locale/en.d.ts +9 -0
  446. package/dist/plugins/table/locale/en.js +8 -0
  447. package/dist/plugins/table/locale/keys.d.ts +5 -0
  448. package/dist/plugins/table/locale/ru.d.ts +9 -0
  449. package/dist/plugins/table/locale/ru.js +8 -0
  450. package/dist/plugins/table/table.css +58 -0
  451. package/dist/plugins/toggle/README.md +56 -0
  452. package/dist/plugins/toggle/README.ru.md +57 -0
  453. package/dist/plugins/toggle/index.d.ts +69 -0
  454. package/dist/plugins/toggle/index.js +191 -0
  455. package/dist/plugins/toggle/locale/en.d.ts +7 -0
  456. package/dist/plugins/toggle/locale/en.js +6 -0
  457. package/dist/plugins/toggle/locale/keys.d.ts +5 -0
  458. package/dist/plugins/toggle/locale/ru.d.ts +7 -0
  459. package/dist/plugins/toggle/locale/ru.js +6 -0
  460. package/dist/plugins/toggle/toggle.css +101 -0
  461. package/dist/plugins/warning/README.md +55 -0
  462. package/dist/plugins/warning/README.ru.md +56 -0
  463. package/dist/plugins/warning/index.d.ts +66 -0
  464. package/dist/plugins/warning/index.js +167 -0
  465. package/dist/plugins/warning/locale/en.d.ts +6 -0
  466. package/dist/plugins/warning/locale/en.js +5 -0
  467. package/dist/plugins/warning/locale/keys.d.ts +5 -0
  468. package/dist/plugins/warning/locale/ru.d.ts +6 -0
  469. package/dist/plugins/warning/locale/ru.js +5 -0
  470. package/dist/plugins/warning/warning.css +63 -0
  471. package/dist/renderer/async.d.ts +1 -0
  472. package/dist/renderer/async.js +7 -0
  473. package/dist/renderer/errors.d.ts +27 -0
  474. package/dist/renderer/errors.js +48 -0
  475. package/dist/renderer/index.d.ts +82 -0
  476. package/dist/renderer/index.js +413 -0
  477. package/dist/renderer/inline.d.ts +5 -0
  478. package/dist/renderer/inline.js +61 -0
  479. package/dist/renderer/locale/en.d.ts +35 -0
  480. package/dist/renderer/locale/en.js +29 -0
  481. package/dist/renderer/locale/ru.d.ts +37 -0
  482. package/dist/renderer/locale/ru.js +29 -0
  483. package/dist/renderer/renderers/README.md +7 -0
  484. package/dist/renderer/renderers/README.ru.md +5 -0
  485. package/dist/renderer/renderers/async.d.ts +51 -0
  486. package/dist/renderer/renderers/async.js +99 -0
  487. package/dist/renderer/renderers/attaches/README.md +48 -0
  488. package/dist/renderer/renderers/attaches/README.ru.md +48 -0
  489. package/dist/renderer/renderers/attaches/index.d.ts +37 -0
  490. package/dist/renderer/renderers/attaches/index.js +451 -0
  491. package/dist/renderer/renderers/attaches/locale/en.d.ts +11 -0
  492. package/dist/renderer/renderers/attaches/locale/en.js +7 -0
  493. package/dist/renderer/renderers/attaches/locale/ru.d.ts +13 -0
  494. package/dist/renderer/renderers/attaches/locale/ru.js +7 -0
  495. package/dist/renderer/renderers/attaches/styles.css +196 -0
  496. package/dist/renderer/renderers/carousel/README.md +43 -0
  497. package/dist/renderer/renderers/carousel/README.ru.md +43 -0
  498. package/dist/renderer/renderers/carousel/index.d.ts +7 -0
  499. package/dist/renderer/renderers/carousel/index.js +110 -0
  500. package/dist/renderer/renderers/carousel/styles.css +7 -0
  501. package/dist/renderer/renderers/checklist/README.md +33 -0
  502. package/dist/renderer/renderers/checklist/README.ru.md +33 -0
  503. package/dist/renderer/renderers/checklist/index.d.ts +7 -0
  504. package/dist/renderer/renderers/checklist/index.js +55 -0
  505. package/dist/renderer/renderers/checklist/styles.css +54 -0
  506. package/dist/renderer/renderers/code/README.md +33 -0
  507. package/dist/renderer/renderers/code/README.ru.md +33 -0
  508. package/dist/renderer/renderers/code/index.d.ts +9 -0
  509. package/dist/renderer/renderers/code/index.js +137 -0
  510. package/dist/renderer/renderers/code/locale/en.d.ts +5 -0
  511. package/dist/renderer/renderers/code/locale/en.js +4 -0
  512. package/dist/renderer/renderers/code/locale/ru.d.ts +5 -0
  513. package/dist/renderer/renderers/code/locale/ru.js +4 -0
  514. package/dist/renderer/renderers/code/styles.css +330 -0
  515. package/dist/renderer/renderers/columns/README.md +33 -0
  516. package/dist/renderer/renderers/columns/README.ru.md +33 -0
  517. package/dist/renderer/renderers/columns/index.d.ts +7 -0
  518. package/dist/renderer/renderers/columns/index.js +53 -0
  519. package/dist/renderer/renderers/columns/styles.css +5 -0
  520. package/dist/renderer/renderers/delimiter/README.md +33 -0
  521. package/dist/renderer/renderers/delimiter/README.ru.md +33 -0
  522. package/dist/renderer/renderers/delimiter/index.d.ts +7 -0
  523. package/dist/renderer/renderers/delimiter/index.js +28 -0
  524. package/dist/renderer/renderers/delimiter/styles.css +12 -0
  525. package/dist/renderer/renderers/embed/README.md +35 -0
  526. package/dist/renderer/renderers/embed/README.ru.md +35 -0
  527. package/dist/renderer/renderers/embed/index.d.ts +8 -0
  528. package/dist/renderer/renderers/embed/index.js +66 -0
  529. package/dist/renderer/renderers/embed/styles.css +217 -0
  530. package/dist/renderer/renderers/gallery/README.md +41 -0
  531. package/dist/renderer/renderers/gallery/README.ru.md +41 -0
  532. package/dist/renderer/renderers/gallery/index.d.ts +8 -0
  533. package/dist/renderer/renderers/gallery/index.js +329 -0
  534. package/dist/renderer/renderers/gallery/styles.css +419 -0
  535. package/dist/renderer/renderers/heading/README.md +33 -0
  536. package/dist/renderer/renderers/heading/README.ru.md +33 -0
  537. package/dist/renderer/renderers/heading/index.d.ts +8 -0
  538. package/dist/renderer/renderers/heading/index.js +38 -0
  539. package/dist/renderer/renderers/heading/styles.css +26 -0
  540. package/dist/renderer/renderers/image/README.md +42 -0
  541. package/dist/renderer/renderers/image/README.ru.md +42 -0
  542. package/dist/renderer/renderers/image/index.d.ts +7 -0
  543. package/dist/renderer/renderers/image/index.js +93 -0
  544. package/dist/renderer/renderers/image/styles.css +40 -0
  545. package/dist/renderer/renderers/index.d.ts +47 -0
  546. package/dist/renderer/renderers/index.js +125 -0
  547. package/dist/renderer/renderers/link-preview/README.md +43 -0
  548. package/dist/renderer/renderers/link-preview/README.ru.md +43 -0
  549. package/dist/renderer/renderers/link-preview/index.d.ts +9 -0
  550. package/dist/renderer/renderers/link-preview/index.js +118 -0
  551. package/dist/renderer/renderers/link-preview/styles.css +246 -0
  552. package/dist/renderer/renderers/list/README.md +33 -0
  553. package/dist/renderer/renderers/list/README.ru.md +33 -0
  554. package/dist/renderer/renderers/list/index.d.ts +8 -0
  555. package/dist/renderer/renderers/list/index.js +42 -0
  556. package/dist/renderer/renderers/list/styles.css +20 -0
  557. package/dist/renderer/renderers/paragraph/README.md +33 -0
  558. package/dist/renderer/renderers/paragraph/README.ru.md +33 -0
  559. package/dist/renderer/renderers/paragraph/index.d.ts +7 -0
  560. package/dist/renderer/renderers/paragraph/index.js +35 -0
  561. package/dist/renderer/renderers/paragraph/styles.css +3 -0
  562. package/dist/renderer/renderers/person/README.md +44 -0
  563. package/dist/renderer/renderers/person/README.ru.md +44 -0
  564. package/dist/renderer/renderers/person/index.d.ts +7 -0
  565. package/dist/renderer/renderers/person/index.js +213 -0
  566. package/dist/renderer/renderers/person/locale/en.d.ts +6 -0
  567. package/dist/renderer/renderers/person/locale/en.js +5 -0
  568. package/dist/renderer/renderers/person/locale/ru.d.ts +6 -0
  569. package/dist/renderer/renderers/person/locale/ru.js +5 -0
  570. package/dist/renderer/renderers/person/styles.css +47 -0
  571. package/dist/renderer/renderers/poll/README.md +68 -0
  572. package/dist/renderer/renderers/poll/README.ru.md +68 -0
  573. package/dist/renderer/renderers/poll/index.d.ts +9 -0
  574. package/dist/renderer/renderers/poll/index.js +339 -0
  575. package/dist/renderer/renderers/poll/styles.css +148 -0
  576. package/dist/renderer/renderers/quote/README.md +33 -0
  577. package/dist/renderer/renderers/quote/README.ru.md +33 -0
  578. package/dist/renderer/renderers/quote/index.d.ts +7 -0
  579. package/dist/renderer/renderers/quote/index.js +59 -0
  580. package/dist/renderer/renderers/quote/styles.css +43 -0
  581. package/dist/renderer/renderers/raw/README.md +33 -0
  582. package/dist/renderer/renderers/raw/README.ru.md +33 -0
  583. package/dist/renderer/renderers/raw/index.d.ts +7 -0
  584. package/dist/renderer/renderers/raw/index.js +27 -0
  585. package/dist/renderer/renderers/spoiler/README.md +33 -0
  586. package/dist/renderer/renderers/spoiler/README.ru.md +33 -0
  587. package/dist/renderer/renderers/spoiler/index.d.ts +9 -0
  588. package/dist/renderer/renderers/spoiler/index.js +84 -0
  589. package/dist/renderer/renderers/spoiler/locale/en.d.ts +4 -0
  590. package/dist/renderer/renderers/spoiler/locale/en.js +3 -0
  591. package/dist/renderer/renderers/spoiler/locale/ru.d.ts +4 -0
  592. package/dist/renderer/renderers/spoiler/locale/ru.js +3 -0
  593. package/dist/renderer/renderers/spoiler/styles.css +61 -0
  594. package/dist/renderer/renderers/table/README.md +33 -0
  595. package/dist/renderer/renderers/table/README.ru.md +33 -0
  596. package/dist/renderer/renderers/table/index.d.ts +7 -0
  597. package/dist/renderer/renderers/table/index.js +83 -0
  598. package/dist/renderer/renderers/table/styles.css +34 -0
  599. package/dist/renderer/renderers/toggle/README.md +33 -0
  600. package/dist/renderer/renderers/toggle/README.ru.md +33 -0
  601. package/dist/renderer/renderers/toggle/index.d.ts +7 -0
  602. package/dist/renderer/renderers/toggle/index.js +59 -0
  603. package/dist/renderer/renderers/toggle/styles.css +49 -0
  604. package/dist/renderer/renderers/warning/README.md +33 -0
  605. package/dist/renderer/renderers/warning/README.ru.md +33 -0
  606. package/dist/renderer/renderers/warning/index.d.ts +7 -0
  607. package/dist/renderer/renderers/warning/index.js +62 -0
  608. package/dist/renderer/renderers/warning/styles.css +41 -0
  609. package/dist/renderer/styles/base.css +168 -0
  610. package/dist/renderer/types.d.ts +464 -0
  611. package/dist/shared/blockDataNormalizers.d.ts +14 -0
  612. package/dist/shared/blockDataNormalizers.js +235 -0
  613. package/dist/shared/blockDataValidators.d.ts +81 -0
  614. package/dist/shared/blockDataValidators.js +313 -0
  615. package/dist/shared/blockTypes.d.ts +2 -0
  616. package/dist/shared/blockTypes.js +26 -0
  617. package/dist/shared/carouselData.d.ts +34 -0
  618. package/dist/shared/carouselData.js +111 -0
  619. package/dist/shared/cloneEditorData.d.ts +11 -0
  620. package/dist/shared/cloneEditorData.js +20 -0
  621. package/dist/shared/documentTypes.d.ts +35 -0
  622. package/dist/shared/embedPlayer.d.ts +42 -0
  623. package/dist/shared/embedPlayer.js +141 -0
  624. package/dist/shared/fileUtils.d.ts +33 -0
  625. package/dist/shared/fileUtils.js +109 -0
  626. package/dist/shared/highlightRuntime.d.ts +38 -0
  627. package/dist/shared/highlightRuntime.js +75 -0
  628. package/dist/shared/inlineMarshal.d.ts +82 -0
  629. package/dist/shared/inlineMarshal.js +215 -0
  630. package/dist/shared/jsonData.d.ts +11 -0
  631. package/dist/shared/jsonData.js +53 -0
  632. package/dist/shared/localeTypes.d.ts +11 -0
  633. package/dist/shared/mapTextFields.d.ts +89 -0
  634. package/dist/shared/mapTextFields.js +119 -0
  635. package/dist/shared/pollData.d.ts +90 -0
  636. package/dist/shared/pollData.js +231 -0
  637. package/dist/shared/resolvePath.d.ts +8 -0
  638. package/dist/shared/resolvePath.js +10 -0
  639. package/dist/shared/runtime/dompurify.js +2424 -0
  640. package/dist/shared/runtime/highlightBundle.js +10 -0
  641. package/dist/shared/runtime/jszip.js +13 -0
  642. package/dist/shared/sanitize/allowlist.d.ts +21 -0
  643. package/dist/shared/sanitize/allowlist.js +40 -0
  644. package/dist/shared/sanitize/escapeHtml.d.ts +6 -0
  645. package/dist/shared/sanitize/escapeHtml.js +11 -0
  646. package/dist/shared/sanitize/index.d.ts +8 -0
  647. package/dist/shared/sanitize/index.js +8 -0
  648. package/dist/shared/sanitize/parseInline.d.ts +11 -0
  649. package/dist/shared/sanitize/parseInline.js +25 -0
  650. package/dist/shared/sanitize/sanitizeHtml.d.ts +8 -0
  651. package/dist/shared/sanitize/sanitizeHtml.js +19 -0
  652. package/dist/shared/sanitize/sanitizeRawHtml.d.ts +15 -0
  653. package/dist/shared/sanitize/sanitizeRawHtml.js +162 -0
  654. package/dist/shared/sanitize/sanitizeStyle.d.ts +9 -0
  655. package/dist/shared/sanitize/sanitizeStyle.js +39 -0
  656. package/dist/shared/sanitize/sanitizeUrl.d.ts +28 -0
  657. package/dist/shared/sanitize/sanitizeUrl.js +86 -0
  658. package/dist/shared/sanitize/walker.d.ts +15 -0
  659. package/dist/shared/sanitize/walker.js +98 -0
  660. package/dist/shared/styleRegistry.d.ts +4 -0
  661. package/dist/shared/styleRegistry.js +38 -0
  662. package/dist/shared/textFormat.d.ts +32 -0
  663. package/dist/shared/textFormat.js +48 -0
  664. package/dist/shared/zipRuntime.d.ts +19 -0
  665. package/dist/shared/zipRuntime.js +54 -0
  666. package/dist/styles/editor.css +3 -0
  667. package/dist/types.d.ts +1 -0
  668. 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,5 @@
1
+ import enLocale from './en.js'
2
+
3
+ declare module '../../../core/types.js' {
4
+ interface I18nMessages extends Record<keyof typeof enLocale, string> {}
5
+ }
@@ -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,6 @@
1
+ declare const _default: {
2
+ 'plugin.columns.title': string;
3
+ 'plugin.columns.colPlaceholder': string;
4
+ 'plugin.columns.layout': string;
5
+ };
6
+ export default _default;
@@ -0,0 +1,5 @@
1
+ export default {
2
+ 'plugin.columns.title': 'Columns',
3
+ 'plugin.columns.colPlaceholder': 'Column',
4
+ 'plugin.columns.layout': 'Layout',
5
+ }
@@ -0,0 +1,5 @@
1
+ import enLocale from './en.js'
2
+
3
+ declare module '../../../core/types.js' {
4
+ interface I18nMessages extends Record<keyof typeof enLocale, string> {}
5
+ }
@@ -0,0 +1,6 @@
1
+ declare const _default: {
2
+ 'plugin.columns.title': string;
3
+ 'plugin.columns.colPlaceholder': string;
4
+ 'plugin.columns.layout': string;
5
+ };
6
+ export default _default;
@@ -0,0 +1,5 @@
1
+ export default {
2
+ 'plugin.columns.title': 'Колонки',
3
+ 'plugin.columns.colPlaceholder': 'Колонка',
4
+ 'plugin.columns.layout': 'Макет',
5
+ }
@@ -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.