@moda-editor/core 0.1.2 → 0.1.5

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 (247) hide show
  1. package/dist/collab.d.ts +61 -0
  2. package/dist/collab.d.ts.map +1 -0
  3. package/dist/collab.js +67 -0
  4. package/dist/collab.js.map +1 -0
  5. package/dist/commands.d.ts +11 -0
  6. package/dist/commands.d.ts.map +1 -1
  7. package/dist/commands.js +48 -4
  8. package/dist/commands.js.map +1 -1
  9. package/dist/conformance/editor-base.d.ts +7 -0
  10. package/dist/conformance/editor-base.d.ts.map +1 -0
  11. package/dist/conformance/editor-base.js +280 -0
  12. package/dist/conformance/editor-base.js.map +1 -0
  13. package/dist/conformance/editor-codeblock.d.ts +8 -0
  14. package/dist/conformance/editor-codeblock.d.ts.map +1 -0
  15. package/dist/conformance/editor-codeblock.js +402 -0
  16. package/dist/conformance/editor-codeblock.js.map +1 -0
  17. package/dist/conformance/editor-ime.d.ts +7 -0
  18. package/dist/conformance/editor-ime.d.ts.map +1 -0
  19. package/dist/conformance/editor-ime.js +166 -0
  20. package/dist/conformance/editor-ime.js.map +1 -0
  21. package/dist/conformance/editor-input.d.ts +8 -0
  22. package/dist/conformance/editor-input.d.ts.map +1 -0
  23. package/dist/conformance/editor-input.js +676 -0
  24. package/dist/conformance/editor-input.js.map +1 -0
  25. package/dist/conformance/editor-nodeview.d.ts +7 -0
  26. package/dist/conformance/editor-nodeview.d.ts.map +1 -0
  27. package/dist/conformance/editor-nodeview.js +120 -0
  28. package/dist/conformance/editor-nodeview.js.map +1 -0
  29. package/dist/conformance/editor-overlay.d.ts +8 -0
  30. package/dist/conformance/editor-overlay.d.ts.map +1 -0
  31. package/dist/conformance/editor-overlay.js +323 -0
  32. package/dist/conformance/editor-overlay.js.map +1 -0
  33. package/dist/conformance/fixtures.d.ts +4 -0
  34. package/dist/conformance/fixtures.d.ts.map +1 -0
  35. package/dist/conformance/fixtures.js +15 -0
  36. package/dist/conformance/fixtures.js.map +1 -0
  37. package/dist/conformance/index.d.ts +14 -0
  38. package/dist/conformance/index.d.ts.map +1 -0
  39. package/dist/conformance/index.js +28 -0
  40. package/dist/conformance/index.js.map +1 -0
  41. package/dist/conformance/types.d.ts +51 -0
  42. package/dist/conformance/types.d.ts.map +1 -0
  43. package/dist/conformance/types.js +2 -0
  44. package/dist/conformance/types.js.map +1 -0
  45. package/dist/conformance/widget.d.ts +3 -0
  46. package/dist/conformance/widget.d.ts.map +1 -0
  47. package/dist/conformance/widget.js +49 -0
  48. package/dist/conformance/widget.js.map +1 -0
  49. package/dist/conformance.d.ts +1 -58
  50. package/dist/conformance.d.ts.map +1 -1
  51. package/dist/conformance.js +3 -1608
  52. package/dist/conformance.js.map +1 -1
  53. package/dist/editor/extension.d.ts +51 -5
  54. package/dist/editor/extension.d.ts.map +1 -1
  55. package/dist/features/ace.d.ts +4 -0
  56. package/dist/features/ace.d.ts.map +1 -1
  57. package/dist/features/ace.js +57 -25
  58. package/dist/features/ace.js.map +1 -1
  59. package/dist/features/block-dnd.d.ts +7 -0
  60. package/dist/features/block-dnd.d.ts.map +1 -0
  61. package/dist/features/block-dnd.js +207 -0
  62. package/dist/features/block-dnd.js.map +1 -0
  63. package/dist/features/code-block.d.ts +12 -58
  64. package/dist/features/code-block.d.ts.map +1 -1
  65. package/dist/features/code-block.js +155 -630
  66. package/dist/features/code-block.js.map +1 -1
  67. package/dist/features/code-context.d.ts +81 -0
  68. package/dist/features/code-context.d.ts.map +1 -0
  69. package/dist/features/code-context.js +322 -0
  70. package/dist/features/code-context.js.map +1 -0
  71. package/dist/features/code-edit.d.ts +50 -0
  72. package/dist/features/code-edit.d.ts.map +1 -0
  73. package/dist/features/code-edit.js +412 -0
  74. package/dist/features/code-edit.js.map +1 -0
  75. package/dist/features/code-format.d.ts +21 -0
  76. package/dist/features/code-format.d.ts.map +1 -0
  77. package/dist/features/code-format.js +410 -0
  78. package/dist/features/code-format.js.map +1 -0
  79. package/dist/features/doc.d.ts.map +1 -1
  80. package/dist/features/doc.js +1 -1
  81. package/dist/features/doc.js.map +1 -1
  82. package/dist/features/heading.d.ts.map +1 -1
  83. package/dist/features/heading.js.map +1 -1
  84. package/dist/features/image.d.ts +14 -1
  85. package/dist/features/image.d.ts.map +1 -1
  86. package/dist/features/image.js +288 -11
  87. package/dist/features/image.js.map +1 -1
  88. package/dist/features/index.d.ts +7 -0
  89. package/dist/features/index.d.ts.map +1 -1
  90. package/dist/features/index.js +16 -0
  91. package/dist/features/index.js.map +1 -1
  92. package/dist/features/inline-style.d.ts.map +1 -1
  93. package/dist/features/inline-style.js +4 -1
  94. package/dist/features/inline-style.js.map +1 -1
  95. package/dist/features/link.d.ts.map +1 -1
  96. package/dist/features/link.js +1 -1
  97. package/dist/features/link.js.map +1 -1
  98. package/dist/features/markdown.d.ts +15 -0
  99. package/dist/features/markdown.d.ts.map +1 -0
  100. package/dist/features/markdown.js +80 -0
  101. package/dist/features/markdown.js.map +1 -0
  102. package/dist/features/marks.d.ts.map +1 -1
  103. package/dist/features/marks.js +76 -4
  104. package/dist/features/marks.js.map +1 -1
  105. package/dist/features/mention.d.ts +30 -0
  106. package/dist/features/mention.d.ts.map +1 -0
  107. package/dist/features/mention.js +89 -0
  108. package/dist/features/mention.js.map +1 -0
  109. package/dist/features/script.d.ts.map +1 -1
  110. package/dist/features/script.js.map +1 -1
  111. package/dist/features/search.d.ts +73 -0
  112. package/dist/features/search.d.ts.map +1 -0
  113. package/dist/features/search.js +252 -0
  114. package/dist/features/search.js.map +1 -0
  115. package/dist/features/shared.d.ts +69 -0
  116. package/dist/features/shared.d.ts.map +1 -0
  117. package/dist/features/shared.js +272 -0
  118. package/dist/features/shared.js.map +1 -0
  119. package/dist/features/table.d.ts +16 -3
  120. package/dist/features/table.d.ts.map +1 -1
  121. package/dist/features/table.js +309 -8
  122. package/dist/features/table.js.map +1 -1
  123. package/dist/features/testkit.d.ts.map +1 -1
  124. package/dist/features/testkit.js +1 -1
  125. package/dist/features/testkit.js.map +1 -1
  126. package/dist/history.d.ts.map +1 -1
  127. package/dist/history.js +65 -20
  128. package/dist/history.js.map +1 -1
  129. package/dist/index.d.ts +20 -7
  130. package/dist/index.d.ts.map +1 -1
  131. package/dist/index.js +17 -6
  132. package/dist/index.js.map +1 -1
  133. package/dist/model/schema.d.ts.map +1 -1
  134. package/dist/model/schema.js +2 -1
  135. package/dist/model/schema.js.map +1 -1
  136. package/dist/parse/html.d.ts.map +1 -1
  137. package/dist/parse/html.js +38 -6
  138. package/dist/parse/html.js.map +1 -1
  139. package/dist/parse/sanitize.d.ts.map +1 -1
  140. package/dist/parse/sanitize.js +14 -2
  141. package/dist/parse/sanitize.js.map +1 -1
  142. package/dist/presets/highlight.d.ts +17 -0
  143. package/dist/presets/highlight.d.ts.map +1 -1
  144. package/dist/presets/highlight.js +52 -4
  145. package/dist/presets/highlight.js.map +1 -1
  146. package/dist/presets/markdown-parse.d.ts +13 -0
  147. package/dist/presets/markdown-parse.d.ts.map +1 -0
  148. package/dist/presets/markdown-parse.js +398 -0
  149. package/dist/presets/markdown-parse.js.map +1 -0
  150. package/dist/presets/markdown.d.ts +45 -0
  151. package/dist/presets/markdown.d.ts.map +1 -0
  152. package/dist/presets/markdown.js +195 -0
  153. package/dist/presets/markdown.js.map +1 -0
  154. package/dist/state/apply.d.ts.map +1 -1
  155. package/dist/state/apply.js +19 -11
  156. package/dist/state/apply.js.map +1 -1
  157. package/dist/state/delete-ops.d.ts +34 -0
  158. package/dist/state/delete-ops.d.ts.map +1 -0
  159. package/dist/state/delete-ops.js +204 -0
  160. package/dist/state/delete-ops.js.map +1 -0
  161. package/dist/state/input-rules.d.ts +30 -0
  162. package/dist/state/input-rules.d.ts.map +1 -0
  163. package/dist/state/input-rules.js +70 -0
  164. package/dist/state/input-rules.js.map +1 -0
  165. package/dist/state/insert-ops.d.ts +54 -0
  166. package/dist/state/insert-ops.d.ts.map +1 -0
  167. package/dist/state/insert-ops.js +186 -0
  168. package/dist/state/insert-ops.js.map +1 -0
  169. package/dist/state/list-ops.d.ts +46 -0
  170. package/dist/state/list-ops.d.ts.map +1 -0
  171. package/dist/state/list-ops.js +231 -0
  172. package/dist/state/list-ops.js.map +1 -0
  173. package/dist/state/navigate.d.ts.map +1 -1
  174. package/dist/state/navigate.js +3 -1
  175. package/dist/state/navigate.js.map +1 -1
  176. package/dist/state/resolve-insert.d.ts +55 -0
  177. package/dist/state/resolve-insert.d.ts.map +1 -0
  178. package/dist/state/resolve-insert.js +118 -0
  179. package/dist/state/resolve-insert.js.map +1 -0
  180. package/dist/state/slice-ops.d.ts +46 -0
  181. package/dist/state/slice-ops.d.ts.map +1 -0
  182. package/dist/state/slice-ops.js +150 -0
  183. package/dist/state/slice-ops.js.map +1 -0
  184. package/dist/state/state.d.ts +6 -1
  185. package/dist/state/state.d.ts.map +1 -1
  186. package/dist/state/state.js +10 -0
  187. package/dist/state/state.js.map +1 -1
  188. package/dist/state/transaction.d.ts +40 -53
  189. package/dist/state/transaction.d.ts.map +1 -1
  190. package/dist/state/transaction.js +62 -829
  191. package/dist/state/transaction.js.map +1 -1
  192. package/dist/styles.css +472 -46
  193. package/dist/view/adapter.d.ts +84 -0
  194. package/dist/view/adapter.d.ts.map +1 -0
  195. package/dist/view/adapter.js +76 -0
  196. package/dist/view/adapter.js.map +1 -0
  197. package/dist/view/caret.d.ts +25 -0
  198. package/dist/view/caret.d.ts.map +1 -0
  199. package/dist/view/caret.js +43 -0
  200. package/dist/view/caret.js.map +1 -0
  201. package/dist/view/decoration.d.ts +9 -0
  202. package/dist/view/decoration.d.ts.map +1 -0
  203. package/dist/view/decoration.js +214 -0
  204. package/dist/view/decoration.js.map +1 -0
  205. package/dist/view/dirty-keys.d.ts +18 -0
  206. package/dist/view/dirty-keys.d.ts.map +1 -0
  207. package/dist/view/dirty-keys.js +31 -0
  208. package/dist/view/dirty-keys.js.map +1 -0
  209. package/dist/view/dom.d.ts.map +1 -1
  210. package/dist/view/dom.js +69 -27
  211. package/dist/view/dom.js.map +1 -1
  212. package/dist/view/hook-ctx.d.ts +32 -0
  213. package/dist/view/hook-ctx.d.ts.map +1 -0
  214. package/dist/view/hook-ctx.js +64 -0
  215. package/dist/view/hook-ctx.js.map +1 -0
  216. package/dist/view/ime.d.ts +72 -0
  217. package/dist/view/ime.d.ts.map +1 -0
  218. package/dist/view/ime.js +185 -0
  219. package/dist/view/ime.js.map +1 -0
  220. package/dist/view/input.d.ts +12 -12
  221. package/dist/view/input.d.ts.map +1 -1
  222. package/dist/view/input.js +122 -435
  223. package/dist/view/input.js.map +1 -1
  224. package/dist/view/keys.d.ts +25 -0
  225. package/dist/view/keys.d.ts.map +1 -0
  226. package/dist/view/keys.js +106 -0
  227. package/dist/view/keys.js.map +1 -0
  228. package/dist/view/line-nav.d.ts +13 -0
  229. package/dist/view/line-nav.d.ts.map +1 -0
  230. package/dist/view/line-nav.js +114 -0
  231. package/dist/view/line-nav.js.map +1 -0
  232. package/dist/view/mount.d.ts.map +1 -1
  233. package/dist/view/mount.js +48 -32
  234. package/dist/view/mount.js.map +1 -1
  235. package/dist/view/node-selection.d.ts +33 -0
  236. package/dist/view/node-selection.d.ts.map +1 -0
  237. package/dist/view/node-selection.js +107 -0
  238. package/dist/view/node-selection.js.map +1 -0
  239. package/dist/view/render.d.ts +11 -2
  240. package/dist/view/render.d.ts.map +1 -1
  241. package/dist/view/render.js +17 -3
  242. package/dist/view/render.js.map +1 -1
  243. package/dist/view/serialize.d.ts +8 -0
  244. package/dist/view/serialize.d.ts.map +1 -1
  245. package/dist/view/serialize.js +33 -5
  246. package/dist/view/serialize.js.map +1 -1
  247. package/package.json +1 -1
