@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,82 @@
1
+ /**
2
+ * Intentional public block surface. Structural commands delegate to the
3
+ * manager, while returned objects never expose manager-invariant mutators.
4
+ */
5
+ export class EditorBlocksApi {
6
+ /**
7
+ * @param {import('./types.js').IBlockManager} blocks
8
+ * @param {import('./types.js').IEventBus} events
9
+ */
10
+ constructor(blocks: import("./types.js").IBlockManager, events: import("./types.js").IEventBus);
11
+ getBlockByIndex(index: any): PublicBlockView;
12
+ getBlockById(id: any): PublicBlockView;
13
+ getCurrentBlock(): PublicBlockView;
14
+ getCurrentIndex(): number;
15
+ getBlockCount(): number;
16
+ getBlockIndex(id: any): number;
17
+ getSelectedBlocks(): PublicBlockView[];
18
+ hasSelectedBlocks(): boolean;
19
+ /** Focus/navigation state is safe to expose as an explicit command. */
20
+ setCurrentIndex(index: any): void;
21
+ /** @param {string[]} blockIds */
22
+ selectBlocks(blockIds: string[]): void;
23
+ clearSelection(): void;
24
+ insert(type: any, data: any, index: any, id: any, inline: any): PublicBlockView;
25
+ remove(index: any): void;
26
+ move(fromIndex: any, toIndex: any): void;
27
+ convert(index: any, type: any, data: any): PublicBlockView;
28
+ [Symbol.iterator](): Generator<PublicBlockView, void, unknown>;
29
+ #private;
30
+ }
31
+ /** Public subscription-only facade over the internal mutable event bus. */
32
+ export class EditorEventSubscriptions {
33
+ /** @param {import('./types.js').IEventBus} events */
34
+ constructor(events: import("./types.js").IEventBus);
35
+ on(event: any, handler: any): () => void;
36
+ off(event: any, handler: any): void;
37
+ once(event: any, handler: any): () => void;
38
+ #private;
39
+ }
40
+ /** Minimal consumer handle; the composition facade remains core-internal. */
41
+ export class EditorHandle {
42
+ /** @param {import('./EditorFacade.js').EditorFacade} facade */
43
+ constructor(facade: import("./EditorFacade.js").EditorFacade);
44
+ get isReady(): boolean;
45
+ get blocks(): EditorBlocksApi;
46
+ get events(): EditorEventSubscriptions;
47
+ get rootElement(): HTMLElement;
48
+ get readOnly(): boolean;
49
+ get canUndo(): boolean;
50
+ get canRedo(): boolean;
51
+ save(): import("./types.js").EditorDocument;
52
+ render(data: any): void;
53
+ clear(): void;
54
+ focus(): void;
55
+ undo(): boolean;
56
+ redo(): boolean;
57
+ setReadOnly(readOnly: any): void;
58
+ insertInlinePlugin(type: any, data: any): boolean;
59
+ destroy(): void;
60
+ #private;
61
+ }
62
+ /**
63
+ * Safe view over an internal Block. It deliberately omits manager-integrity
64
+ * methods such as destroy(), markDirty(), merge() and replaceContentElement().
65
+ */
66
+ declare class PublicBlockView {
67
+ /** @param {import('./types.js').IBlock} block */
68
+ constructor(block: import("./types.js").IBlock);
69
+ get id(): string;
70
+ get type(): string;
71
+ get element(): HTMLElement;
72
+ get contentElement(): HTMLElement;
73
+ get focused(): boolean;
74
+ get selected(): boolean;
75
+ get hasInlineTools(): boolean;
76
+ get canMerge(): boolean;
77
+ get version(): number;
78
+ focus(): void;
79
+ isEmpty(): boolean;
80
+ #private;
81
+ }
82
+ export {};
@@ -0,0 +1,158 @@
1
+ import { EditorEvent } from './editorEvents.js'
2
+
3
+ /**
4
+ * Safe view over an internal Block. It deliberately omits manager-integrity
5
+ * methods such as destroy(), markDirty(), merge() and replaceContentElement().
6
+ */
7
+ class PublicBlockView {
8
+ /** @type {import('./types').IBlock} */
9
+ #block
10
+
11
+ /** @param {import('./types').IBlock} block */
12
+ constructor(block) {
13
+ this.#block = block
14
+ }
15
+
16
+ get id() { return this.#block.id }
17
+ get type() { return this.#block.type }
18
+ get element() { return this.#block.element }
19
+ get contentElement() { return this.#block.contentElement }
20
+ get focused() { return this.#block.focused }
21
+ get selected() { return this.#block.selected }
22
+ get hasInlineTools() { return this.#block.hasInlineTools }
23
+ get canMerge() { return this.#block.canMerge }
24
+ get version() { return this.#block.version }
25
+ focus() { this.#block.focus() }
26
+ isEmpty() { return this.#block.isEmpty() }
27
+ }
28
+
29
+ /**
30
+ * Intentional public block surface. Structural commands delegate to the
31
+ * manager, while returned objects never expose manager-invariant mutators.
32
+ */
33
+ export class EditorBlocksApi {
34
+ /** @type {import('./types').IBlockManager} */
35
+ #blocks
36
+
37
+ /** @type {import('./types').IEventBus} */
38
+ #events
39
+
40
+ /** @type {WeakMap<import('./types').IBlock, PublicBlockView>} */
41
+ #views = new WeakMap()
42
+
43
+ /**
44
+ * @param {import('./types').IBlockManager} blocks
45
+ * @param {import('./types').IEventBus} events
46
+ */
47
+ constructor(blocks, events) {
48
+ this.#blocks = blocks
49
+ this.#events = events
50
+ }
51
+
52
+ /** @returns {string[]} */
53
+ #selectedBlockIds() {
54
+ return this.#blocks.getSelectedBlocks().map(block => block.id)
55
+ }
56
+
57
+ /** @param {string[]} previousBlockIds */
58
+ #emitSelectionChanged(previousBlockIds) {
59
+ const blockIds = this.#selectedBlockIds()
60
+ const unchanged = blockIds.length === previousBlockIds.length
61
+ && blockIds.every((id, index) => id === previousBlockIds[index])
62
+ if (!unchanged) this.#events.emit(EditorEvent.BLOCK_SELECTED, { blockIds })
63
+ }
64
+
65
+ /** @param {import('./types').IBlock | undefined} block */
66
+ #view(block) {
67
+ if (!block) return undefined
68
+ let view = this.#views.get(block)
69
+ if (!view) {
70
+ view = new PublicBlockView(block)
71
+ this.#views.set(block, view)
72
+ }
73
+ return view
74
+ }
75
+
76
+ getBlockByIndex(index) { return this.#view(this.#blocks.getBlockByIndex(index)) }
77
+ getBlockById(id) { return this.#view(this.#blocks.getBlockById(id)) }
78
+ getCurrentBlock() { return this.#view(this.#blocks.getCurrentBlock()) }
79
+ getCurrentIndex() { return this.#blocks.getCurrentIndex() }
80
+ getBlockCount() { return this.#blocks.getBlockCount() }
81
+ getBlockIndex(id) { return this.#blocks.getBlockIndex(id) }
82
+ getSelectedBlocks() { return this.#blocks.getSelectedBlocks().map(block => this.#view(block)) }
83
+ hasSelectedBlocks() { return this.#blocks.hasSelectedBlocks() }
84
+
85
+ /** Focus/navigation state is safe to expose as an explicit command. */
86
+ setCurrentIndex(index) { this.#blocks.setCurrentIndex(index) }
87
+
88
+ /** @param {string[]} blockIds */
89
+ selectBlocks(blockIds) {
90
+ const previousBlockIds = this.#selectedBlockIds()
91
+ const selected = new Set(blockIds)
92
+ for (const block of this.#blocks) block.selected = selected.has(block.id)
93
+ this.#emitSelectionChanged(previousBlockIds)
94
+ }
95
+
96
+ clearSelection() {
97
+ const previousBlockIds = this.#selectedBlockIds()
98
+ this.#blocks.clearSelection()
99
+ this.#emitSelectionChanged(previousBlockIds)
100
+ }
101
+
102
+ insert(type, data, index, id, inline) {
103
+ return this.#view(this.#blocks.insert(type, data, index, id, inline))
104
+ }
105
+
106
+ remove(index) { this.#blocks.remove(index) }
107
+ move(fromIndex, toIndex) { this.#blocks.move(fromIndex, toIndex) }
108
+ convert(index, type, data) { return this.#view(this.#blocks.convert(index, type, data)) }
109
+
110
+ *[Symbol.iterator]() {
111
+ for (const block of this.#blocks) yield this.#view(block)
112
+ }
113
+ }
114
+
115
+ /** Public subscription-only facade over the internal mutable event bus. */
116
+ export class EditorEventSubscriptions {
117
+ /** @type {import('./types').IEventBus} */
118
+ #events
119
+
120
+ /** @param {import('./types').IEventBus} events */
121
+ constructor(events) {
122
+ this.#events = events
123
+ }
124
+
125
+ on(event, handler) { return this.#events.on(event, handler) }
126
+ off(event, handler) { this.#events.off(event, handler) }
127
+ once(event, handler) { return this.#events.once(event, handler) }
128
+ }
129
+
130
+ /** Minimal consumer handle; the composition facade remains core-internal. */
131
+ export class EditorHandle {
132
+ /** @type {import('./EditorFacade').EditorFacade} */
133
+ #facade
134
+
135
+ /** @param {import('./EditorFacade').EditorFacade} facade */
136
+ constructor(facade) { this.#facade = facade }
137
+
138
+ #assertActive() {
139
+ if (!this.#facade.isReady) throw new Error('Editor instance is destroyed')
140
+ }
141
+
142
+ get isReady() { return this.#facade.isReady }
143
+ get blocks() { this.#assertActive(); return this.#facade.blocks }
144
+ get events() { this.#assertActive(); return this.#facade.events }
145
+ get rootElement() { this.#assertActive(); return this.#facade.rootElement }
146
+ get readOnly() { this.#assertActive(); return this.#facade.readOnly }
147
+ get canUndo() { this.#assertActive(); return this.#facade.canUndo }
148
+ get canRedo() { this.#assertActive(); return this.#facade.canRedo }
149
+ save() { this.#assertActive(); return this.#facade.save() }
150
+ render(data) { this.#assertActive(); this.#facade.render(data) }
151
+ clear() { this.#assertActive(); this.#facade.clear() }
152
+ focus() { this.#assertActive(); this.#facade.focus() }
153
+ undo() { this.#assertActive(); return this.#facade.undo() }
154
+ redo() { this.#assertActive(); return this.#facade.redo() }
155
+ setReadOnly(readOnly) { this.#assertActive(); this.#facade.setReadOnly(readOnly) }
156
+ insertInlinePlugin(type, data) { this.#assertActive(); return this.#facade.insertInlinePlugin(type, data) }
157
+ destroy() { if (this.#facade.isReady) this.#facade.destroy() }
158
+ }
@@ -0,0 +1,50 @@
1
+ /** @typedef {import('./types.js').ISelectionManager} ISelectionManagerContract */
2
+ /** @implements {ISelectionManagerContract} */
3
+ export class SelectionManager implements ISelectionManagerContract {
4
+ /**
5
+ * @param {HTMLElement} editorEl
6
+ * @param {import('./types.js').IBlockReader} blocks
7
+ */
8
+ constructor(editorEl: HTMLElement, blocks: import("./types.js").IBlockReader);
9
+ /**
10
+ * Get the current caret position info.
11
+ * @returns {import('./types.js').CaretPosition | null}
12
+ */
13
+ getCaret(): import("./types.js").CaretPosition | null;
14
+ /**
15
+ * Set the caret to the start or end of a block's content.
16
+ * @param {string} blockId
17
+ * @param {'start' | 'end'} position
18
+ */
19
+ setCaretToBlock(blockId: string, position: "start" | "end"): void;
20
+ /**
21
+ * Set the caret to a specific text offset within a block's content.
22
+ * Walks text nodes to find the correct position.
23
+ * @param {string} blockId
24
+ * @param {number} textOffset — character offset from start of block text
25
+ */
26
+ setCaretToOffset(blockId: string, textOffset: number): void;
27
+ /**
28
+ * Get the current text selection info (if any text is selected).
29
+ * @returns {import('./types.js').InlineSelection | null}
30
+ */
31
+ getSelection(): import("./types.js").InlineSelection | null;
32
+ /**
33
+ * Check if the caret is at the very start of the current block's content.
34
+ * @returns {boolean}
35
+ */
36
+ isAtStart(): boolean;
37
+ /**
38
+ * Check if the caret is at the very end of the current block's content.
39
+ * @returns {boolean}
40
+ */
41
+ isAtEnd(): boolean;
42
+ /**
43
+ * Extract the HTML content after the caret in the current block.
44
+ * Used for splitting blocks (Enter key) — intentionally mutates DOM.
45
+ * @returns {string | null}
46
+ */
47
+ extractFragmentAfterCaret(): string | null;
48
+ #private;
49
+ }
50
+ export type ISelectionManagerContract = import("./types.js").ISelectionManager;
@@ -0,0 +1,205 @@
1
+ import { getTextOffset, firstTextNode, lastTextNode, editableTextWalker } from './textOffset.js'
2
+
3
+ /** @typedef {import('./types').ISelectionManager} ISelectionManagerContract */
4
+ /** @implements {ISelectionManagerContract} */
5
+ export class SelectionManager {
6
+ /** @type {import('./types').IBlockReader} */
7
+ #blocks
8
+
9
+ /** @type {HTMLElement} */
10
+ #editorEl
11
+
12
+ /**
13
+ * @param {HTMLElement} editorEl
14
+ * @param {import('./types').IBlockReader} blocks
15
+ */
16
+ constructor(editorEl, blocks) {
17
+ this.#editorEl = editorEl
18
+ this.#blocks = blocks
19
+ }
20
+
21
+ /**
22
+ * Get the current native range if it's inside the editor.
23
+ * @returns {Range | null}
24
+ */
25
+ #getRange() {
26
+ const sel = window.getSelection()
27
+ if (!sel || sel.rangeCount === 0) return null
28
+ const range = sel.getRangeAt(0)
29
+ if (!this.#editorEl.contains(range.startContainer)) return null
30
+ return range
31
+ }
32
+
33
+ /**
34
+ * Get the current caret position info.
35
+ * @returns {import('./types').CaretPosition | null}
36
+ */
37
+ getCaret() {
38
+ const range = this.#getRange()
39
+ if (!range) return null
40
+
41
+ const block = this.#blocks.getBlockByChildNode(range.startContainer)
42
+ if (!block) return null
43
+
44
+ return {
45
+ blockId: block.id,
46
+ offset: getTextOffset(block.contentElement, range.startContainer, range.startOffset),
47
+ }
48
+ }
49
+
50
+ /**
51
+ * Set the caret to the start or end of a block's content.
52
+ * @param {string} blockId
53
+ * @param {'start' | 'end'} position
54
+ */
55
+ setCaretToBlock(blockId, position) {
56
+ const block = this.#blocks.getBlockById(blockId)
57
+ if (!block) return
58
+
59
+ const element = block.contentElement
60
+ const sel = window.getSelection()
61
+ if (!sel) return
62
+
63
+ if (!element.hasChildNodes()) {
64
+ element.focus()
65
+ return
66
+ }
67
+
68
+ const range = document.createRange()
69
+
70
+ if (position === 'start') {
71
+ const node = firstTextNode(element) || element
72
+ range.setStart(node, 0)
73
+ range.collapse(true)
74
+ } else {
75
+ const node = lastTextNode(element) || element
76
+ const offset = node.nodeType === Node.TEXT_NODE
77
+ ? (node.textContent?.length ?? 0)
78
+ : node.childNodes.length
79
+ range.setStart(node, offset)
80
+ range.collapse(true)
81
+ }
82
+
83
+ sel.removeAllRanges()
84
+ sel.addRange(range)
85
+ }
86
+
87
+ /**
88
+ * Set the caret to a specific text offset within a block's content.
89
+ * Walks text nodes to find the correct position.
90
+ * @param {string} blockId
91
+ * @param {number} textOffset — character offset from start of block text
92
+ */
93
+ setCaretToOffset(blockId, textOffset) {
94
+ const block = this.#blocks.getBlockById(blockId)
95
+ if (!block) return
96
+
97
+ const element = block.contentElement
98
+ const sel = window.getSelection()
99
+ if (!sel) return
100
+
101
+ if (!element.hasChildNodes()) {
102
+ element.focus()
103
+ return
104
+ }
105
+
106
+ const walker = editableTextWalker(element)
107
+ let remaining = textOffset
108
+
109
+ while (walker.nextNode()) {
110
+ const node = walker.currentNode
111
+ const len = node.textContent?.length ?? 0
112
+
113
+ if (remaining <= len) {
114
+ const range = document.createRange()
115
+ range.setStart(node, remaining)
116
+ range.collapse(true)
117
+ sel.removeAllRanges()
118
+ sel.addRange(range)
119
+ return
120
+ }
121
+ remaining -= len
122
+ }
123
+
124
+ // Offset exceeds total text — clamp to end (can happen after merge/undo)
125
+ this.setCaretToBlock(blockId, 'end')
126
+ }
127
+
128
+ /**
129
+ * Get the current text selection info (if any text is selected).
130
+ * @returns {import('./types').InlineSelection | null}
131
+ */
132
+ getSelection() {
133
+ const sel = window.getSelection()
134
+ if (!sel || sel.rangeCount === 0 || sel.isCollapsed) return null
135
+
136
+ const range = sel.getRangeAt(0)
137
+ if (!this.#editorEl.contains(range.startContainer)) return null
138
+
139
+ const block = this.#blocks.getBlockByChildNode(range.startContainer)
140
+ if (!block) return null
141
+
142
+ return {
143
+ blockId: block.id,
144
+ range: range.cloneRange(),
145
+ text: sel.toString(),
146
+ }
147
+ }
148
+
149
+ /**
150
+ * Check if the caret is at the very start of the current block's content.
151
+ * @returns {boolean}
152
+ */
153
+ isAtStart() {
154
+ const sel = window.getSelection()
155
+ if (!sel || sel.rangeCount === 0 || !sel.isCollapsed) return false
156
+
157
+ const range = sel.getRangeAt(0)
158
+ const block = this.#blocks.getBlockByChildNode(range.startContainer)
159
+ if (!block) return false
160
+
161
+ return getTextOffset(block.contentElement, range.startContainer, range.startOffset) === 0
162
+ }
163
+
164
+ /**
165
+ * Check if the caret is at the very end of the current block's content.
166
+ * @returns {boolean}
167
+ */
168
+ isAtEnd() {
169
+ const sel = window.getSelection()
170
+ if (!sel || sel.rangeCount === 0 || !sel.isCollapsed) return false
171
+
172
+ const range = sel.getRangeAt(0)
173
+ const block = this.#blocks.getBlockByChildNode(range.startContainer)
174
+ if (!block) return false
175
+
176
+ const totalLength = block.contentElement.textContent?.length ?? 0
177
+ const currentOffset = getTextOffset(block.contentElement, range.startContainer, range.startOffset)
178
+
179
+ return currentOffset >= totalLength
180
+ }
181
+
182
+ /**
183
+ * Extract the HTML content after the caret in the current block.
184
+ * Used for splitting blocks (Enter key) — intentionally mutates DOM.
185
+ * @returns {string | null}
186
+ */
187
+ extractFragmentAfterCaret() {
188
+ const sel = window.getSelection()
189
+ if (!sel || sel.rangeCount === 0) return null
190
+
191
+ const range = sel.getRangeAt(0)
192
+ const block = this.#blocks.getBlockByChildNode(range.startContainer)
193
+ if (!block) return null
194
+
195
+ const endRange = document.createRange()
196
+ endRange.selectNodeContents(block.contentElement)
197
+ endRange.setStart(range.startContainer, range.startOffset)
198
+
199
+ const fragment = endRange.extractContents()
200
+ const temp = document.createElement('div')
201
+ temp.appendChild(fragment)
202
+
203
+ return temp.innerHTML
204
+ }
205
+ }
@@ -0,0 +1,29 @@
1
+ export class ShortcutRegistry {
2
+ /**
3
+ * Register a keyboard shortcut.
4
+ * Combo format: 'Mod+B', 'Mod+Shift+Z', 'Tab', 'Shift+Tab', 'Escape'
5
+ * 'Mod' maps to Cmd (Mac) / Ctrl (other).
6
+ *
7
+ * @param {string} combo — normalized combo string
8
+ * @param {(e: KeyboardEvent) => void} handler
9
+ * @param {{ scope?: 'content' | 'editor' }} [options]
10
+ * @returns {() => void} Unregister function
11
+ */
12
+ register(combo: string, handler: (e: KeyboardEvent) => void, options?: {
13
+ scope?: "content" | "editor";
14
+ }): () => void;
15
+ /**
16
+ * Try to handle a keyboard event. If a matching shortcut is found,
17
+ * calls its handler and returns true.
18
+ *
19
+ * @param {KeyboardEvent} e
20
+ * @param {'content' | 'editor'} [scope]
21
+ * @returns {boolean} Whether the event was handled
22
+ */
23
+ handle(e: KeyboardEvent, scope?: "content" | "editor"): boolean;
24
+ /**
25
+ * Remove all registered shortcuts.
26
+ */
27
+ clear(): void;
28
+ #private;
29
+ }
@@ -0,0 +1,106 @@
1
+ export class ShortcutRegistry {
2
+ /** @type {Map<string, { handler: (e: KeyboardEvent) => void, scope: 'content' | 'editor' }>} */
3
+ #shortcuts = new Map()
4
+
5
+ /**
6
+ * Register a keyboard shortcut.
7
+ * Combo format: 'Mod+B', 'Mod+Shift+Z', 'Tab', 'Shift+Tab', 'Escape'
8
+ * 'Mod' maps to Cmd (Mac) / Ctrl (other).
9
+ *
10
+ * @param {string} combo — normalized combo string
11
+ * @param {(e: KeyboardEvent) => void} handler
12
+ * @param {{ scope?: 'content' | 'editor' }} [options]
13
+ * @returns {() => void} Unregister function
14
+ */
15
+ register(combo, handler, options = {}) {
16
+ const key = this.#normalizeCombo(combo)
17
+ this.#shortcuts.set(key, {
18
+ handler,
19
+ scope: options.scope ?? 'content',
20
+ })
21
+ return () => this.#shortcuts.delete(key)
22
+ }
23
+
24
+ /**
25
+ * Try to handle a keyboard event. If a matching shortcut is found,
26
+ * calls its handler and returns true.
27
+ *
28
+ * @param {KeyboardEvent} e
29
+ * @param {'content' | 'editor'} [scope]
30
+ * @returns {boolean} Whether the event was handled
31
+ */
32
+ handle(e, scope = 'content') {
33
+ const key = this.#eventToKey(e)
34
+ const entry = this.#shortcuts.get(key)
35
+
36
+ if (entry && (scope === 'content' || entry.scope === 'editor')) {
37
+ e.preventDefault()
38
+ entry.handler(e)
39
+ return true
40
+ }
41
+ return false
42
+ }
43
+
44
+ /**
45
+ * Remove all registered shortcuts.
46
+ */
47
+ clear() {
48
+ this.#shortcuts.clear()
49
+ }
50
+
51
+ /**
52
+ * Normalize a combo string to a canonical form.
53
+ * Sorts modifier parts, lowercases the main key.
54
+ * 'Mod+Shift+Z' → 'mod+shift+z'
55
+ * @param {string} combo
56
+ * @returns {string}
57
+ */
58
+ #normalizeCombo(combo) {
59
+ const parts = combo.toLowerCase().split('+').map(p => p.trim())
60
+ // Separate modifiers from main key
61
+ const modifiers = []
62
+ let mainKey = ''
63
+
64
+ for (const part of parts) {
65
+ if (part === 'mod' || part === 'ctrl' || part === 'cmd' || part === 'meta') {
66
+ modifiers.push('mod')
67
+ } else if (part === 'shift' || part === 'alt') {
68
+ modifiers.push(part)
69
+ } else {
70
+ mainKey = part
71
+ }
72
+ }
73
+
74
+ // Sort modifiers for consistent key
75
+ modifiers.sort()
76
+ return [...modifiers, mainKey].join('+')
77
+ }
78
+
79
+ /**
80
+ * Convert a KeyboardEvent to the same canonical key format.
81
+ * Uses e.code for letter keys to be keyboard-layout-independent
82
+ * (e.g. Ctrl+Z works on Russian layout where e.key would be 'я').
83
+ * @param {KeyboardEvent} e
84
+ * @returns {string}
85
+ */
86
+ #eventToKey(e) {
87
+ const modifiers = []
88
+ if (e.metaKey || e.ctrlKey) modifiers.push('mod')
89
+ if (e.shiftKey) modifiers.push('shift')
90
+ if (e.altKey) modifiers.push('alt')
91
+ modifiers.sort()
92
+
93
+ // For letter keys, use e.code (layout-independent): 'KeyA' → 'a'
94
+ // For digit keys, use e.code: 'Digit1' → '1' (Shift+1 = '!' on US layout)
95
+ let key
96
+ if (e.code && e.code.startsWith('Key')) {
97
+ key = e.code.slice(3).toLowerCase()
98
+ } else if (e.code && e.code.startsWith('Digit')) {
99
+ key = e.code.slice(5)
100
+ } else {
101
+ key = e.key.toLowerCase()
102
+ }
103
+
104
+ return [...modifiers, key].join('+')
105
+ }
106
+ }
@@ -0,0 +1,34 @@
1
+ export class SlashCommands {
2
+ /**
3
+ * @typedef {Object} SlashCommandsConfig
4
+ * @property {Map<string, import('./types.js').BlockPlugin>} plugins
5
+ * @property {import('./types.js').IBlockManager} blocks
6
+ * @property {import('./types.js').ISelectionManager} selection
7
+ * @property {import('./types.js').IEventBus} events
8
+ * @property {import('./CommandDispatcher.js').CommandDispatcher} commands
9
+ * @property {import('./I18n.js').I18n} i18n
10
+ * @property {import('./InlinePluginRegistry.js').InlinePluginRegistry} [inlinePluginRegistry]
11
+ * @property {import('./types.js').InlinePluginContext} [inlinePluginCtx]
12
+ */
13
+ /**
14
+ * @param {HTMLElement} rootEl
15
+ * @param {SlashCommandsConfig} config
16
+ */
17
+ constructor(rootEl: HTMLElement, config: {
18
+ plugins: Map<string, import("./types.js").BlockPlugin>;
19
+ blocks: import("./types.js").IBlockManager;
20
+ selection: import("./types.js").ISelectionManager;
21
+ events: import("./types.js").IEventBus;
22
+ commands: import("./CommandDispatcher.js").CommandDispatcher;
23
+ i18n: import("./I18n.js").I18n;
24
+ inlinePluginRegistry?: import("./InlinePluginRegistry.js").InlinePluginRegistry;
25
+ inlinePluginCtx?: import("./types.js").InlinePluginContext;
26
+ });
27
+ /** @returns {boolean} */
28
+ get isOpen(): boolean;
29
+ /** Close the slash menu. */
30
+ close(): void;
31
+ /** Clean up. */
32
+ destroy(): void;
33
+ #private;
34
+ }