@doxi/core 0.11.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 (317) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +81 -0
  3. package/dist/collab/port.d.ts +46 -0
  4. package/dist/collab/port.d.ts.map +1 -0
  5. package/dist/collab/port.js +11 -0
  6. package/dist/collab/port.js.map +1 -0
  7. package/dist/commands/block-commands.d.ts +62 -0
  8. package/dist/commands/block-commands.d.ts.map +1 -0
  9. package/dist/commands/block-commands.js +208 -0
  10. package/dist/commands/block-commands.js.map +1 -0
  11. package/dist/commands/command.d.ts +13 -0
  12. package/dist/commands/command.d.ts.map +1 -0
  13. package/dist/commands/command.js +13 -0
  14. package/dist/commands/command.js.map +1 -0
  15. package/dist/commands/edit-commands.d.ts +5 -0
  16. package/dist/commands/edit-commands.d.ts.map +1 -0
  17. package/dist/commands/edit-commands.js +147 -0
  18. package/dist/commands/edit-commands.js.map +1 -0
  19. package/dist/commands/image-commands.d.ts +31 -0
  20. package/dist/commands/image-commands.d.ts.map +1 -0
  21. package/dist/commands/image-commands.js +130 -0
  22. package/dist/commands/image-commands.js.map +1 -0
  23. package/dist/commands/index.d.ts +11 -0
  24. package/dist/commands/index.d.ts.map +1 -0
  25. package/dist/commands/index.js +11 -0
  26. package/dist/commands/index.js.map +1 -0
  27. package/dist/commands/keymap.d.ts +34 -0
  28. package/dist/commands/keymap.d.ts.map +1 -0
  29. package/dist/commands/keymap.js +84 -0
  30. package/dist/commands/keymap.js.map +1 -0
  31. package/dist/commands/link-commands.d.ts +54 -0
  32. package/dist/commands/link-commands.d.ts.map +1 -0
  33. package/dist/commands/link-commands.js +151 -0
  34. package/dist/commands/link-commands.js.map +1 -0
  35. package/dist/commands/list-commands.d.ts +42 -0
  36. package/dist/commands/list-commands.d.ts.map +1 -0
  37. package/dist/commands/list-commands.js +316 -0
  38. package/dist/commands/list-commands.js.map +1 -0
  39. package/dist/commands/mark-commands.d.ts +53 -0
  40. package/dist/commands/mark-commands.d.ts.map +1 -0
  41. package/dist/commands/mark-commands.js +181 -0
  42. package/dist/commands/mark-commands.js.map +1 -0
  43. package/dist/commands/selection-commands.d.ts +3 -0
  44. package/dist/commands/selection-commands.d.ts.map +1 -0
  45. package/dist/commands/selection-commands.js +11 -0
  46. package/dist/commands/selection-commands.js.map +1 -0
  47. package/dist/commands/table-commands.d.ts +109 -0
  48. package/dist/commands/table-commands.d.ts.map +1 -0
  49. package/dist/commands/table-commands.js +884 -0
  50. package/dist/commands/table-commands.js.map +1 -0
  51. package/dist/history/history.d.ts +40 -0
  52. package/dist/history/history.d.ts.map +1 -0
  53. package/dist/history/history.js +139 -0
  54. package/dist/history/history.js.map +1 -0
  55. package/dist/history/index.d.ts +2 -0
  56. package/dist/history/index.d.ts.map +1 -0
  57. package/dist/history/index.js +2 -0
  58. package/dist/history/index.js.map +1 -0
  59. package/dist/html/index.d.ts +3 -0
  60. package/dist/html/index.d.ts.map +1 -0
  61. package/dist/html/index.js +3 -0
  62. package/dist/html/index.js.map +1 -0
  63. package/dist/html/parse.d.ts +4 -0
  64. package/dist/html/parse.d.ts.map +1 -0
  65. package/dist/html/parse.js +0 -0
  66. package/dist/html/parse.js.map +1 -0
  67. package/dist/html/serialize.d.ts +4 -0
  68. package/dist/html/serialize.d.ts.map +1 -0
  69. package/dist/html/serialize.js +75 -0
  70. package/dist/html/serialize.js.map +1 -0
  71. package/dist/index.d.ts +13 -0
  72. package/dist/index.d.ts.map +1 -0
  73. package/dist/index.js +13 -0
  74. package/dist/index.js.map +1 -0
  75. package/dist/layout/index.d.ts +6 -0
  76. package/dist/layout/index.d.ts.map +1 -0
  77. package/dist/layout/index.js +6 -0
  78. package/dist/layout/index.js.map +1 -0
  79. package/dist/layout/layout-engine.d.ts +20 -0
  80. package/dist/layout/layout-engine.d.ts.map +1 -0
  81. package/dist/layout/layout-engine.js +198 -0
  82. package/dist/layout/layout-engine.js.map +1 -0
  83. package/dist/layout/measure.d.ts +9 -0
  84. package/dist/layout/measure.d.ts.map +1 -0
  85. package/dist/layout/measure.js +37 -0
  86. package/dist/layout/measure.js.map +1 -0
  87. package/dist/layout/split-paragraph.d.ts +28 -0
  88. package/dist/layout/split-paragraph.d.ts.map +1 -0
  89. package/dist/layout/split-paragraph.js +122 -0
  90. package/dist/layout/split-paragraph.js.map +1 -0
  91. package/dist/layout/split-table.d.ts +46 -0
  92. package/dist/layout/split-table.d.ts.map +1 -0
  93. package/dist/layout/split-table.js +84 -0
  94. package/dist/layout/split-table.js.map +1 -0
  95. package/dist/layout/types.d.ts +73 -0
  96. package/dist/layout/types.d.ts.map +1 -0
  97. package/dist/layout/types.js +36 -0
  98. package/dist/layout/types.js.map +1 -0
  99. package/dist/layout/widow-orphan.d.ts +15 -0
  100. package/dist/layout/widow-orphan.d.ts.map +1 -0
  101. package/dist/layout/widow-orphan.js +14 -0
  102. package/dist/layout/widow-orphan.js.map +1 -0
  103. package/dist/model/content-expr.d.ts +32 -0
  104. package/dist/model/content-expr.d.ts.map +1 -0
  105. package/dist/model/content-expr.js +106 -0
  106. package/dist/model/content-expr.js.map +1 -0
  107. package/dist/model/fragment.d.ts +17 -0
  108. package/dist/model/fragment.d.ts.map +1 -0
  109. package/dist/model/fragment.js +44 -0
  110. package/dist/model/fragment.js.map +1 -0
  111. package/dist/model/index.d.ts +10 -0
  112. package/dist/model/index.d.ts.map +1 -0
  113. package/dist/model/index.js +10 -0
  114. package/dist/model/index.js.map +1 -0
  115. package/dist/model/mark.d.ts +35 -0
  116. package/dist/model/mark.d.ts.map +1 -0
  117. package/dist/model/mark.js +89 -0
  118. package/dist/model/mark.js.map +1 -0
  119. package/dist/model/node-type.d.ts +36 -0
  120. package/dist/model/node-type.d.ts.map +1 -0
  121. package/dist/model/node-type.js +14 -0
  122. package/dist/model/node-type.js.map +1 -0
  123. package/dist/model/node.d.ts +36 -0
  124. package/dist/model/node.d.ts.map +1 -0
  125. package/dist/model/node.js +192 -0
  126. package/dist/model/node.js.map +1 -0
  127. package/dist/model/position.d.ts +66 -0
  128. package/dist/model/position.d.ts.map +1 -0
  129. package/dist/model/position.js +158 -0
  130. package/dist/model/position.js.map +1 -0
  131. package/dist/model/schema.d.ts +28 -0
  132. package/dist/model/schema.d.ts.map +1 -0
  133. package/dist/model/schema.js +195 -0
  134. package/dist/model/schema.js.map +1 -0
  135. package/dist/model/slice.d.ts +26 -0
  136. package/dist/model/slice.d.ts.map +1 -0
  137. package/dist/model/slice.js +56 -0
  138. package/dist/model/slice.js.map +1 -0
  139. package/dist/model/table-grid.d.ts +71 -0
  140. package/dist/model/table-grid.d.ts.map +1 -0
  141. package/dist/model/table-grid.js +130 -0
  142. package/dist/model/table-grid.js.map +1 -0
  143. package/dist/plugin/index.d.ts +3 -0
  144. package/dist/plugin/index.d.ts.map +1 -0
  145. package/dist/plugin/index.js +3 -0
  146. package/dist/plugin/index.js.map +1 -0
  147. package/dist/plugin/plugin-key.d.ts +13 -0
  148. package/dist/plugin/plugin-key.d.ts.map +1 -0
  149. package/dist/plugin/plugin-key.js +13 -0
  150. package/dist/plugin/plugin-key.js.map +1 -0
  151. package/dist/plugin/plugin-state.d.ts +2 -0
  152. package/dist/plugin/plugin-state.d.ts.map +1 -0
  153. package/dist/plugin/plugin-state.js +3 -0
  154. package/dist/plugin/plugin-state.js.map +1 -0
  155. package/dist/plugin/plugin.d.ts +39 -0
  156. package/dist/plugin/plugin.d.ts.map +1 -0
  157. package/dist/plugin/plugin.js +10 -0
  158. package/dist/plugin/plugin.js.map +1 -0
  159. package/dist/schema/default.d.ts +163 -0
  160. package/dist/schema/default.d.ts.map +1 -0
  161. package/dist/schema/default.js +94 -0
  162. package/dist/schema/default.js.map +1 -0
  163. package/dist/schema/index.d.ts +2 -0
  164. package/dist/schema/index.d.ts.map +1 -0
  165. package/dist/schema/index.js +2 -0
  166. package/dist/schema/index.js.map +1 -0
  167. package/dist/serialize/index.d.ts +2 -0
  168. package/dist/serialize/index.d.ts.map +1 -0
  169. package/dist/serialize/index.js +2 -0
  170. package/dist/serialize/index.js.map +1 -0
  171. package/dist/serialize/json.d.ts +15 -0
  172. package/dist/serialize/json.d.ts.map +1 -0
  173. package/dist/serialize/json.js +23 -0
  174. package/dist/serialize/json.js.map +1 -0
  175. package/dist/state/all-selection.d.ts +11 -0
  176. package/dist/state/all-selection.d.ts.map +1 -0
  177. package/dist/state/all-selection.js +17 -0
  178. package/dist/state/all-selection.js.map +1 -0
  179. package/dist/state/cell-selection.d.ts +30 -0
  180. package/dist/state/cell-selection.d.ts.map +1 -0
  181. package/dist/state/cell-selection.js +38 -0
  182. package/dist/state/cell-selection.js.map +1 -0
  183. package/dist/state/editor-state.d.ts +46 -0
  184. package/dist/state/editor-state.d.ts.map +1 -0
  185. package/dist/state/editor-state.js +211 -0
  186. package/dist/state/editor-state.js.map +1 -0
  187. package/dist/state/index.d.ts +7 -0
  188. package/dist/state/index.d.ts.map +1 -0
  189. package/dist/state/index.js +7 -0
  190. package/dist/state/index.js.map +1 -0
  191. package/dist/state/node-selection.d.ts +16 -0
  192. package/dist/state/node-selection.d.ts.map +1 -0
  193. package/dist/state/node-selection.js +51 -0
  194. package/dist/state/node-selection.js.map +1 -0
  195. package/dist/state/selection.d.ts +29 -0
  196. package/dist/state/selection.d.ts.map +1 -0
  197. package/dist/state/selection.js +24 -0
  198. package/dist/state/selection.js.map +1 -0
  199. package/dist/state/text-selection.d.ts +10 -0
  200. package/dist/state/text-selection.d.ts.map +1 -0
  201. package/dist/state/text-selection.js +26 -0
  202. package/dist/state/text-selection.js.map +1 -0
  203. package/dist/transform/attr-step.d.ts +16 -0
  204. package/dist/transform/attr-step.d.ts.map +1 -0
  205. package/dist/transform/attr-step.js +98 -0
  206. package/dist/transform/attr-step.js.map +1 -0
  207. package/dist/transform/index.d.ts +10 -0
  208. package/dist/transform/index.d.ts.map +1 -0
  209. package/dist/transform/index.js +10 -0
  210. package/dist/transform/index.js.map +1 -0
  211. package/dist/transform/mapping.d.ts +44 -0
  212. package/dist/transform/mapping.d.ts.map +1 -0
  213. package/dist/transform/mapping.js +101 -0
  214. package/dist/transform/mapping.js.map +1 -0
  215. package/dist/transform/mark-step.d.ts +27 -0
  216. package/dist/transform/mark-step.d.ts.map +1 -0
  217. package/dist/transform/mark-step.js +146 -0
  218. package/dist/transform/mark-step.js.map +1 -0
  219. package/dist/transform/replace-around-step.d.ts +35 -0
  220. package/dist/transform/replace-around-step.d.ts.map +1 -0
  221. package/dist/transform/replace-around-step.js +144 -0
  222. package/dist/transform/replace-around-step.js.map +1 -0
  223. package/dist/transform/replace-step.d.ts +17 -0
  224. package/dist/transform/replace-step.d.ts.map +1 -0
  225. package/dist/transform/replace-step.js +72 -0
  226. package/dist/transform/replace-step.js.map +1 -0
  227. package/dist/transform/replace.d.ts +18 -0
  228. package/dist/transform/replace.d.ts.map +1 -0
  229. package/dist/transform/replace.js +132 -0
  230. package/dist/transform/replace.js.map +1 -0
  231. package/dist/transform/set-page-meta-step.d.ts +42 -0
  232. package/dist/transform/set-page-meta-step.d.ts.map +1 -0
  233. package/dist/transform/set-page-meta-step.js +75 -0
  234. package/dist/transform/set-page-meta-step.js.map +1 -0
  235. package/dist/transform/step.d.ts +34 -0
  236. package/dist/transform/step.d.ts.map +1 -0
  237. package/dist/transform/step.js +23 -0
  238. package/dist/transform/step.js.map +1 -0
  239. package/dist/transform/transaction.d.ts +20 -0
  240. package/dist/transform/transaction.d.ts.map +1 -0
  241. package/dist/transform/transaction.js +38 -0
  242. package/dist/transform/transaction.js.map +1 -0
  243. package/dist/version.d.ts +2 -0
  244. package/dist/version.d.ts.map +1 -0
  245. package/dist/version.js +5 -0
  246. package/dist/version.js.map +1 -0
  247. package/dist/view/cell-drag.d.ts +33 -0
  248. package/dist/view/cell-drag.d.ts.map +1 -0
  249. package/dist/view/cell-drag.js +177 -0
  250. package/dist/view/cell-drag.js.map +1 -0
  251. package/dist/view/clipboard.d.ts +5 -0
  252. package/dist/view/clipboard.d.ts.map +1 -0
  253. package/dist/view/clipboard.js +97 -0
  254. package/dist/view/clipboard.js.map +1 -0
  255. package/dist/view/default-renderer.d.ts +3 -0
  256. package/dist/view/default-renderer.d.ts.map +1 -0
  257. package/dist/view/default-renderer.js +142 -0
  258. package/dist/view/default-renderer.js.map +1 -0
  259. package/dist/view/dom-spec.d.ts +11 -0
  260. package/dist/view/dom-spec.d.ts.map +1 -0
  261. package/dist/view/dom-spec.js +32 -0
  262. package/dist/view/dom-spec.js.map +1 -0
  263. package/dist/view/editor-view.d.ts +55 -0
  264. package/dist/view/editor-view.d.ts.map +1 -0
  265. package/dist/view/editor-view.js +143 -0
  266. package/dist/view/editor-view.js.map +1 -0
  267. package/dist/view/image-resize.d.ts +37 -0
  268. package/dist/view/image-resize.d.ts.map +1 -0
  269. package/dist/view/image-resize.js +191 -0
  270. package/dist/view/image-resize.js.map +1 -0
  271. package/dist/view/index.d.ts +15 -0
  272. package/dist/view/index.d.ts.map +1 -0
  273. package/dist/view/index.js +15 -0
  274. package/dist/view/index.js.map +1 -0
  275. package/dist/view/input-pipeline.d.ts +24 -0
  276. package/dist/view/input-pipeline.d.ts.map +1 -0
  277. package/dist/view/input-pipeline.js +226 -0
  278. package/dist/view/input-pipeline.js.map +1 -0
  279. package/dist/view/mutation-observer.d.ts +17 -0
  280. package/dist/view/mutation-observer.d.ts.map +1 -0
  281. package/dist/view/mutation-observer.js +62 -0
  282. package/dist/view/mutation-observer.js.map +1 -0
  283. package/dist/view/page-slots.d.ts +56 -0
  284. package/dist/view/page-slots.d.ts.map +1 -0
  285. package/dist/view/page-slots.js +230 -0
  286. package/dist/view/page-slots.js.map +1 -0
  287. package/dist/view/paginator.d.ts +17 -0
  288. package/dist/view/paginator.d.ts.map +1 -0
  289. package/dist/view/paginator.js +93 -0
  290. package/dist/view/paginator.js.map +1 -0
  291. package/dist/view/print.d.ts +42 -0
  292. package/dist/view/print.d.ts.map +1 -0
  293. package/dist/view/print.js +70 -0
  294. package/dist/view/print.js.map +1 -0
  295. package/dist/view/reconcile.d.ts +16 -0
  296. package/dist/view/reconcile.d.ts.map +1 -0
  297. package/dist/view/reconcile.js +158 -0
  298. package/dist/view/reconcile.js.map +1 -0
  299. package/dist/view/renderer.d.ts +31 -0
  300. package/dist/view/renderer.d.ts.map +1 -0
  301. package/dist/view/renderer.js +89 -0
  302. package/dist/view/renderer.js.map +1 -0
  303. package/dist/view/selection-sync.d.ts +35 -0
  304. package/dist/view/selection-sync.d.ts.map +1 -0
  305. package/dist/view/selection-sync.js +324 -0
  306. package/dist/view/selection-sync.js.map +1 -0
  307. package/dist/view/table-resize.d.ts +41 -0
  308. package/dist/view/table-resize.d.ts.map +1 -0
  309. package/dist/view/table-resize.js +216 -0
  310. package/dist/view/table-resize.js.map +1 -0
  311. package/package.json +93 -0
  312. package/styles/base.css +269 -0
  313. package/styles/dark.css +36 -0
  314. package/styles/light.css +13 -0
  315. package/styles/page.css +93 -0
  316. package/styles/print-a4.css +87 -0
  317. package/styles/print.css +88 -0