@@ -1,8 +1,13 @@
1
1
  import type { Command } from "../editor/extension.js";
2
2
  /**
3
3
  * 표 — table > tableRow > tableCell > block 구조.
4
- * Tab/Shift-Tab 셀 이동(마지막 셀 Tab은 행 추가), 행·열 추가와
5
- * 표 삭제 커맨드. 셀 안 타이핑은 일반 블록 경로를 탄다.
4
+ * Tab/Shift-Tab 셀 이동(마지막 셀 Tab은 행 추가), 행·열 추가/삭제와
5
+ * 표 삭제 커맨드, 열 너비(colwidth) 조절. 셀 안 타이핑은 일반 블록
6
+ * 경로를 탄다.
7
+ *
8
+ * 캐럿이 셀 안에 있으면 .me-tableui 오버레이가 뜬다 — 행/열 추가·
9
+ * 삭제·표 삭제 버튼 바 + 각 열 우측 경계의 드래그 핸들(열 너비 조절).
10
+ * .me-imgui와 같은 형제-오버레이 패턴이라 5개 렌더러가 공유한다.
6
11
  */
7
12
  /** 표 삽입 — 빈 블록이면 교체. 캐럿은 첫 셀의 문단으로 */
8
13
  export declare function insertTable(rows?: number, cols?: number): Command;
