@ecsplico/editor 0.0.0-stage → 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 (1286) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +233 -2
  3. package/dist/code/CodeSurface.d.ts +24 -0
  4. package/dist/code/CodeSurface.js +57 -0
  5. package/dist/code/CodeSurface.js.map +1 -0
  6. package/dist/code/CodeSurface.vue.d.ts +29 -0
  7. package/dist/code/CodeSurface2.js +75 -0
  8. package/dist/code/CodeSurface2.js.map +1 -0
  9. package/dist/code/chrome-theme.js +76 -0
  10. package/dist/code/chrome-theme.js.map +1 -0
  11. package/dist/code/compartments.js +19 -0
  12. package/dist/code/compartments.js.map +1 -0
  13. package/dist/code/editor-factory.d.ts +41 -0
  14. package/dist/code/editor-factory.js +126 -0
  15. package/dist/code/editor-factory.js.map +1 -0
  16. package/dist/code/format-json.d.ts +27 -0
  17. package/dist/code/format-json.js +94 -0
  18. package/dist/code/format-json.js.map +1 -0
  19. package/dist/code/highlight-style.js +118 -0
  20. package/dist/code/highlight-style.js.map +1 -0
  21. package/dist/code/index.d.ts +6 -0
  22. package/dist/code/index.js +6 -0
  23. package/dist/code/jsonl-language.d.ts +6 -0
  24. package/dist/code/jsonl-language.js +33 -0
  25. package/dist/code/jsonl-language.js.map +1 -0
  26. package/dist/code/kind.d.ts +15 -0
  27. package/dist/code/kind.js +142 -0
  28. package/dist/code/kind.js.map +1 -0
  29. package/dist/code/lang-registry.d.ts +31 -0
  30. package/dist/code/lang-registry.js +54 -0
  31. package/dist/code/lang-registry.js.map +1 -0
  32. package/dist/code/react.d.ts +2 -0
  33. package/dist/code/react.js +1 -0
  34. package/dist/code/vue.d.ts +2 -0
  35. package/dist/code/vue.js +1 -0
  36. package/dist/core/abilities.d.ts +32 -0
  37. package/dist/core/abilities.js +160 -0
  38. package/dist/core/abilities.js.map +1 -0
  39. package/dist/core/block-convert.d.ts +59 -0
  40. package/dist/core/block-convert.js +164 -0
  41. package/dist/core/block-convert.js.map +1 -0
  42. package/dist/core/block-drag.d.ts +12 -0
  43. package/dist/core/block-drag.js +62 -0
  44. package/dist/core/block-drag.js.map +1 -0
  45. package/dist/core/block-flash.d.ts +19 -0
  46. package/dist/core/block-flash.js +66 -0
  47. package/dist/core/block-flash.js.map +1 -0
  48. package/dist/core/context.d.ts +63 -0
  49. package/dist/core/context.js +108 -0
  50. package/dist/core/context.js.map +1 -0
  51. package/dist/core/convert.d.ts +96 -0
  52. package/dist/core/convert.js +241 -0
  53. package/dist/core/convert.js.map +1 -0
  54. package/dist/core/core-feature.d.ts +17 -0
  55. package/dist/core/core-feature.js +100 -0
  56. package/dist/core/core-feature.js.map +1 -0
  57. package/dist/core/define-editor.d.ts +23 -0
  58. package/dist/core/define-editor.js +110 -0
  59. package/dist/core/define-editor.js.map +1 -0
  60. package/dist/core/doc-anchors.d.ts +67 -0
  61. package/dist/core/doc-anchors.js +112 -0
  62. package/dist/core/doc-anchors.js.map +1 -0
  63. package/dist/core/document-markdown.d.ts +13 -0
  64. package/dist/core/document-markdown.js +31 -0
  65. package/dist/core/document-markdown.js.map +1 -0
  66. package/dist/core/download.d.ts +5 -0
  67. package/dist/core/download.js +16 -0
  68. package/dist/core/download.js.map +1 -0
  69. package/dist/core/editor-ui.d.ts +45 -0
  70. package/dist/core/editor-ui.js +38 -0
  71. package/dist/core/editor-ui.js.map +1 -0
  72. package/dist/core/extension-points.d.ts +64 -0
  73. package/dist/core/feature-context.d.ts +32 -0
  74. package/dist/core/feature-context.js +46 -0
  75. package/dist/core/feature-context.js.map +1 -0
  76. package/dist/core/feature.d.ts +234 -0
  77. package/dist/core/feature.js +13 -0
  78. package/dist/core/feature.js.map +1 -0
  79. package/dist/core/fences.d.ts +16 -0
  80. package/dist/core/fences.js +105 -0
  81. package/dist/core/fences.js.map +1 -0
  82. package/dist/core/fetch-error.d.ts +5 -0
  83. package/dist/core/fetch-error.js +11 -0
  84. package/dist/core/fetch-error.js.map +1 -0
  85. package/dist/core/index.d.ts +28 -0
  86. package/dist/core/index.js +27 -0
  87. package/dist/core/metadata-types.d.ts +27 -0
  88. package/dist/core/metadata-types.js +10 -0
  89. package/dist/core/metadata-types.js.map +1 -0
  90. package/dist/core/metadata.d.ts +39 -0
  91. package/dist/core/metadata.js +76 -0
  92. package/dist/core/metadata.js.map +1 -0
  93. package/dist/core/notify.d.ts +31 -0
  94. package/dist/core/notify.js +7 -0
  95. package/dist/core/notify.js.map +1 -0
  96. package/dist/core/pipeline.d.ts +52 -0
  97. package/dist/core/pipeline.js +78 -0
  98. package/dist/core/pipeline.js.map +1 -0
  99. package/dist/core/schema/abilities.d.ts +55 -0
  100. package/dist/core/schema/abilities.js +113 -0
  101. package/dist/core/schema/abilities.js.map +1 -0
  102. package/dist/core/schema/block-ids.d.ts +29 -0
  103. package/dist/core/schema/block-ids.js +134 -0
  104. package/dist/core/schema/block-ids.js.map +1 -0
  105. package/dist/core/schema/hex-color.d.ts +5 -0
  106. package/dist/core/schema/hex-color.js +7 -0
  107. package/dist/core/schema/hex-color.js.map +1 -0
  108. package/dist/core/schema/index.d.ts +21 -0
  109. package/dist/core/schema/index.js +33 -0
  110. package/dist/core/schema/index.js.map +1 -0
  111. package/dist/core/schema/mark-flags.d.ts +12 -0
  112. package/dist/core/schema/node-flags.d.ts +23 -0
  113. package/dist/core/schema/node-flags.js +34 -0
  114. package/dist/core/schema/node-flags.js.map +1 -0
  115. package/dist/core/schema/opaque-fence.d.ts +11 -0
  116. package/dist/core/schema/opaque-fence.js +57 -0
  117. package/dist/core/schema/opaque-fence.js.map +1 -0
  118. package/dist/core/schema/strike.d.ts +4 -0
  119. package/dist/core/schema/strike.js +9 -0
  120. package/dist/core/schema/strike.js.map +1 -0
  121. package/dist/core/selection-range.d.ts +13 -0
  122. package/dist/core/selection-range.js +28 -0
  123. package/dist/core/selection-range.js.map +1 -0
  124. package/dist/core/slash.d.ts +24 -0
  125. package/dist/core/slash.js +60 -0
  126. package/dist/core/slash.js.map +1 -0
  127. package/dist/core/store.d.ts +22 -0
  128. package/dist/core/store.js +61 -0
  129. package/dist/core/store.js.map +1 -0
  130. package/dist/core/suggestion-popup.d.ts +63 -0
  131. package/dist/core/suggestion-popup.js +57 -0
  132. package/dist/core/suggestion-popup.js.map +1 -0
  133. package/dist/core/tag-name.js +11 -0
  134. package/dist/core/tag-name.js.map +1 -0
  135. package/dist/core/toolbar-items.d.ts +10 -0
  136. package/dist/core/toolbar-items.js +206 -0
  137. package/dist/core/toolbar-items.js.map +1 -0
  138. package/dist/core/toolbar.d.ts +74 -0
  139. package/dist/core/toolbar.js +45 -0
  140. package/dist/core/toolbar.js.map +1 -0
  141. package/dist/document/DocumentSurface.d.ts +38 -0
  142. package/dist/document/DocumentSurface.js +44 -0
  143. package/dist/document/DocumentSurface.js.map +1 -0
  144. package/dist/document/DocumentSurface.vue.d.ts +56 -0
  145. package/dist/document/DocumentSurface2.js +71 -0
  146. package/dist/document/DocumentSurface2.js.map +1 -0
  147. package/dist/document/react.d.ts +2 -0
  148. package/dist/document/react.js +1 -0
  149. package/dist/document/vue.d.ts +2 -0
  150. package/dist/document/vue.js +1 -0
  151. package/dist/features/ai/agent-op-review.d.ts +69 -0
  152. package/dist/features/ai/agent-op-review.js +182 -0
  153. package/dist/features/ai/agent-op-review.js.map +1 -0
  154. package/dist/features/ai/agent-ops.d.ts +15 -0
  155. package/dist/features/ai/agent-ops.js +228 -0
  156. package/dist/features/ai/agent-ops.js.map +1 -0
  157. package/dist/features/ai/ai-apply.d.ts +76 -0
  158. package/dist/features/ai/ai-apply.js +193 -0
  159. package/dist/features/ai/ai-apply.js.map +1 -0
  160. package/dist/features/ai/ai-menu.d.ts +38 -0
  161. package/dist/features/ai/ai-menu.js +20 -0
  162. package/dist/features/ai/ai-menu.js.map +1 -0
  163. package/dist/features/ai/ai-review.d.ts +136 -0
  164. package/dist/features/ai/ai-review.js +543 -0
  165. package/dist/features/ai/ai-review.js.map +1 -0
  166. package/dist/features/ai/ai-selection-highlight.d.ts +21 -0
  167. package/dist/features/ai/ai-selection-highlight.js +44 -0
  168. package/dist/features/ai/ai-selection-highlight.js.map +1 -0
  169. package/dist/features/ai/ai-sse.d.ts +28 -0
  170. package/dist/features/ai/ai-sse.js +82 -0
  171. package/dist/features/ai/ai-sse.js.map +1 -0
  172. package/dist/features/ai/assistant.d.ts +53 -0
  173. package/dist/features/ai/assistant.js +82 -0
  174. package/dist/features/ai/assistant.js.map +1 -0
  175. package/dist/features/ai/block-actions.d.ts +20 -0
  176. package/dist/features/ai/block-actions.js +55 -0
  177. package/dist/features/ai/block-actions.js.map +1 -0
  178. package/dist/features/ai/components/AiReviewBar.js +145 -0
  179. package/dist/features/ai/components/AiReviewBar.js.map +1 -0
  180. package/dist/features/ai/components/AiReviewBar.vue.d.ts +15 -0
  181. package/dist/features/ai/components/AiSelectionMenu.js +519 -0
  182. package/dist/features/ai/components/AiSelectionMenu.js.map +1 -0
  183. package/dist/features/ai/components/AiSelectionMenu.vue.d.ts +17 -0
  184. package/dist/features/ai/components/AiSidebar.js +378 -0
  185. package/dist/features/ai/components/AiSidebar.js.map +1 -0
  186. package/dist/features/ai/components/AiSidebar.vue.d.ts +26 -0
  187. package/dist/features/ai/components/DocumentChatAnswer.js +67 -0
  188. package/dist/features/ai/components/DocumentChatAnswer.js.map +1 -0
  189. package/dist/features/ai/components/DocumentChatAnswer.vue.d.ts +13 -0
  190. package/dist/features/ai/components/DocumentChatOps.js +113 -0
  191. package/dist/features/ai/components/DocumentChatOps.js.map +1 -0
  192. package/dist/features/ai/components/DocumentChatOps.vue.d.ts +27 -0
  193. package/dist/features/ai/components/ModelQuickSwitch.js +84 -0
  194. package/dist/features/ai/components/ModelQuickSwitch.js.map +1 -0
  195. package/dist/features/ai/components/ModelQuickSwitch.vue.d.ts +23 -0
  196. package/dist/features/ai/components/SettingsAiTab.js +88 -0
  197. package/dist/features/ai/components/SettingsAiTab.js.map +1 -0
  198. package/dist/features/ai/components/SettingsAiTab.vue.d.ts +6 -0
  199. package/dist/features/ai/components/SettingsModelProfiles.js +260 -0
  200. package/dist/features/ai/components/SettingsModelProfiles.js.map +1 -0
  201. package/dist/features/ai/components/SettingsModelProfiles.vue.d.ts +6 -0
  202. package/dist/features/ai/document-chat-model.d.ts +88 -0
  203. package/dist/features/ai/document-chat-model.js +190 -0
  204. package/dist/features/ai/document-chat-model.js.map +1 -0
  205. package/dist/features/ai/document-chat.d.ts +17 -0
  206. package/dist/features/ai/document-chat.js +112 -0
  207. package/dist/features/ai/document-chat.js.map +1 -0
  208. package/dist/features/ai/feature.d.ts +25 -0
  209. package/dist/features/ai/feature.js +89 -0
  210. package/dist/features/ai/feature.js.map +1 -0
  211. package/dist/features/ai/ghost-autocomplete.d.ts +47 -0
  212. package/dist/features/ai/ghost-autocomplete.js +204 -0
  213. package/dist/features/ai/ghost-autocomplete.js.map +1 -0
  214. package/dist/features/ai/index.d.ts +24 -0
  215. package/dist/features/ai/index.js +23 -0
  216. package/dist/features/ai/model-profiles.d.ts +36 -0
  217. package/dist/features/ai/model-profiles.js +111 -0
  218. package/dist/features/ai/model-profiles.js.map +1 -0
  219. package/dist/features/ai/preview-extensions.js +14 -0
  220. package/dist/features/ai/preview-extensions.js.map +1 -0
  221. package/dist/features/ai/protocol/agent-ops.d.ts +120 -0
  222. package/dist/features/ai/protocol/agent-ops.js +298 -0
  223. package/dist/features/ai/protocol/agent-ops.js.map +1 -0
  224. package/dist/features/ai/protocol/chat.d.ts +57 -0
  225. package/dist/features/ai/protocol/chat.js +146 -0
  226. package/dist/features/ai/protocol/chat.js.map +1 -0
  227. package/dist/features/ai/protocol/complete.d.ts +21 -0
  228. package/dist/features/ai/protocol/complete.js +81 -0
  229. package/dist/features/ai/protocol/complete.js.map +1 -0
  230. package/dist/features/ai/protocol/index.d.ts +7 -0
  231. package/dist/features/ai/protocol/index.js +7 -0
  232. package/dist/features/ai/protocol/models.d.ts +48 -0
  233. package/dist/features/ai/protocol/models.js +41 -0
  234. package/dist/features/ai/protocol/models.js.map +1 -0
  235. package/dist/features/ai/protocol/schemas.d.ts +36 -0
  236. package/dist/features/ai/protocol/schemas.js +40 -0
  237. package/dist/features/ai/protocol/schemas.js.map +1 -0
  238. package/dist/features/ai/protocol/tasks.d.ts +107 -0
  239. package/dist/features/ai/protocol/tasks.js +227 -0
  240. package/dist/features/ai/protocol/tasks.js.map +1 -0
  241. package/dist/features/ai/rate-limit.d.ts +9 -0
  242. package/dist/features/ai/rate-limit.js +20 -0
  243. package/dist/features/ai/rate-limit.js.map +1 -0
  244. package/dist/features/ai/react/AiReviewBar.d.ts +12 -0
  245. package/dist/features/ai/react/AiReviewBar.js +156 -0
  246. package/dist/features/ai/react/AiReviewBar.js.map +1 -0
  247. package/dist/features/ai/react/AiSelectionMenu.d.ts +14 -0
  248. package/dist/features/ai/react/AiSelectionMenu.js +513 -0
  249. package/dist/features/ai/react/AiSelectionMenu.js.map +1 -0
  250. package/dist/features/ai/react/AiSidebar.d.ts +19 -0
  251. package/dist/features/ai/react/AiSidebar.js +339 -0
  252. package/dist/features/ai/react/AiSidebar.js.map +1 -0
  253. package/dist/features/ai/react/DocumentChatAnswer.d.ts +10 -0
  254. package/dist/features/ai/react/DocumentChatAnswer.js +70 -0
  255. package/dist/features/ai/react/DocumentChatAnswer.js.map +1 -0
  256. package/dist/features/ai/react/DocumentChatOps.d.ts +19 -0
  257. package/dist/features/ai/react/DocumentChatOps.js +111 -0
  258. package/dist/features/ai/react/DocumentChatOps.js.map +1 -0
  259. package/dist/features/ai/react/ModelQuickSwitch.d.ts +19 -0
  260. package/dist/features/ai/react/ModelQuickSwitch.js +89 -0
  261. package/dist/features/ai/react/ModelQuickSwitch.js.map +1 -0
  262. package/dist/features/ai/react/SettingsAiTab.d.ts +5 -0
  263. package/dist/features/ai/react/SettingsAiTab.js +103 -0
  264. package/dist/features/ai/react/SettingsAiTab.js.map +1 -0
  265. package/dist/features/ai/react/SettingsModelProfiles.d.ts +8 -0
  266. package/dist/features/ai/react/SettingsModelProfiles.js +318 -0
  267. package/dist/features/ai/react/SettingsModelProfiles.js.map +1 -0
  268. package/dist/features/ai/react/use-ai-assistant.d.ts +22 -0
  269. package/dist/features/ai/react/use-ai-assistant.js +36 -0
  270. package/dist/features/ai/react/use-ai-assistant.js.map +1 -0
  271. package/dist/features/ai/react/use-document-chat.d.ts +32 -0
  272. package/dist/features/ai/react/use-document-chat.js +43 -0
  273. package/dist/features/ai/react/use-document-chat.js.map +1 -0
  274. package/dist/features/ai/react/use-model-profiles.d.ts +20 -0
  275. package/dist/features/ai/react/use-model-profiles.js +33 -0
  276. package/dist/features/ai/react/use-model-profiles.js.map +1 -0
  277. package/dist/features/ai/react.d.ts +23 -0
  278. package/dist/features/ai/react.js +28 -0
  279. package/dist/features/ai/react.js.map +1 -0
  280. package/dist/features/ai/sidebar-flow.d.ts +61 -0
  281. package/dist/features/ai/sidebar-flow.js +125 -0
  282. package/dist/features/ai/sidebar-flow.js.map +1 -0
  283. package/dist/features/ai/use-ai-assistant.d.ts +22 -0
  284. package/dist/features/ai/use-ai-assistant.js +39 -0
  285. package/dist/features/ai/use-ai-assistant.js.map +1 -0
  286. package/dist/features/ai/use-document-chat.d.ts +33 -0
  287. package/dist/features/ai/use-document-chat.js +45 -0
  288. package/dist/features/ai/use-document-chat.js.map +1 -0
  289. package/dist/features/ai/use-model-profiles.d.ts +23 -0
  290. package/dist/features/ai/use-model-profiles.js +50 -0
  291. package/dist/features/ai/use-model-profiles.js.map +1 -0
  292. package/dist/features/ai/vue.d.ts +21 -0
  293. package/dist/features/ai/vue.js +28 -0
  294. package/dist/features/ai/vue.js.map +1 -0
  295. package/dist/features/authors/attribution.d.ts +36 -0
  296. package/dist/features/authors/attribution.js +94 -0
  297. package/dist/features/authors/attribution.js.map +1 -0
  298. package/dist/features/authors/author-color-styles.d.ts +12 -0
  299. package/dist/features/authors/author-color-styles.js +24 -0
  300. package/dist/features/authors/author-color-styles.js.map +1 -0
  301. package/dist/features/authors/components/AuthorColorsButton.js +50 -0
  302. package/dist/features/authors/components/AuthorColorsButton.js.map +1 -0
  303. package/dist/features/authors/components/AuthorColorsButton.vue.d.ts +11 -0
  304. package/dist/features/authors/components/AuthorColorsPanel.js +72 -0
  305. package/dist/features/authors/components/AuthorColorsPanel.js.map +1 -0
  306. package/dist/features/authors/components/AuthorColorsPanel.vue.d.ts +11 -0
  307. package/dist/features/authors/components/SettingsAuthorsTab.js +49 -0
  308. package/dist/features/authors/components/SettingsAuthorsTab.js.map +1 -0
  309. package/dist/features/authors/components/SettingsAuthorsTab.vue.d.ts +6 -0
  310. package/dist/features/authors/feature.d.ts +22 -0
  311. package/dist/features/authors/feature.js +47 -0
  312. package/dist/features/authors/feature.js.map +1 -0
  313. package/dist/features/authors/index.d.ts +7 -0
  314. package/dist/features/authors/index.js +6 -0
  315. package/dist/features/authors/react/AuthorColorsButton.d.ts +8 -0
  316. package/dist/features/authors/react/AuthorColorsButton.js +41 -0
  317. package/dist/features/authors/react/AuthorColorsButton.js.map +1 -0
  318. package/dist/features/authors/react/AuthorColorsPanel.d.ts +8 -0
  319. package/dist/features/authors/react/AuthorColorsPanel.js +125 -0
  320. package/dist/features/authors/react/AuthorColorsPanel.js.map +1 -0
  321. package/dist/features/authors/react/SettingsAuthorsTab.d.ts +5 -0
  322. package/dist/features/authors/react/SettingsAuthorsTab.js +92 -0
  323. package/dist/features/authors/react/SettingsAuthorsTab.js.map +1 -0
  324. package/dist/features/authors/react.d.ts +11 -0
  325. package/dist/features/authors/react.js +16 -0
  326. package/dist/features/authors/react.js.map +1 -0
  327. package/dist/features/authors/schema.d.ts +22 -0
  328. package/dist/features/authors/schema.js +70 -0
  329. package/dist/features/authors/schema.js.map +1 -0
  330. package/dist/features/authors/vue.d.ts +10 -0
  331. package/dist/features/authors/vue.js +16 -0
  332. package/dist/features/authors/vue.js.map +1 -0
  333. package/dist/features/block-ui/block-actions.d.ts +17 -0
  334. package/dist/features/block-ui/block-actions.js +37 -0
  335. package/dist/features/block-ui/block-actions.js.map +1 -0
  336. package/dist/features/block-ui/components/BlockActionsOverlay.js +142 -0
  337. package/dist/features/block-ui/components/BlockActionsOverlay.js.map +1 -0
  338. package/dist/features/block-ui/components/BlockActionsOverlay.vue.d.ts +25 -0
  339. package/dist/features/block-ui/components/BlockHandles.js +113 -0
  340. package/dist/features/block-ui/components/BlockHandles.js.map +1 -0
  341. package/dist/features/block-ui/components/BlockUi.js +181 -0
  342. package/dist/features/block-ui/components/BlockUi.js.map +1 -0
  343. package/dist/features/block-ui/components/BlockUi.vue.d.ts +17 -0
  344. package/dist/features/block-ui/feature.d.ts +21 -0
  345. package/dist/features/block-ui/feature.js +23 -0
  346. package/dist/features/block-ui/feature.js.map +1 -0
  347. package/dist/features/block-ui/handle-geometry.js +52 -0
  348. package/dist/features/block-ui/handle-geometry.js.map +1 -0
  349. package/dist/features/block-ui/index.d.ts +3 -0
  350. package/dist/features/block-ui/index.js +3 -0
  351. package/dist/features/block-ui/react/BlockActionsOverlay.d.ts +19 -0
  352. package/dist/features/block-ui/react/BlockActionsOverlay.js +142 -0
  353. package/dist/features/block-ui/react/BlockActionsOverlay.js.map +1 -0
  354. package/dist/features/block-ui/react/BlockHandles.d.ts +15 -0
  355. package/dist/features/block-ui/react/BlockHandles.js +104 -0
  356. package/dist/features/block-ui/react/BlockHandles.js.map +1 -0
  357. package/dist/features/block-ui/react/BlockUi.d.ts +14 -0
  358. package/dist/features/block-ui/react/BlockUi.js +174 -0
  359. package/dist/features/block-ui/react/BlockUi.js.map +1 -0
  360. package/dist/features/block-ui/react.d.ts +11 -0
  361. package/dist/features/block-ui/react.js +13 -0
  362. package/dist/features/block-ui/react.js.map +1 -0
  363. package/dist/features/block-ui/vue.d.ts +9 -0
  364. package/dist/features/block-ui/vue.js +12 -0
  365. package/dist/features/block-ui/vue.js.map +1 -0
  366. package/dist/features/collab/anchor-resolver.d.ts +7 -0
  367. package/dist/features/collab/anchor-resolver.js +92 -0
  368. package/dist/features/collab/anchor-resolver.js.map +1 -0
  369. package/dist/features/collab/feature.d.ts +22 -0
  370. package/dist/features/collab/feature.js +36 -0
  371. package/dist/features/collab/feature.js.map +1 -0
  372. package/dist/features/collab/index.d.ts +3 -0
  373. package/dist/features/collab/index.js +3 -0
  374. package/dist/features/collab/react.d.ts +7 -0
  375. package/dist/features/collab/react.js +10 -0
  376. package/dist/features/collab/react.js.map +1 -0
  377. package/dist/features/collab/vue.d.ts +6 -0
  378. package/dist/features/collab/vue.js +37 -0
  379. package/dist/features/collab/vue.js.map +1 -0
  380. package/dist/features/comments/comments-plugin.d.ts +71 -0
  381. package/dist/features/comments/comments-plugin.js +185 -0
  382. package/dist/features/comments/comments-plugin.js.map +1 -0
  383. package/dist/features/comments/components/CommentBubble.js +54 -0
  384. package/dist/features/comments/components/CommentBubble.js.map +1 -0
  385. package/dist/features/comments/components/CommentBubble.vue.d.ts +14 -0
  386. package/dist/features/comments/components/CommentComposer.js +87 -0
  387. package/dist/features/comments/components/CommentComposer.js.map +1 -0
  388. package/dist/features/comments/components/CommentComposer.vue.d.ts +21 -0
  389. package/dist/features/comments/components/CommentThreadView.js +255 -0
  390. package/dist/features/comments/components/CommentThreadView.js.map +1 -0
  391. package/dist/features/comments/components/CommentThreadView.vue.d.ts +29 -0
  392. package/dist/features/comments/components/CommentsListMenu.js +134 -0
  393. package/dist/features/comments/components/CommentsListMenu.js.map +1 -0
  394. package/dist/features/comments/components/CommentsListMenu.vue.d.ts +10 -0
  395. package/dist/features/comments/components/CommentsMargin.js +291 -0
  396. package/dist/features/comments/components/CommentsMargin.js.map +1 -0
  397. package/dist/features/comments/components/CommentsMargin.vue.d.ts +16 -0
  398. package/dist/features/comments/components/CommentsOverlay.js +39 -0
  399. package/dist/features/comments/components/CommentsOverlay.js.map +1 -0
  400. package/dist/features/comments/components/CommentsPopover.js +124 -0
  401. package/dist/features/comments/components/CommentsPopover.js.map +1 -0
  402. package/dist/features/comments/components/CommentsPopover.vue.d.ts +10 -0
  403. package/dist/features/comments/components/CommentsToolbarButton.js +61 -0
  404. package/dist/features/comments/components/CommentsToolbarButton.js.map +1 -0
  405. package/dist/features/comments/components/SettingsCommentsTab.js +46 -0
  406. package/dist/features/comments/components/SettingsCommentsTab.js.map +1 -0
  407. package/dist/features/comments/components/SettingsCommentsTab.vue.d.ts +6 -0
  408. package/dist/features/comments/feature.d.ts +39 -0
  409. package/dist/features/comments/feature.js +128 -0
  410. package/dist/features/comments/feature.js.map +1 -0
  411. package/dist/features/comments/index.d.ts +6 -0
  412. package/dist/features/comments/index.js +6 -0
  413. package/dist/features/comments/model.d.ts +87 -0
  414. package/dist/features/comments/model.js +390 -0
  415. package/dist/features/comments/model.js.map +1 -0
  416. package/dist/features/comments/react/CommentAvatar.js +24 -0
  417. package/dist/features/comments/react/CommentAvatar.js.map +1 -0
  418. package/dist/features/comments/react/CommentBubble.d.ts +11 -0
  419. package/dist/features/comments/react/CommentBubble.js +43 -0
  420. package/dist/features/comments/react/CommentBubble.js.map +1 -0
  421. package/dist/features/comments/react/CommentComposer.d.ts +15 -0
  422. package/dist/features/comments/react/CommentComposer.js +69 -0
  423. package/dist/features/comments/react/CommentComposer.js.map +1 -0
  424. package/dist/features/comments/react/CommentThreadView.d.ts +24 -0
  425. package/dist/features/comments/react/CommentThreadView.js +249 -0
  426. package/dist/features/comments/react/CommentThreadView.js.map +1 -0
  427. package/dist/features/comments/react/CommentsListMenu.d.ts +8 -0
  428. package/dist/features/comments/react/CommentsListMenu.js +115 -0
  429. package/dist/features/comments/react/CommentsListMenu.js.map +1 -0
  430. package/dist/features/comments/react/CommentsMargin.d.ts +16 -0
  431. package/dist/features/comments/react/CommentsMargin.js +294 -0
  432. package/dist/features/comments/react/CommentsMargin.js.map +1 -0
  433. package/dist/features/comments/react/CommentsOverlay.d.ts +11 -0
  434. package/dist/features/comments/react/CommentsOverlay.js +52 -0
  435. package/dist/features/comments/react/CommentsOverlay.js.map +1 -0
  436. package/dist/features/comments/react/CommentsPopover.d.ts +15 -0
  437. package/dist/features/comments/react/CommentsPopover.js +107 -0
  438. package/dist/features/comments/react/CommentsPopover.js.map +1 -0
  439. package/dist/features/comments/react/CommentsToolbarButton.d.ts +12 -0
  440. package/dist/features/comments/react/CommentsToolbarButton.js +52 -0
  441. package/dist/features/comments/react/CommentsToolbarButton.js.map +1 -0
  442. package/dist/features/comments/react/SettingsCommentsTab.d.ts +5 -0
  443. package/dist/features/comments/react/SettingsCommentsTab.js +77 -0
  444. package/dist/features/comments/react/SettingsCommentsTab.js.map +1 -0
  445. package/dist/features/comments/react/use-comments.d.ts +17 -0
  446. package/dist/features/comments/react/use-comments.js +37 -0
  447. package/dist/features/comments/react/use-comments.js.map +1 -0
  448. package/dist/features/comments/react.d.ts +23 -0
  449. package/dist/features/comments/react.js +28 -0
  450. package/dist/features/comments/react.js.map +1 -0
  451. package/dist/features/comments/schema.d.ts +51 -0
  452. package/dist/features/comments/schema.js +41 -0
  453. package/dist/features/comments/schema.js.map +1 -0
  454. package/dist/features/comments/shortcuts.js +34 -0
  455. package/dist/features/comments/shortcuts.js.map +1 -0
  456. package/dist/features/comments/use-comments.d.ts +37 -0
  457. package/dist/features/comments/use-comments.js +45 -0
  458. package/dist/features/comments/use-comments.js.map +1 -0
  459. package/dist/features/comments/vue.d.ts +20 -0
  460. package/dist/features/comments/vue.js +28 -0
  461. package/dist/features/comments/vue.js.map +1 -0
  462. package/dist/features/composites/ai-brief.d.ts +31 -0
  463. package/dist/features/composites/ai-brief.js +56 -0
  464. package/dist/features/composites/ai-brief.js.map +1 -0
  465. package/dist/features/composites/anchors.d.ts +47 -0
  466. package/dist/features/composites/anchors.js +137 -0
  467. package/dist/features/composites/anchors.js.map +1 -0
  468. package/dist/features/composites/components/CompositeChrome.js +243 -0
  469. package/dist/features/composites/components/CompositeChrome.js.map +1 -0
  470. package/dist/features/composites/components/CompositeChrome.vue.d.ts +19 -0
  471. package/dist/features/composites/components/CompositeDetails.js +158 -0
  472. package/dist/features/composites/components/CompositeDetails.js.map +1 -0
  473. package/dist/features/composites/components/CompositeDetails.vue.d.ts +19 -0
  474. package/dist/features/composites/components/CompositeFieldEditor.js +114 -0
  475. package/dist/features/composites/components/CompositeFieldEditor.js.map +1 -0
  476. package/dist/features/composites/components/CompositeFieldEditor.vue.d.ts +23 -0
  477. package/dist/features/composites/components/CompositeInspector.js +439 -0
  478. package/dist/features/composites/components/CompositeInspector.js.map +1 -0
  479. package/dist/features/composites/components/CompositeInspector.vue.d.ts +32 -0
  480. package/dist/features/composites/components/CompositeStatusMenu.js +51 -0
  481. package/dist/features/composites/components/CompositeStatusMenu.js.map +1 -0
  482. package/dist/features/composites/components/CompositeStatusMenu.vue.d.ts +28 -0
  483. package/dist/features/composites/components/CompositeSummaryEditor.js +79 -0
  484. package/dist/features/composites/components/CompositeSummaryEditor.js.map +1 -0
  485. package/dist/features/composites/components/CompositeSummaryEditor.vue.d.ts +18 -0
  486. package/dist/features/composites/components/CompositeTable.js +348 -0
  487. package/dist/features/composites/components/CompositeTable.js.map +1 -0
  488. package/dist/features/composites/components/CompositeTable.vue.d.ts +15 -0
  489. package/dist/features/composites/components/CompositeTagsEditor.js +95 -0
  490. package/dist/features/composites/components/CompositeTagsEditor.js.map +1 -0
  491. package/dist/features/composites/components/CompositeTagsEditor.vue.d.ts +13 -0
  492. package/dist/features/composites/components/CompositeView.js +46 -0
  493. package/dist/features/composites/components/CompositeView.js.map +1 -0
  494. package/dist/features/composites/components/CompositeView.vue.d.ts +96 -0
  495. package/dist/features/composites/components/SettingsEditingTab.js +119 -0
  496. package/dist/features/composites/components/SettingsEditingTab.js.map +1 -0
  497. package/dist/features/composites/components/SettingsEditingTab.vue.d.ts +11 -0
  498. package/dist/features/composites/convert.d.ts +24 -0
  499. package/dist/features/composites/convert.js +145 -0
  500. package/dist/features/composites/convert.js.map +1 -0
  501. package/dist/features/composites/editing-settings-keys.js +47 -0
  502. package/dist/features/composites/editing-settings-keys.js.map +1 -0
  503. package/dist/features/composites/feature.d.ts +30 -0
  504. package/dist/features/composites/feature.js +305 -0
  505. package/dist/features/composites/feature.js.map +1 -0
  506. package/dist/features/composites/fences.d.ts +20 -0
  507. package/dist/features/composites/fences.js +86 -0
  508. package/dist/features/composites/fences.js.map +1 -0
  509. package/dist/features/composites/heading-composites.d.ts +36 -0
  510. package/dist/features/composites/heading-composites.js +140 -0
  511. package/dist/features/composites/heading-composites.js.map +1 -0
  512. package/dist/features/composites/index.d.ts +20 -0
  513. package/dist/features/composites/index.js +20 -0
  514. package/dist/features/composites/kinds.d.ts +49 -0
  515. package/dist/features/composites/kinds.js +131 -0
  516. package/dist/features/composites/kinds.js.map +1 -0
  517. package/dist/features/composites/legacy.d.ts +8 -0
  518. package/dist/features/composites/legacy.js +25 -0
  519. package/dist/features/composites/legacy.js.map +1 -0
  520. package/dist/features/composites/markdown-export.d.ts +17 -0
  521. package/dist/features/composites/markdown-export.js +49 -0
  522. package/dist/features/composites/markdown-export.js.map +1 -0
  523. package/dist/features/composites/meta-display.js +46 -0
  524. package/dist/features/composites/meta-display.js.map +1 -0
  525. package/dist/features/composites/node-views.d.ts +17 -0
  526. package/dist/features/composites/node-views.js +18 -0
  527. package/dist/features/composites/node-views.js.map +1 -0
  528. package/dist/features/composites/nodes.d.ts +56 -0
  529. package/dist/features/composites/nodes.js +480 -0
  530. package/dist/features/composites/nodes.js.map +1 -0
  531. package/dist/features/composites/outline.d.ts +35 -0
  532. package/dist/features/composites/outline.js +69 -0
  533. package/dist/features/composites/outline.js.map +1 -0
  534. package/dist/features/composites/react/CompositeChrome.d.ts +16 -0
  535. package/dist/features/composites/react/CompositeChrome.js +234 -0
  536. package/dist/features/composites/react/CompositeChrome.js.map +1 -0
  537. package/dist/features/composites/react/CompositeDetails.d.ts +16 -0
  538. package/dist/features/composites/react/CompositeDetails.js +149 -0
  539. package/dist/features/composites/react/CompositeDetails.js.map +1 -0
  540. package/dist/features/composites/react/CompositeFieldEditor.d.ts +18 -0
  541. package/dist/features/composites/react/CompositeFieldEditor.js +131 -0
  542. package/dist/features/composites/react/CompositeFieldEditor.js.map +1 -0
  543. package/dist/features/composites/react/CompositeInspector.d.ts +23 -0
  544. package/dist/features/composites/react/CompositeInspector.js +506 -0
  545. package/dist/features/composites/react/CompositeInspector.js.map +1 -0
  546. package/dist/features/composites/react/CompositeStatusMenu.d.ts +15 -0
  547. package/dist/features/composites/react/CompositeStatusMenu.js +36 -0
  548. package/dist/features/composites/react/CompositeStatusMenu.js.map +1 -0
  549. package/dist/features/composites/react/CompositeSummaryEditor.d.ts +15 -0
  550. package/dist/features/composites/react/CompositeSummaryEditor.js +85 -0
  551. package/dist/features/composites/react/CompositeSummaryEditor.js.map +1 -0
  552. package/dist/features/composites/react/CompositeTable.d.ts +11 -0
  553. package/dist/features/composites/react/CompositeTable.js +342 -0
  554. package/dist/features/composites/react/CompositeTable.js.map +1 -0
  555. package/dist/features/composites/react/CompositeTagsEditor.d.ts +10 -0
  556. package/dist/features/composites/react/CompositeTagsEditor.js +122 -0
  557. package/dist/features/composites/react/CompositeTagsEditor.js.map +1 -0
  558. package/dist/features/composites/react/CompositeView.d.ts +6 -0
  559. package/dist/features/composites/react/CompositeView.js +30 -0
  560. package/dist/features/composites/react/CompositeView.js.map +1 -0
  561. package/dist/features/composites/react/SettingsEditingTab.d.ts +8 -0
  562. package/dist/features/composites/react/SettingsEditingTab.js +153 -0
  563. package/dist/features/composites/react/SettingsEditingTab.js.map +1 -0
  564. package/dist/features/composites/react/use-composite-anchors.d.ts +17 -0
  565. package/dist/features/composites/react/use-composite-anchors.js +46 -0
  566. package/dist/features/composites/react/use-composite-anchors.js.map +1 -0
  567. package/dist/features/composites/react/use-composite-rows.d.ts +11 -0
  568. package/dist/features/composites/react/use-composite-rows.js +26 -0
  569. package/dist/features/composites/react/use-composite-rows.js.map +1 -0
  570. package/dist/features/composites/react.d.ts +24 -0
  571. package/dist/features/composites/react.js +30 -0
  572. package/dist/features/composites/react.js.map +1 -0
  573. package/dist/features/composites/rows-model.d.ts +38 -0
  574. package/dist/features/composites/rows-model.js +92 -0
  575. package/dist/features/composites/rows-model.js.map +1 -0
  576. package/dist/features/composites/rows.d.ts +76 -0
  577. package/dist/features/composites/rows.js +159 -0
  578. package/dist/features/composites/rows.js.map +1 -0
  579. package/dist/features/composites/schema.d.ts +21 -0
  580. package/dist/features/composites/schema.js +26 -0
  581. package/dist/features/composites/schema.js.map +1 -0
  582. package/dist/features/composites/structure-mode.d.ts +11 -0
  583. package/dist/features/composites/structure-mode.js +16 -0
  584. package/dist/features/composites/structure-mode.js.map +1 -0
  585. package/dist/features/composites/structure.d.ts +19 -0
  586. package/dist/features/composites/structure.js +19 -0
  587. package/dist/features/composites/structure.js.map +1 -0
  588. package/dist/features/composites/table-model.js +117 -0
  589. package/dist/features/composites/table-model.js.map +1 -0
  590. package/dist/features/composites/tree-root.d.ts +11 -0
  591. package/dist/features/composites/tree-root.js +16 -0
  592. package/dist/features/composites/tree-root.js.map +1 -0
  593. package/dist/features/composites/use-composite-anchors.d.ts +18 -0
  594. package/dist/features/composites/use-composite-anchors.js +42 -0
  595. package/dist/features/composites/use-composite-anchors.js.map +1 -0
  596. package/dist/features/composites/use-composite-rows.d.ts +25 -0
  597. package/dist/features/composites/use-composite-rows.js +28 -0
  598. package/dist/features/composites/use-composite-rows.js.map +1 -0
  599. package/dist/features/composites/vue.d.ts +23 -0
  600. package/dist/features/composites/vue.js +30 -0
  601. package/dist/features/composites/vue.js.map +1 -0
  602. package/dist/features/media/assets.d.ts +30 -0
  603. package/dist/features/media/assets.js +26 -0
  604. package/dist/features/media/assets.js.map +1 -0
  605. package/dist/features/media/audio-recorder.d.ts +25 -0
  606. package/dist/features/media/audio-recorder.js +123 -0
  607. package/dist/features/media/audio-recorder.js.map +1 -0
  608. package/dist/features/media/components/AudioRecorderModal.js +152 -0
  609. package/dist/features/media/components/AudioRecorderModal.js.map +1 -0
  610. package/dist/features/media/components/AudioRecorderModal.vue.d.ts +15 -0
  611. package/dist/features/media/components/AudioView.js +46 -0
  612. package/dist/features/media/components/AudioView.js.map +1 -0
  613. package/dist/features/media/components/FileView.js +73 -0
  614. package/dist/features/media/components/FileView.js.map +1 -0
  615. package/dist/features/media/components/VideoView.js +47 -0
  616. package/dist/features/media/components/VideoView.js.map +1 -0
  617. package/dist/features/media/feature.d.ts +22 -0
  618. package/dist/features/media/feature.js +101 -0
  619. package/dist/features/media/feature.js.map +1 -0
  620. package/dist/features/media/file-import.d.ts +21 -0
  621. package/dist/features/media/file-import.js +76 -0
  622. package/dist/features/media/file-import.js.map +1 -0
  623. package/dist/features/media/index.d.ts +7 -0
  624. package/dist/features/media/index.js +7 -0
  625. package/dist/features/media/node-views.d.ts +28 -0
  626. package/dist/features/media/node-views.js +28 -0
  627. package/dist/features/media/node-views.js.map +1 -0
  628. package/dist/features/media/react/AudioRecorderModal.d.ts +12 -0
  629. package/dist/features/media/react/AudioRecorderModal.js +147 -0
  630. package/dist/features/media/react/AudioRecorderModal.js.map +1 -0
  631. package/dist/features/media/react/AudioView.js +32 -0
  632. package/dist/features/media/react/AudioView.js.map +1 -0
  633. package/dist/features/media/react/FileView.js +61 -0
  634. package/dist/features/media/react/FileView.js.map +1 -0
  635. package/dist/features/media/react/TitleField.js +30 -0
  636. package/dist/features/media/react/TitleField.js.map +1 -0
  637. package/dist/features/media/react/VideoView.js +33 -0
  638. package/dist/features/media/react/VideoView.js.map +1 -0
  639. package/dist/features/media/react/use-audio-recorder.d.ts +11 -0
  640. package/dist/features/media/react/use-audio-recorder.js +21 -0
  641. package/dist/features/media/react/use-audio-recorder.js.map +1 -0
  642. package/dist/features/media/react.d.ts +19 -0
  643. package/dist/features/media/react.js +37 -0
  644. package/dist/features/media/react.js.map +1 -0
  645. package/dist/features/media/schema.d.ts +59 -0
  646. package/dist/features/media/schema.js +194 -0
  647. package/dist/features/media/schema.js.map +1 -0
  648. package/dist/features/media/upload.d.ts +41 -0
  649. package/dist/features/media/upload.js +106 -0
  650. package/dist/features/media/upload.js.map +1 -0
  651. package/dist/features/media/use-audio-recorder.d.ts +12 -0
  652. package/dist/features/media/use-audio-recorder.js +21 -0
  653. package/dist/features/media/use-audio-recorder.js.map +1 -0
  654. package/dist/features/media/vue.d.ts +19 -0
  655. package/dist/features/media/vue.js +35 -0
  656. package/dist/features/media/vue.js.map +1 -0
  657. package/dist/features/mentions/index.d.ts +22 -0
  658. package/dist/features/mentions/index.js +34 -0
  659. package/dist/features/mentions/index.js.map +1 -0
  660. package/dist/features/mentions/mention-suggestion.d.ts +11 -0
  661. package/dist/features/mentions/mention-suggestion.js +34 -0
  662. package/dist/features/mentions/mention-suggestion.js.map +1 -0
  663. package/dist/features/mentions/mention-text.d.ts +18 -0
  664. package/dist/features/mentions/mention-text.js +75 -0
  665. package/dist/features/mentions/mention-text.js.map +1 -0
  666. package/dist/features/mentions/mention.d.ts +20 -0
  667. package/dist/features/mentions/mention.js +33 -0
  668. package/dist/features/mentions/mention.js.map +1 -0
  669. package/dist/features/mentions/metadata-defaults.d.ts +8 -0
  670. package/dist/features/mentions/metadata-defaults.js +30 -0
  671. package/dist/features/mentions/metadata-defaults.js.map +1 -0
  672. package/dist/features/mentions/normalize.d.ts +10 -0
  673. package/dist/features/mentions/normalize.js +31 -0
  674. package/dist/features/mentions/normalize.js.map +1 -0
  675. package/dist/features/mentions/schema.d.ts +10 -0
  676. package/dist/features/mentions/schema.js +10 -0
  677. package/dist/features/mentions/schema.js.map +1 -0
  678. package/dist/features/mentions/tag-suggestion.d.ts +11 -0
  679. package/dist/features/mentions/tag-suggestion.js +45 -0
  680. package/dist/features/mentions/tag-suggestion.js.map +1 -0
  681. package/dist/features/mentions/tag.d.ts +43 -0
  682. package/dist/features/mentions/tag.js +155 -0
  683. package/dist/features/mentions/tag.js.map +1 -0
  684. package/dist/features/tables/feature.d.ts +14 -0
  685. package/dist/features/tables/feature.js +100 -0
  686. package/dist/features/tables/feature.js.map +1 -0
  687. package/dist/features/tables/index.d.ts +3 -0
  688. package/dist/features/tables/index.js +3 -0
  689. package/dist/features/tables/schema.d.ts +6 -0
  690. package/dist/features/tables/schema.js +27 -0
  691. package/dist/features/tables/schema.js.map +1 -0
  692. package/dist/features/themes/components/SettingsAppearanceTab.js +227 -0
  693. package/dist/features/themes/components/SettingsAppearanceTab.js.map +1 -0
  694. package/dist/features/themes/components/SettingsAppearanceTab.vue.d.ts +6 -0
  695. package/dist/features/themes/feature.d.ts +24 -0
  696. package/dist/features/themes/feature.js +25 -0
  697. package/dist/features/themes/feature.js.map +1 -0
  698. package/dist/features/themes/index.d.ts +6 -0
  699. package/dist/features/themes/index.js +6 -0
  700. package/dist/features/themes/react/SettingsAppearanceTab.d.ts +5 -0
  701. package/dist/features/themes/react/SettingsAppearanceTab.js +221 -0
  702. package/dist/features/themes/react/SettingsAppearanceTab.js.map +1 -0
  703. package/dist/features/themes/react.d.ts +13 -0
  704. package/dist/features/themes/react.js +15 -0
  705. package/dist/features/themes/react.js.map +1 -0
  706. package/dist/features/themes/schema.d.ts +21 -0
  707. package/dist/features/themes/schema.js +16 -0
  708. package/dist/features/themes/schema.js.map +1 -0
  709. package/dist/features/themes/scope-css.d.ts +5 -0
  710. package/dist/features/themes/scope-css.js +142 -0
  711. package/dist/features/themes/scope-css.js.map +1 -0
  712. package/dist/features/themes/theme-runtime.d.ts +14 -0
  713. package/dist/features/themes/theme-runtime.js +147 -0
  714. package/dist/features/themes/theme-runtime.js.map +1 -0
  715. package/dist/features/themes/vue.d.ts +13 -0
  716. package/dist/features/themes/vue.js +29 -0
  717. package/dist/features/themes/vue.js.map +1 -0
  718. package/dist/features/transcript/TranscriptSegmentView.js +169 -0
  719. package/dist/features/transcript/TranscriptSegmentView.js.map +1 -0
  720. package/dist/features/transcript/TranscriptSegmentView.vue.d.ts +96 -0
  721. package/dist/features/transcript/convert.d.ts +11 -0
  722. package/dist/features/transcript/convert.js +40 -0
  723. package/dist/features/transcript/convert.js.map +1 -0
  724. package/dist/features/transcript/feature.d.ts +25 -0
  725. package/dist/features/transcript/feature.js +59 -0
  726. package/dist/features/transcript/feature.js.map +1 -0
  727. package/dist/features/transcript/index.d.ts +7 -0
  728. package/dist/features/transcript/index.js +7 -0
  729. package/dist/features/transcript/react/TranscriptSegmentView.d.ts +6 -0
  730. package/dist/features/transcript/react/TranscriptSegmentView.js +155 -0
  731. package/dist/features/transcript/react/TranscriptSegmentView.js.map +1 -0
  732. package/dist/features/transcript/react.d.ts +9 -0
  733. package/dist/features/transcript/react.js +12 -0
  734. package/dist/features/transcript/react.js.map +1 -0
  735. package/dist/features/transcript/schema.d.ts +9 -0
  736. package/dist/features/transcript/schema.js +9 -0
  737. package/dist/features/transcript/schema.js.map +1 -0
  738. package/dist/features/transcript/segment-node.d.ts +21 -0
  739. package/dist/features/transcript/segment-node.js +113 -0
  740. package/dist/features/transcript/segment-node.js.map +1 -0
  741. package/dist/features/transcript/segment.d.ts +10 -0
  742. package/dist/features/transcript/segment.js +26 -0
  743. package/dist/features/transcript/segment.js.map +1 -0
  744. package/dist/features/transcript/speakers.d.ts +8 -0
  745. package/dist/features/transcript/speakers.js +22 -0
  746. package/dist/features/transcript/speakers.js.map +1 -0
  747. package/dist/features/transcript/vue.d.ts +8 -0
  748. package/dist/features/transcript/vue.js +12 -0
  749. package/dist/features/transcript/vue.js.map +1 -0
  750. package/dist/i18n/de/ai.js +168 -0
  751. package/dist/i18n/de/ai.js.map +1 -0
  752. package/dist/i18n/de/authors.js +21 -0
  753. package/dist/i18n/de/authors.js.map +1 -0
  754. package/dist/i18n/de/block.js +16 -0
  755. package/dist/i18n/de/block.js.map +1 -0
  756. package/dist/i18n/de/comments.js +35 -0
  757. package/dist/i18n/de/comments.js.map +1 -0
  758. package/dist/i18n/de/common.js +11 -0
  759. package/dist/i18n/de/common.js.map +1 -0
  760. package/dist/i18n/de/composites.js +147 -0
  761. package/dist/i18n/de/composites.js.map +1 -0
  762. package/dist/i18n/de/integrations.js +42 -0
  763. package/dist/i18n/de/integrations.js.map +1 -0
  764. package/dist/i18n/de/markdown.js +16 -0
  765. package/dist/i18n/de/markdown.js.map +1 -0
  766. package/dist/i18n/de/media.js +27 -0
  767. package/dist/i18n/de/media.js.map +1 -0
  768. package/dist/i18n/de/mentions.js +10 -0
  769. package/dist/i18n/de/mentions.js.map +1 -0
  770. package/dist/i18n/de/outline.js +9 -0
  771. package/dist/i18n/de/outline.js.map +1 -0
  772. package/dist/i18n/de/settings.js +12 -0
  773. package/dist/i18n/de/settings.js.map +1 -0
  774. package/dist/i18n/de/tables.js +15 -0
  775. package/dist/i18n/de/tables.js.map +1 -0
  776. package/dist/i18n/de/themes.js +26 -0
  777. package/dist/i18n/de/themes.js.map +1 -0
  778. package/dist/i18n/de/toolbar.js +22 -0
  779. package/dist/i18n/de/toolbar.js.map +1 -0
  780. package/dist/i18n/de/transcript.js +10 -0
  781. package/dist/i18n/de/transcript.js.map +1 -0
  782. package/dist/i18n/de/tree.js +31 -0
  783. package/dist/i18n/de/tree.js.map +1 -0
  784. package/dist/i18n/de.d.ts +503 -0
  785. package/dist/i18n/de.js +42 -0
  786. package/dist/i18n/de.js.map +1 -0
  787. package/dist/i18n/en/ai.js +168 -0
  788. package/dist/i18n/en/ai.js.map +1 -0
  789. package/dist/i18n/en/authors.js +21 -0
  790. package/dist/i18n/en/authors.js.map +1 -0
  791. package/dist/i18n/en/block.js +16 -0
  792. package/dist/i18n/en/block.js.map +1 -0
  793. package/dist/i18n/en/comments.js +35 -0
  794. package/dist/i18n/en/comments.js.map +1 -0
  795. package/dist/i18n/en/common.js +11 -0
  796. package/dist/i18n/en/common.js.map +1 -0
  797. package/dist/i18n/en/composites.js +145 -0
  798. package/dist/i18n/en/composites.js.map +1 -0
  799. package/dist/i18n/en/integrations.js +42 -0
  800. package/dist/i18n/en/integrations.js.map +1 -0
  801. package/dist/i18n/en/markdown.js +16 -0
  802. package/dist/i18n/en/markdown.js.map +1 -0
  803. package/dist/i18n/en/media.js +27 -0
  804. package/dist/i18n/en/media.js.map +1 -0
  805. package/dist/i18n/en/mentions.js +10 -0
  806. package/dist/i18n/en/mentions.js.map +1 -0
  807. package/dist/i18n/en/outline.js +9 -0
  808. package/dist/i18n/en/outline.js.map +1 -0
  809. package/dist/i18n/en/settings.js +12 -0
  810. package/dist/i18n/en/settings.js.map +1 -0
  811. package/dist/i18n/en/tables.js +15 -0
  812. package/dist/i18n/en/tables.js.map +1 -0
  813. package/dist/i18n/en/themes.js +26 -0
  814. package/dist/i18n/en/themes.js.map +1 -0
  815. package/dist/i18n/en/toolbar.js +22 -0
  816. package/dist/i18n/en/toolbar.js.map +1 -0
  817. package/dist/i18n/en/transcript.js +10 -0
  818. package/dist/i18n/en/transcript.js.map +1 -0
  819. package/dist/i18n/en/tree.js +31 -0
  820. package/dist/i18n/en/tree.js.map +1 -0
  821. package/dist/i18n/en.js +42 -0
  822. package/dist/i18n/en.js.map +1 -0
  823. package/dist/i18n/index.d.ts +24 -0
  824. package/dist/i18n/index.js +31 -0
  825. package/dist/i18n/index.js.map +1 -0
  826. package/dist/index.d.ts +6 -0
  827. package/dist/index.js +0 -0
  828. package/dist/integrations/composite-ai/composite-fill.d.ts +17 -0
  829. package/dist/integrations/composite-ai/composite-fill.js +129 -0
  830. package/dist/integrations/composite-ai/composite-fill.js.map +1 -0
  831. package/dist/integrations/composite-ai/composite-summary.d.ts +28 -0
  832. package/dist/integrations/composite-ai/composite-summary.js +143 -0
  833. package/dist/integrations/composite-ai/composite-summary.js.map +1 -0
  834. package/dist/integrations/composite-ai/document-transcribe.d.ts +14 -0
  835. package/dist/integrations/composite-ai/document-transcribe.js +89 -0
  836. package/dist/integrations/composite-ai/document-transcribe.js.map +1 -0
  837. package/dist/integrations/composite-ai/index.d.ts +22 -0
  838. package/dist/integrations/composite-ai/index.js +80 -0
  839. package/dist/integrations/composite-ai/index.js.map +1 -0
  840. package/dist/integrations/composite-media/index.d.ts +19 -0
  841. package/dist/integrations/composite-media/index.js +72 -0
  842. package/dist/integrations/composite-media/index.js.map +1 -0
  843. package/dist/integrations/transcript-ai/index.d.ts +16 -0
  844. package/dist/integrations/transcript-ai/index.js +63 -0
  845. package/dist/integrations/transcript-ai/index.js.map +1 -0
  846. package/dist/integrations/transcript-ai/protocol.d.ts +68 -0
  847. package/dist/integrations/transcript-ai/protocol.js +132 -0
  848. package/dist/integrations/transcript-ai/protocol.js.map +1 -0
  849. package/dist/integrations/transcript-ai/transcript-cleanup.d.ts +35 -0
  850. package/dist/integrations/transcript-ai/transcript-cleanup.js +169 -0
  851. package/dist/integrations/transcript-ai/transcript-cleanup.js.map +1 -0
  852. package/dist/markdown/MarkdownSurface.d.ts +25 -0
  853. package/dist/markdown/MarkdownSurface.js +93 -0
  854. package/dist/markdown/MarkdownSurface.js.map +1 -0
  855. package/dist/markdown/MarkdownSurface.vue.d.ts +76 -0
  856. package/dist/markdown/MarkdownSurface2.js +237 -0
  857. package/dist/markdown/MarkdownSurface2.js.map +1 -0
  858. package/dist/markdown/clipboard.d.ts +17 -0
  859. package/dist/markdown/clipboard.js +125 -0
  860. package/dist/markdown/clipboard.js.map +1 -0
  861. package/dist/markdown/document.d.ts +36 -0
  862. package/dist/markdown/document.js +100 -0
  863. package/dist/markdown/document.js.map +1 -0
  864. package/dist/markdown/frontmatter.d.ts +18 -0
  865. package/dist/markdown/frontmatter.js +32 -0
  866. package/dist/markdown/frontmatter.js.map +1 -0
  867. package/dist/markdown/index.d.ts +6 -0
  868. package/dist/markdown/index.js +6 -0
  869. package/dist/markdown/policy.d.ts +34 -0
  870. package/dist/markdown/policy.js +78 -0
  871. package/dist/markdown/policy.js.map +1 -0
  872. package/dist/markdown/react.d.ts +2 -0
  873. package/dist/markdown/react.js +1 -0
  874. package/dist/markdown/source-mode.d.ts +49 -0
  875. package/dist/markdown/source-mode.js +86 -0
  876. package/dist/markdown/source-mode.js.map +1 -0
  877. package/dist/markdown/vue.d.ts +2 -0
  878. package/dist/markdown/vue.js +1 -0
  879. package/dist/nuxt/module.d.ts +68 -0
  880. package/dist/nuxt/module.js +103 -0
  881. package/dist/nuxt/module.js.map +1 -0
  882. package/dist/nuxt/runtime/install-context.d.ts +17 -0
  883. package/dist/nuxt/runtime/install-context.js +26 -0
  884. package/dist/nuxt/runtime/install-context.js.map +1 -0
  885. package/dist/nuxt/runtime/plugins/editor-context-nuxt-ui.client.ts +8 -0
  886. package/dist/nuxt/runtime/plugins/editor-context-primevue.client.ts +8 -0
  887. package/dist/nuxt/runtime/server/api/ai/chat.post.d.ts +5 -0
  888. package/dist/nuxt/runtime/server/api/ai/chat.post.js +8 -0
  889. package/dist/nuxt/runtime/server/api/ai/chat.post.js.map +1 -0
  890. package/dist/nuxt/runtime/server/api/ai/complete.post.d.ts +5 -0
  891. package/dist/nuxt/runtime/server/api/ai/complete.post.js +8 -0
  892. package/dist/nuxt/runtime/server/api/ai/complete.post.js.map +1 -0
  893. package/dist/nuxt/runtime/server/api/ai/generate.post.d.ts +5 -0
  894. package/dist/nuxt/runtime/server/api/ai/generate.post.js +8 -0
  895. package/dist/nuxt/runtime/server/api/ai/generate.post.js.map +1 -0
  896. package/dist/nuxt/runtime/server/api/ai/models.get.d.ts +5 -0
  897. package/dist/nuxt/runtime/server/api/ai/models.get.js +8 -0
  898. package/dist/nuxt/runtime/server/api/ai/models.get.js.map +1 -0
  899. package/dist/nuxt/runtime/server/api/ai/transcribe.post.d.ts +5 -0
  900. package/dist/nuxt/runtime/server/api/ai/transcribe.post.js +8 -0
  901. package/dist/nuxt/runtime/server/api/ai/transcribe.post.js.map +1 -0
  902. package/dist/nuxt/runtime/server/api/ai/transcript-cleanup.post.d.ts +5 -0
  903. package/dist/nuxt/runtime/server/api/ai/transcript-cleanup.post.js +8 -0
  904. package/dist/nuxt/runtime/server/api/ai/transcript-cleanup.post.js.map +1 -0
  905. package/dist/nuxt/runtime/server/api/editor/assets/[id]/[name].get.d.ts +5 -0
  906. package/dist/nuxt/runtime/server/api/editor/assets/[id]/[name].get.js +8 -0
  907. package/dist/nuxt/runtime/server/api/editor/assets/[id]/[name].get.js.map +1 -0
  908. package/dist/nuxt/runtime/server/api/editor/assets/[id].post.d.ts +5 -0
  909. package/dist/nuxt/runtime/server/api/editor/assets/[id].post.js +8 -0
  910. package/dist/nuxt/runtime/server/api/editor/assets/[id].post.js.map +1 -0
  911. package/dist/nuxt/runtime/server/api/editor/settings.get.d.ts +5 -0
  912. package/dist/nuxt/runtime/server/api/editor/settings.get.js +8 -0
  913. package/dist/nuxt/runtime/server/api/editor/settings.get.js.map +1 -0
  914. package/dist/nuxt/runtime/server/api/editor/settings.put.d.ts +5 -0
  915. package/dist/nuxt/runtime/server/api/editor/settings.put.js +8 -0
  916. package/dist/nuxt/runtime/server/api/editor/settings.put.js.map +1 -0
  917. package/dist/nuxt/runtime/server/api/editor/tags.get.d.ts +5 -0
  918. package/dist/nuxt/runtime/server/api/editor/tags.get.js +8 -0
  919. package/dist/nuxt/runtime/server/api/editor/tags.get.js.map +1 -0
  920. package/dist/nuxt/runtime/server/api/editor/themes/[id].delete.d.ts +5 -0
  921. package/dist/nuxt/runtime/server/api/editor/themes/[id].delete.js +8 -0
  922. package/dist/nuxt/runtime/server/api/editor/themes/[id].delete.js.map +1 -0
  923. package/dist/nuxt/runtime/server/api/editor/themes/[id].get.d.ts +5 -0
  924. package/dist/nuxt/runtime/server/api/editor/themes/[id].get.js +8 -0
  925. package/dist/nuxt/runtime/server/api/editor/themes/[id].get.js.map +1 -0
  926. package/dist/nuxt/runtime/server/api/editor/themes/index.get.d.ts +5 -0
  927. package/dist/nuxt/runtime/server/api/editor/themes/index.get.js +8 -0
  928. package/dist/nuxt/runtime/server/api/editor/themes/index.get.js.map +1 -0
  929. package/dist/nuxt/runtime/server/api/editor/themes/index.post.d.ts +5 -0
  930. package/dist/nuxt/runtime/server/api/editor/themes/index.post.js +8 -0
  931. package/dist/nuxt/runtime/server/api/editor/themes/index.post.js.map +1 -0
  932. package/dist/nuxt/runtime/server/api/editor/users.get.d.ts +5 -0
  933. package/dist/nuxt/runtime/server/api/editor/users.get.js +8 -0
  934. package/dist/nuxt/runtime/server/api/editor/users.get.js.map +1 -0
  935. package/dist/nuxt/runtime/server/plugins/collab.d.ts +5 -0
  936. package/dist/nuxt/runtime/server/plugins/collab.js +10 -0
  937. package/dist/nuxt/runtime/server/plugins/collab.js.map +1 -0
  938. package/dist/nuxt/runtime/server/plugins/editor-server.d.ts +5 -0
  939. package/dist/nuxt/runtime/server/plugins/editor-server.js +20 -0
  940. package/dist/nuxt/runtime/server/plugins/editor-server.js.map +1 -0
  941. package/dist/nuxt/runtime/server/routes/collab/[id].d.ts +5 -0
  942. package/dist/nuxt/runtime/server/routes/collab/[id].js +35 -0
  943. package/dist/nuxt/runtime/server/routes/collab/[id].js.map +1 -0
  944. package/dist/nuxt/runtime/server/utils/editor-route.d.ts +11 -0
  945. package/dist/nuxt/runtime/server/utils/editor-route.js +49 -0
  946. package/dist/nuxt/runtime/server/utils/editor-route.js.map +1 -0
  947. package/dist/outline/EditorOutline.js +124 -0
  948. package/dist/outline/EditorOutline.js.map +1 -0
  949. package/dist/outline/EditorOutline.vue.d.ts +15 -0
  950. package/dist/outline/heading-outline.d.ts +26 -0
  951. package/dist/outline/heading-outline.js +46 -0
  952. package/dist/outline/heading-outline.js.map +1 -0
  953. package/dist/outline/index.d.ts +2 -0
  954. package/dist/outline/index.js +1 -0
  955. package/dist/outline/react/EditorOutline.d.ts +12 -0
  956. package/dist/outline/react/EditorOutline.js +112 -0
  957. package/dist/outline/react/EditorOutline.js.map +1 -0
  958. package/dist/outline/react.d.ts +2 -0
  959. package/dist/outline/react.js +1 -0
  960. package/dist/outline/vue.d.ts +2 -0
  961. package/dist/outline/vue.js +1 -0
  962. package/dist/presets/advanced.d.ts +33 -0
  963. package/dist/presets/advanced.js +50 -0
  964. package/dist/presets/advanced.js.map +1 -0
  965. package/dist/presets/simple.d.ts +9 -0
  966. package/dist/presets/simple.js +12 -0
  967. package/dist/presets/simple.js.map +1 -0
  968. package/dist/react/AdvancedEditor.d.ts +23 -0
  969. package/dist/react/AdvancedEditor.js +24 -0
  970. package/dist/react/AdvancedEditor.js.map +1 -0
  971. package/dist/react/EditorSettingsModal.d.ts +14 -0
  972. package/dist/react/EditorSettingsModal.js +40 -0
  973. package/dist/react/EditorSettingsModal.js.map +1 -0
  974. package/dist/react/EditorSettingsPanel.d.ts +18 -0
  975. package/dist/react/EditorSettingsPanel.js +40 -0
  976. package/dist/react/EditorSettingsPanel.js.map +1 -0
  977. package/dist/react/EditorSurface.d.ts +61 -0
  978. package/dist/react/EditorSurface.js +277 -0
  979. package/dist/react/EditorSurface.js.map +1 -0
  980. package/dist/react/EditorToolbar.d.ts +15 -0
  981. package/dist/react/EditorToolbar.js +182 -0
  982. package/dist/react/EditorToolbar.js.map +1 -0
  983. package/dist/react/Icon.d.ts +13 -0
  984. package/dist/react/Icon.js +19 -0
  985. package/dist/react/Icon.js.map +1 -0
  986. package/dist/react/SettingsSection.d.ts +10 -0
  987. package/dist/react/SettingsSection.js +22 -0
  988. package/dist/react/SettingsSection.js.map +1 -0
  989. package/dist/react/SimpleEditor.d.ts +27 -0
  990. package/dist/react/SimpleEditor.js +22 -0
  991. package/dist/react/SimpleEditor.js.map +1 -0
  992. package/dist/react/advanced-preset.d.ts +11 -0
  993. package/dist/react/advanced-preset.js +31 -0
  994. package/dist/react/advanced-preset.js.map +1 -0
  995. package/dist/react/advanced.d.ts +4 -0
  996. package/dist/react/advanced.js +3 -0
  997. package/dist/react/context.d.ts +12 -0
  998. package/dist/react/context.js +21 -0
  999. package/dist/react/context.js.map +1 -0
  1000. package/dist/react/editor-ui.d.ts +14 -0
  1001. package/dist/react/editor-ui.js +20 -0
  1002. package/dist/react/editor-ui.js.map +1 -0
  1003. package/dist/react/index.d.ts +17 -0
  1004. package/dist/react/index.js +17 -0
  1005. package/dist/react/notify.d.ts +6 -0
  1006. package/dist/react/notify.js +25 -0
  1007. package/dist/react/notify.js.map +1 -0
  1008. package/dist/react/settings.d.ts +17 -0
  1009. package/dist/react/settings.js +27 -0
  1010. package/dist/react/settings.js.map +1 -0
  1011. package/dist/react/simple.d.ts +2 -0
  1012. package/dist/react/simple.js +1 -0
  1013. package/dist/react/styles/advanced.css +18 -0
  1014. package/dist/react/styles/themes-bridge.css +26 -0
  1015. package/dist/react/styles/ui-vars.css +20 -0
  1016. package/dist/react/suggestion-renderer.d.ts +12 -0
  1017. package/dist/react/suggestion-renderer.js +90 -0
  1018. package/dist/react/suggestion-renderer.js.map +1 -0
  1019. package/dist/react/ui/alert.js +38 -0
  1020. package/dist/react/ui/alert.js.map +1 -0
  1021. package/dist/react/ui/avatar.js +24 -0
  1022. package/dist/react/ui/avatar.js.map +1 -0
  1023. package/dist/react/ui/badge.js +30 -0
  1024. package/dist/react/ui/badge.js.map +1 -0
  1025. package/dist/react/ui/button.js +50 -0
  1026. package/dist/react/ui/button.js.map +1 -0
  1027. package/dist/react/ui/collapsible.js +19 -0
  1028. package/dist/react/ui/collapsible.js.map +1 -0
  1029. package/dist/react/ui/command.js +47 -0
  1030. package/dist/react/ui/command.js.map +1 -0
  1031. package/dist/react/ui/dialog.js +88 -0
  1032. package/dist/react/ui/dialog.js.map +1 -0
  1033. package/dist/react/ui/dropdown-menu.js +70 -0
  1034. package/dist/react/ui/dropdown-menu.js.map +1 -0
  1035. package/dist/react/ui/input-group.js +57 -0
  1036. package/dist/react/ui/input-group.js.map +1 -0
  1037. package/dist/react/ui/input.js +16 -0
  1038. package/dist/react/ui/input.js.map +1 -0
  1039. package/dist/react/ui/label.js +17 -0
  1040. package/dist/react/ui/label.js.map +1 -0
  1041. package/dist/react/ui/popover.js +36 -0
  1042. package/dist/react/ui/popover.js.map +1 -0
  1043. package/dist/react/ui/radio-group.js +29 -0
  1044. package/dist/react/ui/radio-group.js.map +1 -0
  1045. package/dist/react/ui/select.js +88 -0
  1046. package/dist/react/ui/select.js.map +1 -0
  1047. package/dist/react/ui/separator.js +18 -0
  1048. package/dist/react/ui/separator.js.map +1 -0
  1049. package/dist/react/ui/switch.js +21 -0
  1050. package/dist/react/ui/switch.js.map +1 -0
  1051. package/dist/react/ui/table.js +44 -0
  1052. package/dist/react/ui/table.js.map +1 -0
  1053. package/dist/react/ui/tabs.js +41 -0
  1054. package/dist/react/ui/tabs.js.map +1 -0
  1055. package/dist/react/ui/textarea.js +15 -0
  1056. package/dist/react/ui/textarea.js.map +1 -0
  1057. package/dist/react/ui/tooltip.js +37 -0
  1058. package/dist/react/ui/tooltip.js.map +1 -0
  1059. package/dist/react/ui/utils.d.ts +5 -0
  1060. package/dist/react/ui/utils.js +10 -0
  1061. package/dist/react/ui/utils.js.map +1 -0
  1062. package/dist/react/use-editor-i18n.d.ts +12 -0
  1063. package/dist/react/use-editor-i18n.js +17 -0
  1064. package/dist/react/use-editor-i18n.js.map +1 -0
  1065. package/dist/react/use-notifier.d.ts +11 -0
  1066. package/dist/react/use-notifier.js +25 -0
  1067. package/dist/react/use-notifier.js.map +1 -0
  1068. package/dist/react/use-store.d.ts +6 -0
  1069. package/dist/react/use-store.js +10 -0
  1070. package/dist/react/use-store.js.map +1 -0
  1071. package/dist/schema/advanced.d.ts +14 -0
  1072. package/dist/schema/advanced.js +43 -0
  1073. package/dist/schema/advanced.js.map +1 -0
  1074. package/dist/schema/simple.d.ts +10 -0
  1075. package/dist/schema/simple.js +13 -0
  1076. package/dist/schema/simple.js.map +1 -0
  1077. package/dist/server/adapter.d.ts +101 -0
  1078. package/dist/server/ai.d.ts +101 -0
  1079. package/dist/server/ai.js +105 -0
  1080. package/dist/server/ai.js.map +1 -0
  1081. package/dist/server/collab-state.d.ts +16 -0
  1082. package/dist/server/collab-state.js +43 -0
  1083. package/dist/server/collab-state.js.map +1 -0
  1084. package/dist/server/collab.d.ts +68 -0
  1085. package/dist/server/collab.js +187 -0
  1086. package/dist/server/collab.js.map +1 -0
  1087. package/dist/server/errors.d.ts +17 -0
  1088. package/dist/server/errors.js +26 -0
  1089. package/dist/server/errors.js.map +1 -0
  1090. package/dist/server/handlers/ai.d.ts +223 -0
  1091. package/dist/server/handlers/ai.js +422 -0
  1092. package/dist/server/handlers/ai.js.map +1 -0
  1093. package/dist/server/handlers/context.d.ts +64 -0
  1094. package/dist/server/handlers/context.js +85 -0
  1095. package/dist/server/handlers/context.js.map +1 -0
  1096. package/dist/server/handlers/editor.d.ts +107 -0
  1097. package/dist/server/handlers/editor.js +241 -0
  1098. package/dist/server/handlers/editor.js.map +1 -0
  1099. package/dist/server/handlers/index.d.ts +4 -0
  1100. package/dist/server/handlers/index.js +4 -0
  1101. package/dist/server/host.d.ts +61 -0
  1102. package/dist/server/host.js +105 -0
  1103. package/dist/server/host.js.map +1 -0
  1104. package/dist/server/index.d.ts +8 -0
  1105. package/dist/server/index.js +7 -0
  1106. package/dist/server/node.d.ts +24 -0
  1107. package/dist/server/node.js +54 -0
  1108. package/dist/server/node.js.map +1 -0
  1109. package/dist/server/rate-limit.d.ts +22 -0
  1110. package/dist/server/rate-limit.js +34 -0
  1111. package/dist/server/rate-limit.js.map +1 -0
  1112. package/dist/settings/index.d.ts +110 -0
  1113. package/dist/settings/index.js +114 -0
  1114. package/dist/settings/index.js.map +1 -0
  1115. package/dist/settings/values.d.ts +35 -0
  1116. package/dist/settings/values.js +41 -0
  1117. package/dist/settings/values.js.map +1 -0
  1118. package/dist/styles/ai.css +77 -0
  1119. package/dist/styles/authors.css +18 -0
  1120. package/dist/styles/block-ui.css +16 -0
  1121. package/dist/styles/collab.css +26 -0
  1122. package/dist/styles/comments.css +11 -0
  1123. package/dist/styles/composites.css +56 -0
  1124. package/dist/styles/core.css +99 -0
  1125. package/dist/styles/media.css +8 -0
  1126. package/dist/styles/mentions.css +24 -0
  1127. package/dist/styles/tables.css +25 -0
  1128. package/dist/styles/themes.css +622 -0
  1129. package/dist/styles/tokens.css +29 -0
  1130. package/dist/styles/transcript.css +13 -0
  1131. package/dist/tree/DocumentTree.js +595 -0
  1132. package/dist/tree/DocumentTree.js.map +1 -0
  1133. package/dist/tree/DocumentTree.vue.d.ts +36 -0
  1134. package/dist/tree/folder-paths.js +11 -0
  1135. package/dist/tree/folder-paths.js.map +1 -0
  1136. package/dist/tree/index.d.ts +4 -0
  1137. package/dist/tree/index.js +1 -0
  1138. package/dist/tree/react/DocumentTree.d.ts +24 -0
  1139. package/dist/tree/react/DocumentTree.js +579 -0
  1140. package/dist/tree/react/DocumentTree.js.map +1 -0
  1141. package/dist/tree/react/use-tree-view.d.ts +14 -0
  1142. package/dist/tree/react/use-tree-view.js +21 -0
  1143. package/dist/tree/react/use-tree-view.js.map +1 -0
  1144. package/dist/tree/react.d.ts +3 -0
  1145. package/dist/tree/react.js +3 -0
  1146. package/dist/tree/store.d.ts +45 -0
  1147. package/dist/tree/tree-items.js +221 -0
  1148. package/dist/tree/tree-items.js.map +1 -0
  1149. package/dist/tree/tree-view-model.d.ts +29 -0
  1150. package/dist/tree/tree-view-model.js +71 -0
  1151. package/dist/tree/tree-view-model.js.map +1 -0
  1152. package/dist/tree/tree-view.d.ts +15 -0
  1153. package/dist/tree/tree-view.js +21 -0
  1154. package/dist/tree/tree-view.js.map +1 -0
  1155. package/dist/tree/types.d.ts +23 -0
  1156. package/dist/tree/types.js +0 -0
  1157. package/dist/tree/vue.d.ts +3 -0
  1158. package/dist/tree/vue.js +3 -0
  1159. package/dist/vue/AdvancedEditor.js +100 -0
  1160. package/dist/vue/AdvancedEditor.js.map +1 -0
  1161. package/dist/vue/AdvancedEditor.vue.d.ts +71 -0
  1162. package/dist/vue/SimpleEditor.js +61 -0
  1163. package/dist/vue/SimpleEditor.js.map +1 -0
  1164. package/dist/vue/SimpleEditor.vue.d.ts +36 -0
  1165. package/dist/vue/advanced-preset.d.ts +13 -0
  1166. package/dist/vue/advanced-preset.js +33 -0
  1167. package/dist/vue/advanced-preset.js.map +1 -0
  1168. package/dist/vue/advanced.d.ts +3 -0
  1169. package/dist/vue/advanced.js +3 -0
  1170. package/dist/vue/components/EditorSettingsModal.js +69 -0
  1171. package/dist/vue/components/EditorSettingsModal.js.map +1 -0
  1172. package/dist/vue/components/EditorSettingsModal.vue.d.ts +24 -0
  1173. package/dist/vue/components/EditorSettingsPanel.js +58 -0
  1174. package/dist/vue/components/EditorSettingsPanel.js.map +1 -0
  1175. package/dist/vue/components/EditorSettingsPanel.vue.d.ts +29 -0
  1176. package/dist/vue/components/EditorSurface.js +229 -0
  1177. package/dist/vue/components/EditorSurface.js.map +1 -0
  1178. package/dist/vue/components/EditorSurface.vue.d.ts +68 -0
  1179. package/dist/vue/components/EditorToolbar.js +189 -0
  1180. package/dist/vue/components/EditorToolbar.js.map +1 -0
  1181. package/dist/vue/components/EditorToolbar.vue.d.ts +17 -0
  1182. package/dist/vue/components/SettingsSection.js +26 -0
  1183. package/dist/vue/components/SettingsSection.js.map +1 -0
  1184. package/dist/vue/components/SettingsSection.vue.d.ts +21 -0
  1185. package/dist/vue/components/SuggestionList.js +91 -0
  1186. package/dist/vue/components/SuggestionList.js.map +1 -0
  1187. package/dist/vue/components/SuggestionList.vue.d.ts +19 -0
  1188. package/dist/vue/context.d.ts +24 -0
  1189. package/dist/vue/context.js +41 -0
  1190. package/dist/vue/context.js.map +1 -0
  1191. package/dist/vue/index.d.ts +26 -0
  1192. package/dist/vue/index.js +16 -0
  1193. package/dist/vue/kit/index.d.ts +3 -0
  1194. package/dist/vue/kit/index.js +1 -0
  1195. package/dist/vue/kit/nuxt-ui.css +24 -0
  1196. package/dist/vue/kit/nuxt-ui.d.ts +31 -0
  1197. package/dist/vue/kit/nuxt-ui.js +101 -0
  1198. package/dist/vue/kit/nuxt-ui.js.map +1 -0
  1199. package/dist/vue/kit/primevue/Alert.js +49 -0
  1200. package/dist/vue/kit/primevue/Alert.js.map +1 -0
  1201. package/dist/vue/kit/primevue/Avatar.js +54 -0
  1202. package/dist/vue/kit/primevue/Avatar.js.map +1 -0
  1203. package/dist/vue/kit/primevue/Badge.js +41 -0
  1204. package/dist/vue/kit/primevue/Badge.js.map +1 -0
  1205. package/dist/vue/kit/primevue/Button.js +112 -0
  1206. package/dist/vue/kit/primevue/Button.js.map +1 -0
  1207. package/dist/vue/kit/primevue/Chip.js +38 -0
  1208. package/dist/vue/kit/primevue/Chip.js.map +1 -0
  1209. package/dist/vue/kit/primevue/DropdownMenu.js +98 -0
  1210. package/dist/vue/kit/primevue/DropdownMenu.js.map +1 -0
  1211. package/dist/vue/kit/primevue/FieldGroup.js +22 -0
  1212. package/dist/vue/kit/primevue/FieldGroup.js.map +1 -0
  1213. package/dist/vue/kit/primevue/FormField.js +56 -0
  1214. package/dist/vue/kit/primevue/FormField.js.map +1 -0
  1215. package/dist/vue/kit/primevue/Icon.js +23 -0
  1216. package/dist/vue/kit/primevue/Icon.js.map +1 -0
  1217. package/dist/vue/kit/primevue/Input.js +96 -0
  1218. package/dist/vue/kit/primevue/Input.js.map +1 -0
  1219. package/dist/vue/kit/primevue/InputMenu.js +122 -0
  1220. package/dist/vue/kit/primevue/InputMenu.js.map +1 -0
  1221. package/dist/vue/kit/primevue/Modal.js +59 -0
  1222. package/dist/vue/kit/primevue/Modal.js.map +1 -0
  1223. package/dist/vue/kit/primevue/Popover.js +135 -0
  1224. package/dist/vue/kit/primevue/Popover.js.map +1 -0
  1225. package/dist/vue/kit/primevue/RadioGroup.js +58 -0
  1226. package/dist/vue/kit/primevue/RadioGroup.js.map +1 -0
  1227. package/dist/vue/kit/primevue/Select.js +68 -0
  1228. package/dist/vue/kit/primevue/Select.js.map +1 -0
  1229. package/dist/vue/kit/primevue/SelectMenu.js +94 -0
  1230. package/dist/vue/kit/primevue/SelectMenu.js.map +1 -0
  1231. package/dist/vue/kit/primevue/Separator.js +16 -0
  1232. package/dist/vue/kit/primevue/Separator.js.map +1 -0
  1233. package/dist/vue/kit/primevue/Switch.js +46 -0
  1234. package/dist/vue/kit/primevue/Switch.js.map +1 -0
  1235. package/dist/vue/kit/primevue/Table.js +54 -0
  1236. package/dist/vue/kit/primevue/Table.js.map +1 -0
  1237. package/dist/vue/kit/primevue/Tabs.js +49 -0
  1238. package/dist/vue/kit/primevue/Tabs.js.map +1 -0
  1239. package/dist/vue/kit/primevue/Textarea.js +55 -0
  1240. package/dist/vue/kit/primevue/Textarea.js.map +1 -0
  1241. package/dist/vue/kit/primevue/Tooltip.js +43 -0
  1242. package/dist/vue/kit/primevue/Tooltip.js.map +1 -0
  1243. package/dist/vue/kit/primevue/Tree.js +75 -0
  1244. package/dist/vue/kit/primevue/Tree.js.map +1 -0
  1245. package/dist/vue/kit/primevue/select-options.js +55 -0
  1246. package/dist/vue/kit/primevue/select-options.js.map +1 -0
  1247. package/dist/vue/kit/primevue/shared.js +49 -0
  1248. package/dist/vue/kit/primevue/shared.js.map +1 -0
  1249. package/dist/vue/kit/primevue/trigger.js +25 -0
  1250. package/dist/vue/kit/primevue/trigger.js.map +1 -0
  1251. package/dist/vue/kit/primevue.css +86 -0
  1252. package/dist/vue/kit/primevue.d.ts +33 -0
  1253. package/dist/vue/kit/primevue.js +96 -0
  1254. package/dist/vue/kit/primevue.js.map +1 -0
  1255. package/dist/vue/kit/types.d.ts +370 -0
  1256. package/dist/vue/kit/use-ui-kit.d.ts +12 -0
  1257. package/dist/vue/kit/use-ui-kit.js +17 -0
  1258. package/dist/vue/kit/use-ui-kit.js.map +1 -0
  1259. package/dist/vue/notify.d.ts +12 -0
  1260. package/dist/vue/notify.js +27 -0
  1261. package/dist/vue/notify.js.map +1 -0
  1262. package/dist/vue/settings.d.ts +16 -0
  1263. package/dist/vue/settings.js +64 -0
  1264. package/dist/vue/settings.js.map +1 -0
  1265. package/dist/vue/simple.d.ts +2 -0
  1266. package/dist/vue/simple.js +1 -0
  1267. package/dist/vue/store-ref.d.ts +20 -0
  1268. package/dist/vue/store-ref.js +59 -0
  1269. package/dist/vue/store-ref.js.map +1 -0
  1270. package/dist/vue/suggestion-renderer.d.ts +6 -0
  1271. package/dist/vue/suggestion-renderer.js +20 -0
  1272. package/dist/vue/suggestion-renderer.js.map +1 -0
  1273. package/dist/vue/use-editor-i18n.d.ts +12 -0
  1274. package/dist/vue/use-editor-i18n.js +17 -0
  1275. package/dist/vue/use-editor-i18n.js.map +1 -0
  1276. package/dist/vue/use-editor-ui.d.ts +15 -0
  1277. package/dist/vue/use-editor-ui.js +23 -0
  1278. package/dist/vue/use-editor-ui.js.map +1 -0
  1279. package/dist/vue/use-notifier.d.ts +11 -0
  1280. package/dist/vue/use-notifier.js +19 -0
  1281. package/dist/vue/use-notifier.js.map +1 -0
  1282. package/docs/extending.md +538 -0
  1283. package/docs/integration.md +537 -0
  1284. package/docs/llms.md +375 -0
  1285. package/docs/usage.md +1071 -0
  1286. package/package.json +634 -4
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Matthias Ortegro
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,3 +1,234 @@
1
- # Temporary Holding Version
1
+ # @ecsplico/editor
2
2
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
3
+ A Vue and React editor library on TipTap v3. Editors are assembled from **features**: the *simple* editor is the core feature alone (formatting, headings, lists, quotes, code, undo/redo) and needs no backend, no Yjs and no feature code; the *advanced* editor composes every feature (media, mentions, transcripts, composites, authors, comments, AI, collaboration, block UI, site-wide Obsidian themes and their integrations) on both surfaces. The framework-free `./core` holds the feature model, and every feature's logic is framework-free too (`./<feature>`): a feature is built from a typed **UI binding** (`<x>FeatureCore(ui)`) that the Vue layer (`./<feature>/vue`, Nuxt UI chrome) and the React layer (`./<feature>/react`, shadcn/ui on Radix and Tailwind) fill with their components, node views and notice seam. Toolbar, settings panel and modal, outline, AI sidebar, comments margin, composite table and inspector, and the file browser are components you place anywhere beside an editor; both layers ship the simple editor (`./vue/simple`, `./react/simple`) and the advanced editor (`./vue/advanced`, `./react/advanced`).
4
+
5
+ ## Prerequisites
6
+
7
+ - Node ≥ 22 and [Bun](https://bun.sh) (the repository is a Bun workspace: `packages/*`, `examples/*`).
8
+ - A Vite- or Nuxt-based app (`@vitejs/plugin-vue` / `@vitejs/plugin-react`, or Nuxt). The published package is a **built ESM package**: every `exports` subpath resolves to `dist/**/*.js` with `.d.ts` (Vue SFCs are compiled, React `.tsx` is compiled to JSX-runtime JS), the CSS sheets are copied, and the source maps embed the sources (`src` itself is not published). Output is one module per source file, so entries stay tree-shakeable.
9
+ - Required peer dependencies (install them in the consuming app so the host and the library share one instance of each): `@tiptap/core`, `@tiptap/pm`, `yjs`, `@hocuspocus/provider`. Yjs and the provider are required peers because shared prop types in the `.d.ts` reference them; a simple-editor bundle does not contain their implementation (proven below). Per layer (all optional peers): **Vue** `vue`, `@nuxt/ui`, `@tiptap/vue-3`; **React** `react`, `react-dom`, `@tiptap/react`, `@iconify/react`; **code surface** (`/code`) `@codemirror/state`, `@codemirror/view`, `@codemirror/language`, `@codemirror/commands`, `@codemirror/search`, `@lezer/highlight`, plus the `@codemirror/lang-*` packs you register (the package ships none).
10
+ - Tailwind CSS 4 (`tailwindcss`) for the Nuxt UI theme (Vue) or the shadcn classes (React), and the icon collection `@iconify-json/lucide`. React hosts also need `tw-animate-css` (enter/exit animations of the dialog, dropdown and tooltip).
11
+
12
+ ## Install
13
+
14
+ From npmjs (public, no token and no `.npmrc` needed):
15
+
16
+ ```sh
17
+ npm install @ecsplico/editor # or: bun add @ecsplico/editor / pnpm add @ecsplico/editor
18
+ ```
19
+
20
+ Inside this repository the package is a workspace member, so consumers there declare `"@ecsplico/editor": "workspace:*"`.
21
+
22
+ ### Nuxt quick start
23
+
24
+ Install the peers next to the package (`vue`, `@nuxt/ui`, `@tiptap/core`, `@tiptap/pm`, `@tiptap/vue-3`, `yjs`, `@hocuspocus/provider`, `tailwindcss`, `@iconify-json/lucide`), then register the module **after** `@nuxt/ui`:
25
+
26
+ ```ts
27
+ // nuxt.config.ts
28
+ export default defineNuxtConfig({
29
+ ssr: false, // TipTap renders on the client only
30
+ modules: ['@nuxt/ui', '@ecsplico/editor/nuxt'],
31
+ css: ['~/assets/main.css'],
32
+ })
33
+ ```
34
+
35
+ ```css
36
+ /* app/assets/main.css */
37
+ @import "tailwindcss";
38
+ @import "@nuxt/ui";
39
+ ```
40
+
41
+ Wrap the app in `<UApp>` (`app/app.vue`: `<UApp><NuxtPage /></UApp>`) and mount an editor on a page (the simple editor needs no backend):
42
+
43
+ ```vue
44
+ <script setup lang="ts">
45
+ import { SimpleEditor } from '@ecsplico/editor/vue/simple'
46
+ import { ref } from 'vue'
47
+ const content = ref()
48
+ </script>
49
+
50
+ <template>
51
+ <SimpleEditor v-model="content" />
52
+ </template>
53
+ ```
54
+
55
+ The module's API routes call the host's `EditorAdapter` (identity and storage). Register one in a Nitro plugin; without it the client logs „Einstellungen konnten nicht geladen werden“ and every route answers 500. This minimal adapter keeps settings in the browser and everything else in memory, and lets any visitor in (replace `authenticate` and the storage with yours):
56
+
57
+ ```ts
58
+ // server/plugins/editor-adapter.ts
59
+ import type { JSONContent } from '@tiptap/core'
60
+ import { type EditorAdapter, setEditorAdapter } from '@ecsplico/editor/server'
61
+
62
+ export default defineNitroPlugin(() => {
63
+ const contents = new Map<string, JSONContent>()
64
+ const states = new Map<string, Uint8Array>()
65
+ const assets = new Map<string, Parameters<EditorAdapter['storeAsset']>[1]>()
66
+ setEditorAdapter({
67
+ authenticate: async () => ({ id: 'demo', username: 'demo' }), // `null` = 401 on API routes; on /collab the socket is closed with 4401 (HTTP 401 at the upgrade with `collab.authenticateUpgrade`)
68
+ loadContent: async id => contents.get(id) ?? null,
69
+ storeContent: async (id, content) => { contents.set(id, content) },
70
+ listUsers: async () => [],
71
+ listContents: async () => [...contents].map(([id, content]) => ({ id, content })),
72
+ loadState: async id => states.get(id) ?? null,
73
+ storeState: async (id, state) => { states.set(id, state) },
74
+ removeState: async (id) => { states.delete(id) },
75
+ storeAsset: async (id, asset) => { assets.set(`${id}/${asset.name}`, asset) },
76
+ loadAsset: async (id, name) => {
77
+ const asset = assets.get(`${id}/${name}`)
78
+ if (!asset) return null
79
+ const { data, ...record } = asset
80
+ return { record, data }
81
+ },
82
+ })
83
+ })
84
+ ```
85
+
86
+ The advanced editor, every adapter method, collaboration and AI are covered in the [guide for coding agents](./docs/llms.md#minimal-integration-nuxt) and the [integration guide](./docs/integration.md).
87
+
88
+ ### Building and developing in this repository
89
+
90
+ `bun run build:editor` (`tsdown`, config `packages/editor/tsdown.config.ts`) writes `packages/editor/dist`: ESM plus `.d.ts` for every `exports` subpath (the entries are read from the `skaile-source` condition of `package.json#exports`, so a new export is built as soon as it is declared), unbundled one module per source file, source maps with embedded sources, CSS copied, and the Nuxt runtime directory (`dist/nuxt/runtime`: plugin, server routes, utils) as separate files next to the module that Nuxt and Nitro compile in the host. Dependencies and peers are never bundled.
91
+
92
+ Each `exports` entry carries a custom **`skaile-source`** condition first (pointing at `src`) followed by `types`/`import` (or `default`) pointing into `dist`. This repository's Nuxt app (`nuxt.config.ts`) and the examples (`examples/*/vite.config.ts`, `tsconfig.json#customConditions`) enable that condition for Vite, Nitro and the type checker, so **editing the library needs no build step in dev**. Consumers outside the repository never set the condition and get `dist`. `bun run check:editor-entries` builds first and judges the **built** output through `exports` (no `skaile-source`), so it proves what is published; `bun run check:editor-composition` builds first and loads the built entries; `bun run typecheck:editor` resolves through `src` (`customConditions: ["skaile-source"]` in `packages/editor/tsconfig.json`).
93
+
94
+ ## Public exports
95
+
96
+ Every entry is an explicit subpath of `package.json#exports`; there is no wildcard into internal folders and no runtime umbrella barrel. Importing an entry registers nothing globally.
97
+
98
+ | Import | Contents |
99
+ |---|---|
100
+ | `@ecsplico/editor` | Type-only: `EditorSettings`, `EditorFeature`, `EditorPreset`, `FeatureContext`, `AnchorResolver`, `ToolbarGroup`, `ToolbarItem`, `BlockAction`, `SlashCommandItem`, `AbilitiesOptions`, `EditorMetadata`, `MetadataItem`, `AuthorIdentity`, … |
101
+ | `@ecsplico/editor/vue` | The Vue layer (Nuxt UI chrome): `createEditor` (Vue plugin around `createEditorContext`), `EDITOR_CONTEXT`, `useEditorContext`, `useEditorSettings`, `useNotifier`, `trackedStore`, `useStoreRef`, `useWritableStoreRef`, `storeFromRef`, `EDITOR_UI`, `useEditorUi` (`openSettings`, `toggleSidebar`, `toggleComments`, `commentsOpen`), `vueSuggestionRenderer`, the components `EditorSurface`, `EditorToolbar`, `EditorSettingsPanel`, `EditorSettingsModal`, `SettingsSection`, `SuggestionList`, and the types `VueFeature`, `VuePreset` (the preset components are the two entries below) |
102
+ | `@ecsplico/editor/vue/simple` | `SimpleEditor` component |
103
+ | `@ecsplico/editor/vue/advanced` | `AdvancedEditor` component (every feature, optional collaboration session) and `advancedEditor(options): VuePreset` (the preset for `EditorToolbar`/`EditorSettingsPanel`/`EditorSettingsModal` beside it, and the base for own feature lists) |
104
+ | `@ecsplico/editor/react` | The React layer (shadcn/ui chrome; Vue-free): `EditorContextProvider`, `useEditorContext`, the components `EditorSurface` (ref handle `EditorSurfaceHandle`: `editor`, `openSettings`), `EditorToolbar`, `EditorSettingsPanel`, `EditorSettingsModal`, `SettingsSection`, `SuggestionList`, `Icon`, the hooks `useEditorSettings` (`settings`, `update`, `set`, `ready`, `synced`), `useEditorUi`, `useNotifier`, `useStore`, `EditorUiContext`, `reactSuggestionRenderer`, the notice seam `reactNotifier` and sonner's `Toaster` (mount it once per page), the `cn` class helper, and the types `ReactFeature`, `ReactPreset`, `EditorSurfaceProps`, `EditorSurfaceHandle`, `SuggestionListHandle`. Presets are `defineEditor({ features })` from `/core` over the `/<feature>/react` bindings and framework-free features, or `advancedEditor()` from `/react/advanced` |
105
+ | `@ecsplico/editor/react/simple` | `SimpleEditor` component (core feature only), `SimpleEditorProps` |
106
+ | `@ecsplico/editor/react/advanced` | `AdvancedEditor` component (every feature and integration with its React binding, optional collaboration session; props `AdvancedEditorProps` = `EditorSurface`'s except `preset`, plus `compositeKinds`) and `advancedEditor(options): ReactPreset`; mount `Toaster` from `/react` beside it |
107
+ | `@ecsplico/editor/react/styles/ui-vars.css` | Maps the shadcn tokens (`--primary`, `--background`, …) to the `--ui-*` variables the feature sheets read; import it before `core.css` |
108
+ | `@ecsplico/editor/react/styles/advanced.css` | One import for React hosts of the advanced editor: `ui-vars.css`, `core.css`, every feature sheet and `themes.css` (with the shadcn bridge for Obsidian themes), in the order the Nuxt module registers them |
109
+ | `@ecsplico/editor/presets/simple` | `simpleEditor(): EditorPreset` (core feature only) |
110
+ | `@ecsplico/editor/presets/advanced` | Framework-free: `ADVANCED_FEATURE_IDS` (feature ids in schema order: `core`, `media`, `transcript`, `composites`, `mentions`, `authors`, `comments`, `ai`, `collab`, `block-ui`, `composite-media`, `composite-ai`, `transcript-ai`, `themes`), `advancedEditorCore(bound, options)` (assembles that list: the layer binds only the UI-bound features, `AdvancedFeatures<C>`; core, mentions and the three integrations are added here), `AdvancedEditorOptions`. The ready presets are `advancedEditor` of `/vue/advanced` and `/react/advanced` |
111
+ | `@ecsplico/editor/core` | Framework-free (Tiptap/ProseMirror only; imports no `vue`, `@tiptap/vue-3`, `@nuxt/ui` or React): `defineEditor`, `coreFeature`, `createEditorContext` (settings context and the translator `ctx.t`, options `locale: 'de' | 'en'` and partial `messages`; with `createStore` `createStore`, `derived`, `Store`, `ReadonlyStore`), the notice seam (`Notice`, `Notifier`, `silentNotifier`), the suggestion renderer seam (`SuggestionPopup`, `suggestionPopupOf`, `SuggestionListProps`, `SuggestionPopupHandle`, `SuggestionPopupRenderer`), `registerEditor`, `Abilities` and ability helpers, `BlockFlash`, `SlashCommand`, `Metadata`, `parseBlocks` / `DEFAULT_BLOCK_PIPELINE`, generic helpers `downloadText` and `fetchErrorMessage`, the feature/toolbar/extension-point types (`EditorFeature<C>`, `FeatureContext`, `ToolbarItem`, `MenuItem`, …), `commandItem` / `mergeToolbarGroups`, and the block-conversion engine for own features (`ConversionProvider`, `ConvertTarget` with its `custom` member for host blocks, `createConverter`, `convertCoreBlocks`, `finishConversion`) |
112
+ | `@ecsplico/editor/core/schema` | Vue-free base schema: `coreSchemaExtensions()`, `EMPTY_EDITOR_CONTENT`, `StrikeX`, `BlockId` helpers (`BLOCK_ID_TYPES`, `blockIdOf`, `findBlockById`, `assignBlockIds`), `NodeFlags` (copies the node flags `editorBlockContainer`, `editorChrome` and `editorBlock` onto the node spec; `editorBlock: true` gives an own node block IDs), `isEditorBlock`, `isBlockContainer`, `isChromeNode`, the ability vocabulary (`ABILITY`, `ROOT_ABILITIES`) |
113
+ | `@ecsplico/editor/schema/simple` | Vue-free `simpleSchemaExtensions()` for servers and validators |
114
+ | `@ecsplico/editor/settings` | `EditorSettings`, `EDITOR_SETTINGS_VERSION`, `EDITOR_SETTINGS_DEFAULTS`, `editorSettingsSchema`, `parseEditorSettings`, inert value constants (`MODEL_SLOTS`, `STRUCTURE_MODES`, `TREE_ROOTS`, `KIND_ICON_VISIBILITIES`, `DRAG_HANDLE_VISIBILITIES`, `AI_LANGUAGES`, `AUTHOR_COLOR_STYLES`, `COMMENTS_LAYOUTS`, …) |
115
+ | `@ecsplico/editor/outline`, `/outline/vue`, `/outline/react` | `/vue` and `/react`: `EditorOutline`; framework-free: `headingOutline`, `revealBlockInEditor`, `HeadingOutlineNode` (imports no tree and no composite code) |
116
+ | `@ecsplico/editor/tree`, `/tree/vue`, `/tree/react`, `/tree/types` | File browser. `/vue` and `/react`: `DocumentTree` (Vue: props `store`, `editor`, `v-model:selectedFolder`, slot `document-actions`; React: props `store`, `editor`, `selectedFolder`/`onSelectedFolderChange` (uncontrolled when omitted), `documentActions`, `className`; needs `EditorContextProvider` and a mounted `Toaster`), `useTreeView` (Vue: `nodeFilters`/`expanded` as refs; React: as values); framework-free: `DocumentStore` (store-based: `tree`, `documents`, `activeId` are `ReadonlyStore`s plus the host's operations), `createTreeView`, `treeView(context)` (the per-app view state: node filters, expanded folders), `TreeViewModel`, `NodeFilters`, `TreeFolder`, `DocumentSummary`; `/vue` also `useStoreRef` and `storeFromRef` (adapters from Vue refs to the store shape). Depends on core, outline, composites and media; see the [integration guide](./docs/integration.md#10-the-file-browser-and-documentstore). `/tree/types` has the `TreeFolder`/`DocumentSummary` types alone, for servers whose typecheck has no DOM |
117
+ | `@ecsplico/editor/media`, `/media/vue`, `/media/react`, `/media/schema` | `/vue` and `/react`: `mediaFeature`, `useFileImport`, `AudioRecorderModal`, `useAudioRecorder`; framework-free: `mediaFeatureCore`, `fileImport`, `createAudioRecorder`, `pickFiles`, `openAudioRecorder`, `postUpload`, `mediaSchemaExtensions()`, `MEDIA_TYPES`, `MAX_MEDIA_BYTES`, asset helpers |
118
+ | `@ecsplico/editor/mentions`, `/mentions/schema` | `mentionsFeature`, `mentionSuggestion`, `tagSuggestion`; Vue-free: `mentionsSchemaExtensions()`, `MentionNode`, `TagNode`, `mentionsFromText`, `tagsFromText`, `normalizeTagName` |
119
+ | `@ecsplico/editor/tables`, `/tables/schema` | `tablesFeature()` (GFM tables and task lists: the nodes, toolbar group `table` with insert 3×3, add/delete row, add/delete column, delete table, slash entries `table.insert` and `task.insert`; no components, so it fits both framework layers); Vue-free: `tablesSchemaExtensions()` (also part of `/schema/simple` and `/schema/advanced`) |
120
+ | `@ecsplico/editor/markdown`, `/markdown/vue`, `/markdown/react` | Framework-free: `splitFrontmatter(text)` / `joinFrontmatter(frontmatter, body)` (YAML block at offset 0 only, kept verbatim), `markdownToContent(editor, body, { policy? }): { content, diagnostics }` (policy `{ allowHtml?, allowDataUrls? }`: raw HTML, links and media with unsafe URLs are dropped and reported as `MarkdownDiagnostic`s — `raw-html`, `unsafe-url`, `unknown-fence` (info), `unclosed-fence` and `invalid-fence-meta` (errors); `hasFatalDiagnostics`), `contentToMarkdown(editor)`, `MarkdownClipboard.configure({ policy })` (an extension: pastes `text/markdown` and plain text with block syntax as blocks, sanitizes pasted HTML, copies and cuts as `text/markdown` next to `text/html` and `text/plain`), `createSourceMode({ getEditor, toMarkdown?, fromMarkdown?, policy? }): SourceMode` (`state` store `{ mode: 'visual' \| 'source', source, diagnostics }`, `enter()`, `edit(text)`, `commit(): boolean` — false with the editor untouched on a fatal diagnostic or a document the schema rejects —, `cancel()`). Unknown `::: kind` fences are `OpaqueFence` nodes (in `coreSchemaExtensions()`) that are written back byte for byte; kinds a composite feature registers parse first. Vue: `MarkdownSurface` (`v-model` is the Markdown string, frontmatter included; props, emits and slots of `EditorSurface` forwarded; an incoming value equal to the last emitted one is ignored; prop `policy` (also configures the `MarkdownClipboard` it installs), prop `sourceMode` (a `SourceMode`: while its state is `source` the surface shows the draft in a text area with the diagnostics of a rejected commit and Apply/Cancel, `sourceLabels` for their texts), event `diagnostics`). React: `MarkdownSurface` (`value` / `onChange` / `onFrontmatterChange` / `onDiagnostics`, prop `policy` (also configures the installed `MarkdownClipboard`), the `EditorSurface` props forwarded, same semantics; no source view). Neither imports CodeMirror |
121
+ | `@ecsplico/editor/code`, `/code/vue`, `/code/react` | CodeMirror 6 on a string, themed by the shared `--sk-*` tokens (`styles/tokens.css`; fallbacks are the token defaults). Framework-free: `createCodeEditor({ parent, doc?, readOnly?, wordWrap?, language?, onSaveShortcut?, onChange? })`, `setReadOnly`, `setWordWrap`, `setLanguage(view, support)`, `loadLanguage(view, id)`, `setDocument(view, text)` (a host text, not an edit), `registerLanguage(id, loader, { core? })` / `resolveLanguage(id)` / `isCoreLang(id)` (language packs are the host's: register the `@codemirror/lang-*` packs you depend on; `jsonl` is built in), `formatJsonInEditor(view)`, `formatJsonText`, `jsonlLanguage`, `kindOf(path, mime?)` (`'markdown' \| 'code' \| 'binary'`), `languageOf(path)`. `/code/vue`: `CodeSurface` (`v-model` string, `editable`, `language`, `wordWrap`; emits `update:modelValue`, `save` on Mod-S, `ready(view)`). `/code/react`: `CodeSurface` (`value`, `onChange`, `onSave`, `onReady`, same flags). No ProseMirror or TipTap is reachable from these entries |
122
+ | `@ecsplico/editor/document/vue`, `/document/react` | `DocumentSurface`: `MarkdownSurface` for `kindOf(path, mime) === 'markdown'` (props `markdown`: the Markdown surface's own props, `preset` at least), `CodeSurface` for text (language from `languageOf(path)` unless `language` is given), a `binary` slot (Vue) / `binary(path)` render prop (React) otherwise. `ready` carries `{ kind: 'markdown', editor }` or `{ kind: 'code', view }`. These entries reach both editors; use `/markdown/*` or `/code/*` alone to keep one out of a bundle |
123
+ | `@ecsplico/editor/transcript`, `/transcript/vue`, `/transcript/react`, `/transcript/schema` | `/vue` and `/react`: `transcriptFeature`, `TranscriptSegmentView`; framework-free: `transcriptFeatureCore`, `transcriptSegment`, `speakerConversions`, `segmentSpeakerLines`, `transcriptSchemaExtensions()`, `speakerParagraphsToSegments`, `lastSpeaker`, `speakersIn` |
124
+ | `@ecsplico/editor/authors`, `/authors/vue`, `/authors/react`, `/authors/schema` | `/vue` and `/react`: `authorsFeature`, `AuthorColorsPanel`, `AuthorColorsButton`, `SettingsAuthorsTab`; framework-free: `authorsFeatureCore`, `currentAuthor`, `AuthorAttribution`, `authorsSchemaExtensions()`, `AuthorMark`, `documentAuthors`, `AuthorIdentity`, `AUTHOR_COLOR_STYLES`, `AuthorColorStyle` |
125
+ | `@ecsplico/editor/themes`, `/themes/vue`, `/themes/react`, `/themes/schema` | `/vue` and `/react`: `themesFeature()` (site-wide Obsidian themes: its `setup` hook starts the theme runtime and returns its teardown, its `appearance` settings tab picks the theme), `SettingsAppearanceTab`; framework-free: `themesFeatureCore`, `startObsidianTheme(ctx)` (reference-counted per app, returns the release), `scopeThemeCss`, `THEME_SCOPE_CLASS`; Vue-free schema: `ThemeRecord`, `ThemeManifest`, `themeManifestSchema`, `THEME_ID`, `MAX_THEME_BYTES`. Needs an adapter with `listThemes`/`loadTheme`; see the [usage guide](./docs/usage.md#themes-obsidian) |
126
+ | `@ecsplico/editor/comments`, `/comments/vue`, `/comments/react`, `/comments/schema` | `/vue` and `/react`: `commentsFeature` (requires `collab`), `useComments`, `CommentsMargin`, `CommentsPopover`, `CommentsListMenu`, `CommentThreadView`, `CommentComposer`, `CommentBubble`, `SettingsCommentsTab` (`/vue` also the type `CommentsStore`); framework-free: `commentsFeatureCore`, `createCommentsModel`, `Comments` plugin helpers, `commentsSchemaExtensions()`, `CommentMark`, `CommentThread`, `CommentReply`, `COMMENT_LIMITS`, `COMMENTS_LAYOUTS`, `CommentsLayout` |
127
+ | `@ecsplico/editor/composites/vue`, `/composites/react` | `compositeFeature()` (Vue: Nuxt UI, React: shadcn), the host-placed `CompositeTable` and `CompositeInspector`, `SettingsEditingTab`, `CompositeChrome`, `CompositeDetails`, `CompositeView` and editors, `useCompositeRows`, `useCompositeAnchors` |
128
+ | `@ecsplico/editor/composites`, `/composites/schema` | Framework-free: `compositeFeatureCore`, `Composite`, `defaultCompositeKinds`, `compositeKind`, `compositeOutline`, `moveBlockInto`, `canMoveBlockInto`, `headingsMarkdown`, `documentCompositeMarkdown`, `Structure`, `createCompositeRows`, `observeCompositeAnchors`, `compositeRows`, `setCompositeMetaField`, `setCompositeTags`, `setCompositeDescription`, `compositeDescriptionText`, `compositeSchemaExtensions()`, `compositeJSON`, `blocksFromMarkdown`, `splitCompositeFences`, `migrateLegacyContent`, conversions and heading↔composite transforms |
129
+ | `@ecsplico/editor/ai`, `/ai/protocol` | Framework-free: `aiFeatureCore`, `modelProfiles(app)`, `createAiAssistant`, `createDocumentChat`, `createAgentOpReview({ notify, t })` (host-driven agent edit review), `notifyAiRateLimited(notify, t)`, review/apply helpers (`startAiReview`, `applyAiResult`, …) and the protocol (`AI_TASKS`, `ModelRef`, `AGENT_OP_TYPES`, `CHAT_LIMITS`, …), importable alone from `/ai/protocol`; the model-facing agent texts (`checkAgentOps`, `agentShownMessage`, `agentFeedbackText`, `agentRetryMessage`) take a `locale: 'de' \| 'en'` option (default `de`), and `agentRetryMessage(problems, scoped, { locale, tool })` names the `tool` the model must call again (default `edit_document`) |
130
+ | `@ecsplico/editor/ai/vue`, `/ai/react` | `aiFeature()`, `AiSidebar`, `ModelQuickSwitch`, `AiReviewBar`, `AiSelectionMenu`, `SettingsAiTab`, `SettingsModelProfiles`; `/ai/vue` also `useAiAssistant`, `useDocumentChat`, `useModelProfiles` (thin hooks over the models) |
131
+ | `@ecsplico/editor/integrations/composite-ai` | Framework-free: `compositeAiFeature` (requires `composites`, `ai`, `media`), `fillComposite`, `summarizeComposite`, `transcribeDocument`, `compositeSourceText`, `mediaAssetOf` |
132
+ | `@ecsplico/editor/integrations/composite-media` | Framework-free: `compositeMediaFeature` (requires `composites`, `media`): imported files become `document` composites |
133
+ | `@ecsplico/editor/integrations/transcript-ai`, `/transcript-ai/protocol` | Framework-free: `transcriptAiFeature` (requires `transcript`, `ai`), `createTranscriptCleanup`, `hasTranscriptSegments`; server contract: `TRANSCRIPT_CLEANUP_LIMITS`, `transcriptCleanupRequestSchema`, `transcriptCleanupMessages`, `transcriptCleanupChunks`, `parseTranscriptCleanup` |
134
+ | `@ecsplico/editor/collab`, `/collab/vue`, `/collab/react` | Framework-free: `collabFeatureCore(ui?)` (Yjs `Collaboration`/`CollaborationCaret`, active only with a `collaboration` session on the surface), `yjsAnchorResolver`; `/vue` and `/react`: `collabFeature()` (the Vue one adds the `@tiptap/vue-3` state-sync workaround, the React one needs none) |
135
+ | `@ecsplico/editor/block-ui`, `/block-ui/vue`, `/block-ui/react` | `/vue` and `/react`: `blockUiFeature()`, `BlockUi`, `BlockActionsOverlay`; framework-free: `blockUiFeatureCore`, `blockActionsFor`, `effectiveTarget`: drag handle, hover targeting and block actions (opt-in; the simple editor never includes it) |
136
+ | `@ecsplico/editor/schema/advanced` | Vue-free `advancedSchemaExtensions()`: the advanced schema for servers, validators and migrations |
137
+ | `@ecsplico/editor/server`, `/server/handlers`, `/server/node`, `/nuxt` | Server side without a web framework: `createCollabServer`, `createAiModels`, `createRateLimiter`, `EditorAdapter`, one request handler per route (`/server/handlers`), `listenCollab` for a plain Node script (`/server/node`); the Nitro registry `setEditorAdapter`, `forgetCollabDocument`, `liveContent`, `collabStats`; the Nuxt module (config key `tiptapEditor`) wraps the same core. See the [integration guide](./docs/integration.md) |
138
+ | `@ecsplico/editor/styles/core.css` (required), `/composites.css`, `/media.css`, `/mentions.css`, `/tables.css`, `/authors.css`, `/comments.css`, `/transcript.css`, `/ai.css`, `/collab.css`, `/block-ui.css`, `/themes.css` | Feature CSS (import after Tailwind, Nuxt UI (Vue) or `ui-vars.css` (React) and `core.css`; `themes.css` after the feature sheets). The Nuxt module adds all of them itself |
139
+
140
+ Nuxt apps use the same entries; the Nuxt client plugin (`src/nuxt/runtime/plugins/editor-context-<kit>.client.ts`, one file per `kit` option so an app never bundles the UI library it does not use) installs the editor context with account-synced settings.
141
+
142
+ ## Presets and features
143
+
144
+ | Preset | Features | Backend / Yjs | Bundle isolation (`check:editor-entries`) |
145
+ |---|---|---|---|
146
+ | `simple` (`SimpleEditor`, `simpleEditor()`) | `core` | none | no feature, integration, AI SDK, Yjs, y-tiptap, Hocuspocus, Nuxt or server modules in the emitted chunks |
147
+ | React `SimpleEditor` + `EditorToolbar` (`./react/simple`, `./react`) | `core` | none | no `vue`, `@vue`, `@tiptap/vue-3`, Nuxt UI or Vue-layer module in the emitted chunks (`react-simple` fixture); the headless core (`core-headless` fixture) contains no Vue, React or layer module at all |
148
+ | `core` + `mediaFeature()` | `core`, `media` | uploads only (or a host `upload` function) | no composite, AI, Yjs, Nuxt or sibling-feature modules |
149
+ | `core` + `mentionsFeature()` | `core`, `mentions` | built-in `@`/`#` lists only (or host lists) | same |
150
+ | `core` + `transcriptFeature()` | `core`, `transcript` | none | same |
151
+ | `core` + `authorsFeature()` | `core`, `authors` | none | same |
152
+ | `core` + `themesFeature()` | `core`, `themes` | `/api/editor/themes[/:id]` (adapter `listThemes`/`loadTheme`) | no composite, AI, media, mentions, transcript, authors, comments, collaboration, block-UI, integration, Yjs or Nuxt modules |
153
+ | `core` + `collabFeature()` + `commentsFeature()` | `core`, `collab`, `comments` | `/collab/:id` websocket (comments live in the Y.Doc) | no composite, AI, media, mentions, transcript, authors, block-UI, integration or Nuxt modules; Yjs is bundled |
154
+ | `core` + `aiFeature()` | `core`, `ai` | `/api/ai/{models,generate,chat,complete}` (see the usage guide) | no composite, transcript, media, mentions, collaboration, integration, Yjs or Nuxt modules |
155
+ | `core` + `media` + `composites` + `aiFeature()` + `compositeAiFeature()` | `core`, `media`, `composites`, `ai`, `composite-ai` | AI endpoints plus `/api/ai/transcribe` | no transcript, mentions, collaboration, other integration, Yjs or Nuxt modules |
156
+ | `core` + `transcriptFeature()` + `aiFeature()` + `transcriptAiFeature()` | `core`, `transcript`, `ai`, `transcript-ai` | AI endpoints plus `/api/ai/transcript-cleanup` | no composites, media, mentions, collaboration, other integration, Yjs or Nuxt modules |
157
+ | `core` + `collabFeature()` | `core`, `collab` | `/collab/:id` websocket (Nuxt module) or any Hocuspocus server on the advanced schema | no composite, AI, media, mentions, block-UI, integration or Nuxt modules; Yjs is bundled |
158
+ | `core` + `blockUiFeature()` | `core`, `block-ui` | none | no composite, AI, media, mentions, collab-feature or Nuxt modules (the drag handle's upstream package bundles Yjs support code) |
159
+ | `core` + `compositeFeature()` | `core`, `composites` | none | no AI, media, transcript, mentions, collaboration, block-UI, integration, Yjs or Nuxt modules |
160
+ | `core` + `media` + `composites` + `compositeMediaFeature()` | `core`, `media`, `composites`, `composite-media` | uploads only | no AI, transcript, mentions, collaboration, other integration, Yjs or Nuxt modules |
161
+ | `DocumentTree` (`./tree/vue` or `./tree/react`) beside `core` + `media` + `composites` | tree, `core`, `media`, `composites` | the host's `DocumentStore` | no AI, transcript, mentions, collaboration, block-UI, integration, Yjs or Nuxt modules; the `simple` bundle never contains the tree; the React tree contains no Vue module (`tree-react` fixture), the framework-free `./tree` no Vue and no React (`headless-tree` fixture) |
162
+ | `advancedEditor()` / `AdvancedEditor` (`./vue/advanced`) | every feature (including `themes`) and integration, Vue bindings | `/collab/:id`, AI endpoints, assets, users/tags, themes (Nuxt module plus a host adapter, or a host server) | requires all feature and integration modules; no React, `sonner`, Nuxt, `nitropack`, `h3`, vue-router or server code in the browser bundle (`advanced` fixture) |
163
+ | `advancedEditor()` / `AdvancedEditor` (`./react/advanced`) | every feature (including `themes`) and integration, React bindings | the same endpoints, through the Nuxt host or a host server (`examples/react-advanced` proxies `/api` and `/collab` to the Nuxt app) | requires all feature and integration modules; no `vue`, `@vue`, `@tiptap/vue-3`, Nuxt UI, Vue-layer or `.vue` module, no Nuxt or server code (`advanced-react` fixture) |
164
+ | Any feature on one layer (`<x>/vue`, `<x>/react`, `<x>` alone) | `core` + that feature | as listed above | `<x>-react` fixtures contain no Vue or Nuxt UI module; the Vue fixtures no React, `react-dom` or `sonner`; the framework-free `headless-<x>` fixtures neither framework |
165
+
166
+ Settings are stored as one inert, versioned JSON object shared by all editors of an app (`EditorSettings`); a simple editor installs no feature that reads the non-core parts.
167
+
168
+ ## CSS and UI-provider requirements
169
+
170
+ - Design tokens: `@ecsplico/editor/styles/tokens.css` declares the shared `--sk-*` variables (`--sk-bg`, `--sk-fg`, `--sk-muted`, `--sk-border`, `--sk-primary`, `--sk-primary-fg`, `--sk-success`, `--sk-warning`, `--sk-danger`, `--sk-radius`, `--sk-font`) with light defaults under `:where(:root)` and dark values under `:where(.dark)`. Every feature stylesheet reads them; a UI kit maps them onto its own variables (Nuxt UI: `vue/kit/nuxt-ui.css`, PrimeVue: `vue/kit/primevue.css`, React/shadcn: `react/styles/ui-vars.css`), a host may override them once.
171
+
172
+ - Vue UI kit: the Vue chrome renders through the kit handed to `createEditor({ kit })`. `nuxtUiKit()` (`@ecsplico/editor/vue/kit/nuxt-ui`, needs `@nuxt/ui`, stylesheet `@ecsplico/editor/vue/kit/nuxt-ui.css`) is the demo default; `primeVueKit()` (`@ecsplico/editor/vue/kit/primevue`, needs `primevue` + `@iconify/vue`, stylesheet `@ecsplico/editor/vue/kit/primevue.css`) works with the host's `app.use(PrimeVue)`, `ToastService` and a mounted `<Toast />`. `@ecsplico/editor/vue/kit` holds the `VueUiKit` contract and `useUiKit()`. Only those two entries import their UI library. The Nuxt module option `kit: 'nuxt-ui' | 'primevue'` (default `'nuxt-ui'`) selects the kit and the stylesheet; the `ui.css` patch runs only for `'nuxt-ui'`. `examples/vue-primevue` mounts the editor with PrimeVue.
173
+
174
+ - Import the core CSS **after** Tailwind and Nuxt UI, and let Tailwind see the library's classes:
175
+
176
+ ```css
177
+ @import "tailwindcss";
178
+ @import "@nuxt/ui";
179
+ @import "@ecsplico/editor/styles/core.css";
180
+ @source "../../../packages/editor/src"; /* relative path from this CSS file to the package's src */
181
+ ```
182
+
183
+ The Nuxt module needs none of this: it adds `core.css` and every feature sheet to `css` (`themes.css` last) and appends the package to Tailwind's `@source` list. In plain Vue also import the sheet of each feature you use, e.g. `@ecsplico/editor/styles/media.css`, after `core.css`.
184
+
185
+ - Plain Vue: Vite plugins `vue()` and `ui({ router: false })` from `@nuxt/ui/vite`, `app.use(ui)` with `import ui from '@nuxt/ui/vue-plugin'`, and the editor context `app.use(createEditor())` (`createEditor` from `@ecsplico/editor/vue`). Wrap the page in `<UApp>` (overlays, toasts, tooltips).
186
+ - React: Vite with `@vitejs/plugin-react` and `@tailwindcss/vite`. The CSS needs Tailwind, `tw-animate-css`, `@ecsplico/editor/react/styles/ui-vars.css`, `core.css` (plus the sheet of each feature you use, e.g. `mentions.css`), the shadcn theme block (`:root`/`.dark` tokens and `@theme inline`; `bunx shadcn@latest init` generates it) and `@source` for the library's `src/react`. For the advanced editor import `@ecsplico/editor/react/styles/advanced.css` instead of those three library sheets: it bundles `ui-vars.css`, `core.css`, every feature sheet and `themes.css` (last). Preload the icons with `addCollection(lucide)` from `@iconify/react`, wrap the tree in `<EditorContextProvider context={createEditorContext({ notify: reactNotifier })}>` and mount `<Toaster />` (sonner, from `@ecsplico/editor/react`) once so notices show up; see the [usage guide](./docs/usage.md#simple-editor-in-react), [Advanced editor in React](./docs/usage.md#advanced-editor-in-react), [`examples/react-simple`](../../examples/react-simple) and [`examples/react-advanced`](../../examples/react-advanced).
187
+ - Icons: Nuxt UI resolves `i-lucide-*` names at build time. A workspace library lies outside the Vite root that Nuxt UI scans, so list its icons for the client bundle (see how `examples/vue-simple/vite.config.ts` collects them) to avoid Iconify API requests at runtime.
188
+ - The editor context is mandatory: Vue `EditorSurface`, `SimpleEditor` and `EditorToolbar` throw a descriptive error without `createEditor()`, the React components without `<EditorContextProvider>`. Both wrap the framework-free `createEditorContext()` from `@ecsplico/editor/core`; the host owns the React context and may call `context.dispose()` itself.
189
+
190
+ ## Runnable examples
191
+
192
+ - **Plain Vue, no backend:** [`examples/vue-simple`](../../examples/vue-simple) — `SimpleEditor` with a sibling toolbar and heading outline, JSON `v-model`, read-only toggle, external replacement, host `/datum` command and an own block, the „Hinweis“ callout, added through the `extensions` and `slashCommands` props (`/hinweis`, `Mod-Shift-h`, tone select, `!!!` Markdown form). A sample picker loads five demo documents (Start, Formatierung, Gliederung, Hinweise, and „Ungültig (Baustein-JSON)“, which the simple schema rejects through `contentError`); next to the editor the JSON (with block IDs) and the Markdown of the document are shown.
193
+ - **Plain React, no backend:** [`examples/react-simple`](../../examples/react-simple) — the same document picker, read-only toggle and JSON/Markdown panes with the React layer: `EditorToolbar` beside `EditorSurface` over `defineEditor({ features: [coreFeature(), mentionsFeature()] })`, the host `/` commands, `@` mentions from `metadata`, and rejected content through `onContentError`. Vite, Tailwind 4 and shadcn tokens, no Nuxt UI.
194
+ - **Advanced, Nuxt:** this repository's application (`bun run dev`, port 3031) — collaborative documents under switchable demo users (no login: `server/middleware/demo-session.ts` signs every API request into a demo user, `server/api/auth/switch.post.ts` switches it; `app/pages/documents/[id].vue`), the file drawer with `DocumentTree` and a host `DocumentStore` (`app/components/AppDocumentTree.vue`, `app/composables/useDocumentStore.ts`), and a playground with two independent editors, switched in the page header together with the shown editor's sample (`app/pages/playground.vue`, panes in `app/components/PlaygroundPane.vue`, each opening its settings in the `EditorSettingsModal` popup). Editor A is an `AdvancedEditor` with host props (metadata, abilities, a hover action, a `/` command, an own composite kind) on the „Überblick“, „Gliederung“, „Transkript“ and „Leer“ samples; Editor B is an `EditorSurface` on `advancedEditor().features` plus an own feature, the callout (`app/editor/callout/`: toolbar button, `/hinweis`, a tone menu on hover, „Umwandeln in Hinweis“, Markdown form), with a „Markdown einfügen“ button. The „Darstellung“ settings tab switches the whole site between „Standard“ and the seven builtin Obsidian themes (`server/themes/`: Nord, Things, Minimal, Catppuccin, Border, Blue Topaz, Tokyo Night) or an uploaded one, served by the adapter in `server/plugins/editor-adapter.ts`. Walkthrough: [Advanced Nuxt example](./docs/usage.md#advanced-nuxt-example). How to add a block of your own: the [extending guide](./docs/extending.md).
195
+ - **Advanced, React:** [`examples/react-advanced`](../../examples/react-advanced) (`bun run --cwd examples/react-advanced dev`, port 3043; needs the Nuxt app running, Vite proxies `/api` and `/collab` to it) — the React counterpart of the Nuxt document page: a document picker over the host's `/api/documents`, a collaborative `AdvancedEditor` over `HocuspocusProvider` as the demo session's user, `EditorToolbar`, `EditorSettingsModal`, `CommentsMargin`, `CompositeTable`/`CompositeInspector`, `EditorOutline`, `AiSidebar`, `DocumentTree` over an `/api` adapter of `DocumentStore`, and `Toaster`. Vite, Tailwind 4 and shadcn tokens, no Nuxt UI, no Vue.
196
+
197
+ ## Commands
198
+
199
+ From the repository root, after `bun install`:
200
+
201
+ ```sh
202
+ bun run dev # Nuxt demo app, http://localhost:3031
203
+ bun run typecheck # nuxt typecheck of the demo app
204
+ bun run --cwd examples/vue-simple dev # http://localhost:3040
205
+ bun run --cwd examples/vue-simple build # prepares the Nuxt UI theme aliases the library typecheck needs
206
+ bun run --cwd examples/vue-simple typecheck
207
+ bun run --cwd examples/react-simple dev # http://localhost:3041
208
+ bun run --cwd examples/react-simple typecheck
209
+ bun run --cwd examples/react-advanced dev # http://localhost:3043, needs `bun run dev` (Nuxt host, port 3031)
210
+ bun run --cwd examples/react-advanced typecheck
211
+ bun run --cwd examples/vue-primevue dev # http://localhost:3044, the Vue surface on primeVueKit() (no Nuxt UI)
212
+ bun run --cwd examples/vue-markdown dev # http://localhost:3045, MarkdownSurface with frontmatter, tables and source mode
213
+ bun run typecheck:editor # vue-tsc --noEmit -p packages/editor/tsconfig.json (no Nuxt globals)
214
+ bun run check:editor-entries # production build per fixture, module-graph isolation rules
215
+ bun run check:editor-markdown-clipboard # MarkdownClipboard paste/copy cases (HTML, Markdown, plain text, data-URL opt-in) in happy-dom
216
+ bun run check:editor-composition # defineEditor rejects missing `requires`; accepted compositions; one formatAiResult contributor
217
+ ```
218
+
219
+ On a clean checkout run the example build once before `typecheck:editor`.
220
+
221
+ ### Bundle isolation proof
222
+
223
+ `bun run check:editor-entries` builds each fixture in `packages/editor/checks/fixtures/<name>/` as its own production Vite app, collects the module IDs of every emitted chunk and fails on forbidden modules (or on a missing required one, so exported factories cannot be tree-shaken away unnoticed). Last result for `simple`: 325 modules, JS 1082.5 kB (gzip 331.1 kB), CSS 194.5 kB (gzip 25.2 kB); for `tree`: 433 modules, JS 1314.5 kB (gzip 389.2 kB), CSS 197.6 kB (gzip 25.7 kB). The `code-only` and `code-only-react` fixtures prove the code surface carries CodeMirror and no ProseMirror or TipTap (and nothing of this package outside `src/code`), and the `markdown-vue` and `tables` fixtures prove the Markdown entries contain no CodeMirror. The check also bundles the advanced schema for Node and compares it with a snapshot (`checks/schema.ts`).
224
+
225
+ ## For LLMs and coding agents
226
+
227
+ Start with the [guide for LLM coding agents](./docs/llms.md): what the package is, which entry to import for what, a minimal Nuxt integration, how to choose presets and features, how to contribute a custom feature (`defineEditor`, `setup`, settings tabs, toolbar), the `EditorAdapter`, settings and themes, the pitfalls that break integrations (CSS order, `<UApp>`, `createEditor()`, SSR, bundle isolation, `settingsUi`) and the verification commands. It links the three detail guides instead of repeating them.
228
+
229
+ ## Documentation
230
+
231
+ - [Guide for LLM coding agents](./docs/llms.md): task-oriented orientation with copyable snippets, invariants and the verification commands.
232
+ - [Integration guide](./docs/integration.md): feature composition and the per-feature entries, the UI binding contract, notices and `setup` teardown, browser versus schema/server entries, settings persistence and app lifetime, Nuxt module, `EditorAdapter`, routes and authentication, storage ownership, AI secrets and env names, collaboration on the client, block UI, the Vue-free advanced schema, the file browser and `DocumentStore`, production, migration from `#tiptap-editor` and the dependency rules.
233
+ - [Extending guide](./docs/extending.md): add a block of your own, with the runnable „Hinweis“ callout as the example — through the `extensions`/`slashCommands` props or as a full feature (toolbar, `/` command, hover action, „Umwandeln in …“, Markdown form), what the `editorBlock` flag and custom abilities do, and what collaboration servers and AI need.
234
+ - [Usage guide](./docs/usage.md): plain Vue setup and the `SimpleEditor`, the React setup (`EditorContextProvider`, `EditorSurface`, `EditorToolbar`, `SimpleEditor`, `Toaster`), media/mentions/transcript, authors and comments, themes, composites and the settings UI, file import, AI and its integrations, the file browser, the advanced editor in React (`./react/advanced`), and the Advanced Nuxt example (a walkthrough of this repository's app).
@@ -0,0 +1,24 @@
1
+ import { EditorView } from "@codemirror/view";
2
+ //#region src/code/CodeSurface.d.ts
3
+ export interface CodeSurfaceProps {
4
+ /** The document text (the React spelling of the Vue surface's `modelValue`). */
5
+ value?: string;
6
+ /** The whole text after every edit (Vue: `update:modelValue`). */
7
+ onChange?: (text: string) => void;
8
+ /** Mod-S, with the current text (Vue: `save`). */
9
+ onSave?: (text: string) => void;
10
+ /** The editor exists (Vue: `ready`). */
11
+ onReady?: (view: EditorView) => void;
12
+ editable?: boolean;
13
+ /** A language id: `languageOf(path)` or an id of `registerLanguage`. Absent or unknown: plain text. */
14
+ language?: string;
15
+ wordWrap?: boolean;
16
+ className?: string;
17
+ }
18
+ export interface CodeSurfaceHandle {
19
+ view: EditorView | null;
20
+ }
21
+ /** CodeMirror over a string. Client only: it builds the editor in an effect, server rendering yields the empty container. */
22
+ export declare const CodeSurface: import("react").ForwardRefExoticComponent<CodeSurfaceProps & import("react").RefAttributes<CodeSurfaceHandle>>;
23
+ //#endregion
24
+ //# sourceMappingURL=CodeSurface.d.ts.map
@@ -0,0 +1,57 @@
1
+ import { createCodeEditor, loadLanguage, setDocument, setReadOnly, setWordWrap } from "./editor-factory.js";
2
+ import { forwardRef, useEffect, useImperativeHandle, useRef } from "react";
3
+ import { jsx } from "react/jsx-runtime";
4
+ //#region src/code/CodeSurface.tsx
5
+ /** CodeMirror over a string. Client only: it builds the editor in an effect, server rendering yields the empty container. */
6
+ const CodeSurface = forwardRef(function CodeSurface(props, ref) {
7
+ const { value = "", editable = true, language, wordWrap = true, className } = props;
8
+ const element = useRef(null);
9
+ const viewRef = useRef(null);
10
+ const latest = useRef(props);
11
+ latest.current = props;
12
+ useImperativeHandle(ref, () => ({ get view() {
13
+ return viewRef.current;
14
+ } }), []);
15
+ useEffect(() => {
16
+ const current = latest.current;
17
+ const view = createCodeEditor({
18
+ parent: element.current,
19
+ doc: current.value ?? "",
20
+ readOnly: !(current.editable ?? true),
21
+ wordWrap: current.wordWrap ?? true,
22
+ onChange: (v) => latest.current.onChange?.(v.state.doc.toString()),
23
+ onSaveShortcut: () => latest.current.onSave?.(view.state.doc.toString())
24
+ });
25
+ viewRef.current = view;
26
+ latest.current.onReady?.(view);
27
+ return () => {
28
+ view.destroy();
29
+ viewRef.current = null;
30
+ };
31
+ }, []);
32
+ useEffect(() => {
33
+ if (viewRef.current) setDocument(viewRef.current, value);
34
+ }, [value]);
35
+ useEffect(() => {
36
+ if (viewRef.current) setReadOnly(viewRef.current, !editable);
37
+ }, [editable]);
38
+ useEffect(() => {
39
+ if (viewRef.current) setWordWrap(viewRef.current, wordWrap);
40
+ }, [wordWrap]);
41
+ useEffect(() => {
42
+ if (viewRef.current) loadLanguage(viewRef.current, language);
43
+ }, [language]);
44
+ return /* @__PURE__ */ jsx("div", {
45
+ ref: element,
46
+ className: className ? `sk-code-surface ${className}` : "sk-code-surface",
47
+ style: {
48
+ height: "100%",
49
+ minHeight: 0,
50
+ overflow: "hidden"
51
+ }
52
+ });
53
+ });
54
+ //#endregion
55
+ export { CodeSurface };
56
+
57
+ //# sourceMappingURL=CodeSurface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CodeSurface.js","names":[],"sources":["../../src/code/CodeSurface.tsx"],"sourcesContent":["import type { EditorView } from '@codemirror/view'\nimport { forwardRef, useEffect, useImperativeHandle, useRef } from 'react'\nimport { createCodeEditor, loadLanguage, setDocument, setReadOnly, setWordWrap } from './editor-factory'\n\nexport interface CodeSurfaceProps {\n /** The document text (the React spelling of the Vue surface's `modelValue`). */\n value?: string\n /** The whole text after every edit (Vue: `update:modelValue`). */\n onChange?: (text: string) => void\n /** Mod-S, with the current text (Vue: `save`). */\n onSave?: (text: string) => void\n /** The editor exists (Vue: `ready`). */\n onReady?: (view: EditorView) => void\n editable?: boolean\n /** A language id: `languageOf(path)` or an id of `registerLanguage`. Absent or unknown: plain text. */\n language?: string\n wordWrap?: boolean\n className?: string\n}\n\nexport interface CodeSurfaceHandle {\n view: EditorView | null\n}\n\n/** CodeMirror over a string. Client only: it builds the editor in an effect, server rendering yields the empty container. */\nexport const CodeSurface = forwardRef<CodeSurfaceHandle, CodeSurfaceProps>(function CodeSurface(props, ref) {\n const { value = '', editable = true, language, wordWrap = true, className } = props\n const element = useRef<HTMLDivElement>(null)\n const viewRef = useRef<EditorView | null>(null)\n // The editor is built once; its callbacks read the latest props.\n const latest = useRef(props)\n latest.current = props\n\n useImperativeHandle(ref, () => ({ get view() { return viewRef.current } }), [])\n\n useEffect(() => {\n const current = latest.current\n const view = createCodeEditor({\n parent: element.current!,\n doc: current.value ?? '',\n readOnly: !(current.editable ?? true),\n wordWrap: current.wordWrap ?? true,\n onChange: v => latest.current.onChange?.(v.state.doc.toString()),\n onSaveShortcut: () => latest.current.onSave?.(view.state.doc.toString()),\n })\n viewRef.current = view\n latest.current.onReady?.(view)\n // The language is applied by the effect below, which runs right after this one.\n return () => {\n view.destroy()\n viewRef.current = null\n }\n }, [])\n\n // The host's text (a loaded file, a reset) is not an edit: no `onChange`. The text the surface itself just emitted\n // comes back equal and changes nothing.\n useEffect(() => {\n if (viewRef.current) setDocument(viewRef.current, value)\n }, [value])\n useEffect(() => {\n if (viewRef.current) setReadOnly(viewRef.current, !editable)\n }, [editable])\n useEffect(() => {\n if (viewRef.current) setWordWrap(viewRef.current, wordWrap)\n }, [wordWrap])\n useEffect(() => {\n if (viewRef.current) void loadLanguage(viewRef.current, language)\n }, [language])\n\n return <div ref={element} className={className ? `sk-code-surface ${className}` : 'sk-code-surface'} style={{ height: '100%', minHeight: 0, overflow: 'hidden' }} />\n})\n"],"mappings":";;;;;AAyBA,MAAa,cAAc,WAAgD,SAAS,YAAY,OAAO,KAAK;CAC1G,MAAM,EAAE,QAAQ,IAAI,WAAW,MAAM,UAAU,WAAW,MAAM,cAAc;CAC9E,MAAM,UAAU,OAAuB,IAAI;CAC3C,MAAM,UAAU,OAA0B,IAAI;CAE9C,MAAM,SAAS,OAAO,KAAK;CAC3B,OAAO,UAAU;CAEjB,oBAAoB,YAAY,EAAE,IAAI,OAAO;EAAE,OAAO,QAAQ;CAAQ,EAAE,IAAI,CAAC,CAAC;CAE9E,gBAAgB;EACd,MAAM,UAAU,OAAO;EACvB,MAAM,OAAO,iBAAiB;GAC5B,QAAQ,QAAQ;GAChB,KAAK,QAAQ,SAAS;GACtB,UAAU,EAAE,QAAQ,YAAY;GAChC,UAAU,QAAQ,YAAY;GAC9B,WAAU,MAAK,OAAO,QAAQ,WAAW,EAAE,MAAM,IAAI,SAAS,CAAC;GAC/D,sBAAsB,OAAO,QAAQ,SAAS,KAAK,MAAM,IAAI,SAAS,CAAC;EACzE,CAAC;EACD,QAAQ,UAAU;EAClB,OAAO,QAAQ,UAAU,IAAI;EAE7B,aAAa;GACX,KAAK,QAAQ;GACb,QAAQ,UAAU;EACpB;CACF,GAAG,CAAC,CAAC;CAIL,gBAAgB;EACd,IAAI,QAAQ,SAAS,YAAY,QAAQ,SAAS,KAAK;CACzD,GAAG,CAAC,KAAK,CAAC;CACV,gBAAgB;EACd,IAAI,QAAQ,SAAS,YAAY,QAAQ,SAAS,CAAC,QAAQ;CAC7D,GAAG,CAAC,QAAQ,CAAC;CACb,gBAAgB;EACd,IAAI,QAAQ,SAAS,YAAY,QAAQ,SAAS,QAAQ;CAC5D,GAAG,CAAC,QAAQ,CAAC;CACb,gBAAgB;EACd,IAAI,QAAQ,SAAS,aAAkB,QAAQ,SAAS,QAAQ;CAClE,GAAG,CAAC,QAAQ,CAAC;CAEb,OAAO,oBAAC,OAAD;EAAK,KAAK;EAAS,WAAW,YAAY,mBAAmB,cAAc;EAAmB,OAAO;GAAE,QAAQ;GAAQ,WAAW;GAAG,UAAU;EAAS;CAAI,CAAA;AACrK,CAAC"}
@@ -0,0 +1,29 @@
1
+ import { EditorView } from "@codemirror/view";
2
+ //#region src/code/CodeSurface.vue.d.ts
3
+ type __VLS_Props = {
4
+ /** The document text. */
5
+ modelValue?: string;
6
+ editable?: boolean;
7
+ /** A language id: `languageOf(path)` or an id of `registerLanguage`. Absent or unknown: plain text. */
8
+ language?: string;
9
+ wordWrap?: boolean;
10
+ };
11
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {
12
+ view: import("vue").ShallowRef<EditorView | undefined, EditorView | undefined>;
13
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
14
+ ready: (view: EditorView) => any;
15
+ "update:modelValue": (text: string) => any;
16
+ save: (text: string) => any;
17
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
18
+ onReady?: ((view: EditorView) => any) | undefined;
19
+ "onUpdate:modelValue"?: ((text: string) => any) | undefined;
20
+ onSave?: ((text: string) => any) | undefined;
21
+ }>, {
22
+ modelValue: string;
23
+ editable: boolean;
24
+ wordWrap: boolean;
25
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
26
+ declare const _default: typeof __VLS_export;
27
+ //#endregion
28
+ export { _default as default };
29
+ //# sourceMappingURL=CodeSurface.vue.d.ts.map
@@ -0,0 +1,75 @@
1
+ import { createCodeEditor, loadLanguage, setDocument, setReadOnly, setWordWrap } from "./editor-factory.js";
2
+ import { createElementBlock, defineComponent, onBeforeUnmount, onMounted, openBlock, shallowRef, watch } from "vue";
3
+ //#region src/code/CodeSurface.vue
4
+ const _sfc_main = /*@__PURE__*/ defineComponent({
5
+ __name: "CodeSurface",
6
+ props: {
7
+ modelValue: { default: "" },
8
+ editable: {
9
+ type: Boolean,
10
+ default: true
11
+ },
12
+ language: {},
13
+ wordWrap: {
14
+ type: Boolean,
15
+ default: true
16
+ }
17
+ },
18
+ emits: [
19
+ "update:modelValue",
20
+ "save",
21
+ "ready"
22
+ ],
23
+ setup(__props, { expose: __expose, emit: __emit }) {
24
+ const props = __props;
25
+ const emit = __emit;
26
+ const element = shallowRef();
27
+ const view = shallowRef();
28
+ onMounted(() => {
29
+ const instance = createCodeEditor({
30
+ parent: element.value,
31
+ doc: props.modelValue,
32
+ readOnly: !props.editable,
33
+ wordWrap: props.wordWrap,
34
+ ...props.language !== void 0 && { language: props.language },
35
+ onChange: (v) => emit("update:modelValue", v.state.doc.toString()),
36
+ onSaveShortcut: () => emit("save", instance.state.doc.toString())
37
+ });
38
+ view.value = instance;
39
+ emit("ready", instance);
40
+ });
41
+ onBeforeUnmount(() => {
42
+ view.value?.destroy();
43
+ view.value = void 0;
44
+ });
45
+ watch(() => props.modelValue, (text) => {
46
+ if (view.value) setDocument(view.value, text);
47
+ });
48
+ watch(() => props.editable, (editable) => {
49
+ if (view.value) setReadOnly(view.value, !editable);
50
+ });
51
+ watch(() => props.wordWrap, (wrap) => {
52
+ if (view.value) setWordWrap(view.value, wrap);
53
+ });
54
+ watch(() => props.language, (language) => {
55
+ if (view.value) loadLanguage(view.value, language);
56
+ });
57
+ __expose({ view });
58
+ return (_ctx, _cache) => {
59
+ return openBlock(), createElementBlock("div", {
60
+ ref_key: "element",
61
+ ref: element,
62
+ class: "sk-code-surface",
63
+ style: {
64
+ "height": "100%",
65
+ "min-height": "0",
66
+ "overflow": "hidden"
67
+ }
68
+ }, null, 512);
69
+ };
70
+ }
71
+ });
72
+ //#endregion
73
+ export { _sfc_main as default };
74
+
75
+ //# sourceMappingURL=CodeSurface2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CodeSurface2.js","names":["_openBlock","_createElementBlock"],"sources":["../../src/code/CodeSurface.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { EditorView } from '@codemirror/view'\nimport { onBeforeUnmount, onMounted, shallowRef, watch } from 'vue'\nimport { createCodeEditor, loadLanguage, setDocument, setReadOnly, setWordWrap } from './editor-factory'\n\n// CodeMirror renders on the client only: on the server this is an empty container, the editor is built on mount.\nconst props = withDefaults(defineProps<{\n /** The document text. */\n modelValue?: string\n editable?: boolean\n /** A language id: `languageOf(path)` or an id of `registerLanguage`. Absent or unknown: plain text. */\n language?: string\n wordWrap?: boolean\n}>(), { modelValue: '', editable: true, wordWrap: true })\n\nconst emit = defineEmits<{\n /** The whole text after every edit. */\n 'update:modelValue': [text: string]\n /** Mod-S, with the current text. */\n 'save': [text: string]\n /** The editor exists. */\n 'ready': [view: EditorView]\n}>()\n\nconst element = shallowRef<HTMLElement>()\nconst view = shallowRef<EditorView>()\n\nonMounted(() => {\n const instance = createCodeEditor({\n parent: element.value!,\n doc: props.modelValue,\n readOnly: !props.editable,\n wordWrap: props.wordWrap,\n ...(props.language !== undefined && { language: props.language }),\n onChange: v => emit('update:modelValue', v.state.doc.toString()),\n onSaveShortcut: () => emit('save', instance.state.doc.toString()),\n })\n view.value = instance\n emit('ready', instance)\n})\n\nonBeforeUnmount(() => {\n view.value?.destroy()\n view.value = undefined\n})\n\n// The host's text (a loaded file, a reset): not an edit, so no `update:modelValue`. The text the surface itself just\n// emitted comes back equal and changes nothing.\nwatch(() => props.modelValue, (text) => {\n if (view.value) setDocument(view.value, text)\n})\nwatch(() => props.editable, (editable) => {\n if (view.value) setReadOnly(view.value, !editable)\n})\nwatch(() => props.wordWrap, (wrap) => {\n if (view.value) setWordWrap(view.value, wrap)\n})\nwatch(() => props.language, (language) => {\n if (view.value) void loadLanguage(view.value, language)\n})\n\ndefineExpose({ view })\n</script>\n\n<template>\n <div ref=\"element\" class=\"sk-code-surface\" style=\"height: 100%; min-height: 0; overflow: hidden\" />\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;EAMA,MAAM,QAAQ;EASd,MAAM,OAAO;EASb,MAAM,UAAU,WAAwB;EACxC,MAAM,OAAO,WAAuB;EAEpC,gBAAgB;GACd,MAAM,WAAW,iBAAiB;IAChC,QAAQ,QAAQ;IAChB,KAAK,MAAM;IACX,UAAU,CAAC,MAAM;IACjB,UAAU,MAAM;IAChB,GAAI,MAAM,aAAa,KAAA,KAAa,EAAE,UAAU,MAAM,SAAS;IAC/D,WAAU,MAAK,KAAK,qBAAqB,EAAE,MAAM,IAAI,SAAS,CAAC;IAC/D,sBAAsB,KAAK,QAAQ,SAAS,MAAM,IAAI,SAAS,CAAC;GAClE,CAAC;GACD,KAAK,QAAQ;GACb,KAAK,SAAS,QAAQ;EACxB,CAAC;EAED,sBAAsB;GACpB,KAAK,OAAO,QAAQ;GACpB,KAAK,QAAQ,KAAA;EACf,CAAC;EAID,YAAY,MAAM,aAAa,SAAS;GACtC,IAAI,KAAK,OAAO,YAAY,KAAK,OAAO,IAAI;EAC9C,CAAC;EACD,YAAY,MAAM,WAAW,aAAa;GACxC,IAAI,KAAK,OAAO,YAAY,KAAK,OAAO,CAAC,QAAQ;EACnD,CAAC;EACD,YAAY,MAAM,WAAW,SAAS;GACpC,IAAI,KAAK,OAAO,YAAY,KAAK,OAAO,IAAI;EAC9C,CAAC;EACD,YAAY,MAAM,WAAW,aAAa;GACxC,IAAI,KAAK,OAAO,aAAkB,KAAK,OAAO,QAAQ;EACxD,CAAC;EAED,SAAa,EAAE,KAAK,CAAC;;GAInB,OAAAA,UAAA,GAAAC,mBAAmG,OAAA;IAA1F,SAAA;IAAJ,KAAI;IAAU,OAAM;IAAkB,OAAA;KAAA,UAAA;KAAA,cAAA;KAAA,YAAA;IAAA"}
@@ -0,0 +1,76 @@
1
+ import { EditorView } from "@codemirror/view";
2
+ //#region src/code/chrome-theme.ts
3
+ /**
4
+ * Editor chrome (gutter, scroll container, selection, search panel). Token colours are not here, they live in
5
+ * `skaileHighlightStyle`. Everything reads the shared `--sk-*` tokens (`styles/tokens.css`); the fallbacks are the
6
+ * token defaults, so the surface also renders in a page that did not load the stylesheet. A host styles the surface by
7
+ * mapping the tokens once.
8
+ */
9
+ const bg = "var(--sk-bg, #ffffff)";
10
+ const fg = "var(--sk-fg, #18181b)";
11
+ const muted = "var(--sk-muted, #71717a)";
12
+ const border = "var(--sk-border, #e4e4e7)";
13
+ const primary = "var(--sk-primary, #2563eb)";
14
+ const raised = `color-mix(in oklab, ${fg} 5%, ${bg})`;
15
+ const skaileChromeTheme = EditorView.theme({
16
+ "&": {
17
+ backgroundColor: bg,
18
+ color: fg,
19
+ height: "100%",
20
+ fontSize: "0.8125rem",
21
+ lineHeight: "1.5"
22
+ },
23
+ "&.cm-focused": { outline: "none" },
24
+ ".cm-scroller": { overflow: "auto" },
25
+ ".cm-content": {
26
+ fontFamily: "ui-monospace, SFMono-Regular, \"Menlo\", \"Monaco\", \"Cascadia Mono\", \"Consolas\", monospace",
27
+ padding: "12px 16px 12px 0",
28
+ caretColor: fg
29
+ },
30
+ ".cm-gutters": {
31
+ backgroundColor: raised,
32
+ color: muted,
33
+ border: "none"
34
+ },
35
+ ".cm-lineNumbers .cm-gutterElement": {
36
+ padding: "0 0.75rem",
37
+ minWidth: "2.5em",
38
+ textAlign: "right"
39
+ },
40
+ ".cm-foldGutter .cm-gutterElement > *": {
41
+ opacity: "0",
42
+ transition: "opacity 120ms ease-out"
43
+ },
44
+ ".cm-gutters:hover .cm-foldGutter .cm-gutterElement > *": { opacity: "1" },
45
+ ".cm-activeLine": { backgroundColor: `color-mix(in oklab, ${fg} 6%, transparent)` },
46
+ ".cm-activeLineGutter": {
47
+ backgroundColor: `color-mix(in oklab, ${fg} 8%, ${bg})`,
48
+ color: fg
49
+ },
50
+ "&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground, ::selection": { backgroundColor: `color-mix(in oklab, ${primary} 28%, transparent) !important` },
51
+ ".cm-panels": {
52
+ backgroundColor: raised,
53
+ color: fg,
54
+ borderColor: border
55
+ },
56
+ ".cm-panels.cm-panels-top": { borderBottom: `1px solid ${border}` },
57
+ ".cm-textfield": {
58
+ backgroundColor: bg,
59
+ color: fg,
60
+ border: `1px solid ${border}`
61
+ },
62
+ ".cm-button": {
63
+ backgroundImage: "none",
64
+ backgroundColor: raised,
65
+ color: fg,
66
+ border: `1px solid ${border}`
67
+ },
68
+ ".cm-searchMatch": { backgroundColor: `color-mix(in oklab, var(--sk-warning, #d97706) 30%, transparent)` },
69
+ ".cm-searchMatch.cm-searchMatch-selected": { backgroundColor: `color-mix(in oklab, var(--sk-warning, #d97706) 55%, transparent)` },
70
+ "&.cm-skaile-readonly .cm-cursor": { display: "none" },
71
+ "&.cm-skaile-readonly .cm-content": { caretColor: "transparent" }
72
+ });
73
+ //#endregion
74
+ export { skaileChromeTheme };
75
+
76
+ //# sourceMappingURL=chrome-theme.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chrome-theme.js","names":[],"sources":["../../src/code/chrome-theme.ts"],"sourcesContent":["import { EditorView } from '@codemirror/view'\n\n/**\n * Editor chrome (gutter, scroll container, selection, search panel). Token colours are not here, they live in\n * `skaileHighlightStyle`. Everything reads the shared `--sk-*` tokens (`styles/tokens.css`); the fallbacks are the\n * token defaults, so the surface also renders in a page that did not load the stylesheet. A host styles the surface by\n * mapping the tokens once.\n */\nconst bg = 'var(--sk-bg, #ffffff)'\nconst fg = 'var(--sk-fg, #18181b)'\nconst muted = 'var(--sk-muted, #71717a)'\nconst border = 'var(--sk-border, #e4e4e7)'\nconst primary = 'var(--sk-primary, #2563eb)'\nconst raised = `color-mix(in oklab, ${fg} 5%, ${bg})`\n\nexport const skaileChromeTheme = EditorView.theme({\n '&': {\n backgroundColor: bg,\n color: fg,\n height: '100%',\n fontSize: '0.8125rem',\n lineHeight: '1.5',\n },\n '&.cm-focused': { outline: 'none' },\n '.cm-scroller': { overflow: 'auto' },\n '.cm-content': {\n fontFamily: 'ui-monospace, SFMono-Regular, \"Menlo\", \"Monaco\", \"Cascadia Mono\", \"Consolas\", monospace',\n // Right padding so long lines do not touch the container edge; the left side is the gutter's.\n padding: '12px 16px 12px 0',\n caretColor: fg,\n },\n '.cm-gutters': {\n backgroundColor: raised,\n color: muted,\n border: 'none',\n },\n '.cm-lineNumbers .cm-gutterElement': {\n // On the gutter element (not the container) so the active-line highlight covers the gap to the content.\n padding: '0 0.75rem',\n minWidth: '2.5em',\n textAlign: 'right',\n },\n // Fold markers are noise while unused: revealed on gutter hover. The marker's inner element fades, the gutter\n // element keeps its background (it carries the active-line highlight across the fold column).\n '.cm-foldGutter .cm-gutterElement > *': { opacity: '0', transition: 'opacity 120ms ease-out' },\n '.cm-gutters:hover .cm-foldGutter .cm-gutterElement > *': { opacity: '1' },\n '.cm-activeLine': { backgroundColor: `color-mix(in oklab, ${fg} 6%, transparent)` },\n '.cm-activeLineGutter': { backgroundColor: `color-mix(in oklab, ${fg} 8%, ${bg})`, color: fg },\n '&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground, ::selection': {\n backgroundColor: `color-mix(in oklab, ${primary} 28%, transparent) !important`,\n },\n '.cm-panels': { backgroundColor: raised, color: fg, borderColor: border },\n '.cm-panels.cm-panels-top': { borderBottom: `1px solid ${border}` },\n '.cm-textfield': { backgroundColor: bg, color: fg, border: `1px solid ${border}` },\n '.cm-button': { backgroundImage: 'none', backgroundColor: raised, color: fg, border: `1px solid ${border}` },\n '.cm-searchMatch': { backgroundColor: `color-mix(in oklab, var(--sk-warning, #d97706) 30%, transparent)` },\n '.cm-searchMatch.cm-searchMatch-selected': { backgroundColor: `color-mix(in oklab, var(--sk-warning, #d97706) 55%, transparent)` },\n // A viewer, not an editor: no caret while read-only. The class is toggled with the read-only state.\n '&.cm-skaile-readonly .cm-cursor': { display: 'none' },\n '&.cm-skaile-readonly .cm-content': { caretColor: 'transparent' },\n})\n"],"mappings":";;;;;;;;AAQA,MAAM,KAAK;AACX,MAAM,KAAK;AACX,MAAM,QAAQ;AACd,MAAM,SAAS;AACf,MAAM,UAAU;AAChB,MAAM,SAAS,uBAAuB,GAAG,OAAO,GAAG;AAEnD,MAAa,oBAAoB,WAAW,MAAM;CAChD,KAAK;EACH,iBAAiB;EACjB,OAAO;EACP,QAAQ;EACR,UAAU;EACV,YAAY;CACd;CACA,gBAAgB,EAAE,SAAS,OAAO;CAClC,gBAAgB,EAAE,UAAU,OAAO;CACnC,eAAe;EACb,YAAY;EAEZ,SAAS;EACT,YAAY;CACd;CACA,eAAe;EACb,iBAAiB;EACjB,OAAO;EACP,QAAQ;CACV;CACA,qCAAqC;EAEnC,SAAS;EACT,UAAU;EACV,WAAW;CACb;CAGA,wCAAwC;EAAE,SAAS;EAAK,YAAY;CAAyB;CAC7F,0DAA0D,EAAE,SAAS,IAAI;CACzE,kBAAkB,EAAE,iBAAiB,uBAAuB,GAAG,mBAAmB;CAClF,wBAAwB;EAAE,iBAAiB,uBAAuB,GAAG,OAAO,GAAG;EAAI,OAAO;CAAG;CAC7F,kHAAkH,EAChH,iBAAiB,uBAAuB,QAAQ,+BAClD;CACA,cAAc;EAAE,iBAAiB;EAAQ,OAAO;EAAI,aAAa;CAAO;CACxE,4BAA4B,EAAE,cAAc,aAAa,SAAS;CAClE,iBAAiB;EAAE,iBAAiB;EAAI,OAAO;EAAI,QAAQ,aAAa;CAAS;CACjF,cAAc;EAAE,iBAAiB;EAAQ,iBAAiB;EAAQ,OAAO;EAAI,QAAQ,aAAa;CAAS;CAC3G,mBAAmB,EAAE,iBAAiB,mEAAmE;CACzG,2CAA2C,EAAE,iBAAiB,mEAAmE;CAEjI,mCAAmC,EAAE,SAAS,OAAO;CACrD,oCAAoC,EAAE,YAAY,cAAc;AAClE,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { Compartment } from "@codemirror/state";
2
+ //#region src/code/compartments.ts
3
+ /**
4
+ * Compartments allow live reconfiguration of specific extension slots without tearing down the `EditorState`. Each one
5
+ * owns one toggleable slice:
6
+ *
7
+ * - `readOnlyCompartment`: `EditorState.readOnly` + `EditorView.editable`
8
+ * - `languageCompartment`: the active `LanguageSupport` (swapped when a language resolves)
9
+ * - `wrapCompartment`: `EditorView.lineWrapping` (or nothing)
10
+ *
11
+ * A compartment is a key, not state: one instance serves every view.
12
+ */
13
+ const readOnlyCompartment = new Compartment();
14
+ const languageCompartment = new Compartment();
15
+ const wrapCompartment = new Compartment();
16
+ //#endregion
17
+ export { languageCompartment, readOnlyCompartment, wrapCompartment };
18
+
19
+ //# sourceMappingURL=compartments.js.map