texditor 2.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 (330) hide show
  1. package/LICENSE.md +9 -0
  2. package/README.md +232 -0
  3. package/dist/core/base/base-model.d.ts +160 -0
  4. package/dist/core/base/base-model.d.ts.map +1 -0
  5. package/dist/core/base/event-manager.d.ts +20 -0
  6. package/dist/core/base/event-manager.d.ts.map +1 -0
  7. package/dist/core/base/index.d.ts +3 -0
  8. package/dist/core/base/index.d.ts.map +1 -0
  9. package/dist/core/base.d.ts +2 -0
  10. package/dist/core/base.mjs +1 -0
  11. package/dist/core/block-manager.d.ts +91 -0
  12. package/dist/core/block-manager.d.ts.map +1 -0
  13. package/dist/core/commands.d.ts +73 -0
  14. package/dist/core/commands.d.ts.map +1 -0
  15. package/dist/core/config.d.ts +11 -0
  16. package/dist/core/config.d.ts.map +1 -0
  17. package/dist/core/events.d.ts +121 -0
  18. package/dist/core/events.d.ts.map +1 -0
  19. package/dist/core/extensions.d.ts +23 -0
  20. package/dist/core/extensions.d.ts.map +1 -0
  21. package/dist/core/history-manager.d.ts +76 -0
  22. package/dist/core/history-manager.d.ts.map +1 -0
  23. package/dist/core/i18n.d.ts +29 -0
  24. package/dist/core/i18n.d.ts.map +1 -0
  25. package/dist/core/models/action-model.d.ts +54 -0
  26. package/dist/core/models/action-model.d.ts.map +1 -0
  27. package/dist/core/models/block-model.d.ts +396 -0
  28. package/dist/core/models/block-model.d.ts.map +1 -0
  29. package/dist/core/models/extension-model.d.ts +25 -0
  30. package/dist/core/models/extension-model.d.ts.map +1 -0
  31. package/dist/core/models/file-action-model.d.ts +20 -0
  32. package/dist/core/models/file-action-model.d.ts.map +1 -0
  33. package/dist/core/models/index.d.ts +7 -0
  34. package/dist/core/models/index.d.ts.map +1 -0
  35. package/dist/core/models/tool-model.d.ts +69 -0
  36. package/dist/core/models/tool-model.d.ts.map +1 -0
  37. package/dist/core/models.d.ts +2 -0
  38. package/dist/core/models.mjs +6 -0
  39. package/dist/core/security/sanitizer.d.ts +65 -0
  40. package/dist/core/security/sanitizer.d.ts.map +1 -0
  41. package/dist/core/selection-api.d.ts +52 -0
  42. package/dist/core/selection-api.d.ts.map +1 -0
  43. package/dist/core/tools.d.ts +27 -0
  44. package/dist/core/tools.d.ts.map +1 -0
  45. package/dist/core/ui/slider.d.ts +50 -0
  46. package/dist/core/ui/slider.d.ts.map +1 -0
  47. package/dist/core/ui/toasts.d.ts +23 -0
  48. package/dist/core/ui/toasts.d.ts.map +1 -0
  49. package/dist/core/ui/virtual-selection.d.ts +171 -0
  50. package/dist/core/ui/virtual-selection.d.ts.map +1 -0
  51. package/dist/entities/actions/convert-action.d.ts +9 -0
  52. package/dist/entities/actions/convert-action.d.ts.map +1 -0
  53. package/dist/entities/actions/create-action.d.ts +8 -0
  54. package/dist/entities/actions/create-action.d.ts.map +1 -0
  55. package/dist/entities/actions/delete-action.d.ts +8 -0
  56. package/dist/entities/actions/delete-action.d.ts.map +1 -0
  57. package/dist/entities/actions/index.d.ts +7 -0
  58. package/dist/entities/actions/index.d.ts.map +1 -0
  59. package/dist/entities/actions/move-down-action.d.ts +9 -0
  60. package/dist/entities/actions/move-down-action.d.ts.map +1 -0
  61. package/dist/entities/actions/move-up-action.d.ts +9 -0
  62. package/dist/entities/actions/move-up-action.d.ts.map +1 -0
  63. package/dist/entities/actions.d.ts +2 -0
  64. package/dist/entities/actions.mjs +6 -0
  65. package/dist/entities/blocks/code/index.d.ts +48 -0
  66. package/dist/entities/blocks/code/index.d.ts.map +1 -0
  67. package/dist/entities/blocks/code/languages.d.ts +4 -0
  68. package/dist/entities/blocks/code/languages.d.ts.map +1 -0
  69. package/dist/entities/blocks/files/actions/DeleteFileAction.d.ts +7 -0
  70. package/dist/entities/blocks/files/actions/DeleteFileAction.d.ts.map +1 -0
  71. package/dist/entities/blocks/files/actions/DownloadFileAction.d.ts +12 -0
  72. package/dist/entities/blocks/files/actions/DownloadFileAction.d.ts.map +1 -0
  73. package/dist/entities/blocks/files/actions/EditFileAction.d.ts +32 -0
  74. package/dist/entities/blocks/files/actions/EditFileAction.d.ts.map +1 -0
  75. package/dist/entities/blocks/files/actions/MoveLeftFileAction.d.ts +8 -0
  76. package/dist/entities/blocks/files/actions/MoveLeftFileAction.d.ts.map +1 -0
  77. package/dist/entities/blocks/files/actions/MoveRightFileAction.d.ts +8 -0
  78. package/dist/entities/blocks/files/actions/MoveRightFileAction.d.ts.map +1 -0
  79. package/dist/entities/blocks/files/index.d.ts +185 -0
  80. package/dist/entities/blocks/files/index.d.ts.map +1 -0
  81. package/dist/entities/blocks/gallery/index.d.ts +60 -0
  82. package/dist/entities/blocks/gallery/index.d.ts.map +1 -0
  83. package/dist/entities/blocks/header/H1.d.ts +4 -0
  84. package/dist/entities/blocks/header/H1.d.ts.map +1 -0
  85. package/dist/entities/blocks/header/H2.d.ts +6 -0
  86. package/dist/entities/blocks/header/H2.d.ts.map +1 -0
  87. package/dist/entities/blocks/header/H3.d.ts +6 -0
  88. package/dist/entities/blocks/header/H3.d.ts.map +1 -0
  89. package/dist/entities/blocks/header/H4.d.ts +6 -0
  90. package/dist/entities/blocks/header/H4.d.ts.map +1 -0
  91. package/dist/entities/blocks/header/H5.d.ts +6 -0
  92. package/dist/entities/blocks/header/H5.d.ts.map +1 -0
  93. package/dist/entities/blocks/header/H6.d.ts +6 -0
  94. package/dist/entities/blocks/header/H6.d.ts.map +1 -0
  95. package/dist/entities/blocks/header/index.d.ts +6 -0
  96. package/dist/entities/blocks/header/index.d.ts.map +1 -0
  97. package/dist/entities/blocks/index.d.ts +14 -0
  98. package/dist/entities/blocks/index.d.ts.map +1 -0
  99. package/dist/entities/blocks/list/index.d.ts +6 -0
  100. package/dist/entities/blocks/list/index.d.ts.map +1 -0
  101. package/dist/entities/blocks/list/ol.d.ts +6 -0
  102. package/dist/entities/blocks/list/ol.d.ts.map +1 -0
  103. package/dist/entities/blocks/paragraph/index.d.ts +6 -0
  104. package/dist/entities/blocks/paragraph/index.d.ts.map +1 -0
  105. package/dist/entities/blocks.d.ts +2 -0
  106. package/dist/entities/blocks.mjs +13 -0
  107. package/dist/entities/extensions/delete-selected.d.ts +9 -0
  108. package/dist/entities/extensions/delete-selected.d.ts.map +1 -0
  109. package/dist/entities/extensions/index.d.ts +5 -0
  110. package/dist/entities/extensions/index.d.ts.map +1 -0
  111. package/dist/entities/extensions/redo.d.ts +8 -0
  112. package/dist/entities/extensions/redo.d.ts.map +1 -0
  113. package/dist/entities/extensions/undo.d.ts +8 -0
  114. package/dist/entities/extensions/undo.d.ts.map +1 -0
  115. package/dist/entities/extensions.d.ts +2 -0
  116. package/dist/entities/extensions.mjs +4 -0
  117. package/dist/entities/tools/bold.d.ts +6 -0
  118. package/dist/entities/tools/bold.d.ts.map +1 -0
  119. package/dist/entities/tools/clear-formatting.d.ts +7 -0
  120. package/dist/entities/tools/clear-formatting.d.ts.map +1 -0
  121. package/dist/entities/tools/index.d.ts +10 -0
  122. package/dist/entities/tools/index.d.ts.map +1 -0
  123. package/dist/entities/tools/inline-code.d.ts +6 -0
  124. package/dist/entities/tools/inline-code.d.ts.map +1 -0
  125. package/dist/entities/tools/italic.d.ts +6 -0
  126. package/dist/entities/tools/italic.d.ts.map +1 -0
  127. package/dist/entities/tools/link.d.ts +35 -0
  128. package/dist/entities/tools/link.d.ts.map +1 -0
  129. package/dist/entities/tools/marker.d.ts +6 -0
  130. package/dist/entities/tools/marker.d.ts.map +1 -0
  131. package/dist/entities/tools/subscript.d.ts +6 -0
  132. package/dist/entities/tools/subscript.d.ts.map +1 -0
  133. package/dist/entities/tools/superscript.d.ts +6 -0
  134. package/dist/entities/tools/superscript.d.ts.map +1 -0
  135. package/dist/entities/tools.d.ts +2 -0
  136. package/dist/entities/tools.mjs +9 -0
  137. package/dist/icons/index.d.ts +42 -0
  138. package/dist/icons/index.d.ts.map +1 -0
  139. package/dist/locales/en.d.ts +66 -0
  140. package/dist/locales/en.d.ts.map +1 -0
  141. package/dist/locales/index.d.ts +4 -0
  142. package/dist/locales/index.d.ts.map +1 -0
  143. package/dist/locales/ru.d.ts +66 -0
  144. package/dist/locales/ru.d.ts.map +1 -0
  145. package/dist/locales.d.ts +2 -0
  146. package/dist/locales.mjs +3 -0
  147. package/dist/main.d.ts +6 -0
  148. package/dist/node_modules/snappykit/dist/snappykit.mjs +440 -0
  149. package/dist/node_modules/sortum/dist/sortum.mjs +588 -0
  150. package/dist/src/core/base/base-model.mjs +184 -0
  151. package/dist/src/core/base/event-manager.mjs +31 -0
  152. package/dist/src/core/block-manager.mjs +499 -0
  153. package/dist/src/core/commands.mjs +311 -0
  154. package/dist/src/core/config.mjs +12 -0
  155. package/dist/src/core/events.mjs +369 -0
  156. package/dist/src/core/extensions.mjs +48 -0
  157. package/dist/src/core/history-manager.mjs +107 -0
  158. package/dist/src/core/i18n.mjs +25 -0
  159. package/dist/src/core/models/action-model.mjs +72 -0
  160. package/dist/src/core/models/block-model.mjs +619 -0
  161. package/dist/src/core/models/extension-model.mjs +28 -0
  162. package/dist/src/core/models/file-action-model.mjs +24 -0
  163. package/dist/src/core/models/tool-model.mjs +80 -0
  164. package/dist/src/core/security/sanitizer.mjs +130 -0
  165. package/dist/src/core/selection-api.mjs +202 -0
  166. package/dist/src/core/tools.mjs +88 -0
  167. package/dist/src/core/ui/slider.mjs +81 -0
  168. package/dist/src/core/ui/toasts.mjs +55 -0
  169. package/dist/src/core/ui/virtual-selection.mjs +205 -0
  170. package/dist/src/entities/actions/convert-action.mjs +43 -0
  171. package/dist/src/entities/actions/create-action.mjs +39 -0
  172. package/dist/src/entities/actions/delete-action.mjs +19 -0
  173. package/dist/src/entities/actions/move-down-action.mjs +22 -0
  174. package/dist/src/entities/actions/move-up-action.mjs +22 -0
  175. package/dist/src/entities/blocks/code/index.mjs +144 -0
  176. package/dist/src/entities/blocks/code/languages.mjs +54 -0
  177. package/dist/src/entities/blocks/files/actions/DeleteFileAction.mjs +21 -0
  178. package/dist/src/entities/blocks/files/actions/DownloadFileAction.mjs +44 -0
  179. package/dist/src/entities/blocks/files/actions/EditFileAction.mjs +111 -0
  180. package/dist/src/entities/blocks/files/actions/MoveLeftFileAction.mjs +24 -0
  181. package/dist/src/entities/blocks/files/actions/MoveRightFileAction.mjs +24 -0
  182. package/dist/src/entities/blocks/files/index.mjs +424 -0
  183. package/dist/src/entities/blocks/gallery/index.mjs +141 -0
  184. package/dist/src/entities/blocks/header/H1.mjs +5 -0
  185. package/dist/src/entities/blocks/header/H2.mjs +16 -0
  186. package/dist/src/entities/blocks/header/H3.mjs +16 -0
  187. package/dist/src/entities/blocks/header/H4.mjs +16 -0
  188. package/dist/src/entities/blocks/header/H5.mjs +16 -0
  189. package/dist/src/entities/blocks/header/H6.mjs +16 -0
  190. package/dist/src/entities/blocks/header/index.mjs +46 -0
  191. package/dist/src/entities/blocks/list/index.mjs +51 -0
  192. package/dist/src/entities/blocks/list/ol.mjs +16 -0
  193. package/dist/src/entities/blocks/paragraph/index.mjs +46 -0
  194. package/dist/src/entities/extensions/delete-selected.mjs +27 -0
  195. package/dist/src/entities/extensions/redo.mjs +22 -0
  196. package/dist/src/entities/extensions/undo.mjs +22 -0
  197. package/dist/src/entities/tools/bold.mjs +16 -0
  198. package/dist/src/entities/tools/clear-formatting.mjs +20 -0
  199. package/dist/src/entities/tools/inline-code.mjs +19 -0
  200. package/dist/src/entities/tools/italic.mjs +16 -0
  201. package/dist/src/entities/tools/link.mjs +89 -0
  202. package/dist/src/entities/tools/marker.mjs +17 -0
  203. package/dist/src/entities/tools/subscript.mjs +17 -0
  204. package/dist/src/entities/tools/superscript.mjs +18 -0
  205. package/dist/src/icons/index.mjs +4 -0
  206. package/dist/src/locales/en.mjs +68 -0
  207. package/dist/src/locales/ru.mjs +68 -0
  208. package/dist/src/store/currentStore.mjs +8 -0
  209. package/dist/src/store/mainStore.mjs +4 -0
  210. package/dist/src/utils/ajax.mjs +35 -0
  211. package/dist/src/utils/common.mjs +26 -0
  212. package/dist/src/utils/icon.mjs +12 -0
  213. package/dist/src/utils/sanitizer.mjs +20 -0
  214. package/dist/src/views/extensions.mjs +18 -0
  215. package/dist/src/views/main.mjs +19 -0
  216. package/dist/src/views/tools.mjs +9 -0
  217. package/dist/store/currentStore.d.ts +15 -0
  218. package/dist/store/currentStore.d.ts.map +1 -0
  219. package/dist/store/mainStore.d.ts +14 -0
  220. package/dist/store/mainStore.d.ts.map +1 -0
  221. package/dist/styles/animations.css +1 -0
  222. package/dist/styles/core/ui/selection.css +1 -0
  223. package/dist/styles/core/ui/slider.css +1 -0
  224. package/dist/styles/entities/blocks/code.css +1 -0
  225. package/dist/styles/entities/blocks/files.css +1 -0
  226. package/dist/styles/entities/blocks/gallery.css +1 -0
  227. package/dist/styles/entities/blocks/list.css +1 -0
  228. package/dist/styles/entities/blocks/paragraph.css +1 -0
  229. package/dist/styles/entities/tools/inline-code.css +1 -0
  230. package/dist/styles/entities/tools/link.css +1 -0
  231. package/dist/styles/texditor.css +1 -0
  232. package/dist/styles/theme.css +42 -0
  233. package/dist/texditor.d.ts +68 -0
  234. package/dist/texditor.d.ts.map +1 -0
  235. package/dist/texditor.mjs +138 -0
  236. package/dist/types/core/base/base-model.d.ts +212 -0
  237. package/dist/types/core/base/base-model.d.ts.map +1 -0
  238. package/dist/types/core/base/event-manager.d.ts +42 -0
  239. package/dist/types/core/base/event-manager.d.ts.map +1 -0
  240. package/dist/types/core/base/index.d.ts +3 -0
  241. package/dist/types/core/base/index.d.ts.map +1 -0
  242. package/dist/types/core/block-manager.d.ts +223 -0
  243. package/dist/types/core/block-manager.d.ts.map +1 -0
  244. package/dist/types/core/commands.d.ts +93 -0
  245. package/dist/types/core/commands.d.ts.map +1 -0
  246. package/dist/types/core/config.d.ts +86 -0
  247. package/dist/types/core/config.d.ts.map +1 -0
  248. package/dist/types/core/events.d.ts +58 -0
  249. package/dist/types/core/events.d.ts.map +1 -0
  250. package/dist/types/core/extensions.d.ts +19 -0
  251. package/dist/types/core/extensions.d.ts.map +1 -0
  252. package/dist/types/core/history-manager.d.ts +72 -0
  253. package/dist/types/core/history-manager.d.ts.map +1 -0
  254. package/dist/types/core/http/index.d.ts +2 -0
  255. package/dist/types/core/http/index.d.ts.map +1 -0
  256. package/dist/types/core/http/response.d.ts +6 -0
  257. package/dist/types/core/http/response.d.ts.map +1 -0
  258. package/dist/types/core/i18n.d.ts +40 -0
  259. package/dist/types/core/i18n.d.ts.map +1 -0
  260. package/dist/types/core/index.d.ts +15 -0
  261. package/dist/types/core/index.d.ts.map +1 -0
  262. package/dist/types/core/models/action-model.d.ts +46 -0
  263. package/dist/types/core/models/action-model.d.ts.map +1 -0
  264. package/dist/types/core/models/block-model.d.ts +404 -0
  265. package/dist/types/core/models/block-model.d.ts.map +1 -0
  266. package/dist/types/core/models/extension-model.d.ts +41 -0
  267. package/dist/types/core/models/extension-model.d.ts.map +1 -0
  268. package/dist/types/core/models/file-action-model.d.ts +36 -0
  269. package/dist/types/core/models/file-action-model.d.ts.map +1 -0
  270. package/dist/types/core/models/index.d.ts +7 -0
  271. package/dist/types/core/models/index.d.ts.map +1 -0
  272. package/dist/types/core/models/tool-model.d.ts +54 -0
  273. package/dist/types/core/models/tool-model.d.ts.map +1 -0
  274. package/dist/types/core/sanitizer.d.ts +27 -0
  275. package/dist/types/core/sanitizer.d.ts.map +1 -0
  276. package/dist/types/core/selection-api.d.ts +116 -0
  277. package/dist/types/core/selection-api.d.ts.map +1 -0
  278. package/dist/types/core/tools.d.ts +35 -0
  279. package/dist/types/core/tools.d.ts.map +1 -0
  280. package/dist/types/core/ui/index.d.ts +4 -0
  281. package/dist/types/core/ui/index.d.ts.map +1 -0
  282. package/dist/types/core/ui/slider.d.ts +45 -0
  283. package/dist/types/core/ui/slider.d.ts.map +1 -0
  284. package/dist/types/core/ui/toasts.d.ts +58 -0
  285. package/dist/types/core/ui/toasts.d.ts.map +1 -0
  286. package/dist/types/core/ui/virtual-selection.d.ts +83 -0
  287. package/dist/types/core/ui/virtual-selection.d.ts.map +1 -0
  288. package/dist/types/entities/blocks/code.d.ts +4 -0
  289. package/dist/types/entities/blocks/code.d.ts.map +1 -0
  290. package/dist/types/entities/blocks/files.d.ts +170 -0
  291. package/dist/types/entities/blocks/files.d.ts.map +1 -0
  292. package/dist/types/entities/blocks/gallery.d.ts +40 -0
  293. package/dist/types/entities/blocks/gallery.d.ts.map +1 -0
  294. package/dist/types/entities/blocks/header.d.ts +4 -0
  295. package/dist/types/entities/blocks/header.d.ts.map +1 -0
  296. package/dist/types/entities/blocks/index.d.ts +7 -0
  297. package/dist/types/entities/blocks/index.d.ts.map +1 -0
  298. package/dist/types/entities/blocks/list.d.ts +4 -0
  299. package/dist/types/entities/blocks/list.d.ts.map +1 -0
  300. package/dist/types/entities/blocks/paragraph.d.ts +4 -0
  301. package/dist/types/entities/blocks/paragraph.d.ts.map +1 -0
  302. package/dist/types/entities/index.d.ts +2 -0
  303. package/dist/types/entities/index.d.ts.map +1 -0
  304. package/dist/types/index.d.ts +5 -0
  305. package/dist/types/index.d.ts.map +1 -0
  306. package/dist/types/texditor.d.ts +66 -0
  307. package/dist/types/texditor.d.ts.map +1 -0
  308. package/dist/types/utils/ajax.d.ts +31 -0
  309. package/dist/types/utils/ajax.d.ts.map +1 -0
  310. package/dist/types/utils/icon.d.ts +10 -0
  311. package/dist/types/utils/icon.d.ts.map +1 -0
  312. package/dist/types/utils/index.d.ts +3 -0
  313. package/dist/types/utils/index.d.ts.map +1 -0
  314. package/dist/utils/ajax.d.ts +9 -0
  315. package/dist/utils/ajax.d.ts.map +1 -0
  316. package/dist/utils/common.d.ts +28 -0
  317. package/dist/utils/common.d.ts.map +1 -0
  318. package/dist/utils/icon.d.ts +12 -0
  319. package/dist/utils/icon.d.ts.map +1 -0
  320. package/dist/utils/index.d.ts +5 -0
  321. package/dist/utils/index.d.ts.map +1 -0
  322. package/dist/utils/sanitizer.d.ts +8 -0
  323. package/dist/utils/sanitizer.d.ts.map +1 -0
  324. package/dist/views/extensions.d.ts +3 -0
  325. package/dist/views/extensions.d.ts.map +1 -0
  326. package/dist/views/main.d.ts +3 -0
  327. package/dist/views/main.d.ts.map +1 -0
  328. package/dist/views/tools.d.ts +2 -0
  329. package/dist/views/tools.d.ts.map +1 -0
  330. package/package.json +75 -0