@@ -12,8 +17,16 @@ export declare const nextCell: Command;
12
17
  export declare const prevCell: Command;
13
18
  /** 현재 행 뒤에 같은 열 수의 행을 추가한다 */
14
19
  export declare const addTableRow: Command;
15
- /** 표 끝에 열을 하나 추가한다 — 각 행에 셀을 붙인다 */
20
+ /** 현재 열 뒤에 열을 하나 추가한다 — 각 행의 같은 위치에 셀을 붙인다 */
16
21
  export declare const addTableColumn: Command;
22
+ /** 현재 행을 삭제한다 — 마지막 행이면 표 전체 삭제로 이어진다 */
23
+ export declare const deleteTableRow: Command;
24
+ /** 현재 열을 삭제한다 — 마지막 열이면 표 전체 삭제로 이어진다 */
25
+ export declare const deleteTableColumn: Command;
26
+ /** 표의 각 열 너비를 px로 고정한다 — widths[i]가 i번째 열의 colwidth.
27
+ * table-layout:fixed + width:100%에서 지정 합 < 표 너비면 남는 폭이
28
+ * 지정 열에 비례 배분되므로, 리사이즈는 전 열을 한 번에 고정해야 한다 */
29
+ export declare const setTableColWidths: Command;
17
30
  /** 표 통째 삭제 — 자리에 빈 문단을 남긴다 */
18
31
  export declare const deleteTable: Command;
19
32
  export declare const tableFeature: import("./feature.js").Feature;
@@ -1 +1 @@
1
- {"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../src/features/table.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAQtD;;;;GAIG;AAEH,sCAAsC;AACtC,wBAAgB,WAAW,CAAC,IAAI,SAAI,EAAE,IAAI,SAAI,GAAG,OAAO,CAmCvD;AAmCD,kDAAkD;AAClD,eAAO,MAAM,QAAQ,EAAE,OA+BtB,CAAC;AAEF,qDAAqD;AACrD,eAAO,MAAM,QAAQ,EAAE,OAgBtB,CAAC;AAEF,8BAA8B;AAC9B,eAAO,MAAM,WAAW,EAAE,OAczB,CAAC;AAEF,oCAAoC;AACpC,eAAO,MAAM,cAAc,EAAE,OAc5B,CAAC;AAEF,8BAA8B;AAC9B,eAAO,MAAM,WAAW,EAAE,OAkBzB,CAAC;AAEF,eAAO,MAAM,YAAY,gCAqCvB,CAAC"}
1
+ {"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../src/features/table.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAUtD;;;;;;;;;GASG;AAEH,sCAAsC;AACtC,wBAAgB,WAAW,CAAC,IAAI,SAAI,EAAE,IAAI,SAAI,GAAG,OAAO,CAmCvD;AAmCD,kDAAkD;AAClD,eAAO,MAAM,QAAQ,EAAE,OA+BtB,CAAC;AAEF,qDAAqD;AACrD,eAAO,MAAM,QAAQ,EAAE,OAgBtB,CAAC;AAEF,8BAA8B;AAC9B,eAAO,MAAM,WAAW,EAAE,OAczB,CAAC;AAEF,8CAA8C;AAC9C,eAAO,MAAM,cAAc,EAAE,OAiB5B,CAAC;AAEF,yCAAyC;AACzC,eAAO,MAAM,cAAc,EAAE,OAqB5B,CAAC;AAEF,yCAAyC;AACzC,eAAO,MAAM,iBAAiB,EAAE,OAuB/B,CAAC;AAEF;;6CAE6C;AAC7C,eAAO,MAAM,iBAAiB,EAAE,OA0B/B,CAAC;AAEF,8BAA8B;AAC9B,eAAO,MAAM,WAAW,EAAE,OAgBzB,CAAC;AAgOF,eAAO,MAAM,YAAY,gCAyEvB,CAAC"}
@@ -1,11 +1,17 @@
1
1
  import { nodeAt } from "../model/traverse.js";
2
2
  import { textSelection } from "../state/selection.js";
