@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,190 @@
1
+ import { closestBlock } from './dom.js'
2
+
3
+ /**
4
+ * Shared utility for splitting a block at a selection range and converting
5
+ * the selected portion to a different block type.
6
+ *
7
+ * Used by both TypeSelector (inline toolbar) and BlockSettingsMenu (tune menu).
8
+ *
9
+ * @param {import('./types').IBlockManager} blocks
10
+ * @param {import('./types').ISelectionManager} selection
11
+ * @param {number} currentIndex
12
+ * @param {string} currentType
13
+ * @param {HTMLElement} contentEl
14
+ * @param {Range} range
15
+ * @param {string} targetType
16
+ * @param {Record<string, unknown>} [targetData]
17
+ * @param {boolean} [targetIsText]
18
+ * @returns {boolean} whether conversion actually happened
19
+ */
20
+ export function splitAndConvert(blocks, selection, currentIndex, currentType, contentEl, range, targetType, targetData, targetIsText = false) {
21
+ const currentBlock = blocks.getBlockByIndex(currentIndex)
22
+ const pluginSplit = currentBlock?.plugin.splitSelection?.(contentEl, range)
23
+
24
+ if (pluginSplit) {
25
+ const transferable = targetIsText ? pluginSplit.selectedData : {}
26
+ const newData = { ...transferable, ...(targetData || {}) }
27
+ let insertIndex = currentIndex + 1
28
+
29
+ if (pluginSplit.remainingData) {
30
+ blocks.convert(currentIndex, currentType, pluginSplit.remainingData)
31
+ } else {
32
+ blocks.remove(currentIndex)
33
+ insertIndex = currentIndex
34
+ }
35
+
36
+ const newBlock = blocks.insert(targetType, newData, insertIndex)
37
+ blocks.setCurrentIndex(insertIndex)
38
+ selection.setCaretToBlock(newBlock.id, 'start')
39
+ newBlock.focus()
40
+ return true
41
+ }
42
+
43
+ // The generic splitter owns only a single editable root whose HTML maps to
44
+ // `{ text }`. A structured block can contain several editable descendants
45
+ // and plugin-owned controls; rewriting its wrapper.innerHTML would corrupt
46
+ // both its data shape and event handlers. Such plugins must describe a safe
47
+ // data-level split through `splitSelection()`.
48
+ if (contentEl.getAttribute('contenteditable') !== 'true') return false
49
+
50
+ // Extract before/selected/after content as HTML
51
+ const beforeRange = document.createRange()
52
+ beforeRange.selectNodeContents(contentEl)
53
+ beforeRange.setEnd(range.startContainer, range.startOffset)
54
+ const beforeEl = document.createElement('div')
55
+ beforeEl.appendChild(beforeRange.cloneContents())
56
+ const beforeHtml = beforeEl.innerHTML
57
+
58
+ const selectedEl = document.createElement('div')
59
+ selectedEl.appendChild(range.cloneContents())
60
+ const selectedHtml = selectedEl.innerHTML
61
+
62
+ const afterRange = document.createRange()
63
+ afterRange.selectNodeContents(contentEl)
64
+ afterRange.setStart(range.endContainer, range.endOffset)
65
+ const afterEl = document.createElement('div')
66
+ afterEl.appendChild(afterRange.cloneContents())
67
+ const afterHtml = afterEl.innerHTML
68
+
69
+ if (!selectedHtml) return false
70
+
71
+ const mergedData = { text: selectedHtml, ...(targetData || {}) }
72
+
73
+ if (!beforeHtml && !afterHtml) {
74
+ const converted = blocks.convert(currentIndex, targetType, mergedData)
75
+ if (converted) {
76
+ blocks.setCurrentIndex(currentIndex)
77
+ selection.setCaretToBlock(converted.id, 'start')
78
+ converted.focus()
79
+ }
80
+ return !!converted
81
+ }
82
+
83
+ if (!beforeHtml) {
84
+ contentEl.innerHTML = selectedHtml
85
+ currentBlock?.markDirty()
86
+ const converted = blocks.convert(currentIndex, targetType, mergedData)
87
+ if (afterHtml) {
88
+ blocks.insert(currentType, { text: afterHtml }, currentIndex + 1)
89
+ }
90
+ if (converted) {
91
+ blocks.setCurrentIndex(currentIndex)
92
+ selection.setCaretToBlock(converted.id, 'start')
93
+ converted.focus()
94
+ }
95
+ } else if (!afterHtml) {
96
+ contentEl.innerHTML = beforeHtml
97
+ currentBlock?.markDirty()
98
+ const newBlock = blocks.insert(targetType, mergedData, currentIndex + 1)
99
+ blocks.setCurrentIndex(currentIndex + 1)
100
+ selection.setCaretToBlock(newBlock.id, 'start')
101
+ newBlock.focus()
102
+ } else {
103
+ contentEl.innerHTML = beforeHtml
104
+ currentBlock?.markDirty()
105
+ const newBlock = blocks.insert(targetType, mergedData, currentIndex + 1)
106
+ blocks.insert(currentType, { text: afterHtml }, currentIndex + 2)
107
+ blocks.setCurrentIndex(currentIndex + 1)
108
+ selection.setCaretToBlock(newBlock.id, 'start')
109
+ newBlock.focus()
110
+ }
111
+
112
+ return true
113
+ }
114
+
115
+ /**
116
+ * Check if range starts at the beginning of contentEl.
117
+ * @param {HTMLElement} contentEl
118
+ * @param {Range} range
119
+ * @returns {boolean}
120
+ */
121
+ export function rangeStartsAtBeginning(contentEl, range) {
122
+ try {
123
+ const full = document.createRange()
124
+ full.selectNodeContents(contentEl)
125
+ return range.compareBoundaryPoints(Range.START_TO_START, full) <= 0
126
+ } catch { return true }
127
+ }
128
+
129
+ /**
130
+ * Check if range ends at the end of contentEl.
131
+ * @param {HTMLElement} contentEl
132
+ * @param {Range} range
133
+ * @returns {boolean}
134
+ */
135
+ export function rangeEndsAtEnd(contentEl, range) {
136
+ try {
137
+ const full = document.createRange()
138
+ full.selectNodeContents(contentEl)
139
+ return range.compareBoundaryPoints(Range.END_TO_END, full) >= 0
140
+ } catch { return true }
141
+ }
142
+
143
+ /**
144
+ * Check if entire block content is selected.
145
+ * Returns false on error (conservative — assume nothing is selected).
146
+ * @param {HTMLElement} contentEl
147
+ * @param {Range} range
148
+ * @returns {boolean}
149
+ */
150
+ export function isFullBlockSelected(contentEl, range) {
151
+ try {
152
+ return rangeStartsAtBeginning(contentEl, range) && rangeEndsAtEnd(contentEl, range)
153
+ } catch {
154
+ return false
155
+ }
156
+ }
157
+
158
+ /**
159
+ * Restore a saved selection range, including cross-block range and CSS Highlight.
160
+ * @param {Range | null} savedRange
161
+ * @param {import('./types').ICrossBlockSelection} [crossBlockSelection]
162
+ */
163
+ export function restoreSelection(savedRange, crossBlockSelection) {
164
+ if (!savedRange) return
165
+ // Never clear a valid live caret in order to restore a Range whose block
166
+ // was deleted or replaced by a structural command. Chromium accepts some
167
+ // detached ranges without throwing, but leaves focus on <body>; the next
168
+ // Ctrl+Z then bypasses the editor and enters native DOM history.
169
+ if (!savedRange.startContainer.isConnected || !savedRange.endContainer.isConnected) return
170
+ const sel = window.getSelection()
171
+ if (sel) {
172
+ try {
173
+ sel.removeAllRanges()
174
+ sel.addRange(savedRange)
175
+ } catch {
176
+ // Range may reference detached DOM nodes
177
+ }
178
+ }
179
+ // Restore cross-block range if applicable
180
+ const startBlock = closestBlock(savedRange.startContainer)
181
+ const endBlock = closestBlock(savedRange.endContainer)
182
+ if (startBlock && endBlock && startBlock !== endBlock && crossBlockSelection) {
183
+ const editor = /** @type {HTMLElement | null} */ (startBlock.closest('.oe-editor'))
184
+ if (editor) {
185
+ crossBlockSelection.activate(savedRange, editor)
186
+ } else {
187
+ crossBlockSelection.set(savedRange)
188
+ }
189
+ }
190
+ }
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Create a TreeWalker that skips text nodes inside inline plugin widgets.
3
+ * @param {import('./types.js').DOMNode} root
4
+ * @returns {TreeWalker}
5
+ */
6
+ export function editableTextWalker(root: import("./types.js").DOMNode): TreeWalker;
7
+ /**
8
+ * Get the first text node inside a node.
9
+ * @param {import('./types.js').DOMNode} node
10
+ * @returns {import('./types.js').DOMText | null}
11
+ */
12
+ export function firstTextNode(node: import("./types.js").DOMNode): import("./types.js").DOMText | null;
13
+ /**
14
+ * Get the last text node inside a node.
15
+ * @param {import('./types.js').DOMNode} node
16
+ * @returns {import('./types.js').DOMText | null}
17
+ */
18
+ export function lastTextNode(node: import("./types.js").DOMNode): import("./types.js").DOMText | null;
19
+ /**
20
+ * Calculate character offset from the start of a container element.
21
+ * Uses TreeWalker over text nodes — consistent with findNodeAtOffset().
22
+ * Handles both text-node and element-node target positions.
23
+ * @param {import('./types.js').DOMNode} container
24
+ * @param {import('./types.js').DOMNode} targetNode
25
+ * @param {number} targetOffset
26
+ * @returns {number}
27
+ */
28
+ export function getTextOffset(container: import("./types.js").DOMNode, targetNode: import("./types.js").DOMNode, targetOffset: number): number;
29
+ /**
30
+ * Restore a text selection by character offsets within an element.
31
+ * Walks text nodes to find the correct start/end positions.
32
+ * @param {HTMLElement} element
33
+ * @param {number} startOffset — character offset from start
34
+ * @param {number} endOffset — character offset for end
35
+ */
36
+ export function restoreSelectionByOffsets(element: HTMLElement, startOffset: number, endOffset: number): void;
37
+ /**
38
+ * Create a range from the last occurrence of `search` through the end of its
39
+ * text node. The lookup follows DOM text nodes instead of flattening the
40
+ * block to `textContent`, so inline widgets before the match cannot shift it.
41
+ *
42
+ * @param {HTMLElement} element
43
+ * @param {string} search
44
+ * @returns {Range | null}
45
+ */
46
+ export function createRangeFromLastTextMatch(element: HTMLElement, search: string): Range | null;
@@ -0,0 +1,180 @@
1
+ /**
2
+ * Create a TreeWalker that skips text nodes inside inline plugin widgets.
3
+ * @param {import('./types').DOMNode} root
4
+ * @returns {TreeWalker}
5
+ */
6
+ export function editableTextWalker(root) {
7
+ return document.createTreeWalker(root, NodeFilter.SHOW_TEXT, {
8
+ acceptNode(node) {
9
+ if (node.parentElement?.closest('[data-inline-plugin]')) return NodeFilter.FILTER_REJECT
10
+ return NodeFilter.FILTER_ACCEPT
11
+ }
12
+ })
13
+ }
14
+
15
+ /**
16
+ * Get the first text node inside a node.
17
+ * @param {import('./types').DOMNode} node
18
+ * @returns {import('./types').DOMText | null}
19
+ */
20
+ export function firstTextNode(node) {
21
+ if (node.nodeType === Node.TEXT_NODE) return /** @type {import('./types').DOMText} */ (node)
22
+ const w = document.createTreeWalker(node, NodeFilter.SHOW_TEXT)
23
+ return /** @type {import('./types').DOMText | null} */ (w.nextNode())
24
+ }
25
+
26
+ /**
27
+ * Get the last text node inside a node.
28
+ * @param {import('./types').DOMNode} node
29
+ * @returns {import('./types').DOMText | null}
30
+ */
31
+ export function lastTextNode(node) {
32
+ if (node.nodeType === Node.TEXT_NODE) return /** @type {import('./types').DOMText} */ (node)
33
+ const w = document.createTreeWalker(node, NodeFilter.SHOW_TEXT)
34
+ let last = null
35
+ while (w.nextNode()) last = w.currentNode
36
+ return /** @type {import('./types').DOMText | null} */ (last)
37
+ }
38
+
39
+ /**
40
+ * Calculate character offset from the start of a container element.
41
+ * Uses TreeWalker over text nodes — consistent with findNodeAtOffset().
42
+ * Handles both text-node and element-node target positions.
43
+ * @param {import('./types').DOMNode} container
44
+ * @param {import('./types').DOMNode} targetNode
45
+ * @param {number} targetOffset
46
+ * @returns {number}
47
+ */
48
+ export function getTextOffset(container, targetNode, targetOffset) {
49
+ // Normalize element-node positions to text-node positions.
50
+ // When targetNode is an element, targetOffset is a child-node index.
51
+ if (targetNode.nodeType === Node.ELEMENT_NODE) {
52
+ if (targetOffset < targetNode.childNodes.length) {
53
+ // "Before child[targetOffset]" → resolve to (firstTextNodeInChild, 0)
54
+ const child = /** @type {import('./types').DOMNode} */ (targetNode.childNodes[targetOffset])
55
+ const first = firstTextNode(child)
56
+ if (first) {
57
+ targetNode = first
58
+ targetOffset = 0
59
+ } else {
60
+ return countTextBefore(container, child)
61
+ }
62
+ } else {
63
+ // "After last child" → resolve to (lastTextNode, endOfText)
64
+ const last = lastTextNode(targetNode)
65
+ if (last) {
66
+ targetNode = last
67
+ targetOffset = last.textContent?.length ?? 0
68
+ } else {
69
+ // No text nodes at all — return total text length up to this point
70
+ return container.textContent?.length ?? 0
71
+ }
72
+ }
73
+ }
74
+
75
+ // targetNode is now a text node — walk until we find it
76
+ // Use editableTextWalker to skip inline plugin widget text (consistent with setCaretToOffset)
77
+ const walker = editableTextWalker(container)
78
+ let offset = 0
79
+
80
+ while (walker.nextNode()) {
81
+ if (walker.currentNode === targetNode) {
82
+ return offset + targetOffset
83
+ }
84
+ offset += walker.currentNode.textContent?.length ?? 0
85
+ }
86
+
87
+ // targetNode not found — return total offset (defensive)
88
+ return offset
89
+ }
90
+
91
+ /**
92
+ * Restore a text selection by character offsets within an element.
93
+ * Walks text nodes to find the correct start/end positions.
94
+ * @param {HTMLElement} element
95
+ * @param {number} startOffset — character offset from start
96
+ * @param {number} endOffset — character offset for end
97
+ */
98
+ export function restoreSelectionByOffsets(element, startOffset, endOffset) {
99
+ const sel = window.getSelection()
100
+ if (!sel) return
101
+ const range = document.createRange()
102
+ const walker = editableTextWalker(element)
103
+ let pos = 0
104
+ let startSet = false
105
+
106
+ while (walker.nextNode()) {
107
+ const node = walker.currentNode
108
+ const len = node.textContent?.length ?? 0
109
+ if (!startSet && pos + len >= startOffset) {
110
+ range.setStart(node, startOffset - pos)
111
+ startSet = true
112
+ }
113
+ if (startSet && pos + len >= endOffset) {
114
+ range.setEnd(node, endOffset - pos)
115
+ sel.removeAllRanges()
116
+ sel.addRange(range)
117
+ return
118
+ }
119
+ pos += len
120
+ }
121
+ // Fallback: select all content
122
+ range.selectNodeContents(element)
123
+ sel.removeAllRanges()
124
+ sel.addRange(range)
125
+ }
126
+
127
+ /**
128
+ * Create a range from the last occurrence of `search` through the end of its
129
+ * text node. The lookup follows DOM text nodes instead of flattening the
130
+ * block to `textContent`, so inline widgets before the match cannot shift it.
131
+ *
132
+ * @param {HTMLElement} element
133
+ * @param {string} search
134
+ * @returns {Range | null}
135
+ */
136
+ export function createRangeFromLastTextMatch(element, search) {
137
+ if (!search) return null
138
+
139
+ const walker = document.createTreeWalker(element, NodeFilter.SHOW_TEXT)
140
+ /** @type {import('./types').DOMText | null} */
141
+ let matchNode = null
142
+ let matchOffset = -1
143
+
144
+ while (walker.nextNode()) {
145
+ const node = /** @type {import('./types').DOMText} */ (walker.currentNode)
146
+ const offset = node.data.lastIndexOf(search)
147
+ if (offset >= 0) {
148
+ matchNode = node
149
+ matchOffset = offset
150
+ }
151
+ }
152
+
153
+ if (!matchNode) return null
154
+ const range = document.createRange()
155
+ range.setStart(matchNode, matchOffset)
156
+ range.setEnd(matchNode, matchNode.length)
157
+ return range
158
+ }
159
+
160
+ /**
161
+ * Count total text content before a node in document order.
162
+ * @param {import('./types').DOMNode} container
163
+ * @param {import('./types').DOMNode} refNode
164
+ * @returns {number}
165
+ */
166
+ function countTextBefore(container, refNode) {
167
+ const walker = editableTextWalker(container)
168
+ let offset = 0
169
+ while (walker.nextNode()) {
170
+ const textNode = walker.currentNode
171
+ // Stop when we reach or pass the reference node
172
+ if (textNode === refNode) break
173
+ if (refNode.nodeType === Node.ELEMENT_NODE && refNode.contains(textNode)) break
174
+ // Check document order: stop if textNode comes after refNode
175
+ const pos = textNode.compareDocumentPosition(refNode)
176
+ if (pos & Node.DOCUMENT_POSITION_PRECEDING) break
177
+ offset += textNode.textContent?.length ?? 0
178
+ }
179
+ return offset
180
+ }
@@ -0,0 +1,30 @@
1
+ .oe-theme-dark {
2
+ --oe-bg: #0d0d0d;
3
+ --oe-surface: #0a0a0a;
4
+ --oe-card: #111;
5
+ --oe-card-hover: #191919;
6
+ --oe-border: #1a1a1a;
7
+ --oe-border-hover: #2a2a2a;
8
+ --oe-text-1: #f5f5f5;
9
+ --oe-text-2: #c4c4c4;
10
+ --oe-text-3: #908c8c;
11
+ --oe-accent: #4357b4;
12
+ --oe-accent-alpha: rgba(67, 87, 180, 0.15);
13
+ --oe-accent-text: #a78bfa;
14
+ --oe-surface-2: #141414;
15
+ --oe-surface-elevated: #1e1e24;
16
+ --oe-surface-hover: #1e1e24;
17
+ --oe-border-focus: #4357b4;
18
+ --oe-input-bg: #2c2c33;
19
+ --oe-input-bg-hover: #353540;
20
+ --oe-selection-bg: rgba(67, 87, 180, 0.25);
21
+ --oe-toolbar-shadow: 0 8px 24px rgba(0, 0, 0, 0.5);
22
+
23
+
24
+ --oe-success: #4ade80;
25
+ --oe-success-alpha: rgba(74, 222, 128, 0.14);
26
+ --oe-danger: #f87171;
27
+ --oe-danger-light: #fca5a5;
28
+ --oe-danger-alpha: rgba(248, 113, 113, 0.14);
29
+ --oe-text-on-accent: #fff;
30
+ }
@@ -0,0 +1,33 @@
1
+ .oe-theme-light {
2
+ --oe-bg: #fff;
3
+ --oe-surface: #fafafa;
4
+ --oe-card: #fff;
5
+ --oe-card-hover: #f5f5f5;
6
+ --oe-border: #e5e5e5;
7
+ --oe-border-hover: #d4d4d4;
8
+ --oe-text-1: #1a1a1a;
9
+ --oe-text-2: #525252;
10
+ --oe-text-3: #a3a3a3;
11
+ --oe-accent: #4357b4;
12
+ --oe-accent-alpha: rgba(67, 87, 180, 0.1);
13
+ --oe-accent-text: #4357b4;
14
+ --oe-surface-2: #f0f0f0;
15
+ --oe-surface-elevated: #fff;
16
+ --oe-surface-hover: #f0f0f0;
17
+ --oe-border-focus: #4357b4;
18
+ --oe-input-bg: #f0f0f0;
19
+ --oe-input-bg-hover: #e8e8e8;
20
+ --oe-selection-bg: rgba(67, 87, 180, 0.2);
21
+ --oe-toolbar-shadow: 0 8px 24px rgba(0, 0, 0, 0.1);
22
+
23
+
24
+ --oe-success: #16a34a;
25
+ --oe-success-alpha: rgba(22, 163, 74, 0.12);
26
+ --oe-danger: #dc2626;
27
+ --oe-danger-light: #ef4444;
28
+ --oe-danger-alpha: rgba(220, 38, 38, 0.1);
29
+ --oe-text-on-accent: #fff;
30
+
31
+ --oe-code-inline-bg: #eef0f8;
32
+ --oe-code-inline-text: #4357b4;
33
+ }