@@ -0,0 +1,42 @@
1
+ import { Fragment } from '../model/fragment.js';
2
+ import { DxNode } from '../model/node.js';
3
+ import type { Schema } from '../model/schema.js';
4
+ import type { Mapping } from './mapping.js';
5
+ import { Step, type StepJSON, type StepResult } from './step.js';
6
+ /**
7
+ * Replace the `header` or `footer` Fragment of EditorState.pageMeta.
8
+ *
9
+ * Lifecycle / inversion side-channel:
10
+ * - `apply(doc)` is a no-op on the main doc: pageMeta lives outside of
11
+ * `doc`. The value carried by the step is consumed by
12
+ * EditorState.applyOne, which actually swaps the fragment on the new
13
+ * EditorState it constructs.
14
+ * - Before storing the step on the transaction, applyOne calls
15
+ * `recordPrevious(prevFragment)` so that `invert()` can produce the
16
+ * inverse step without needing the previous EditorState in hand. The
17
+ * side-channel is intentionally NOT serialized (`toJSON` only carries
18
+ * `slot` + `newFragment`); inversion is meaningful only on
19
+ * just-applied step instances kept in the history.
20
+ *
21
+ * - `map(mapping)` returns `this` unchanged: header/footer positions live
22
+ * outside the main doc's position space, so the mapping never affects
23
+ * them.
24
+ */
25
+ export declare class SetPageMetaStep extends Step {
26
+ readonly slot: 'header' | 'footer';
27
+ readonly newFragment: Fragment;
28
+ private _prevFragment?;
29
+ constructor(slot: 'header' | 'footer', newFragment: Fragment);
30
+ /**
31
+ * Record the pre-apply fragment so `invert()` can build the inverse.
32
+ * Called only by EditorState.applyOne. Idempotent — re-recording with
33
+ * the same value is fine; recording with a different value is a bug.
34
+ */
35
+ recordPrevious(fragment: Fragment): void;
36
+ apply(doc: DxNode): StepResult;
37
+ invert(_doc: DxNode): Step;
38
+ map(_mapping: Mapping): Step | null;
39
+ toJSON(): StepJSON;
40
+ static fromJSON(schema: Schema, data: Readonly<Record<string, unknown>>): SetPageMetaStep;
41
+ }
42
+ //# sourceMappingURL=set-page-meta-step.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set-page-meta-step.d.ts","sourceRoot":"","sources":["../../src/transform/set-page-meta-step.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAC/C,OAAO,EAAE,MAAM,EAAiB,MAAM,kBAAkB,CAAA;AAExD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,EAAE,IAAI,EAAE,KAAK,QAAQ,EAAE,KAAK,UAAU,EAAgB,MAAM,WAAW,CAAA;AAE9E;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,eAAgB,SAAQ,IAAI;IAIrC,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,QAAQ;IAClC,QAAQ,CAAC,WAAW,EAAE,QAAQ;IAJhC,OAAO,CAAC,aAAa,CAAC,CAAU;gBAGrB,IAAI,EAAE,QAAQ,GAAG,QAAQ,EACzB,WAAW,EAAE,QAAQ;IAKhC;;;;OAIG;IACH,cAAc,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAIxC,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU;IAM9B,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAS1B,GAAG,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,GAAG,IAAI;IAInC,MAAM,IAAI,QAAQ;IAUlB,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,eAAe;CAU1F"}
@@ -0,0 +1,75 @@
1
+ import { Fragment } from '../model/fragment.js';
2
+ import { DxNode } from '../model/node.js';
3
+ import { Step, registerStep } from './step.js';
4
+ /**
5
+ * Replace the `header` or `footer` Fragment of EditorState.pageMeta.
6
+ *
7
+ * Lifecycle / inversion side-channel:
8
+ * - `apply(doc)` is a no-op on the main doc: pageMeta lives outside of
9
+ * `doc`. The value carried by the step is consumed by
10
+ * EditorState.applyOne, which actually swaps the fragment on the new
11
+ * EditorState it constructs.
12
+ * - Before storing the step on the transaction, applyOne calls
13
+ * `recordPrevious(prevFragment)` so that `invert()` can produce the
14
+ * inverse step without needing the previous EditorState in hand. The
15
+ * side-channel is intentionally NOT serialized (`toJSON` only carries
16
+ * `slot` + `newFragment`); inversion is meaningful only on
17
+ * just-applied step instances kept in the history.
18
+ *
19
+ * - `map(mapping)` returns `this` unchanged: header/footer positions live
20
+ * outside the main doc's position space, so the mapping never affects
21
+ * them.
22
+ */
23
+ export class SetPageMetaStep extends Step {
24
+ slot;
25
+ newFragment;
26
+ _prevFragment;
27
+ constructor(slot, newFragment) {
28
+ super();
29
+ this.slot = slot;
30
+ this.newFragment = newFragment;
31
+ }
32
+ /**
33
+ * Record the pre-apply fragment so `invert()` can build the inverse.
34
+ * Called only by EditorState.applyOne. Idempotent — re-recording with
35
+ * the same value is fine; recording with a different value is a bug.
36
+ */
37
+ recordPrevious(fragment) {
38
+ this._prevFragment = fragment;
39
+ }
40
+ apply(doc) {
41
+ // SetPageMetaStep doesn't touch the main doc. The value carried by
42
+ // the step is consumed by EditorState.applyOne.
43
+ return { ok: true, doc, mapRange: { start: 0, oldLen: 0, newLen: 0 } };
44
+ }
45
+ invert(_doc) {
46
+ if (this._prevFragment === undefined) {
47
+ throw new Error('SetPageMetaStep.invert: previous fragment not recorded; applyOne must call recordPrevious() before invert()');
48
+ }
49
+ return new SetPageMetaStep(this.slot, this._prevFragment);
50
+ }
51
+ map(_mapping) {
52
+ return this;
53
+ }
54
+ toJSON() {
55
+ return {
56
+ kind: 'setPageMeta',
57
+ data: {
58
+ slot: this.slot,
59
+ fragment: this.newFragment.children.map((c) => c.toJSON()),
60
+ },
61
+ };
62
+ }
63
+ static fromJSON(schema, data) {
64
+ const slot = data.slot;
65
+ const types = {};
66
+ for (const name of Object.keys(schema.nodes)) {
67
+ types[name] = schema.nodes[name];
68
+ }
69
+ const raw = data.fragment ?? [];
70
+ const nodes = raw.map((j) => DxNode.fromJSON(types, j));
71
+ return new SetPageMetaStep(slot, Fragment.from(nodes));
72
+ }
73
+ }
74
+ registerStep('setPageMeta', SetPageMetaStep);
75
+ //# sourceMappingURL=set-page-meta-step.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set-page-meta-step.js","sourceRoot":"","sources":["../../src/transform/set-page-meta-step.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAC/C,OAAO,EAAE,MAAM,EAAiB,MAAM,kBAAkB,CAAA;AAIxD,OAAO,EAAE,IAAI,EAAkC,YAAY,EAAE,MAAM,WAAW,CAAA;AAE9E;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,OAAO,eAAgB,SAAQ,IAAI;IAI5B;IACA;IAJH,aAAa,CAAW;IAEhC,YACW,IAAyB,EACzB,WAAqB;QAE9B,KAAK,EAAE,CAAA;QAHE,SAAI,GAAJ,IAAI,CAAqB;QACzB,gBAAW,GAAX,WAAW,CAAU;IAGhC,CAAC;IAED;;;;OAIG;IACH,cAAc,CAAC,QAAkB;QAC/B,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAA;IAC/B,CAAC;IAED,KAAK,CAAC,GAAW;QACf,mEAAmE;QACnE,gDAAgD;QAChD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAA;IACxE,CAAC;IAED,MAAM,CAAC,IAAY;QACjB,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;YACrC,MAAM,IAAI,KAAK,CACb,6GAA6G,CAC9G,CAAA;QACH,CAAC;QACD,OAAO,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,CAAA;IAC3D,CAAC;IAED,GAAG,CAAC,QAAiB;QACnB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM;QACJ,OAAO;YACL,IAAI,EAAE,aAAa;YACnB,IAAI,EAAE;gBACJ,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAE,CAAY,CAAC,MAAM,EAAE,CAAC;aACvE;SACF,CAAA;IACH,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,MAAc,EAAE,IAAuC;QACrE,MAAM,IAAI,GAAG,IAAI,CAAC,IAA2B,CAAA;QAC7C,MAAM,KAAK,GAA6B,EAAE,CAAA;QAC1C,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7C,KAAK,CAAC,IAAI,CAAC,GAAI,MAAM,CAAC,KAAkC,CAAC,IAAI,CAAE,CAAA;QACjE,CAAC;QACD,MAAM,GAAG,GAAI,IAAI,CAAC,QAAoC,IAAI,EAAE,CAAA;QAC5D,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAA;QACvD,OAAO,IAAI,eAAe,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;IACxD,CAAC;CACF;AAED,YAAY,CAAC,aAAa,EAAE,eAAe,CAAC,CAAA"}
@@ -0,0 +1,34 @@
1
+ import type { DxNode } from '../model/node.js';
2
+ import type { Schema } from '../model/schema.js';
3
+ import type { MapRange, Mapping } from './mapping.js';
4
+ export type StepResult = {
5
+ readonly ok: true;
6
+ readonly doc: DxNode;
7
+ readonly mapRange: MapRange;
8
+ } | {
9
+ readonly ok: false;
10
+ readonly failed: string;
11
+ };
12
+ /** JSON shape every Step round-trips through. */
13
+ export interface StepJSON {
14
+ readonly kind: string;
15
+ readonly data: Readonly<Record<string, unknown>>;
16
+ }
17
+ /**
18
+ * Abstract Step. Every concrete step (ReplaceStep, AddMarkStep, ...) implements
19
+ * `apply` (mutate doc, return result + map range), `invert` (build the inverse
20
+ * step against the pre-apply doc), and `map` (rebase this step through a
21
+ * Mapping, returning null if the step's anchor range was deleted).
22
+ */
23
+ export declare abstract class Step {
24
+ abstract apply(doc: DxNode): StepResult;
25
+ abstract invert(doc: DxNode): Step;
26
+ abstract map(mapping: Mapping): Step | null;
27
+ abstract toJSON(): StepJSON;
28
+ }
29
+ export interface StepConstructor {
30
+ fromJSON(schema: Schema, data: Readonly<Record<string, unknown>>): Step;
31
+ }
32
+ export declare function registerStep(kind: string, ctor: StepConstructor): void;
33
+ export declare function stepFromJSON(schema: Schema, json: StepJSON): Step;
34
+ //# sourceMappingURL=step.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"step.d.ts","sourceRoot":"","sources":["../../src/transform/step.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAErD,MAAM,MAAM,UAAU,GAClB;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAA;CAAE,GACxE;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAA;AAEnD,iDAAiD;AACjD,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;CACjD;AAED;;;;;GAKG;AACH,8BAAsB,IAAI;IACxB,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU;IACvC,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAClC,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,GAAG,IAAI;IAC3C,QAAQ,CAAC,MAAM,IAAI,QAAQ;CAC5B;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,IAAI,CAAA;CACxE;AAKD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,GAAG,IAAI,CAKtE;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,IAAI,CAIjE"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Abstract Step. Every concrete step (ReplaceStep, AddMarkStep, ...) implements
3
+ * `apply` (mutate doc, return result + map range), `invert` (build the inverse
4
+ * step against the pre-apply doc), and `map` (rebase this step through a
5
+ * Mapping, returning null if the step's anchor range was deleted).
6
+ */
7
+ export class Step {
8
+ }
9
+ /** Registry of step constructors keyed by `kind` for deserialization. */
10
+ const REGISTRY = new Map();
11
+ export function registerStep(kind, ctor) {
12
+ if (REGISTRY.has(kind)) {
13
+ throw new Error(`registerStep: duplicate kind '${kind}'`);
14
+ }
15
+ REGISTRY.set(kind, ctor);
16
+ }
17
+ export function stepFromJSON(schema, json) {
18
+ const ctor = REGISTRY.get(json.kind);
19
+ if (!ctor)
20
+ throw new Error(`stepFromJSON: unknown step kind '${json.kind}'`);
21
+ return ctor.fromJSON(schema, json.data);
22
+ }
23
+ //# sourceMappingURL=step.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"step.js","sourceRoot":"","sources":["../../src/transform/step.ts"],"names":[],"mappings":"AAcA;;;;;GAKG;AACH,MAAM,OAAgB,IAAI;CAKzB;AAMD,yEAAyE;AACzE,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA2B,CAAA;AAEnD,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,IAAqB;IAC9D,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,iCAAiC,IAAI,GAAG,CAAC,CAAA;IAC3D,CAAC;IACD,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;AAC1B,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,MAAc,EAAE,IAAc;IACzD,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACpC,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAA;IAC5E,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;AACzC,CAAC"}
@@ -0,0 +1,20 @@
1
+ import type { DxNode } from '../model/node.js';
2
+ import type { Schema } from '../model/schema.js';
3
+ import type { Slice } from '../model/slice.js';
4
+ import { Mapping } from './mapping.js';
5
+ import { Step, type StepJSON } from './step.js';
6
+ export interface TransactionJSON {
7
+ readonly steps: ReadonlyArray<StepJSON>;
8
+ }
9
+ export declare class Transaction {
10
+ readonly doc: DxNode;
11
+ readonly schema: Schema;
12
+ readonly steps: ReadonlyArray<Step>;
13
+ readonly mapping: Mapping;
14
+ constructor(doc: DxNode, schema: Schema, steps?: ReadonlyArray<Step>, mapping?: Mapping);
15
+ step(step: Step): Transaction;
16
+ replaceRange(from: number, to: number, slice: Slice): Transaction;
17
+ toJSON(): TransactionJSON;
18
+ static fromJSON(schema: Schema, baseDoc: DxNode, json: TransactionJSON): Transaction;
19
+ }
20
+ //# sourceMappingURL=transaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../src/transform/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,OAAO,EAAiB,MAAM,cAAc,CAAA;AACrD,OAAO,EAAE,IAAI,EAAE,KAAK,QAAQ,EAAgB,MAAM,WAAW,CAAA;AAG7D,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAA;CACxC;AAED,qBAAa,WAAW;IAEpB,QAAQ,CAAC,GAAG,EAAE,MAAM;IACpB,QAAQ,CAAC,MAAM,EAAE,MAAM;IACvB,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC;IACnC,QAAQ,CAAC,OAAO,EAAE,OAAO;gBAHhB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,EACd,KAAK,GAAE,aAAa,CAAC,IAAI,CAAM,EAC/B,OAAO,GAAE,OAAuB;IAG3C,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,WAAW;IAe7B,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,WAAW;IAIjE,MAAM,IAAI,eAAe;IAIzB,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,GAAG,WAAW;CAOrF"}
@@ -0,0 +1,38 @@
1
+ import { Mapping } from './mapping.js';
2
+ import { Step, stepFromJSON } from './step.js';
3
+ import { ReplaceStep } from './replace-step.js';
4
+ export class Transaction {
5
+ doc;
6
+ schema;
7
+ steps;
8
+ mapping;
9
+ constructor(doc, schema, steps = [], mapping = Mapping.empty) {
10
+ this.doc = doc;
11
+ this.schema = schema;
12
+ this.steps = steps;
13
+ this.mapping = mapping;
14
+ }
15
+ step(step) {
16
+ const result = step.apply(this.doc);
17
+ if (!result.ok) {
18
+ throw new Error(`Transaction.step: ${result.failed}`);
19
+ }
20
+ const range = result.mapRange;
21
+ return new Transaction(result.doc, this.schema, [...this.steps, step], this.mapping.append(range));
22
+ }
23
+ // Convenience builders
24
+ replaceRange(from, to, slice) {
25
+ return this.step(new ReplaceStep(from, to, slice));
26
+ }
27
+ toJSON() {
28
+ return { steps: this.steps.map((s) => s.toJSON()) };
29
+ }
30
+ static fromJSON(schema, baseDoc, json) {
31
+ let tr = new Transaction(baseDoc, schema);
32
+ for (const sjson of json.steps) {
33
+ tr = tr.step(stepFromJSON(schema, sjson));
34
+ }
35
+ return tr;
36
+ }
37
+ }
38
+ //# sourceMappingURL=transaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction.js","sourceRoot":"","sources":["../../src/transform/transaction.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAiB,MAAM,cAAc,CAAA;AACrD,OAAO,EAAE,IAAI,EAAiB,YAAY,EAAE,MAAM,WAAW,CAAA;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAM/C,MAAM,OAAO,WAAW;IAEX;IACA;IACA;IACA;IAJX,YACW,GAAW,EACX,MAAc,EACd,QAA6B,EAAE,EAC/B,UAAmB,OAAO,CAAC,KAAK;QAHhC,QAAG,GAAH,GAAG,CAAQ;QACX,WAAM,GAAN,MAAM,CAAQ;QACd,UAAK,GAAL,KAAK,CAA0B;QAC/B,YAAO,GAAP,OAAO,CAAyB;IACxC,CAAC;IAEJ,IAAI,CAAC,IAAU;QACb,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACnC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,qBAAqB,MAAM,CAAC,MAAM,EAAE,CAAC,CAAA;QACvD,CAAC;QACD,MAAM,KAAK,GAAa,MAAM,CAAC,QAAQ,CAAA;QACvC,OAAO,IAAI,WAAW,CACpB,MAAM,CAAC,GAAG,EACV,IAAI,CAAC,MAAM,EACX,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,EACrB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAC3B,CAAA;IACH,CAAC;IAED,uBAAuB;IACvB,YAAY,CAAC,IAAY,EAAE,EAAU,EAAE,KAAY;QACjD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC,CAAA;IACpD,CAAC;IAED,MAAM;QACJ,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAA;IACrD,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,MAAc,EAAE,OAAe,EAAE,IAAqB;QACpE,IAAI,EAAE,GAAG,IAAI,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;QACzC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC/B,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAA;QAC3C,CAAC;QACD,OAAO,EAAE,CAAA;IACX,CAAC;CACF"}
@@ -0,0 +1,2 @@
1
+ export declare const VERSION = "0.11.0";
2
+ //# sourceMappingURL=version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,OAAO,WAAW,CAAA"}
@@ -0,0 +1,5 @@
1
+ // Hand-synced with packages/core/package.json on each release.
2
+ // Do not import package.json at runtime — it would pull JSON-import
3
+ // machinery into every consumer's bundle.
4
+ export const VERSION = '0.11.0';
5
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,oEAAoE;AACpE,0CAA0C;AAC1C,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAA"}
@@ -0,0 +1,33 @@
1
+ import type { EditorView } from './editor-view.js';
2
+ /**
3
+ * Cross-cell drag-to-select controller.
4
+ *
5
+ * Hot-zone coordination with `installTableResize`:
6
+ * - `installTableResize` owns the 5px-from-right-edge of every
7
+ * `.dx-table-cell` (column resize). On pointerdown, we test the same
8
+ * hot-zone (`cellRect.right - event.clientX <= 5`) and bail if the
9
+ * pointer is inside it — the resize controller will take the gesture.
10
+ * - We attach our listeners AFTER `installTableResize`. Even so, both
11
+ * listeners receive every pointer event; the resize controller only
12
+ * enters its drag state when its own hot-zone check matches, and we
13
+ * only enter ours when the inverse check matches. They cannot both be
14
+ * "active" simultaneously.
15
+ *
16
+ * Behavior:
17
+ * - pointerdown on a `.dx-table-cell` (outside the resize hot-zone)
18
+ * records that cell as the drag anchor. No transaction is dispatched
19
+ * yet — a click without movement leaves existing TextSelection logic
20
+ * untouched.
21
+ * - pointermove while an anchor is recorded:
22
+ * * If the pointer is in a DIFFERENT cell of the SAME table, dispatch
23
+ * a `CellSelection(anchorCellPos, currentCellPos)` (deduped against
24
+ * the previously-dispatched head cell so we don't spam transactions).
25
+ * * If the pointer returns to the anchor cell after a CellSelection
26
+ * was dispatched, collapse back to a TextSelection inside the
27
+ * anchor.
28
+ * - pointerup / pointercancel clears the anchor.
29
+ * - Escape (document keydown) — if `state.selection` is a CellSelection,
30
+ * collapse to TextSelection at the anchor cell's first inline position.
31
+ */
32
+ export declare function installCellDrag(view: EditorView): () => void;
33
+ //# sourceMappingURL=cell-drag.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cell-drag.d.ts","sourceRoot":"","sources":["../../src/view/cell-drag.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAGlD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,IAAI,CAsJ5D"}
@@ -0,0 +1,177 @@
1
+ import { CellSelection } from '../state/cell-selection.js';
2
+ import { TextSelection } from '../state/text-selection.js';
3
+ import { getNodeRef } from './renderer.js';
4
+ /**
5
+ * Cross-cell drag-to-select controller.
6
+ *
7
+ * Hot-zone coordination with `installTableResize`:
8
+ * - `installTableResize` owns the 5px-from-right-edge of every
9
+ * `.dx-table-cell` (column resize). On pointerdown, we test the same
10
+ * hot-zone (`cellRect.right - event.clientX <= 5`) and bail if the
11
+ * pointer is inside it — the resize controller will take the gesture.
12
+ * - We attach our listeners AFTER `installTableResize`. Even so, both
13
+ * listeners receive every pointer event; the resize controller only
14
+ * enters its drag state when its own hot-zone check matches, and we
15
+ * only enter ours when the inverse check matches. They cannot both be
16
+ * "active" simultaneously.
17
+ *
18
+ * Behavior:
19
+ * - pointerdown on a `.dx-table-cell` (outside the resize hot-zone)
20
+ * records that cell as the drag anchor. No transaction is dispatched
21
+ * yet — a click without movement leaves existing TextSelection logic
22
+ * untouched.
23
+ * - pointermove while an anchor is recorded:
24
+ * * If the pointer is in a DIFFERENT cell of the SAME table, dispatch
25
+ * a `CellSelection(anchorCellPos, currentCellPos)` (deduped against
26
+ * the previously-dispatched head cell so we don't spam transactions).
27
+ * * If the pointer returns to the anchor cell after a CellSelection
28
+ * was dispatched, collapse back to a TextSelection inside the
29
+ * anchor.
30
+ * - pointerup / pointercancel clears the anchor.
31
+ * - Escape (document keydown) — if `state.selection` is a CellSelection,
32
+ * collapse to TextSelection at the anchor cell's first inline position.
33
+ */
34
+ export function installCellDrag(view) {
35
+ const RESIZE_HOT_ZONE_PX = 5;
36
+ let drag = null;
37
+ function findCellAt(target) {
38
+ if (!(target instanceof Element))
39
+ return null;
40
+ const cell = target.closest('.dx-table-cell');
41
+ if (!cell)
42
+ return null;
43
+ if (!view.dom.contains(cell))
44
+ return null;
45
+ return cell;
46
+ }
47
+ function isInResizeHotZone(cell, clientX) {
48
+ const rect = cell.getBoundingClientRect();
49
+ return rect.right - clientX <= RESIZE_HOT_ZONE_PX && clientX <= rect.right;
50
+ }
51
+ function tableOf(cell) {
52
+ return cell.closest('table.dx-table');
53
+ }
54
+ function posOf(cell) {
55
+ const ref = getNodeRef(cell);
56
+ if (!ref || ref.pos < 0)
57
+ return null;
58
+ return ref.pos;
59
+ }
60
+ function dispatchSelection(sel) {
61
+ const tr = view.state.tr;
62
+ tr.selectionOverride = sel;
63
+ view.dispatch(tr);
64
+ }
65
+ function firstInlinePosOf(cellPos) {
66
+ // cell [open] sits at cellPos; cell's first inline position is
67
+ // cellPos + 1 (inside the cell) + 1 (inside the first paragraph).
68
+ // The cell's first child is a paragraph in every well-formed table; the
69
+ // first inline position is therefore cellPos + 2.
70
+ return cellPos + 2;
71
+ }
72
+ function onPointerDown(event) {
73
+ if (event.button !== 0)
74
+ return;
75
+ if (drag)
76
+ return;
77
+ const cell = findCellAt(event.target);
78
+ if (!cell)
79
+ return;
80
+ // Defer to the resize controller when the pointer is in its hot-zone.
81
+ if (isInResizeHotZone(cell, event.clientX))
82
+ return;
83
+ const table = tableOf(cell);
84
+ if (!table)
85
+ return;
86
+ const anchorPos = posOf(cell);
87
+ if (anchorPos === null)
88
+ return;
89
+ const captureTarget = event.target instanceof HTMLElement ? event.target : view.dom;
90
+ try {
91
+ captureTarget.setPointerCapture(event.pointerId);
92
+ }
93
+ catch { /* ignore */ }
94
+ drag = {
95
+ anchorEl: cell,
96
+ anchorPos,
97
+ table,
98
+ pointerId: event.pointerId,
99
+ captureTarget,
100
+ lastDispatchedHead: null,
101
+ };
102
+ }
103
+ function onPointerMove(event) {
104
+ if (!drag)
105
+ return;
106
+ // Pointer-capture sends every move here, even outside the editor DOM.
107
+ // Use elementFromPoint to find what's under the pointer right now.
108
+ const doc = view.dom.ownerDocument;
109
+ const elAt = doc.elementFromPoint(event.clientX, event.clientY);
110
+ if (!elAt)
111
+ return;
112
+ const cell = elAt.closest('.dx-table-cell');
113
+ if (!cell || !view.dom.contains(cell))
114
+ return;
115
+ // Different table → ignore (we don't cross tables).
116
+ if (tableOf(cell) !== drag.table)
117
+ return;
118
+ const headPos = posOf(cell);
119
+ if (headPos === null)
120
+ return;
121
+ if (headPos === drag.anchorPos) {
122
+ // Returned to the anchor cell. If we had previously dispatched a
123
+ // CellSelection, collapse back to a TextSelection inside the anchor.
124
+ if (drag.lastDispatchedHead !== null) {
125
+ dispatchSelection(new TextSelection(firstInlinePosOf(drag.anchorPos), firstInlinePosOf(drag.anchorPos)));
126
+ drag.lastDispatchedHead = null;
127
+ }
128
+ return;
129
+ }
130
+ // Pointer is in a different cell of the same table.
131
+ if (drag.lastDispatchedHead === headPos)
132
+ return; // already dispatched
133
+ dispatchSelection(new CellSelection(drag.anchorPos, headPos));
134
+ drag.lastDispatchedHead = headPos;
135
+ event.preventDefault();
136
+ }
137
+ function endDrag() {
138
+ if (!drag)
139
+ return;
140
+ const finished = drag;
141
+ drag = null;
142
+ try {
143
+ finished.captureTarget.releasePointerCapture(finished.pointerId);
144
+ }
145
+ catch { /* ignore */ }
146
+ }
147
+ function onPointerUp(_event) {
148
+ endDrag();
149
+ }
150
+ function onPointerCancel(_event) {
151
+ endDrag();
152
+ }
153
+ function onKeyDown(event) {
154
+ if (event.key !== 'Escape')
155
+ return;
156
+ const sel = view.state.selection;
157
+ if (!(sel instanceof CellSelection))
158
+ return;
159
+ const collapsed = firstInlinePosOf(sel.anchorCell);
160
+ dispatchSelection(new TextSelection(collapsed, collapsed));
161
+ event.preventDefault();
162
+ }
163
+ view.dom.addEventListener('pointerdown', onPointerDown);
164
+ view.dom.addEventListener('pointermove', onPointerMove);
165
+ view.dom.addEventListener('pointerup', onPointerUp);
166
+ view.dom.addEventListener('pointercancel', onPointerCancel);
167
+ const ownerDoc = view.dom.ownerDocument;
168
+ ownerDoc.addEventListener('keydown', onKeyDown);
169
+ return () => {
170
+ view.dom.removeEventListener('pointerdown', onPointerDown);
171
+ view.dom.removeEventListener('pointermove', onPointerMove);
172
+ view.dom.removeEventListener('pointerup', onPointerUp);
173
+ view.dom.removeEventListener('pointercancel', onPointerCancel);
174
+ ownerDoc.removeEventListener('keydown', onKeyDown);
175
+ };
176
+ }
177
+ //# sourceMappingURL=cell-drag.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cell-drag.js","sourceRoot":"","sources":["../../src/view/cell-drag.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { EditorView } from './editor-view.js';
2
+ export interface ClipboardHandlersOptions {
3
+ }
4
+ export declare function installClipboardHandlers(view: EditorView, _opts?: ClipboardHandlersOptions): () => void;
5
+ //# sourceMappingURL=clipboard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clipboard.d.ts","sourceRoot":"","sources":["../../src/view/clipboard.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAElD,MAAM,WAAW,wBAAwB;CAExC;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,GAAE,wBAA6B,GAAG,MAAM,IAAI,CA6E3G"}
@@ -0,0 +1,97 @@
1
+ import { parseHTML } from '../html/parse.js';
2
+ import { serializeHTML } from '../html/serialize.js';
3
+ import { Fragment } from '../model/fragment.js';
4
+ import { Slice, sliceBetween } from '../model/slice.js';
5
+ import { ReplaceStep } from '../transform/replace-step.js';
6
+ export function installClipboardHandlers(view, _opts = {}) {
7
+ const handlers = [];
8
+ function on(type, listener) {
9
+ view.dom.addEventListener(type, listener);
10
+ handlers.push([type, listener]);
11
+ }
12
+ on('copy', (event) => {
13
+ const e = event;
14
+ if (!e.clipboardData)
15
+ return;
16
+ const state = view.state;
17
+ const { from, to } = state.selection;
18
+ if (from === to)
19
+ return;
20
+ const sliceContent = sliceBetween(state.doc, from, to).content;
21
+ // Wrap inline content in a paragraph for HTML output.
22
+ const doc = state.schema.node('doc', null, [
23
+ state.schema.node('paragraph', null, sliceContent),
24
+ ]);
25
+ const html = serializeHTML(doc, state.schema);
26
+ const text = extractText(sliceContent);
27
+ e.clipboardData.setData('text/html', html);
28
+ e.clipboardData.setData('text/plain', text);
29
+ event.preventDefault();
30
+ });
31
+ on('cut', (event) => {
32
+ const e = event;
33
+ if (!e.clipboardData)
34
+ return;
35
+ const state = view.state;
36
+ const { from, to } = state.selection;
37
+ if (from === to)
38
+ return;
39
+ const sliceContent = sliceBetween(state.doc, from, to).content;
40
+ const docNode = state.schema.node('doc', null, [
41
+ state.schema.node('paragraph', null, sliceContent),
42
+ ]);
43
+ const html = serializeHTML(docNode, state.schema);
44
+ const text = extractText(sliceContent);
45
+ e.clipboardData.setData('text/html', html);
46
+ e.clipboardData.setData('text/plain', text);
47
+ event.preventDefault();
48
+ // Now delete the selection.
49
+ const tr = state.tr.step(new ReplaceStep(from, to, Slice.empty));
50
+ view.dispatch(tr);
51
+ });
52
+ on('paste', (event) => {
53
+ const e = event;
54
+ if (!e.clipboardData)
55
+ return;
56
+ const html = e.clipboardData.getData('text/html');
57
+ const text = e.clipboardData.getData('text/plain');
58
+ const state = view.state;
59
+ let slice;
60
+ if (html) {
61
+ const parsed = parseHTML(html, state.schema);
62
+ // Use the parsed doc's first paragraph's inline content (the common case).
63
+ const firstBlock = parsed.content.child(0);
64
+ if (firstBlock && firstBlock.type.name === 'paragraph') {
65
+ slice = new Slice(firstBlock.content, 1, 1);
66
+ }
67
+ else {
68
+ slice = new Slice(parsed.content, 0, 0);
69
+ }
70
+ }
71
+ else if (text) {
72
+ slice = new Slice(Fragment.from([state.schema.text(text)]), 1, 1);
73
+ }
74
+ else {
75
+ return;
76
+ }
77
+ const tr = state.tr.step(new ReplaceStep(state.selection.from, state.selection.to, slice));
78
+ event.preventDefault();
79
+ view.dispatch(tr);
80
+ });
81
+ return () => {
82
+ for (const [type, listener] of handlers)
83
+ view.dom.removeEventListener(type, listener);
84
+ };
85
+ }
86
+ function extractText(frag) {
87
+ let out = '';
88
+ for (const c of frag.children) {
89
+ const n = c;
90
+ if (n.isText)
91
+ out += n.text;
92
+ else
93
+ out += extractText(n.content);
94
+ }
95
+ return out;
96
+ }
97
+ //# sourceMappingURL=clipboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clipboard.js","sourceRoot":"","sources":["../../src/view/clipboard.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Renderer } from './renderer.js';
2
+ export declare const defaultRenderer: Renderer;
3
+ //# sourceMappingURL=default-renderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default-renderer.d.ts","sourceRoot":"","sources":["../../src/view/default-renderer.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAwC,MAAM,eAAe,CAAA;AA4H9E,eAAO,MAAM,eAAe,UA0B1B,CAAA"}