3
+ import { PATH_ATTR } from "../view/dom.js";
3
4
  import { defineFeature } from "./feature.js";
4
5
  import { caretBlockPath } from "../commands.js";
5
6
  /**
6
7
  * 표 — table > tableRow > tableCell > block 구조.
7
- * Tab/Shift-Tab 셀 이동(마지막 셀 Tab은 행 추가), 행·열 추가와
8
- * 표 삭제 커맨드. 셀 안 타이핑은 일반 블록 경로를 탄다.
8
+ * Tab/Shift-Tab 셀 이동(마지막 셀 Tab은 행 추가), 행·열 추가/삭제와
9
+ * 표 삭제 커맨드, 열 너비(colwidth) 조절. 셀 안 타이핑은 일반 블록
10
+ * 경로를 탄다.
11
+ *
12
+ * 캐럿이 셀 안에 있으면 .me-tableui 오버레이가 뜬다 — 행/열 추가·
13
+ * 삭제·표 삭제 버튼 바 + 각 열 우측 경계의 드래그 핸들(열 너비 조절).
14
+ * .me-imgui와 같은 형제-오버레이 패턴이라 5개 렌더러가 공유한다.
9
15
  */
10
16
  /** 표 삽입 — 빈 블록이면 교체. 캐럿은 첫 셀의 문단으로 */
