@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,399 @@
1
+ import { sanitizeHtml } from '../../core/sanitize.js'
2
+ import { resolvePath } from '../../shared/resolvePath.js'
3
+ import { BlockPluginAbstract } from '../BlockPluginAbstract.js'
4
+ import { validateTableData } from '../../shared/blockDataValidators.js'
5
+ import { mapTableTextFields } from '../../shared/mapTextFields.js'
6
+
7
+ const editorStyles = resolvePath('./table.css', import.meta.url)
8
+
9
+ // Tabler icon: table
10
+ 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 5a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v14a2 2 0 0 1 -2 2h-14a2 2 0 0 1 -2 -2v-14z"/><path d="M3 10h18"/><path d="M10 3v18"/></svg>'
11
+
12
+ // Tabler icons for settings
13
+ const ICON_ROW_ADD = '<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M20 6v4a1 1 0 0 1 -1 1h-14a1 1 0 0 1 -1 -1v-4a1 1 0 0 1 1 -1h14a1 1 0 0 1 1 1z"/><path d="M12 15l0 4"/><path d="M10 17l4 0"/></svg>'
14
+ const ICON_ROW_DEL = '<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M20 6v4a1 1 0 0 1 -1 1h-14a1 1 0 0 1 -1 -1v-4a1 1 0 0 1 1 -1h14a1 1 0 0 1 1 1z"/><path d="M10 17l4 0"/></svg>'
15
+ const ICON_COL_ADD = '<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="M6 4v16a1 1 0 0 0 1 1h4a1 1 0 0 0 1 -1v-16a1 1 0 0 0 -1 -1h-4a1 1 0 0 0 -1 1z"/><path d="M17 10l0 4"/><path d="M15 12l4 0"/></svg>'
16
+ const ICON_COL_DEL = '<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="M6 4v16a1 1 0 0 0 1 1h4a1 1 0 0 0 1 -1v-16a1 1 0 0 0 -1 -1h-4a1 1 0 0 0 -1 1z"/><path d="M15 12l4 0"/></svg>'
17
+ const ICON_HEADER = '<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 5a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v14a2 2 0 0 1 -2 2h-14a2 2 0 0 1 -2 -2v-14z"/><path d="M3 10h18"/><path d="M10 3v7"/></svg>'
18
+
19
+ /** Editable rich-text table with row, column, and heading controls. */
20
+ export class Table extends BlockPluginAbstract {
21
+ static isTextBlock = false
22
+ static styles = [editorStyles]
23
+ type = 'table'
24
+ icon = ICON
25
+ inlineTools = true
26
+ mapTextFields = mapTableTextFields
27
+ pasteConfig = {
28
+ tags: ['table'],
29
+ }
30
+
31
+ /**
32
+ * Return the localized toolbox label for this block.
33
+ * @returns {string}
34
+ */
35
+ get title() {
36
+ return this._t('title', 'Table')
37
+ }
38
+
39
+ /**
40
+ * Create the editable DOM owned by this block instance.
41
+ * @param {{ content?: string[][], withHeadings?: boolean }} data
42
+ * @param {import('../../core/types').BlockMutationContext} context
43
+ * @returns {HTMLElement}
44
+ */
45
+ render(data, context) {
46
+ const inputRows = Array.isArray(data?.content)
47
+ ? data.content.filter(Array.isArray)
48
+ : []
49
+ const rows = inputRows.length || 3
50
+ const cols = inputRows.find(row => row.length > 0)?.length || 3
51
+ const withHeadings = data?.withHeadings === true
52
+
53
+ const wrapper = document.createElement('div')
54
+ wrapper.classList.add('oe-table-wrapper')
55
+ wrapper.dataset.headings = String(withHeadings)
56
+
57
+ const table = document.createElement('table')
58
+ table.classList.add('oe-table')
59
+
60
+ for (let r = 0; r < rows; r++) {
61
+ const tr = document.createElement('tr')
62
+ for (let c = 0; c < cols; c++) {
63
+ const isHeader = withHeadings && r === 0
64
+ const cell = document.createElement(isHeader ? 'th' : 'td')
65
+ cell.classList.add('oe-table__cell')
66
+ cell.contentEditable = 'true'
67
+ const candidate = inputRows[r]?.[c]
68
+ const text = typeof candidate === 'string' ? candidate : ''
69
+ if (text) {
70
+ cell.innerHTML = sanitizeHtml(text)
71
+ }
72
+ tr.appendChild(cell)
73
+ }
74
+ table.appendChild(tr)
75
+ }
76
+
77
+ // Tab navigation between cells
78
+ table.addEventListener('keydown', (e) => {
79
+ if (e.key === 'Tab') {
80
+ if (this.#navigateCell(table, e.shiftKey ? -1 : 1)) {
81
+ e.preventDefault()
82
+ e.stopPropagation()
83
+ }
84
+ }
85
+ // Prevent Enter from creating new block — insert <br> instead
86
+ if (e.key === 'Enter' && !e.shiftKey) {
87
+ e.preventDefault()
88
+ e.stopPropagation()
89
+ context.mutate(() => {
90
+ const sel = window.getSelection()
91
+ if (sel && sel.rangeCount > 0) {
92
+ const range = sel.getRangeAt(0)
93
+ range.deleteContents()
94
+ const br = document.createElement('br')
95
+ range.insertNode(br)
96
+ range.setStartAfter(br)
97
+ range.collapse(true)
98
+ sel.removeAllRanges()
99
+ sel.addRange(range)
100
+ }
101
+ })
102
+ }
103
+ })
104
+
105
+ wrapper.appendChild(table)
106
+ return wrapper
107
+ }
108
+
109
+ /**
110
+ * Render block settings controls (add/remove row/col, toggle header).
111
+ * @param {HTMLElement} element
112
+ * @returns {HTMLElement[]}
113
+ */
114
+ renderSettings(element) {
115
+ const withHeadings = element.dataset.headings === 'true'
116
+ const t = (/** @type {string} */ key, /** @type {string} */ fallback) => this._t(key, fallback)
117
+ const defs = [
118
+ { icon: ICON_HEADER, label: t('toggleHeader', 'Toggle header'), action: 'header', active: withHeadings },
119
+ { icon: ICON_ROW_ADD, label: t('addRow', 'Add row'), action: 'row-add' },
120
+ { icon: ICON_ROW_DEL, label: t('deleteRow', 'Delete row'), action: 'row-del' },
121
+ { icon: ICON_COL_ADD, label: t('addColumn', 'Add column'), action: 'col-add' },
122
+ { icon: ICON_COL_DEL, label: t('deleteColumn', 'Delete column'), action: 'col-del' },
123
+ ]
124
+
125
+ return defs.map(item => {
126
+ const btn = document.createElement('li')
127
+ btn.setAttribute('role', 'menuitem')
128
+ btn.setAttribute('tabindex', '-1')
129
+ btn.className = 'oe-settings-menu__item'
130
+ if (item.active) btn.classList.add('oe-settings-menu__item--active')
131
+
132
+ const ic = document.createElement('span')
133
+ ic.className = 'oe-settings-menu__icon'
134
+ ic.innerHTML = item.icon
135
+ btn.appendChild(ic)
136
+
137
+ const lb = document.createElement('span')
138
+ lb.className = 'oe-settings-menu__label'
139
+ lb.textContent = item.label
140
+ btn.appendChild(lb)
141
+
142
+ btn.dataset.action = item.action
143
+ return btn
144
+ })
145
+ }
146
+
147
+ /**
148
+ * Handle settings action for table operations.
149
+ * @param {HTMLElement} element — the table wrapper
150
+ * @param {string} action
151
+ * @returns {null}
152
+ */
153
+ onSettingsAction(element, action) {
154
+ const table = element.querySelector('table')
155
+ if (!table) return null
156
+
157
+ switch (action) {
158
+ case 'header':
159
+ this.#toggleHeader(element, table)
160
+ break
161
+ case 'row-add':
162
+ this.#addRow(table)
163
+ break
164
+ case 'row-del':
165
+ this.#deleteRow(table)
166
+ break
167
+ case 'col-add':
168
+ this.#addColumn(table)
169
+ break
170
+ case 'col-del':
171
+ this.#deleteColumn(table)
172
+ break
173
+ }
174
+
175
+ return null
176
+ }
177
+
178
+ /**
179
+ * Serialize the current block DOM into document data.
180
+ * @param {HTMLElement} element
181
+ * @returns {{ content: string[][], withHeadings: boolean }}
182
+ */
183
+ save(element) {
184
+ const table = element.querySelector('table')
185
+ if (!table) return { content: [['']], withHeadings: false }
186
+
187
+ const content = []
188
+ for (const tr of table.rows) {
189
+ const row = []
190
+ for (const cell of tr.cells) {
191
+ row.push(cell.innerHTML.trim())
192
+ }
193
+ content.push(row)
194
+ }
195
+
196
+ return {
197
+ content,
198
+ withHeadings: element.dataset.headings === 'true',
199
+ }
200
+ }
201
+
202
+ /**
203
+ * Check whether serialized data satisfies this block's schema.
204
+ * @param {{ content?: string[][] }} data
205
+ * @returns {boolean}
206
+ */
207
+ validate(data) {
208
+ return validateTableData(data)
209
+ }
210
+
211
+ /**
212
+ * Extract neutral text that can initialize another block type.
213
+ * @param {HTMLElement} element
214
+ * @returns {{ text: string }}
215
+ */
216
+ exportData(element) {
217
+ const table = element.querySelector('table')
218
+ if (!table) return { text: '' }
219
+ const rows = [...table.rows].map(row => (
220
+ [...row.cells]
221
+ .map(cell => sanitizeHtml(cell.innerHTML.trim()))
222
+ .filter(Boolean)
223
+ .join(' — ')
224
+ )).filter(Boolean)
225
+ return { text: rows.join('<br>') }
226
+ }
227
+
228
+ /**
229
+ * Check whether the block has no meaningful user content.
230
+ * @param {HTMLElement} element
231
+ * @returns {boolean}
232
+ */
233
+ isEmpty(element) {
234
+ const table = element.querySelector('table')
235
+ if (!table) return true
236
+ for (const cell of table.querySelectorAll('td, th')) {
237
+ if ((cell.textContent?.trim().length ?? 0) > 0) return false
238
+ }
239
+ return true
240
+ }
241
+
242
+ /**
243
+ * Handle pasted table elements.
244
+ * @param {import('../../types').TagPasteEvent} event
245
+ * @returns {{ content: string[][], withHeadings: boolean } | null}
246
+ */
247
+ onPaste(event) {
248
+ if (event.type !== 'tag') return null
249
+ const table = event.element.tagName === 'TABLE'
250
+ ? event.element
251
+ : event.element.querySelector('table')
252
+ if (!table) return null
253
+
254
+ const content = []
255
+ const rows = table.querySelectorAll('tr')
256
+ for (const tr of rows) {
257
+ const row = []
258
+ for (const cell of tr.querySelectorAll('td, th')) {
259
+ row.push(cell.innerHTML.trim())
260
+ }
261
+ if (row.length > 0) content.push(row)
262
+ }
263
+ if (content.length === 0) return null
264
+ const firstContentRow = [...rows].find(row => row.querySelector('td, th'))
265
+ const withHeadings = !!firstContentRow
266
+ && [...firstContentRow.querySelectorAll('td, th')].some(cell => cell.tagName === 'TH')
267
+ return { content, withHeadings }
268
+ }
269
+
270
+ // ── Private — table operations ─────────────────────────────────────────────
271
+
272
+ /**
273
+ * Toggle header row (th ↔ td for first row).
274
+ * @param {HTMLElement} wrapper
275
+ * @param {HTMLTableElement} table
276
+ * @returns {void}
277
+ */
278
+ #toggleHeader(wrapper, table) {
279
+ const firstRow = table.rows[0]
280
+ if (!firstRow) return
281
+
282
+ const isHeader = wrapper.dataset.headings === 'true'
283
+ const newIsHeader = !isHeader
284
+ wrapper.dataset.headings = String(newIsHeader)
285
+
286
+ const newTag = newIsHeader ? 'th' : 'td'
287
+ for (const cell of [...firstRow.cells]) {
288
+ const newCell = document.createElement(newTag)
289
+ newCell.className = 'oe-table__cell'
290
+ newCell.contentEditable = 'true'
291
+ newCell.innerHTML = cell.innerHTML
292
+ cell.replaceWith(newCell)
293
+ }
294
+ }
295
+
296
+ /**
297
+ * Add a row at the end.
298
+ * @param {HTMLTableElement} table
299
+ * @returns {void}
300
+ */
301
+ #addRow(table) {
302
+ const cols = table.rows[0]?.cells.length || 1
303
+ const tr = document.createElement('tr')
304
+ for (let c = 0; c < cols; c++) {
305
+ const td = document.createElement('td')
306
+ td.className = 'oe-table__cell'
307
+ td.contentEditable = 'true'
308
+ tr.appendChild(td)
309
+ }
310
+ table.appendChild(tr)
311
+ }
312
+
313
+ /**
314
+ * Delete the last row (keep at least 1).
315
+ * @param {HTMLTableElement} table
316
+ * @returns {void}
317
+ */
318
+ #deleteRow(table) {
319
+ if (table.rows.length <= 1) return
320
+ table.deleteRow(table.rows.length - 1)
321
+ }
322
+
323
+ /**
324
+ * Add a column at the end.
325
+ * @param {HTMLTableElement} table
326
+ * @returns {void}
327
+ */
328
+ #addColumn(table) {
329
+ const wrapper = /** @type {HTMLElement | null} */ (table.closest('.oe-table-wrapper'))
330
+ const isHeader = wrapper ? wrapper.dataset.headings === 'true' : false
331
+
332
+ for (let r = 0; r < table.rows.length; r++) {
333
+ const row = table.rows[r]
334
+ if (!row) continue
335
+ const tag = (isHeader && r === 0) ? 'th' : 'td'
336
+ const cell = document.createElement(tag)
337
+ cell.className = 'oe-table__cell'
338
+ cell.contentEditable = 'true'
339
+ row.appendChild(cell)
340
+ }
341
+ }
342
+
343
+ /**
344
+ * Delete the last column (keep at least 1).
345
+ * @param {HTMLTableElement} table
346
+ * @returns {void}
347
+ */
348
+ #deleteColumn(table) {
349
+ const cols = table.rows[0]?.cells.length || 0
350
+ if (cols <= 1) return
351
+
352
+ for (const row of table.rows) {
353
+ row.deleteCell(row.cells.length - 1)
354
+ }
355
+ }
356
+
357
+ /**
358
+ * Navigate to adjacent cell.
359
+ * @param {HTMLTableElement} table
360
+ * @param {number} direction — 1 for forward, -1 for backward
361
+ * @returns {boolean} Whether focus moved to another cell.
362
+ */
363
+ #navigateCell(table, direction) {
364
+ const cells = /** @type {HTMLElement[]} */ ([...table.querySelectorAll('td, th')])
365
+ const sel = window.getSelection()
366
+ if (!sel || sel.rangeCount === 0) return false
367
+
368
+ const activeCell = /** @type {HTMLElement | null} */ (
369
+ sel.anchorNode?.nodeType === Node.ELEMENT_NODE
370
+ ? /** @type {HTMLElement} */ (sel.anchorNode).closest('td, th')
371
+ : sel.anchorNode?.parentElement?.closest('td, th')
372
+ )
373
+
374
+ if (!activeCell || !table.contains(activeCell)) {
375
+ const first = cells[0]
376
+ if (!first) return false
377
+ first.focus()
378
+ return true
379
+ }
380
+
381
+ const idx = cells.indexOf(activeCell)
382
+ const next = cells[idx + direction]
383
+ if (next) {
384
+ next.focus()
385
+ // Place caret at start or end
386
+ const range = document.createRange()
387
+ if (direction > 0) {
388
+ range.setStart(next, 0)
389
+ } else {
390
+ range.selectNodeContents(next)
391
+ range.collapse(false)
392
+ }
393
+ sel.removeAllRanges()
394
+ sel.addRange(range)
395
+ return true
396
+ }
397
+ return false
398
+ }
399
+ }
@@ -0,0 +1,9 @@
1
+ declare const _default: {
2
+ 'plugin.table.title': string;
3
+ 'plugin.table.toggleHeader': string;
4
+ 'plugin.table.addRow': string;
5
+ 'plugin.table.deleteRow': string;
6
+ 'plugin.table.addColumn': string;
7
+ 'plugin.table.deleteColumn': string;
8
+ };
9
+ export default _default;
@@ -0,0 +1,8 @@
1
+ export default {
2
+ 'plugin.table.title': 'Table',
3
+ 'plugin.table.toggleHeader': 'Toggle header',
4
+ 'plugin.table.addRow': 'Add row',
5
+ 'plugin.table.deleteRow': 'Delete row',
6
+ 'plugin.table.addColumn': 'Add column',
7
+ 'plugin.table.deleteColumn': 'Delete column',
8
+ }
@@ -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,9 @@
1
+ declare const _default: {
2
+ 'plugin.table.title': string;
3
+ 'plugin.table.toggleHeader': string;
4
+ 'plugin.table.addRow': string;
5
+ 'plugin.table.deleteRow': string;
6
+ 'plugin.table.addColumn': string;
7
+ 'plugin.table.deleteColumn': string;
8
+ };
9
+ export default _default;
@@ -0,0 +1,8 @@
1
+ export default {
2
+ 'plugin.table.title': 'Таблица',
3
+ 'plugin.table.toggleHeader': 'Переключить заголовок',
4
+ 'plugin.table.addRow': 'Добавить строку',
5
+ 'plugin.table.deleteRow': 'Удалить строку',
6
+ 'plugin.table.addColumn': 'Добавить столбец',
7
+ 'plugin.table.deleteColumn': 'Удалить столбец',
8
+ }
@@ -0,0 +1,58 @@
1
+ .oe-table-wrapper {
2
+ overflow-x: auto;
3
+ -webkit-overflow-scrolling: touch;
4
+ }
5
+
6
+ .oe-table {
7
+ width: 100%;
8
+ border-collapse: collapse;
9
+ border: 1px solid var(--oe-border, #1a1a1a);
10
+ border-radius: var(--oe-radius-sm, 4px);
11
+ font-size: var(--oe-font-size, 15px);
12
+ line-height: var(--oe-line-height, 1.7);
13
+ color: var(--oe-text-1, #f5f5f5);
14
+ font-family: var(--oe-font, inherit);
15
+ }
16
+
17
+ .oe-table__cell {
18
+ padding: 8px 12px;
19
+ border: 1px solid var(--oe-border, #1a1a1a);
20
+ outline: none;
21
+ word-break: break-word;
22
+ white-space: pre-wrap;
23
+ vertical-align: top;
24
+ min-width: 80px;
25
+ }
26
+
27
+ .oe-table__cell:focus {
28
+ background: var(--oe-accent-alpha, rgba(67, 87, 180, 0.15));
29
+ }
30
+
31
+ /* Header row */
32
+ .oe-table-wrapper[data-headings="true"] th.oe-table__cell {
33
+ background: var(--oe-surface, #0a0a0a);
34
+ font-weight: 600;
35
+ color: var(--oe-text-1, #f5f5f5);
36
+ }
37
+
38
+ /* Inline formatting inside cells */
39
+ .oe-table__cell b,
40
+ .oe-table__cell strong {
41
+ font-weight: 600;
42
+ }
43
+
44
+ .oe-table__cell a {
45
+ color: var(--oe-text-2, #c4c4c4);
46
+ text-decoration: underline;
47
+ text-underline-offset: 3px;
48
+ }
49
+
50
+ .oe-table__cell a:hover {
51
+ color: var(--oe-text-1, #f5f5f5);
52
+ }
53
+
54
+ .oe-table__cell mark {
55
+ padding: 1px 4px;
56
+ background: var(--oe-mark-bg, rgba(245, 166, 35, 0.2));
57
+ border-radius: 3px;
58
+ }
@@ -0,0 +1,56 @@
1
+ # Toggle block plugin
2
+
3
+ Collapsible block with editable title, rich content, and persistent open state.
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 { Toggle } from '@shelamkoff/rector/plugins/toggle'
14
+ import '@shelamkoff/rector/styles/editor.css'
15
+
16
+ const editor = createEditor({
17
+ holder: document.querySelector('#editor'),
18
+ plugins: [new Toggle()],
19
+ })
20
+ ```
21
+
22
+ The registered block type is `toggle`. 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
+ { "title": "Details", "content": "Hidden text", "open": false }
28
+ ```
29
+
30
+ ### Field reference
31
+
32
+ | Field | Required | Meaning and constraints |
33
+ | --- | --- | --- |
34
+ | `title` | yes | String containing sanitized inline HTML; it may be empty. |
35
+ | `content` | yes | String containing sanitized inline HTML; it may be empty. |
36
+ | `open` | no | Boolean initial disclosure state; defaults to `false` when omitted. |
37
+
38
+ At least one of `title` and `content` must be non-blank. The persisted `open` value lets the renderer reproduce the chosen initial state.
39
+
40
+ ## Configuration
41
+
42
+ 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.
43
+
44
+ ## Capabilities
45
+
46
+ Inline formatting; editable title/content; merge; persistent disclosure state; keyboard-accessible renderer.
47
+
48
+ ## Undo, lifecycle, and styles
49
+
50
+ 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.
51
+
52
+ Do not remove the editor holder without first calling `editor.destroy()`.
53
+
54
+ ## Document output
55
+
56
+ Use the matching renderer from `@shelamkoff/rector/renderer/renderers/toggle`. The VitePress guide documents configuration, commands and history, extension contracts, document migrations, styling, security, and lifecycle in a sequential form.
@@ -0,0 +1,57 @@
1
+ # Блочный плагин Toggle
2
+
3
+ Сворачиваемый блок с заголовком, форматируемым содержимым и сохраняемым состоянием.
4
+
5
+ ## Установка и регистрация
6
+
7
+ ```bash
8
+ npm install @shelamkoff/rector
9
+ ```
10
+
11
+ ```js
12
+ import { createEditor } from '@shelamkoff/rector'
13
+ import { Toggle } from '@shelamkoff/rector/plugins/toggle'
14
+ import '@shelamkoff/rector/styles/editor.css'
15
+
16
+ const editor = createEditor({
17
+ holder: document.querySelector('#editor'),
18
+ plugins: [new Toggle()],
19
+ })
20
+ ```
21
+
22
+ Тип блока — `toggle`. Класс также экспортируется общей точкой входа `@shelamkoff/rector/plugins` и может загружаться по типу документа через `@shelamkoff/rector/plugins/async`.
23
+
24
+ ## Данные
25
+
26
+ ```json
27
+ { "title": "Подробности", "content": "Скрытый текст", "open": false }
28
+ ```
29
+
30
+ ### Поля данных
31
+
32
+ | Поле | Обязательно | Назначение и ограничения |
33
+ | --- | --- | --- |
34
+ | `title` | да | Строка с очищенным внутристрочным HTML; может быть пустой. |
35
+ | `content` | да | Строка с очищенным внутристрочным HTML; может быть пустой. |
36
+ | `open` | нет | Логическое значение исходного состояния раскрытия; при отсутствии считается `false`. |
37
+
38
+ Хотя бы одно из полей `title` и `content` должно быть непустым. Сохранённое значение `open` позволяет рендереру воспроизвести выбранное исходное состояние.
39
+
40
+ ## Конфигурация
41
+
42
+ Каждый встроенный блочный плагин принимает два параметра владения стилями: `injectStyles?: boolean` по умолчанию равен `true`; укажите `false`, если приложение само включает CSS этого плагина. `css?: string` добавляет URL таблицы стилей приложения после стандартной, а при отключённой стандартной инъекции служит URL замены.
43
+
44
+
45
+ ## Возможности
46
+
47
+ Форматирование; редактирование заголовка и содержимого; объединение; сохраняемое раскрытие; клавиатурная доступность.
48
+
49
+ ## История, жизненный цикл и стили
50
+
51
+ Действия плагина входят в конвейер команд через предоставленный контекст `mutate()`, поэтому одно завершённое действие создаёт один шаг отмены и повтора. Редактор подсчитывает владельцев объявленных URL стилей. Удаление блока вызывает его метод освобождения ресурсов; `editor.destroy()` освобождает оставшиеся блоки и общие ресурсы.
52
+
53
+ Не удаляйте контейнер редактора до вызова `editor.destroy()`.
54
+
55
+ ## Вывод документа
56
+
57
+ Используйте фабричную функцию из `@shelamkoff/rector/renderer/renderers/toggle`. Последовательное руководство VitePress описывает проверку данных, миграции, разработку расширений, диагностику, безопасность и стили.
@@ -0,0 +1,69 @@
1
+ import type {} from './locale/keys.js'
2
+ /** Expandable rich-text block with an editable title and body. */
3
+ export class Toggle 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 mapToggleTextFields;
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 {{ title?: string, content?: string, open?: boolean }} data
19
+ * @param {import('../../core/types.js').BlockMutationContext} context
20
+ * @returns {HTMLElement}
21
+ */
22
+ render(data: {
23
+ title?: string;
24
+ content?: string;
25
+ open?: boolean;
26
+ }, context: import("../../core/types.js").BlockMutationContext): HTMLElement;
27
+ /**
28
+ * Serialize the current block DOM into document data.
29
+ * @param {HTMLElement} element
30
+ * @returns {{ title: string, content: string, open: boolean }}
31
+ */
32
+ save(element: HTMLElement): {
33
+ title: string;
34
+ content: string;
35
+ open: boolean;
36
+ };
37
+ /**
38
+ * Check whether serialized data satisfies this block's schema.
39
+ * @param {Record<string, unknown>} data @returns {boolean}
40
+ */
41
+ validate(data: Record<string, unknown>): boolean;
42
+ /**
43
+ * Check whether the block has no meaningful user content.
44
+ * @param {HTMLElement} element @returns {boolean}
45
+ */
46
+ isEmpty(element: HTMLElement): boolean;
47
+ /**
48
+ * Extract neutral rich text that can initialize another block type.
49
+ * @param {HTMLElement} element @returns {{ text: string }}
50
+ */
51
+ exportData(element: HTMLElement): {
52
+ text: string;
53
+ };
54
+ /**
55
+ * Merge incoming text into the current block.
56
+ * @param {HTMLElement} element
57
+ * @param {Record<string, unknown>} data
58
+ * @returns {void}
59
+ */
60
+ merge(element: HTMLElement, data: Record<string, unknown>): void;
61
+ /**
62
+ * Release state owned by one rendered block.
63
+ * @param {HTMLElement} element
64
+ * @returns {void}
65
+ */
66
+ destroy(element: HTMLElement): void;
67
+ }
68
+ import { BlockPluginAbstract } from '../BlockPluginAbstract.js';
69
+ import { mapToggleTextFields } from '../../shared/mapTextFields.js';