@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.
- package/dist/collab.d.ts +61 -0
- package/dist/collab.d.ts.map +1 -0
- package/dist/collab.js +67 -0
- package/dist/collab.js.map +1 -0
- package/dist/commands.d.ts +11 -0
- package/dist/commands.d.ts.map +1 -1
- package/dist/commands.js +48 -4
- package/dist/commands.js.map +1 -1
- package/dist/conformance/editor-base.d.ts +7 -0
- package/dist/conformance/editor-base.d.ts.map +1 -0
- package/dist/conformance/editor-base.js +280 -0
- package/dist/conformance/editor-base.js.map +1 -0
- package/dist/conformance/editor-codeblock.d.ts +8 -0
- package/dist/conformance/editor-codeblock.d.ts.map +1 -0
- package/dist/conformance/editor-codeblock.js +402 -0
- package/dist/conformance/editor-codeblock.js.map +1 -0
- package/dist/conformance/editor-ime.d.ts +7 -0
- package/dist/conformance/editor-ime.d.ts.map +1 -0
- package/dist/conformance/editor-ime.js +166 -0
- package/dist/conformance/editor-ime.js.map +1 -0
- package/dist/conformance/editor-input.d.ts +8 -0
- package/dist/conformance/editor-input.d.ts.map +1 -0
- package/dist/conformance/editor-input.js +676 -0
- package/dist/conformance/editor-input.js.map +1 -0
- package/dist/conformance/editor-nodeview.d.ts +7 -0
- package/dist/conformance/editor-nodeview.d.ts.map +1 -0
- package/dist/conformance/editor-nodeview.js +120 -0
- package/dist/conformance/editor-nodeview.js.map +1 -0
- package/dist/conformance/editor-overlay.d.ts +8 -0
- package/dist/conformance/editor-overlay.d.ts.map +1 -0
- package/dist/conformance/editor-overlay.js +323 -0
- package/dist/conformance/editor-overlay.js.map +1 -0
- package/dist/conformance/fixtures.d.ts +4 -0
- package/dist/conformance/fixtures.d.ts.map +1 -0
- package/dist/conformance/fixtures.js +15 -0
- package/dist/conformance/fixtures.js.map +1 -0
- package/dist/conformance/index.d.ts +14 -0
- package/dist/conformance/index.d.ts.map +1 -0
- package/dist/conformance/index.js +28 -0
- package/dist/conformance/index.js.map +1 -0
- package/dist/conformance/types.d.ts +51 -0
- package/dist/conformance/types.d.ts.map +1 -0
- package/dist/conformance/types.js +2 -0
- package/dist/conformance/types.js.map +1 -0
- package/dist/conformance/widget.d.ts +3 -0
- package/dist/conformance/widget.d.ts.map +1 -0
- package/dist/conformance/widget.js +49 -0
- package/dist/conformance/widget.js.map +1 -0
- package/dist/conformance.d.ts +1 -58
- package/dist/conformance.d.ts.map +1 -1
- package/dist/conformance.js +3 -1608
- package/dist/conformance.js.map +1 -1
- package/dist/editor/extension.d.ts +51 -5
- package/dist/editor/extension.d.ts.map +1 -1
- package/dist/features/ace.d.ts +4 -0
- package/dist/features/ace.d.ts.map +1 -1
- package/dist/features/ace.js +57 -25
- package/dist/features/ace.js.map +1 -1
- package/dist/features/block-dnd.d.ts +7 -0
- package/dist/features/block-dnd.d.ts.map +1 -0
- package/dist/features/block-dnd.js +207 -0
- package/dist/features/block-dnd.js.map +1 -0
- package/dist/features/code-block.d.ts +12 -58
- package/dist/features/code-block.d.ts.map +1 -1
- package/dist/features/code-block.js +155 -630
- package/dist/features/code-block.js.map +1 -1
- package/dist/features/code-context.d.ts +81 -0
- package/dist/features/code-context.d.ts.map +1 -0
- package/dist/features/code-context.js +322 -0
- package/dist/features/code-context.js.map +1 -0
- package/dist/features/code-edit.d.ts +50 -0
- package/dist/features/code-edit.d.ts.map +1 -0
- package/dist/features/code-edit.js +412 -0
- package/dist/features/code-edit.js.map +1 -0
- package/dist/features/code-format.d.ts +21 -0
- package/dist/features/code-format.d.ts.map +1 -0
- package/dist/features/code-format.js +410 -0
- package/dist/features/code-format.js.map +1 -0
- package/dist/features/doc.d.ts.map +1 -1
- package/dist/features/doc.js +1 -1
- package/dist/features/doc.js.map +1 -1
- package/dist/features/heading.d.ts.map +1 -1
- package/dist/features/heading.js.map +1 -1
- package/dist/features/image.d.ts +14 -1
- package/dist/features/image.d.ts.map +1 -1
- package/dist/features/image.js +288 -11
- package/dist/features/image.js.map +1 -1
- package/dist/features/index.d.ts +7 -0
- package/dist/features/index.d.ts.map +1 -1
- package/dist/features/index.js +16 -0
- package/dist/features/index.js.map +1 -1
- package/dist/features/inline-style.d.ts.map +1 -1
- package/dist/features/inline-style.js +4 -1
- package/dist/features/inline-style.js.map +1 -1
- package/dist/features/link.d.ts.map +1 -1
- package/dist/features/link.js +1 -1
- package/dist/features/link.js.map +1 -1
- package/dist/features/markdown.d.ts +15 -0
- package/dist/features/markdown.d.ts.map +1 -0
- package/dist/features/markdown.js +80 -0
- package/dist/features/markdown.js.map +1 -0
- package/dist/features/marks.d.ts.map +1 -1
- package/dist/features/marks.js +76 -4
- package/dist/features/marks.js.map +1 -1
- package/dist/features/mention.d.ts +30 -0
- package/dist/features/mention.d.ts.map +1 -0
- package/dist/features/mention.js +89 -0
- package/dist/features/mention.js.map +1 -0
- package/dist/features/script.d.ts.map +1 -1
- package/dist/features/script.js.map +1 -1
- package/dist/features/search.d.ts +73 -0
- package/dist/features/search.d.ts.map +1 -0
- package/dist/features/search.js +252 -0
- package/dist/features/search.js.map +1 -0
- package/dist/features/shared.d.ts +69 -0
- package/dist/features/shared.d.ts.map +1 -0
- package/dist/features/shared.js +272 -0
- package/dist/features/shared.js.map +1 -0
- package/dist/features/table.d.ts +16 -3
- package/dist/features/table.d.ts.map +1 -1
- package/dist/features/table.js +309 -8
- package/dist/features/table.js.map +1 -1
- package/dist/features/testkit.d.ts.map +1 -1
- package/dist/features/testkit.js +1 -1
- package/dist/features/testkit.js.map +1 -1
- package/dist/history.d.ts.map +1 -1
- package/dist/history.js +65 -20
- package/dist/history.js.map +1 -1
- package/dist/index.d.ts +20 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -6
- package/dist/index.js.map +1 -1
- package/dist/model/schema.d.ts.map +1 -1
- package/dist/model/schema.js +2 -1
- package/dist/model/schema.js.map +1 -1
- package/dist/parse/html.d.ts.map +1 -1
- package/dist/parse/html.js +38 -6
- package/dist/parse/html.js.map +1 -1
- package/dist/parse/sanitize.d.ts.map +1 -1
- package/dist/parse/sanitize.js +14 -2
- package/dist/parse/sanitize.js.map +1 -1
- package/dist/presets/highlight.d.ts +17 -0
- package/dist/presets/highlight.d.ts.map +1 -1
- package/dist/presets/highlight.js +52 -4
- package/dist/presets/highlight.js.map +1 -1
- package/dist/presets/markdown-parse.d.ts +13 -0
- package/dist/presets/markdown-parse.d.ts.map +1 -0
- package/dist/presets/markdown-parse.js +398 -0
- package/dist/presets/markdown-parse.js.map +1 -0
- package/dist/presets/markdown.d.ts +45 -0
- package/dist/presets/markdown.d.ts.map +1 -0
- package/dist/presets/markdown.js +195 -0
- package/dist/presets/markdown.js.map +1 -0
- package/dist/state/apply.d.ts.map +1 -1
- package/dist/state/apply.js +19 -11
- package/dist/state/apply.js.map +1 -1
- package/dist/state/delete-ops.d.ts +34 -0
- package/dist/state/delete-ops.d.ts.map +1 -0
- package/dist/state/delete-ops.js +204 -0
- package/dist/state/delete-ops.js.map +1 -0
- package/dist/state/input-rules.d.ts +30 -0
- package/dist/state/input-rules.d.ts.map +1 -0
- package/dist/state/input-rules.js +70 -0
- package/dist/state/input-rules.js.map +1 -0
- package/dist/state/insert-ops.d.ts +54 -0
- package/dist/state/insert-ops.d.ts.map +1 -0
- package/dist/state/insert-ops.js +186 -0
- package/dist/state/insert-ops.js.map +1 -0
- package/dist/state/list-ops.d.ts +46 -0
- package/dist/state/list-ops.d.ts.map +1 -0
- package/dist/state/list-ops.js +231 -0
- package/dist/state/list-ops.js.map +1 -0
- package/dist/state/navigate.d.ts.map +1 -1
- package/dist/state/navigate.js +3 -1
- package/dist/state/navigate.js.map +1 -1
- package/dist/state/resolve-insert.d.ts +55 -0
- package/dist/state/resolve-insert.d.ts.map +1 -0
- package/dist/state/resolve-insert.js +118 -0
- package/dist/state/resolve-insert.js.map +1 -0
- package/dist/state/slice-ops.d.ts +46 -0
- package/dist/state/slice-ops.d.ts.map +1 -0
- package/dist/state/slice-ops.js +150 -0
- package/dist/state/slice-ops.js.map +1 -0
- package/dist/state/state.d.ts +6 -1
- package/dist/state/state.d.ts.map +1 -1
- package/dist/state/state.js +10 -0
- package/dist/state/state.js.map +1 -1
- package/dist/state/transaction.d.ts +40 -53
- package/dist/state/transaction.d.ts.map +1 -1
- package/dist/state/transaction.js +62 -829
- package/dist/state/transaction.js.map +1 -1
- package/dist/styles.css +472 -46
- package/dist/view/adapter.d.ts +84 -0
- package/dist/view/adapter.d.ts.map +1 -0
- package/dist/view/adapter.js +76 -0
- package/dist/view/adapter.js.map +1 -0
- package/dist/view/caret.d.ts +25 -0
- package/dist/view/caret.d.ts.map +1 -0
- package/dist/view/caret.js +43 -0
- package/dist/view/caret.js.map +1 -0
- package/dist/view/decoration.d.ts +9 -0
- package/dist/view/decoration.d.ts.map +1 -0
- package/dist/view/decoration.js +214 -0
- package/dist/view/decoration.js.map +1 -0
- package/dist/view/dirty-keys.d.ts +18 -0
- package/dist/view/dirty-keys.d.ts.map +1 -0
- package/dist/view/dirty-keys.js +31 -0
- package/dist/view/dirty-keys.js.map +1 -0
- package/dist/view/dom.d.ts.map +1 -1
- package/dist/view/dom.js +69 -27
- package/dist/view/dom.js.map +1 -1
- package/dist/view/hook-ctx.d.ts +32 -0
- package/dist/view/hook-ctx.d.ts.map +1 -0
- package/dist/view/hook-ctx.js +64 -0
- package/dist/view/hook-ctx.js.map +1 -0
- package/dist/view/ime.d.ts +72 -0
- package/dist/view/ime.d.ts.map +1 -0
- package/dist/view/ime.js +185 -0
- package/dist/view/ime.js.map +1 -0
- package/dist/view/input.d.ts +12 -12
- package/dist/view/input.d.ts.map +1 -1
- package/dist/view/input.js +122 -435
- package/dist/view/input.js.map +1 -1
- package/dist/view/keys.d.ts +25 -0
- package/dist/view/keys.d.ts.map +1 -0
- package/dist/view/keys.js +106 -0
- package/dist/view/keys.js.map +1 -0
- package/dist/view/line-nav.d.ts +13 -0
- package/dist/view/line-nav.d.ts.map +1 -0
- package/dist/view/line-nav.js +114 -0
- package/dist/view/line-nav.js.map +1 -0
- package/dist/view/mount.d.ts.map +1 -1
- package/dist/view/mount.js +48 -32
- package/dist/view/mount.js.map +1 -1
- package/dist/view/node-selection.d.ts +33 -0
- package/dist/view/node-selection.d.ts.map +1 -0
- package/dist/view/node-selection.js +107 -0
- package/dist/view/node-selection.js.map +1 -0
- package/dist/view/render.d.ts +11 -2
- package/dist/view/render.d.ts.map +1 -1
- package/dist/view/render.js +17 -3
- package/dist/view/render.js.map +1 -1
- package/dist/view/serialize.d.ts +8 -0
- package/dist/view/serialize.d.ts.map +1 -1
- package/dist/view/serialize.js +33 -5
- package/dist/view/serialize.js.map +1 -1
- package/package.json +1 -1
package/dist/features/table.d.ts
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/features/table.js
CHANGED
|
@@ -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({
|
|
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
|
-
|
|
167
|
-
|
|
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":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD;;;;GAIG;AAEH,sCAAsC;AACtC,MAAM,UAAU,WAAW,CAAC,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC;IAC5C,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;QACjC,MAAM,SAAS,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;QACxC,IAAI,CAAC,SAAS;YAAE,OAAO,KAAK,CAAC;QAC7B,MAAM,IAAI,GAAG,GAAe,EAAE,CAAC,CAAC;YAC9B,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;SAC9C,CAAC,CAAC;QACH,MAAM,KAAK,GAAe;YACxB,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;gBAC3C,IAAI,EAAE,UAAU;gBAChB,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC;aAC5C,CAAC,CAAC;SACJ,CAAC;QACF,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAC3C,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAClE,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC1C,MAAM,EAAE,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC;QAC5C,IAAI,KAAK,EAAE,CAAC;YACV,EAAE,CAAC,WAAW,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QACnC,CAAC;aAAM,CAAC;YACN,EAAE,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QAC7D,CAAC;QACD,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAC/B,EAAE,CAAC,UAAU,CACX,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,GAAG,CAAC,EAAE,EACpC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,EAAE,CACnC,CAAC;QACF,EAAE,CAAC,YAAY,CACb,aAAa,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,UAAU,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CACjE,CAAC;QACF,QAAQ,EAAE,CAAC;QACX,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;AACJ,CAAC;AAED,iCAAiC;AACjC,SAAS,WAAW,CAAC,KAAkB;IAOrC,MAAM,SAAS,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IACxC,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAC5B,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/C,MAAM,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAChC,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,KAAK,WAAW,EAAE,CAAC;YAC/C,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC/B,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,IAAI,KAAK,UAAU;gBAAE,OAAO,IAAI,CAAC;YACjE,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC;YAC7B,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC;YACzC,OAAO;gBACL,QAAQ,EAAE,CAAC;gBACX,OAAO;gBACP,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC/B,GAAG;gBACH,GAAG;aACJ,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,QAAQ;IACf,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;AAC9E,CAAC;AAED,kDAAkD;AAClD,MAAM,CAAC,MAAM,QAAQ,GAAY,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;IAC3D,MAAM,GAAG,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IAC/B,IAAI,CAAC,GAAG;QAAE,OAAO,KAAK,CAAC;IACvB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;IAC/C,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,GAAG,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,KAAK,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC,CAAC;IACzC,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC;IAChB,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;IACpB,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;QACd,CAAC,IAAI,CAAC,CAAC;QACP,CAAC,GAAG,CAAC,CAAC;IACR,CAAC;IACD,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;QACd,EAAE,CAAC,UAAU,CACX,EAAE,IAAI,EAAE,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,EACrC;YACE,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,QAAQ,CAAC;SAChD,CACF,CAAC;QACF,EAAE,CAAC,YAAY,CACb,aAAa,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CACnE,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,EAAE,CAAC,YAAY,CACb,aAAa,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAChE,CAAC;IACJ,CAAC;IACD,QAAQ,EAAE,CAAC;IACX,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,qDAAqD;AACrD,MAAM,CAAC,MAAM,QAAQ,GAAY,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;IAC3D,MAAM,GAAG,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IAC/B,IAAI,CAAC,GAAG;QAAE,OAAO,KAAK,CAAC;IACvB,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC;IAChB,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;IACpB,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACV,CAAC,IAAI,CAAC,CAAC;QACP,IAAI,CAAC,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QACxB,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;QACtD,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IACvC,CAAC;IACD,EAAE,CAAC,YAAY,CACb,aAAa,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAChE,CAAC;IACF,QAAQ,EAAE,CAAC;IACX,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,8BAA8B;AAC9B,MAAM,CAAC,MAAM,WAAW,GAAY,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;IAC9D,MAAM,GAAG,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IAC/B,IAAI,CAAC,GAAG;QAAE,OAAO,KAAK,CAAC;IACvB,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,GAAG,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC,CAAC;IACvC,EAAE,CAAC,UAAU,CACX,EAAE,IAAI,EAAE,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,EAAE,EAC5C,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,QAAQ,CAAC,EAAE,CACtE,CAAC;IACF,EAAE,CAAC,YAAY,CACb,aAAa,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAC1E,CAAC;IACF,QAAQ,EAAE,CAAC;IACX,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,oCAAoC;AACpC,MAAM,CAAC,MAAM,cAAc,GAAY,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;IACjE,MAAM,GAAG,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IAC/B,IAAI,CAAC,GAAG;QAAE,OAAO,KAAK,CAAC;IACvB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;IAC/C,MAAM,IAAI,GAAG,KAAK,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC,CAAC;IACzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9B,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;QACnD,EAAE,CAAC,UAAU,CACX,EAAE,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC,EAAE,EAChE,QAAQ,EAAE,CACX,CAAC;IACJ,CAAC;IACD,QAAQ,EAAE,CAAC;IACX,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,8BAA8B;AAC9B,MAAM,CAAC,MAAM,WAAW,GAAY,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;IAC9D,MAAM,GAAG,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IAC/B,IAAI,CAAC,GAAG;QAAE,OAAO,KAAK,CAAC;IACvB,MAAM,EAAE,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC;IACpD,MAAM,UAAU,GAAG,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9C,EAAE,CAAC,MAAM,CAAC;QACR,MAAM,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE;QACxC,KAAK,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,GAAG,CAAC,EAAE;KAC5C,CAAC,CAAC;IACH,EAAE,CAAC,UAAU,CACX,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,EAChC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,EAAE,CACnC,CAAC;IACF,EAAE,CAAC,YAAY,CACb,aAAa,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,UAAU,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CACxD,CAAC;IACF,QAAQ,EAAE,CAAC;IACX,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,aAAa,CAAC;IACxC,IAAI,EAAE,OAAO;IACb,WAAW,EACT,wDAAwD;IAC1D,KAAK,EAAE;QACL,iCAAiC;QACjC,SAAS,EAAE;YACT,OAAO,EAAE,QAAQ;YACjB,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;YAC5B,QAAQ,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;SAC1B;QACD,QAAQ,EAAE;YACR,OAAO,EAAE,YAAY;YACrB,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;YAC5B,QAAQ,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;SAC1B;QACD,KAAK,EAAE;YACL,OAAO,EAAE,WAAW;YACpB,KAAK,EAAE,OAAO;YACd,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,CAAC;YAC7D,QAAQ,EAAE,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC;SAC7B;KACF;IACD,QAAQ,EAAE;QACR,WAAW,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAC/B,WAAW,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QACxD,WAAW;QACX,cAAc;QACd,WAAW;QACX,QAAQ;QACR,QAAQ;KACT;IACD,MAAM,EAAE;QACN,oCAAoC;QACpC,GAAG,EAAE,QAAQ;QACb,WAAW,EAAE,QAAQ;KACtB;CACF,CAAC,CAAC"}
|
|
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;
|
|
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"}
|
package/dist/features/testkit.js
CHANGED
|
@@ -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
|
|
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":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAOnD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEzD,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,
|
|
1
|
+
{"version":3,"file":"testkit.js","sourceRoot":"","sources":["../../src/features/testkit.ts"],"names":[],"mappings":"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"}
|
package/dist/history.d.ts.map
CHANGED
|
@@ -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,
|
|
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 →
|
|
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: "
|
|
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
|
-
//
|
|
99
|
+
// join은 prev attrs로 합치므로 next attrs가 유실된다 — split으로는
|
|
100
|
+
// 되살릴 수 없어 merged 제거 + 원본 둘 재삽입으로 정확히 복원한다.
|
|
72
101
|
const prev = nodeAt(doc, [...step.at.path, step.at.offset - 1]);
|
|
73
|
-
|
|
102
|
+
const next = nodeAt(doc, [...step.at.path, step.at.offset]);
|
|
103
|
+
if (!prev || !next)
|
|
74
104
|
return [];
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
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: "
|
|
81
|
-
at: { path:
|
|
82
|
-
|
|
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],
|