package/LICENSE.md ADDED
@@ -0,0 +1,9 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) Eduard Yakhin
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
6
+
7
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
8
+
9
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,232 @@
1
+ # Texditor – Visual Block Editor with Full JSON Export Support
2
+
3
+ [![npm version](https://img.shields.io/npm/v/texditor.svg)](https://www.npmjs.com/package/texditor)
4
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
5
+
6
+ ## Website
7
+
8
+ ## Website
9
+
10
+ [Website](https://texditor.priveted.com) /
11
+ [Guide](https://texditor.priveted.com/guide/) /
12
+ [API](https://texditor.priveted.com/api/) /
13
+
14
+ #### Русская версия
15
+
16
+ [Сайт](https://texditor.priveted.com/ru/) /
17
+ [Руководство](https://texditor.priveted.com/ru/guide/) /
18
+ [API](https://texditor.priveted.com/ru/api/) /
19
+
20
+ **Texditor** is a modern, **visual block editor** built with TypeScript. It provides a flexible, modular architecture for creating, editing, and managing structured content. All data is stored and exported in **pure JSON format**, making it easy to integrate, save, and process content programmatically.
21
+
22
+ ---
23
+
24
+ ## Key Features
25
+
26
+ - **Visual Block-Based Editing**: Easily add, remove, and customize blocks (paragraphs, headings, code, galleries, files, etc.) in a user-friendly interface.
27
+ - **Full JSON Export Support**: All content is stored and exported as **clean, structured JSON**, ensuring seamless integration with any backend or database.
28
+ - **Flexible Architecture**: Support for extensions, tools, and actions to expand functionality.
29
+ - **Localization**: Built-in multi-language support (English, Russian, and more).
30
+ - **History Management**: Undo/redo functionality with keyboard shortcut support.
31
+ - **Event System**: Track changes and execute complex operations with commands.
32
+ - **Customization**: Configure styles, behavior, and appearance through settings.
33
+
34
+ ---
35
+
36
+ ## Quick Start
37
+
38
+ ### Installation
39
+
40
+ ```bash
41
+ npm install texditor
42
+ ```
43
+
44
+ ### Basic Setup
45
+
46
+ Include the styles and initialize the editor:
47
+
48
+ ```javascript
49
+ import 'texditor/styles/theme.css'; // Theme variables
50
+ import 'texditor/styles/texditor.css'; // Core styles
51
+ import Texditor from 'texditor';
52
+
53
+ const editor = new Texditor({
54
+ handle: 'texditor', // Target element ID
55
+ });
56
+ ```
57
+
58
+ ```html
59
+ <div id="texditor"></div>
60
+ ```
61
+
62
+ ---
63
+
64
+ ### Advanced Configuration
65
+
66
+ Configure blocks, tools, extensions, and localization:
67
+
68
+ ```javascript
69
+ import Texditor from 'texditor';
70
+ import { Paragraph, H1, H2, H3, H4, H5, H6, List, OrderedList, Code, Gallery, Files } from 'texditor/blocks';
71
+
72
+ import { BoldTool, ItalicTool, LinkTool, ClearFormattingTool, SubscriptTool, SuperscriptTool } from 'texditor/tools';
73
+
74
+ import { Undo, Redo } from 'texditor/extensions';
75
+
76
+ import { EnLocale, RuLocale } from 'texditor/locales';
77
+
78
+ const editor = new Texditor({
79
+ handle: 'texditor',
80
+
81
+ // Default content (JSON format)
82
+ content: [{ type: 'p', data: ['Start typing...'] }],
83
+
84
+ // Localization
85
+ locale: 'en',
86
+ locales: [
87
+ { code: 'en', data: EnLocale },
88
+ { code: 'ru', data: RuLocale },
89
+ ],
90
+
91
+ // Blocks
92
+ blocks: [
93
+ Paragraph,
94
+ H1.setup({ placeholder: 'Heading 1' }),
95
+ H2,
96
+ H3,
97
+ List.setup({ sortable: true }),
98
+ OrderedList,
99
+ Code.setup({ search: true }),
100
+ Gallery.setup({
101
+ mimeTypes: ['image/png', 'image/jpeg'],
102
+ multiple: true,
103
+ ajaxConfig: {
104
+ url: '/upload',
105
+ options: { success: (data) => console.log(data) },
106
+ },
107
+ }),
108
+ Files.setup({
109
+ mimeTypes: ['image/png', 'application/pdf'],
110
+ multiple: false,
111
+ }),
112
+ ],
113
+
114
+ // Tools
115
+ tools: [BoldTool, ItalicTool, LinkTool, ClearFormattingTool],
116
+
117
+ // Extensions
118
+ extensions: [Undo.setup({ visibleTitle: false }), Redo],
119
+
120
+ // Actions
121
+ actions: [CreateAction, ConvertAction, DeleteAction, MoveUpAction, MoveDownAction],
122
+
123
+ // UI settings
124
+ extensionsFixed: true,
125
+ extensionVisibleTitle: true,
126
+ autofocus: true,
127
+
128
+ // Event handlers
129
+ onReady: (evt) => console.log('Editor is ready!'),
130
+ onChange: (evt) => {
131
+ // Get content as JSON
132
+ const content = evt.instance.save();
133
+ console.log('Content changed (JSON):', content);
134
+ },
135
+ });
136
+ ```
137
+
138
+ ---
139
+
140
+ ## JSON Output Example
141
+
142
+ All content is exported as **structured JSON**, where special characters and nested elements are properly formatted:
143
+
144
+ ```json
145
+ [
146
+ {
147
+ "type": "h1",
148
+ "data": ["Welcome to Texditor"]
149
+ },
150
+ {
151
+ "type": "p",
152
+ "data": [
153
+ "This is a paragraph with ",
154
+ { "type": "b", "data": ["bold text"] },
155
+ " and ",
156
+ {
157
+ "type": "a",
158
+ "attr": { "href": "https://example.com" },
159
+ "data": ["a link"]
160
+ },
161
+ "."
162
+ ]
163
+ },
164
+ {
165
+ "type": "code",
166
+ "lang": "javascript",
167
+ "data": ["const greet = () => {\n console.log('Hello, world!');\n};\n\ngreet();"]
168
+ },
169
+ {
170
+ "type": "gallery",
171
+ "style": "grid",
172
+ "data": [
173
+ {
174
+ "url": "/images/sunset.jpg",
175
+ "type": "image/jpeg",
176
+ "caption": "Beautiful sunset",
177
+ "desc": "A photo of a sunset over the mountains"
178
+ },
179
+ {
180
+ "url": "/images/forest.png",
181
+ "type": "image/png",
182
+ "caption": "Green forest",
183
+ "desc": "A lush forest with tall trees"
184
+ }
185
+ ]
186
+ },
187
+ {
188
+ "type": "ul",
189
+ "data": [
190
+ { "type": "li", "data": ["First item"] },
191
+ {
192
+ "type": "li",
193
+ "data": ["Second item with ", { "type": "b", "data": ["bold text"] }]
194
+ },
195
+ {
196
+ "type": "li",
197
+ "data": [
198
+ "Third item with a ",
199
+ {
200
+ "type": "a",
201
+ "attr": { "href": "https://example.com" },
202
+ "data": ["link"]
203
+ }
204
+ ]
205
+ }
206
+ ]
207
+ },
208
+ {
209
+ "type": "ol",
210
+ "data": [
211
+ { "type": "li", "data": ["Step one"] },
212
+ { "type": "li", "data": ["Step two"] },
213
+ { "type": "li", "data": ["Step three"] }
214
+ ]
215
+ },
216
+ {
217
+ "type": "files",
218
+ "data": [
219
+ {
220
+ "url": "/documents/report.pdf",
221
+ "type": "application/pdf",
222
+ "name": "Annual Report.pdf",
223
+ "size": 2450
224
+ }
225
+ ]
226
+ }
227
+ ]
228
+ ```
229
+
230
+ ## License
231
+
232
+ [MIT](https://opensource.org/licenses/MIT)
@@ -0,0 +1,160 @@
1
+ import { BaseModelConfig, BaseElement, RenderIconContent, Texditor, ModelConstructor, BaseModel as IBaseModel } from '../../types';
2
+ import { default as EventManager } from './event-manager';
3
+ /**
4
+ * Base model class providing core functionality, event management and lifecycle hooks
5
+ */
6
+ export default class BaseModel<TElement extends BaseElement = BaseElement> extends EventManager implements IBaseModel {
7
+ /** Global user configuration for all model instances */
8
+ private static userConfig;
9
+ /** Reference to the editor instance */
10
+ protected editor: Texditor;
11
+ /** DOM element representing the model button */
12
+ private element;
13
+ /** Model configuration settings */
14
+ private config;
15
+ /** Key-value storage for custom block data */
16
+ protected store: Record<string, unknown>;
17
+ /** Unique identifier for event listeners to prevent conflicts with other event handlers */
18
+ private eventId;
19
+ /** Modifiable model options */
20
+ private options;
21
+ /**
22
+ * Create a new base model instance
23
+ * @param editor - Editor instance reference
24
+ */
25
+ constructor(editor: Texditor);
26
+ /**
27
+ * Create model DOM element
28
+ * @returns Created model element
29
+ */
30
+ protected createElement(): TElement;
31
+ /** @see IBaseModel.getEventId */
32
+ getEventId(): string;
33
+ /**
34
+ * Hook called after model element creation
35
+ * @param _el - Created model element
36
+ */
37
+ protected onCreateElement(_el: TElement): void;
38
+ /**
39
+ * Parent hook called after model element creation
40
+ * @param _el - Created model element
41
+ */
42
+ protected parentOnCreateElement(_el: TElement): void;
43
+ /** @see IBaseModel.getConfig */
44
+ getConfig(key: string, defaultValue: boolean): boolean;
45
+ getConfig(key: string, defaultValue: string): string;
46
+ getConfig(key: string, defaultValue: number): number;
47
+ getConfig<K extends keyof BaseModelConfig>(key: K): BaseModelConfig[K];
48
+ getConfig<K extends keyof BaseModelConfig>(key: K, defaultValue: BaseModelConfig[K]): BaseModelConfig[K];
49
+ getConfig(key: string, defaultValue: unknown): unknown;
50
+ /** @see IBaseModel.getOption */
51
+ getOption<T = unknown>(key: string, defaultValue?: T): T | null;
52
+ /** @see IBaseModel.setOption */
53
+ setOption(key: string, value: unknown): void;
54
+ /** @see IBaseModel.setOptions */
55
+ setOptions(options: Record<string, unknown>): void;
56
+ /** @see IBaseModel.getOptions */
57
+ getOptions(): Record<string, unknown>;
58
+ /** @see IBaseModel.removeOption */
59
+ removeOption(key: string): boolean;
60
+ /** @see IBaseModel.clearOptions */
61
+ clearOptions(): void;
62
+ /**
63
+ * Set up global model configuration
64
+ * @param config - Configuration object
65
+ * @returns BaseModel class
66
+ */
67
+ static setup(config: Partial<BaseModelConfig>): ModelConstructor;
68
+ /**
69
+ * Get model configuration
70
+ * @returns Partial model configuration
71
+ */
72
+ protected configure(): Partial<BaseModelConfig>;
73
+ /**
74
+ * Parent model configuration
75
+ * @returns Parent model configuration
76
+ */
77
+ protected parentConfig(): Partial<BaseModelConfig>;
78
+ /** @see IBaseModel.setStore */
79
+ setStore(key: string, value: unknown): this;
80
+ /** @see IBaseModel.getStore */
81
+ getStore(key: string | null): unknown;
82
+ /**
83
+ * Hook called when model loads
84
+ */
85
+ protected onLoad(): void;
86
+ /**
87
+ * Handle click event
88
+ * @param _evt - Custom event with element reference
89
+ */
90
+ protected onClick(_evt: MouseEvent): void;
91
+ /**
92
+ * Parent hook called after model element clicked
93
+ * @param evt - Custom event with element reference
94
+ * @returns void
95
+ */
96
+ protected parentOnClick(evt: MouseEvent): void;
97
+ /**
98
+ * Handle click with event binding
99
+ * @param evt - Custom event with element reference
100
+ */
101
+ private handleClick;
102
+ /**
103
+ * Hook called after mounting to the DOM
104
+ * @param _el - The mounted DOM element
105
+ */
106
+ protected onMount(_el: TElement): void;
107
+ /**
108
+ * Parent hook called after mounting to the DOM
109
+ * @param _el - The mounted DOM element
110
+ */
111
+ protected parentOnMount(_el: TElement): void;
112
+ /** @see IBaseModel.__onMount */
113
+ __onMount(el: TElement): void;
114
+ /**
115
+ * Hook called during constructor creation
116
+ * @param editor - Editor instance reference
117
+ */
118
+ protected onConstruct(_editor: Texditor): void;
119
+ /** @see IBaseModel.isActive */
120
+ isActive(): boolean;
121
+ /** @see IBaseModel.isVisible */
122
+ isVisible(): boolean;
123
+ /** @see IBaseModel.getId */
124
+ getId(): string;
125
+ /** @see IBaseModel.getElement */
126
+ getElement(): TElement;
127
+ /** @see IBaseModel.getName */
128
+ getName(): string;
129
+ /** @see IBaseModel.getElementTagName */
130
+ getElementTagName(): string;
131
+ /** @see IBaseModel.getClassName */
132
+ getClassName(): string;
133
+ /** @see IBaseModel.getRootClassName */
134
+ getRootClassName(): string;
135
+ /** @see IBaseModel.getTranslation */
136
+ getTranslation(): string;
137
+ /** @see IBaseModel.getIcon */
138
+ getIcon(): RenderIconContent;
139
+ /** @see IBaseModel.getIconWidth */
140
+ getIconWidth(): number;
141
+ /** @see IBaseModel.getIconHeight */
142
+ getIconHeight(): number;
143
+ /** @see IBaseModel.getModelCode */
144
+ getModelCode(): string;
145
+ /** @see IBaseModel.isVisibleTitle */
146
+ isVisibleTitle(): boolean;
147
+ /** @see IBaseModel.isAttributeTitle */
148
+ isAttributeTitle(): boolean;
149
+ /** @see IBaseModel.isVisibleIcon */
150
+ isVisibleIcon(): boolean;
151
+ /** @see IBaseModel.destroy */
152
+ destroy(): void;
153
+ /**
154
+ * Parent hook called before the element is destroyed
155
+ */
156
+ protected parentDestroy(): void;
157
+ /** Internal destroy routine: cleans up parent, then fires the destroy event. */
158
+ private originalDestroy;
159
+ }
160
+ //# sourceMappingURL=base-model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-model.d.ts","sourceRoot":"","sources":["../../../src/core/base/base-model.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { Texditor, TexditorEventBase } from '../../types';
2
+ import { EventManager as IEventManager } from '../../types/core/base/event-manager';
3
+ export default abstract class EventManager implements IEventManager {
4
+ /** Storage for registered event callbacks */
5
+ private triggers;
6
+ /** @see IEventManager.on */
7
+ on(name: string, callback: CallableFunction): void;
8
+ /** @see IEventManager.hasEvent */
9
+ hasEvent(name: string): boolean;
10
+ /** @see IEventManager.off */
11
+ off(name: string, id?: string): boolean;
12
+ /** @see IEventManager.trigger */
13
+ trigger(name: string, params?: TexditorEventBase): void;
14
+ /**
15
+ * Provides the parent component with access to the child's current editor instance.
16
+ * Returns the editor object if initialized, or `null` otherwise.
17
+ */
18
+ protected provideEditor(): Texditor | null;
19
+ }
20
+ //# sourceMappingURL=event-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-manager.d.ts","sourceRoot":"","sources":["../../../src/core/base/event-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,QAAQ,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAC1E,OAAO,KAAK,EAAE,YAAY,IAAI,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAGrF,MAAM,CAAC,OAAO,CAAC,QAAQ,OAAO,YAAa,YAAW,aAAa;IACjE,6CAA6C;IAC7C,OAAO,CAAC,QAAQ,CAA0B;IAE1C,4BAA4B;IAC5B,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,GAAG,IAAI;IAYlD,kCAAkC;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAa/B,6BAA6B;IAC7B,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO;IAgBvC,iCAAiC;IACjC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,GAAE,iBAAsB,GAAG,IAAI;IAe3D;;;OAGG;IACH,SAAS,CAAC,aAAa,IAAI,QAAQ,GAAG,IAAI;CAG3C"}
@@ -0,0 +1,3 @@
1
+ export * from './base-model';
2
+ export * from './event-manager';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/base/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './base/index'
2
+ export {}
@@ -0,0 +1 @@
1
+ import "../src/core/base/base-model.mjs";
@@ -0,0 +1,91 @@
1
+ import { BlockManager as IBlockManager, BlockElement, Texditor, BlockModel, BlockModelSchema, BlockCreateSchema, BlockSchema, BlockChildSchema, Toasts as IToasts } from '../types';
2
+ import { VirtualSelection as IVirtualSelection } from '../types/core/ui/virtual-selection';
3
+ export default class BlockManager implements IBlockManager {
4
+ /** Reference to the main editor instance */
5
+ private editor;
6
+ /** Current active block index */
7
+ private blockIndex;
8
+ /** Cached block model configurations */
9
+ private blockSchemas;
10
+ /** VirtualSelection */
11
+ private virtualSelection;
12
+ /** Unique identifier for event listeners to prevent conflicts */
13
+ private eventId;
14
+ /** Toasts instance */
15
+ private toastsInstance;
16
+ constructor(editor: Texditor);
17
+ /** @see IBlockManager.toasts */
18
+ toasts(): IToasts;
19
+ /** @see IBlockManager.refreshVirtualSelection */
20
+ refreshVirtualSelection(): IVirtualSelection | null;
21
+ /** @see IBlockManager.getVirtualSelection */
22
+ getVirtualSelection(): IVirtualSelection | null;
23
+ /** @see IBlockManager.clearVirtualSelection */
24
+ clearVirtualSelection(): void;
25
+ /** @see IBlockManager.destroyVirtualSelection */
26
+ destroyVirtualSelection(): void;
27
+ /** @see IBlockManager.getBlocksContainer */
28
+ getBlocksContainer(): HTMLElement | null;
29
+ /** @see IBlockManager.focus */
30
+ focus(index: number, startPos?: number, endPos?: number, itemIndex?: number): BlockElement | null;
31
+ /** @see IBlockManager.getBlocks */
32
+ getBlocks(): BlockElement[];
33
+ /** @see IBlockManager.getBlock */
34
+ getBlock(index?: number): BlockElement | null;
35
+ /** @see IBlockManager.getContentElement */
36
+ getContentElement(blockElement?: BlockElement): HTMLElement | null;
37
+ /** @see IBlockManager.getNextBlockElement */
38
+ getNextBlockElement(): BlockElement | null;
39
+ /** @see IBlockManager.getPrevBlockElement */
40
+ getPrevBlockElement(): BlockElement | null;
41
+ /** @see IBlockManager.findParent */
42
+ findParent(targetElement: EventTarget | BlockElement | HTMLElement): BlockElement | null;
43
+ /** @see IBlockManager.use */
44
+ use(index: number): void;
45
+ /** @see IBlockManager.getIndex */
46
+ getIndex(el?: BlockElement | HTMLElement | EventTarget): number;
47
+ /** @see IBlockManager.count */
48
+ count(): number;
49
+ /** @see IBlockManager.isEmpty */
50
+ isEmpty(index?: number): boolean;
51
+ /** @see IBlockManager.detectEmpty */
52
+ detectEmpty(emptyAttr?: boolean): void;
53
+ /** @see IBlockManager.normalize */
54
+ normalize(): void;
55
+ /** @see IBlockManager.getModel */
56
+ getModel(index?: number): BlockModel | null;
57
+ /** @see IBlockManager.removeBlock */
58
+ removeBlock(index?: number | number[], skipEvents?: boolean): number | null;
59
+ /** @see IBlockManager.createDefaultBlock */
60
+ createDefaultBlock(index?: number, options?: BlockCreateSchema): BlockElement | null;
61
+ /** @see IBlockManager.createBlock */
62
+ createBlock(name: string, index?: number, options?: BlockCreateSchema, skipEvents?: boolean, scrollIntoView?: boolean | ScrollIntoViewOptions): BlockElement | null;
63
+ /** @see IBlockManager.rebuild */
64
+ rebuild(index: number): BlockElement | null;
65
+ /** @see IBlockManager.moveBlock */
66
+ moveBlock(index: number, targetIndex: number, skipEvents?: boolean): void;
67
+ /** @see IBlockManager.merge */
68
+ merge(index: number, targetIndex: number, focus?: number, useItems?: boolean): void;
69
+ /** @see IBlockManager.convert */
70
+ convert(blockElement: BlockElement, targetModel: BlockModel): boolean;
71
+ /** @see IBlockManager.getModels */
72
+ getModels(): BlockModel[];
73
+ /** @see IBlockManager.getSchemas */
74
+ getSchemas(): BlockModelSchema[];
75
+ cleanupSchemas(): void;
76
+ /** @see IBlockManager.getSchema */
77
+ getSchema(name: string): BlockModelSchema | null;
78
+ /** @see IBlockManager.getRealName */
79
+ getRealName(name: string): string | null;
80
+ /** @see IBlockManager.htmlToData */
81
+ htmlToData(html: string): Array<BlockSchema | string>;
82
+ /** @see IBlockManager.parseBlock */
83
+ parseBlock(blockSchema: BlockSchema, skipDecode?: boolean): BlockElement | null;
84
+ /** @see IBlockManager.parseBlocks */
85
+ parseBlocks(data: BlockSchema[], skipDecode?: boolean): BlockElement[];
86
+ /** @see IBlockManager.parseChildren */
87
+ parseChildren(schema: BlockSchema | BlockChildSchema, skipDecode?: boolean, returnElement?: boolean): Node[];
88
+ /** @see IBlockManager.destroy */
89
+ destroy(): void;
90
+ }
91
+ //# sourceMappingURL=block-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"block-manager.d.ts","sourceRoot":"","sources":["../../src/core/block-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,73 @@
1
+ import { Commands as ICommands, Texditor } from '../types';
2
+ /**
3
+ * The Commands class handles text formatting operations
4
+ */
5
+ export default class Commands implements ICommands {
6
+ /** Reference to the main editor instance */
7
+ private editor;
8
+ static DIR_LEFT: string;
9
+ static DIR_LEFT_SPACE: string;
10
+ static DIR_RIGHT: string;
11
+ static DIR_RIGHT_SPACE: string;
12
+ static DIR_FULL: string;
13
+ static DIR_FULL_SPACE: string;
14
+ static DIR_FULL_SPACE_LEFT: string;
15
+ static DIR_FULL_SPACE_RIGHT: string;
16
+ static DIR_INSIDE: string;
17
+ static DIR_MULTIPLE_INSIDE_TO_INSIDE: string;
18
+ static DIR_MULTIPLE_INSIDE_TO_PARENT_INSIDE: string;
19
+ static DIR_MULTIPLE_INSIDE_TO_RIGHT: string;
20
+ static DIR_MULTIPLE_INSIDE_TO_LEFT: string;
21
+ static DIR_OUTSIDE: string;
22
+ static DIR_MULTIPLE_OUTSIDE: string;
23
+ static DIR_NONE: null;
24
+ static DIR_IGNORE: string;
25
+ constructor(editor: Texditor);
26
+ /** @see ICommands.formatTextRange */
27
+ formatTextRange(tagName: string, startOffset: number, endOffset: number, container: HTMLElement): void;
28
+ /** @see ICommands.format */
29
+ format(tagName: string, focus?: boolean): void;
30
+ /** @see ICommands.normalize */
31
+ normalize(container?: HTMLElement): void;
32
+ /** @see ICommands.createFormat */
33
+ createFormat(tagName: string): void;
34
+ /** @see ICommands.removeFormat */
35
+ removeFormat(tagName: string, focus?: boolean, normalize?: boolean): void;
36
+ /** @see ICommands.replaceEmptyEdges */
37
+ replaceEmptyEdges(el: HTMLElement, item?: HTMLElement | Node): void;
38
+ /** @see ICommands.clearAllFormatting */
39
+ clearAllFormatting(normalize?: boolean): void;
40
+ /** @see ICommands.findTags */
41
+ findTags(tagName?: string | boolean, children?: boolean): HTMLElement[];
42
+ /** @see ICommands.getSelectionDirection */
43
+ getSelectionDirection(tagName: string | HTMLElement): string | null;
44
+ /** @see ICommands.flattenNestedTags */
45
+ flattenNestedTags(parentElement: HTMLElement): void;
46
+ /** @see ICommands.splitElement */
47
+ splitElement(element: HTMLElement, startIndex: number, endIndex: number): [HTMLElement, DocumentFragment, HTMLElement];
48
+ /**
49
+ * Splits a node at a specific text position
50
+ * @param node - Node to split
51
+ * @param position - Position to split at
52
+ * @returns Tuple of [before node, after node]
53
+ */
54
+ private splitNodeAtTextPosition;
55
+ /** @see ICommands.mergeAdjacentTags */
56
+ mergeAdjacentTags(root: HTMLElement | Element): void;
57
+ /**
58
+ * Internal method to handle selection operations
59
+ * @param callback - Function to execute with selection context
60
+ * @param select - Whether to reselect after operation
61
+ */
62
+ private selection;
63
+ /** @see ICommands.removeEmptyTags */
64
+ removeEmptyTags(element: HTMLElement, tagName: string): void;
65
+ /** @see ICommands.getEdgeChars */
66
+ getEdgeChars(str: string): {
67
+ firstChar: string;
68
+ lastChar: string;
69
+ isEmptyFirstChar: boolean;
70
+ isEmptyLastChar: boolean;
71
+ };
72
+ }
73
+ //# sourceMappingURL=commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/core/commands.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { ConfigOptions, Config as IConfig } from '../types';
2
+ export default class Config implements IConfig {
3
+ /** Internal storage for configuration values */
4
+ private options;
5
+ constructor(config: ConfigOptions);
6
+ get(key: 'defaultBlock', defaultValue: string): string;
7
+ get<K extends keyof ConfigOptions>(key: K): ConfigOptions[K];
8
+ get<K extends keyof ConfigOptions>(key: K, defaultValue: Required<ConfigOptions>[K]): Required<ConfigOptions>[K];
9
+ get(key: string, defaultValue: unknown): unknown;
10
+ }
11
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,IAAI,OAAO,EAAE,MAAM,SAAS,CAAC;AAChE,MAAM,CAAC,OAAO,OAAO,MAAO,YAAW,OAAO;IAC5C,gDAAgD;IAChD,OAAO,CAAC,OAAO,CAAgB;gBAEnB,MAAM,EAAE,aAAa;IAKjC,GAAG,CAAC,GAAG,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM;IACtD,GAAG,CAAC,CAAC,SAAS,MAAM,aAAa,EAAE,GAAG,EAAE,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC;IAC5D,GAAG,CAAC,CAAC,SAAS,MAAM,aAAa,EAAE,GAAG,EAAE,CAAC,EAAE,YAAY,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAChH,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,GAAG,OAAO;CAWjD"}