11
17
  export function insertTable(rows = 3, cols = 3) {
@@ -126,7 +132,7 @@ export const addTableRow = ({ state, tr, dispatch }) => {
126
132
  dispatch();
127
133
  return true;
128
134
  };
129
- /** 표 끝에 열을 하나 추가한다 — 각 행에 셀을 붙인다 */
135
+ /** 현재 열 뒤에 열을 하나 추가한다 — 각 행의 같은 위치에 셀을 붙인다 */
130
136
  export const addTableColumn = ({ state, tr, dispatch }) => {
131
137
  const ctx = cellContext(state);
132
138
  if (!ctx)
@@ -135,11 +141,85 @@ export const addTableColumn = ({ state, tr, dispatch }) => {
135
141
  const rows = table?.content?.length ?? 0;
136
142
  for (let i = 0; i < rows; i++) {
137
143
  const r = nodeAt(state.doc, [...ctx.tablePath, i]);
138
- tr.insertNode({ path: [...ctx.tablePath, i], offset: r?.content?.length ?? 0 }, makeCell());
144
+ tr.insertNode({
145
+ path: [...ctx.tablePath, i],
146
+ offset: Math.min(ctx.col + 1, r?.content?.length ?? 0),
147
+ }, makeCell());
139
148
  }
140
149
  dispatch();
141
150
  return true;
142
151
  };
152
+ /** 현재 행을 삭제한다 — 마지막 행이면 표 전체 삭제로 이어진다 */
153
+ export const deleteTableRow = ({ state, tr, dispatch }) => {
154
+ const ctx = cellContext(state);
155
+ if (!ctx)
156
+ return false;
157
+ const table = nodeAt(state.doc, ctx.tablePath);
158
+ const rows = table?.content?.length ?? 0;
159
+ if (rows <= 1)
160
+ return deleteTable({ state, tr, dispatch });
161
+ tr.delete({
162
+ anchor: { path: ctx.tablePath, offset: ctx.row },
163
+ focus: { path: ctx.tablePath, offset: ctx.row + 1 },
164
+ });
165
+ // 지운 행 자리에 다음 행(없으면 이전 행)의 같은 열로 캐럿
166
+ const r = Math.min(ctx.row, rows - 2);
167
+ const c = Math.min(ctx.col, (nodeAt(state.doc, [...ctx.tablePath, r])?.content?.length ?? 1) - 1);
168
+ tr.setSelection(textSelection({ path: [...ctx.tablePath, r, c, 0], offset: 0 }));
169
+ dispatch();
170
+ return true;
171
+ };
172
+ /** 현재 열을 삭제한다 — 마지막 열이면 표 전체 삭제로 이어진다 */
173
+ export const deleteTableColumn = ({ state, tr, dispatch }) => {
174
+ const ctx = cellContext(state);
175
+ if (!ctx)
176
+ return false;
177
+ const table = nodeAt(state.doc, ctx.tablePath);
178
+ const rows = table?.content?.length ?? 0;
179
+ const cols = nodeAt(state.doc, ctx.rowPath)?.content?.length ?? 0;
180
+ if (cols <= 1)
181
+ return deleteTable({ state, tr, dispatch });
182
+ for (let i = 0; i < rows; i++) {
183
+ const r = nodeAt(state.doc, [...ctx.tablePath, i]);
184
+ const c = Math.min(ctx.col, (r?.content?.length ?? 1) - 1);
185
+ tr.delete({
186
+ anchor: { path: [...ctx.tablePath, i], offset: c },
187
+ focus: { path: [...ctx.tablePath, i], offset: c + 1 },
188
+ });
189
+ }
190
+ tr.setSelection(textSelection({
191
+ path: [...ctx.tablePath, ctx.row, Math.min(ctx.col, cols - 2), 0],
192
+ offset: 0,
193
+ }));
194
+ dispatch();
195
+ return true;
196
+ };
197
+ /** 표의 각 열 너비를 px로 고정한다 — widths[i]가 i번째 열의 colwidth.
198
+ * table-layout:fixed + width:100%에서 지정 합 < 표 너비면 남는 폭이
199
+ * 지정 열에 비례 배분되므로, 리사이즈는 전 열을 한 번에 고정해야 한다 */
200
+ export const setTableColWidths = ({ state, tr, dispatch }, widths) => {
201
+ const ctx = cellContext(state);
202
+ const table = ctx && nodeAt(state.doc, ctx.tablePath);
203
+ const ws = Array.isArray(widths) ? widths.map(Number) : [];
204
+ if (!ctx ||
205
+ !table ||
206
+ !ws.length ||
207
+ ws.some((w) => !Number.isFinite(w) || w < 0))
208
+ return false;
209
+ const rows = table.content?.length ?? 0;
210
+ let hit = false;
211
+ for (let i = 0; i < rows; i++) {
212
+ const cells = nodeAt(state.doc, [...ctx.tablePath, i])?.content ?? [];
213
+ for (let c = 0; c < Math.min(cells.length, ws.length); c++) {
214
+ tr.setNodeAttr([...ctx.tablePath, i, c], "colwidth", Math.round(ws[c]));
215
+ hit = true;
216
+ }
217
+ }
218
+ if (!hit)
219
+ return false;
220
+ dispatch();
221
+ return true;
222
+ };
143
223
  /** 표 통째 삭제 — 자리에 빈 문단을 남긴다 */
144
224
  export const deleteTable = ({ state, tr, dispatch }) => {
145
225
  const ctx = cellContext(state);
@@ -156,15 +236,217 @@ export const deleteTable = ({ state, tr, dispatch }) => {
156
236
  dispatch();
157
237
  return true;
158
238
  };
239
+ const tblUIs = new WeakMap();
240
+ /** 캐럿이 속한 표의 렌더 엘리먼트 — 셀 안 캐럿이 아니면 null */
241
+ function activeTableEl(el, state) {
242
+ const ctx = cellContext(state);
243
+ if (!ctx)
244
+ return null;
245
+ const tbl = el.querySelector(`table[${PATH_ATTR}="${ctx.tablePath.join(",")}"]`);
246
+ return tbl ? { tbl, ctx } : null;
247
+ }
248
+ /** 표 첫 행의 셀들 — 열 경계 측정용 */
249
+ function firstRowCells(tbl) {
250
+ const row = tbl.querySelector("tr");
251
+ return row ? [...row.querySelectorAll("td")] : [];
252
+ }
253
+ function ensureTblUI(el, editor) {
254
+ const hit = tblUIs.get(el);
255
+ if (hit)
256
+ return hit;
257
+ const doc = el.ownerDocument;
258
+ const box = doc.createElement("div");
259
+ box.className = "me-tableui";
260
+ box.hidden = true;
261
+ const bar = doc.createElement("div");
262
+ bar.className = "me-tbl-bar";
263
+ const mkBtn = (label, act, title) => {
264
+ const b = doc.createElement("button");
265
+ b.type = "button";
266
+ b.className = "me-tblbtn";
267
+ b.setAttribute("data-tbl-act", act);
268
+ b.title = title;
269
+ b.textContent = label;
270
+ return b;
271
+ };
272
+ bar.append(mkBtn("행+", "rowadd", "현재 행 아래에 행 추가"), mkBtn("행−", "rowdel", "현재 행 삭제"), mkBtn("열+", "coladd", "현재 열 오른쪽에 열 추가"), mkBtn("열−", "coldel", "현재 열 삭제"), mkBtn("표 삭제", "tabledel", "표 전체 삭제"));
273
+ // 열 경계 드래그 핸들은 paint마다 개수를 맞춰 채운다
274
+ const cols = doc.createElement("div");
275
+ cols.className = "me-tbl-cols";
276
+ box.append(bar, cols);
277
+ (el.parentElement ?? el).appendChild(box);
278
+ const ui = {
279
+ box,
280
+ bar,
281
+ cols,
282
+ tblKey: null,
283
+ observer: null,
284
+ };
285
+ tblUIs.set(el, ui);
286
+ // 오버레이 안 클릭은 에디터 캐럿을 건드리지 않는다
287
+ box.addEventListener("mousedown", (e) => {
288
+ e.preventDefault();
289
+ });
290
+ box.addEventListener("click", (e) => {
291
+ const t = e.target;
292
+ if (!(t instanceof Element))
293
+ return;
294
+ const act = t.closest("[data-tbl-act]")?.getAttribute("data-tbl-act");
295
+ if (!act)
296
+ return;
297
+ const map = {
298
+ rowadd: "addTableRow",
299
+ rowdel: "deleteTableRow",
300
+ coladd: "addTableColumn",
301
+ coldel: "deleteTableColumn",
302
+ tabledel: "deleteTable",
303
+ };
304
+ const cmd = map[act];
305
+ if (cmd)
306
+ editor.commands[cmd]?.();
307
+ });
308
+ // 열 경계 핸들 드래그 — 경계 양쪽 열 사이에 폭을 주고받는다
309
+ // (GDocs/Excel 열 리사이즈 관례): 좌측 열 += dx, 우측 열 −= dx.
310
+ // 표는 width:100%라 총량 보존이 유일한 정상 모델 — 한 열만 키우면
311
+ // 남은 열이 비례 배분으로 흔들린다. 커밋 때 전 열을 현재 폭으로 고정해
312
+ // 이후 드래그도 같은 기준으로 동작한다. td[width] attr은 content-box라
313
+ // 렌더 너비와 패딩+테두리만큼 차이나므로 content 폭으로 환산한다.
314
+ // 커밋은 pointerup에서 한 번만 = undo 한 단계
315
+ cols.addEventListener("pointerdown", (e) => {
316
+ const h = e.target?.closest(".me-col-handle");
317
+ if (!(h instanceof HTMLElement))
318
+ return;
319
+ e.preventDefault();
320
+ const col = Number(h.getAttribute("data-col"));
321
+ const found = activeTableEl(el, editor.state);
322
+ if (!found || !Number.isInteger(col))
323
+ return;
324
+ const { tbl } = found;
325
+ const cells = firstRowCells(tbl);
326
+ if (col < 0 || col + 1 >= cells.length)
327
+ return;
328
+ // 렌더 너비 → content 폭(attr 단위) 환산
329
+ const cellW = (td) => {
330
+ const cs = getComputedStyle(td);
331
+ return (td.getBoundingClientRect().width -
332
+ (td.offsetWidth - td.clientWidth) -
333
+ parseFloat(cs.paddingLeft || "0") -
334
+ parseFloat(cs.paddingRight || "0"));
335
+ };
336
+ const widths = cells.map(cellW);
337
+ const startX = e.clientX;
338
+ const rows = () => [...tbl.querySelectorAll("tr")];
339
+ try {
340
+ h.setPointerCapture(e.pointerId);
341
+ }
342
+ catch {
343
+ // pointerId 캡처 미지원 환경 — 리스너만으로 동작
344
+ }
345
+ const MIN = 40;
346
+ const apply = (dx) => {
347
+ // 두 열이 모두 최소 40px을 유지하는 범위로 클램프
348
+ const d = Math.min(Math.max(dx, MIN - widths[col]), widths[col + 1] - MIN);
349
+ const wl = Math.round(widths[col] + d);
350
+ const wr = Math.round(widths[col + 1] - d);
351
+ for (const r of rows()) {
352
+ r.children[col]?.setAttribute("width", String(wl));
353
+ r.children[col + 1]?.setAttribute("width", String(wr));
354
+ }
355
+ return d;
356
+ };
357
+ let d = 0;
358
+ const move = (ev) => {
359
+ d = apply(ev.clientX - startX);
360
+ };
361
+ const up = () => {
362
+ h.removeEventListener("pointermove", move);
363
+ h.removeEventListener("pointerup", up);
364
+ h.removeEventListener("pointercancel", up);
365
+ const ws = widths.map(Math.round);
366
+ ws[col] = Math.round(widths[col] + d);
367
+ ws[col + 1] = Math.round(widths[col + 1] - d);
368
+ editor.commands["setTableColWidths"]?.(ws);
369
+ };
370
+ h.addEventListener("pointermove", move);
371
+ h.addEventListener("pointerup", up);
372
+ h.addEventListener("pointercancel", up);
373
+ });
374
+ // 레이아웃 변화로 오버레이 위치가 어긋나면 다시 맞춘다
375
+ if (typeof ResizeObserver !== "undefined") {
376
+ ui.observer = new ResizeObserver(() => {
377
+ if (!ui.box.hidden)
378
+ paintTblOverlay(el, editor);
379
+ });
380
+ ui.observer.observe(el);
381
+ }
382
+ return ui;
383
+ }
384
+ /** 캐럿이 셀 안이면 표 위에 오버레이를 맞춘다 — 아니면 숨긴다 */
385
+ function paintTblOverlay(el, editor) {
386
+ const ui = ensureTblUI(el, editor);
387
+ const found = activeTableEl(el, editor.state);
388
+ if (!found) {
389
+ ui.box.hidden = true;
390
+ return;
391
+ }
392
+ const { tbl } = found;
393
+ const host = ui.box.offsetParent ?? el.parentElement;
394
+ const hr = host?.getBoundingClientRect();
395
+ const r = tbl.getBoundingClientRect();
396
+ ui.box.style.left = `${r.left - (hr?.left ?? 0)}px`;
397
+ ui.box.style.top = `${r.top - (hr?.top ?? 0)}px`;
398
+ ui.box.style.width = `${r.width}px`;
399
+ ui.box.style.height = `${r.height}px`;
400
+ // 표가 루트 상단에 붙어있으면 액션 바를 표 안쪽으로 뒤집는다
401
+ ui.box.classList.toggle("is-below", r.top - (hr?.top ?? 0) < 40);
402
+ // 열 경계 핸들 — 열 사이 경계마다 하나씩 (마지막 열 뒤=표 가장자리는 없음)
403
+ const cells = firstRowCells(tbl).slice(0, -1);
404
+ while (ui.cols.children.length > cells.length) {
405
+ ui.cols.lastElementChild?.remove();
406
+ }
407
+ while (ui.cols.children.length < cells.length) {
408
+ const h = el.ownerDocument.createElement("span");
409
+ h.className = "me-col-handle";
410
+ h.title = "드래그하여 열 너비 조절";
411
+ ui.cols.appendChild(h);
412
+ }
413
+ cells.forEach((td, i) => {
414
+ const h = ui.cols.children[i];
415
+ if (!h)
416
+ return;
417
+ const cr = td.getBoundingClientRect();
418
+ h.setAttribute("data-col", String(i));
419
+ h.style.left = `${cr.right - r.left - 4}px`;
420
+ h.style.height = `${r.height}px`;
421
+ });
422
+ ui.box.hidden = false;
423
+ }
159
424
  export const tableFeature = defineFeature({
160
425
  name: "table",
161
- description: "표 — table>row>cell 구조, Tab 셀 이동·끝 셀 행 추가, 행/열 추가와 표 삭제",
426
+ description: "표 — table>row>cell 구조, Tab 셀 이동·끝 셀 행 추가, 행/열 추가·삭제와 표 삭제, 열 너비 조절",
162
427
  nodes: {
163
- // 표 — 셀은 블록을 품는다(셀 안 타이핑은 일반 경로)
428
+ // 표 — 셀은 블록을 품는다(셀 안 타이핑은 일반 경로).
429
+ // colwidth는 열 너비 px — td[width]로 렌더되고 왕복 보존된다
164
430
  tableCell: {
165
431
  content: "block+",
166
- toDOM: () => ({ tag: "td" }),
167
- parseDOM: [{ tag: "td" }],
432
+ attrs: {
433
+ colwidth: { default: 0 },
434
+ },
435
+ toDOM: (n) => {
436
+ const w = Number(n.attrs?.["colwidth"] ?? 0);
437
+ return {
438
+ tag: "td",
439
+ attrs: w > 0 ? { width: String(Math.round(w)) } : undefined,
440
+ };
441
+ },
442
+ parseDOM: [
443
+ {
444
+ tag: "td",
445
+ getAttrs: (el) => ({
446
+ colwidth: parseInt(el.getAttribute("width") ?? "", 10) || 0,
447
+ }),
448
+ },
449
+ ],
168
450
  },
169
451
  tableRow: {
170
452
  content: "tableCell+",
@@ -182,7 +464,10 @@ export const tableFeature = defineFeature({
182
464
  insertTable: (ctx, rows, cols) => insertTable(Number(rows ?? 3), Number(cols ?? 3))(ctx),
183
465
  addTableRow,
184
466
  addTableColumn,
467
+ deleteTableRow,
468
+ deleteTableColumn,
185
469
  deleteTable,
470
+ setTableColWidths,
186
471
  nextCell,
187
472
  prevCell,
188
473
  },
@@ -191,5 +476,21 @@ export const tableFeature = defineFeature({
191
476
  Tab: nextCell,
192
477
  "Shift-Tab": prevCell,
193
478
  },
479
+ input: {
480
+ /**
481
+ * 캐럿이 표 안에 있으면 .me-tableui 오버레이(행/열 추가·삭제 바 +
482
+ * 열 너비 핸들)를 표 위에 맞춘다 — 셀렉션이 밖으로 나가면 숨긴다.
483
+ */
484
+ paintOverlay(el, _state, editor) {
485
+ paintTblOverlay(el, editor);
486
+ },
487
+ destroyOverlay(el) {
488
+ // 오버레이 DOM + 옵저버를 정리하고 맵 엔트리를 지운다
489
+ const ui = tblUIs.get(el);
490
+ ui?.observer?.disconnect();
491
+ ui?.box.remove();
492
+ tblUIs.delete(el);
493
+ },
494
+ },
194
495
  });
195
496
  //# sourceMappingURL=table.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"table.js","sourceRoot":"","sources":["../../src/features/table.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"table.js","sourceRoot":"","sources":["../../src/features/table.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"testkit.d.ts","sourceRoot":"","sources":["../../src/features/testkit.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,YAAY,EACZ,OAAO,EACP,WAAW,EACX,QAAQ,EACT,MAAM,wBAAwB,CAAC;AAEhC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAUnD;;;;GAIG;AAEH,eAAO,MAAM,IAAI,GAAI,GAAG,GAAG,CAAC,MAAM,GAAG,UAAU,CAAC,EAAE,KAAG,UAGnD,CAAC;AAEH,eAAO,MAAM,IAAI,GAAI,GAAG,MAAM,EAAE,OAAO,MAAM,KAAG,UAI9C,CAAC;AAEH,wBAAgB,MAAM,CAAC,GAAG,MAAM,EAAE,UAAU,EAAE,gCAK7C;AAED,wBAAgB,KAAK,CACnB,CAAC,EAAE,UAAU,CAAC,OAAO,MAAM,CAAC,EAC5B,IAAI,EAAE,MAAM,EAAE,EACd,MAAM,EAAE,MAAM,QAGf;AAED,yCAAyC;AACzC,wBAAgB,IAAI,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,QAI9D;AAED,8CAA8C;AAC9C,wBAAgB,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,MAAM,CAAC,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAGvE;AAED;;;;GAIG;AACH,wBAAgB,OAAO,CACrB,CAAC,EAAE,UAAU,CAAC,OAAO,MAAM,CAAC,EAC5B,SAAS,EAAE,MAAM,EAAE,GAClB,YAAY,CAmBd;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,MAAM,CAAC,GAAG,QAAQ,CAc/D;AAED;;;GAGG;AACH,wBAAgB,WAAW,CACzB,CAAC,EAAE,UAAU,CAAC,OAAO,MAAM,CAAC,EAC5B,KAAK,EAAE,IAAI,EAAE,EACb,EAAE,GAAE,WAAW,CAAC,IAAI,CAAQ,GAC3B,WAAW,CAEb"}
1
+ {"version":3,"file":"testkit.d.ts","sourceRoot":"","sources":["../../src/features/testkit.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,YAAY,EACZ,OAAO,EACP,WAAW,EACX,QAAQ,EACT,MAAM,wBAAwB,CAAC;AAEhC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAMnD;;;;GAIG;AAEH,eAAO,MAAM,IAAI,GAAI,GAAG,GAAG,CAAC,MAAM,GAAG,UAAU,CAAC,EAAE,KAAG,UAGnD,CAAC;AAEH,eAAO,MAAM,IAAI,GAAI,GAAG,MAAM,EAAE,OAAO,MAAM,KAAG,UAI9C,CAAC;AAEH,wBAAgB,MAAM,CAAC,GAAG,MAAM,EAAE,UAAU,EAAE,gCAK7C;AAED,wBAAgB,KAAK,CACnB,CAAC,EAAE,UAAU,CAAC,OAAO,MAAM,CAAC,EAC5B,IAAI,EAAE,MAAM,EAAE,EACd,MAAM,EAAE,MAAM,QAGf;AAED,yCAAyC;AACzC,wBAAgB,IAAI,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,QAI9D;AAED,8CAA8C;AAC9C,wBAAgB,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,MAAM,CAAC,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAGvE;AAED;;;;GAIG;AACH,wBAAgB,OAAO,CACrB,CAAC,EAAE,UAAU,CAAC,OAAO,MAAM,CAAC,EAC5B,SAAS,EAAE,MAAM,EAAE,GAClB,YAAY,CAmBd;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,MAAM,CAAC,GAAG,QAAQ,CAc/D;AAED;;;GAGG;AACH,wBAAgB,WAAW,CACzB,CAAC,EAAE,UAAU,CAAC,OAAO,MAAM,CAAC,EAC5B,KAAK,EAAE,IAAI,EAAE,EACb,EAAE,GAAE,WAAW,CAAC,IAAI,CAAQ,GAC3B,WAAW,CAEb"}
@@ -1,7 +1,7 @@
1
1
  import { createEditor } from "../editor/editor.js";
2
2
  import { createDoc, createText } from "../model/node.js";
3
3
  import { nodeAt } from "../model/traverse.js";
4
- import { normalizedRange, point, textSelection, } from "../state/selection.js";
4
+ import { normalizedRange, point, textSelection } from "../state/selection.js";
5
5
  import { starterExtensions } from "../presets/starter.js";
6
6
  import { blockText, blockTextOffset, blockTextPoint } from "../commands.js";
7
7
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"testkit.js","sourceRoot":"","sources":["../../src/features/testkit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"testkit.js","sourceRoot":"","sources":["../../src/features/testkit.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../src/history.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAW,SAAS,EAAU,MAAM,uBAAuB,CAAC;AACxE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAG/C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAuBnD,eAAO,MAAM,WAAW,YAAY,CAAC;AAErC,MAAM,WAAW,YAAY;IAC3B,gCAAgC;IAChC,OAAO,EAAE,IAAI,EAAE,CAAC;IAChB,gBAAgB;IAChB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,SAAS,EAAE,SAAS,CAAC;IACrB,QAAQ,EAAE,SAAS,CAAC;IACpB,0DAA0D;IAC1D,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,qCAAqC;IACrC,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,YAAY,EAAE,CAAC;IACrB,MAAM,EAAE,YAAY,EAAE,CAAC;CACxB;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE;IAC/B,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CAChD,GAAG,YAAY,CAOf;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE;IAC7B,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CAChD,GAAG,OAAO,CAEV;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE;IAC7B,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CAChD,GAAG,OAAO,CAEV;AAED,qCAAqC;AACrC,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,GAAG,IAAI,EAAE,CAmD3D;AAED,2CAA2C;AAC3C,wBAAgB,WAAW,CACzB,KAAK,EAAE,SAAS,IAAI,EAAE,EACtB,SAAS,EAAE,OAAO,GACjB,IAAI,EAAE,CAQR;AA4ED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,SAAS,CAY5C"}
1
+ {"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../src/history.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAW,SAAS,EAAU,MAAM,uBAAuB,CAAC;AACxE,OAAO,KAAK,EAAE,OAAO,EAAQ,MAAM,iBAAiB,CAAC;AASrD,OAAO,KAAK,EAAS,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EAAe,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAmBhE,eAAO,MAAM,WAAW,YAAY,CAAC;AAErC,MAAM,WAAW,YAAY;IAC3B,gCAAgC;IAChC,OAAO,EAAE,IAAI,EAAE,CAAC;IAChB,gBAAgB;IAChB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,SAAS,EAAE,SAAS,CAAC;IACrB,QAAQ,EAAE,SAAS,CAAC;IACpB,0DAA0D;IAC1D,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,qCAAqC;IACrC,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,YAAY,EAAE,CAAC;IACrB,MAAM,EAAE,YAAY,EAAE,CAAC;CACxB;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE;IAC/B,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CAChD,GAAG,YAAY,CAOf;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE;IAC7B,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CAChD,GAAG,OAAO,CAEV;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE;IAC7B,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CAChD,GAAG,OAAO,CAEV;AAED,qCAAqC;AACrC,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,GAAG,IAAI,EAAE,CA6F3D;AAED,2CAA2C;AAC3C,wBAAgB,WAAW,CACzB,KAAK,EAAE,SAAS,IAAI,EAAE,EACtB,SAAS,EAAE,OAAO,GACjB,IAAI,EAAE,CAQR;AAgFD;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,SAAS,CAY5C"}
package/dist/history.js CHANGED
@@ -1,21 +1,17 @@
1
- import { nodeAt } from "./model/traverse.js";
2
- import { applyStep, computeSplitOps } from "./state/apply.js";
1
+ import { expandTextNodes, nodeAt } from "./model/traverse.js";
2
+ import { applyStep, computeSplitOps, coveredOffsets, mapPoint, marksEq, } from "./state/apply.js";
3
3
  /**
4
4
  * 히스토리 — Step의 순수 JSON 설계가 실현되는 곳.
5
5
  *
6
6
  * 모든 Step은 (step, docBefore) → 역스텝으로 역변환된다:
7
7
  * insert ↔ remove (스텝이 이미 노드를 들고 있다)
8
8
  * setAttr → prev 값으로 되돌리기
9
- * split → join 경계 / join → seam split
10
- * addMark ↔ removeMark
9
+ * split → join 경계 / join → 원본 둘을 remove+insert로 복원
10
+ * addMark ↔ removeMark (범위 내 실제 마크 attrs까지 세그먼트별 복원)
11
11
  *
12
12
  * Lexical의 update 클로저는 역변환 불가라 별도 변경 추적이 필요하고,
13
13
  * PM은 Step 클래스에 인스턴스 메서드로 invert를 둔다 — 우리는 순수
14
14
  * 함수라 직렬화된 트랜잭션 로그만으로도 undo를 재구성할 수 있다.
15
- *
16
- * 알려진 한계:
17
- * - removeMark 역변환은 마크 attrs를 복원하지 못한다 (type만 복원)
18
- * - join은 병합 시 next 노드 attrs를 버리므로 되돌려도 attrs는 prev 것
19
15
  */
20
16
  const DEPTH = 100;
21
17
  /** 같은 그룹 연속 편집을 한 엔트리로 뭉치는 시간 창 — PM newGroupDelay */
@@ -51,11 +47,43 @@ export function invertStep(step, doc) {
51
47
  },
52
48
  ];
53
49
  case "addMark":
54
- return [{ op: "removeMark", range: step.range, markType: step.mark.type }];
55
- case "removeMark":
56
50
  return [
57
- { op: "addMark", range: step.range, mark: { type: step.markType } },
51
+ { op: "removeMark", range: step.range, markType: step.mark.type },
58
52
  ];
53
+ case "removeMark": {
54
+ // 마크 attrs까지 복원 — 범위 안 텍스트 노드별로 실제 제거된
55
+ // 마크를 읽어 세그먼트별 addMark를 만든다. 마크가 없던 노드는
56
+ // 건너뛴다. 좌표는 제거 전 doc 기준이라 mapPoint로 적용 후
57
+ // 좌표로 옮기고, 뒤 세그먼트부터 발행해 앞 addMark의 텍스트
58
+ // 분할이 뒤 경로를 밀지 않게 한다.
59
+ const segs = [];
60
+ expandTextNodes(doc, [], (node, path) => {
61
+ const cov = coveredOffsets(node, path, step.range);
62
+ const mark = node.marks?.find((m) => m.type === step.markType);
63
+ if (!cov || !mark)
64
+ return [node];
65
+ segs.push({
66
+ range: {
67
+ anchor: { path, offset: cov.s },
68
+ focus: { path, offset: cov.e },
69
+ },
70
+ mark,
71
+ });
72
+ return [node];
73
+ });
74
+ const steps = [];
75
+ for (const s of segs.reverse()) {
76
+ steps.push({
77
+ op: "addMark",
78
+ range: {
79
+ anchor: mapPoint(s.range.anchor, step, doc),
80
+ focus: mapPoint(s.range.focus, step, doc),
81
+ },
82
+ mark: s.mark,
83
+ });
84
+ }
85
+ return steps;
86
+ }
59
87
  case "split": {
60
88
  // 적용된 op의 역순으로 join — 바깥 split부터 되감는다
61
89
  const ops = computeSplitOps(doc, step);
@@ -68,19 +96,31 @@ export function invertStep(step, doc) {
68
96
  return joins;
69
97
  }
70
98
  case "join": {
71
- // seam에서 재분할 — prev 노드 크기가 split index다
99
+ // join은 prev attrs로 합치므로 next attrs가 유실된다 — split으로는
100
+ // 되살릴 수 없어 merged 제거 + 원본 둘 재삽입으로 정확히 복원한다.
72
101
  const prev = nodeAt(doc, [...step.at.path, step.at.offset - 1]);
73
- if (!prev)
102
+ const next = nodeAt(doc, [...step.at.path, step.at.offset]);
103
+ if (!prev || !next)
74
104
  return [];
75
- const seam = prev.type === "text"
76
- ? (prev.text?.length ?? 0)
77
- : (prev.content?.length ?? 0);
105
+ // applyJoin의 합침 조건과 동일 — 실제로 합쳐지지 않는 join은
106
+ // no-op이라 역변환도 비운다 (그대로 remove+insert하면 문서 파괴)
107
+ const merged = prev.type === "text" && next.type === "text"
108
+ ? marksEq(prev.marks, next.marks)
109
+ ? { ...prev, text: (prev.text ?? "") + (next.text ?? "") }
110
+ : null
111
+ : prev.type === next.type && prev.content && next.content
112
+ ? { ...prev, content: [...prev.content, ...next.content] }
113
+ : null;
114
+ if (!merged)
115
+ return [];
116
+ const at = { path: step.at.path, offset: step.at.offset - 1 };
78
117
  return [
118
+ { op: "remove", at, node: merged },
119
+ { op: "insert", at, node: prev },
79
120
  {
80
- op: "split",
81
- at: { path: [...step.at.path, step.at.offset - 1], offset: seam },
82
- // text면 depth 0(텍스트만), 블록이면 depth 1(노드 자체 분할)
83
- depth: prev.type === "text" ? 0 : 1,
121
+ op: "insert",
122
+ at: { path: step.at.path, offset: step.at.offset },
123
+ node: next,
84
124
  },
85
125
  ];
86
126
  }
@@ -138,6 +178,11 @@ const historyPlugin = {
138
178
  }
139
179
  if (!tr.docChanged)
140
180
  return h;
181
+ // 기록 제외 표시 — 협업 계층이 원격 반영 tr에 다는 메타
182
+ // (collab-yjs의 REMOTE_META와 함께 설정). 원격 편집을 done에
183
+ // 쌓으면 로컬 undo가 남의 편집을 되돌린다
184
+ if (tr.meta["history.skip"])
185
+ return h;
141
186
  const now = Date.now();
142
187
  const entry = {
143
188
  steps: [...tr.steps],