@moda-editor/core 0.2.0 → 0.2.2
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 +7 -0
- package/dist/collab.d.ts.map +1 -1
- package/dist/collab.js +29 -8
- package/dist/collab.js.map +1 -1
- package/dist/commands.d.ts +35 -1
- package/dist/commands.d.ts.map +1 -1
- package/dist/commands.js +144 -36
- package/dist/commands.js.map +1 -1
- package/dist/editor/editor.d.ts +6 -0
- package/dist/editor/editor.d.ts.map +1 -1
- package/dist/editor/editor.js +14 -4
- package/dist/editor/editor.js.map +1 -1
- package/dist/features/ace.d.ts.map +1 -1
- package/dist/features/ace.js +6 -0
- package/dist/features/ace.js.map +1 -1
- package/dist/features/alignment.d.ts.map +1 -1
- package/dist/features/alignment.js +6 -0
- package/dist/features/alignment.js.map +1 -1
- package/dist/features/block-dnd.d.ts.map +1 -1
- package/dist/features/block-dnd.js +6 -1
- package/dist/features/block-dnd.js.map +1 -1
- package/dist/features/blockquote.d.ts.map +1 -1
- package/dist/features/blockquote.js +40 -11
- package/dist/features/blockquote.js.map +1 -1
- package/dist/features/code-block.d.ts.map +1 -1
- package/dist/features/code-block.js +21 -9
- package/dist/features/code-block.js.map +1 -1
- package/dist/features/code-context.d.ts.map +1 -1
- package/dist/features/code-context.js +3 -1
- package/dist/features/code-context.js.map +1 -1
- package/dist/features/code-edit.d.ts.map +1 -1
- package/dist/features/code-edit.js +25 -4
- package/dist/features/code-edit.js.map +1 -1
- package/dist/features/code-format.d.ts.map +1 -1
- package/dist/features/code-format.js +131 -42
- package/dist/features/code-format.js.map +1 -1
- package/dist/features/doc.d.ts.map +1 -1
- package/dist/features/doc.js +36 -13
- package/dist/features/doc.js.map +1 -1
- package/dist/features/heading.d.ts.map +1 -1
- package/dist/features/heading.js +10 -3
- package/dist/features/heading.js.map +1 -1
- package/dist/features/horizontal-rule.d.ts.map +1 -1
- package/dist/features/horizontal-rule.js +34 -8
- package/dist/features/horizontal-rule.js.map +1 -1
- package/dist/features/image.d.ts.map +1 -1
- package/dist/features/image.js +25 -6
- package/dist/features/image.js.map +1 -1
- package/dist/features/inline-style.d.ts.map +1 -1
- package/dist/features/inline-style.js +48 -22
- package/dist/features/inline-style.js.map +1 -1
- package/dist/features/link.d.ts.map +1 -1
- package/dist/features/link.js +43 -17
- package/dist/features/link.js.map +1 -1
- package/dist/features/lists.d.ts.map +1 -1
- package/dist/features/lists.js +31 -14
- package/dist/features/lists.js.map +1 -1
- package/dist/features/markdown.d.ts.map +1 -1
- package/dist/features/markdown.js +7 -1
- package/dist/features/markdown.js.map +1 -1
- package/dist/features/marks.d.ts.map +1 -1
- package/dist/features/marks.js +31 -13
- package/dist/features/marks.js.map +1 -1
- package/dist/features/mention.d.ts.map +1 -1
- package/dist/features/mention.js +11 -0
- package/dist/features/mention.js.map +1 -1
- package/dist/features/script.d.ts.map +1 -1
- package/dist/features/script.js +5 -2
- package/dist/features/script.js.map +1 -1
- package/dist/features/search.d.ts.map +1 -1
- package/dist/features/search.js +62 -15
- package/dist/features/search.js.map +1 -1
- package/dist/features/table.d.ts.map +1 -1
- package/dist/features/table.js +74 -17
- package/dist/features/table.js.map +1 -1
- package/dist/features/task-list.d.ts.map +1 -1
- package/dist/features/task-list.js +23 -3
- package/dist/features/task-list.js.map +1 -1
- package/dist/history.d.ts.map +1 -1
- package/dist/history.js +64 -7
- package/dist/history.js.map +1 -1
- package/dist/index.d.ts +4 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -3
- package/dist/index.js.map +1 -1
- package/dist/parse/html.d.ts.map +1 -1
- package/dist/parse/html.js +91 -16
- package/dist/parse/html.js.map +1 -1
- package/dist/parse/sanitize.d.ts +6 -0
- package/dist/parse/sanitize.d.ts.map +1 -1
- package/dist/parse/sanitize.js +39 -3
- package/dist/parse/sanitize.js.map +1 -1
- package/dist/presets/markdown-parse.d.ts.map +1 -1
- package/dist/presets/markdown-parse.js +155 -33
- package/dist/presets/markdown-parse.js.map +1 -1
- package/dist/presets/markdown.d.ts.map +1 -1
- package/dist/presets/markdown.js +59 -13
- package/dist/presets/markdown.js.map +1 -1
- package/dist/state/apply.d.ts +1 -1
- package/dist/state/apply.d.ts.map +1 -1
- package/dist/state/apply.js +34 -8
- package/dist/state/apply.js.map +1 -1
- package/dist/state/delete-ops.d.ts.map +1 -1
- package/dist/state/delete-ops.js +13 -21
- package/dist/state/delete-ops.js.map +1 -1
- package/dist/state/insert-ops.d.ts +5 -2
- package/dist/state/insert-ops.d.ts.map +1 -1
- package/dist/state/insert-ops.js +7 -5
- package/dist/state/insert-ops.js.map +1 -1
- package/dist/state/list-ops.d.ts.map +1 -1
- package/dist/state/list-ops.js +74 -10
- package/dist/state/list-ops.js.map +1 -1
- package/dist/state/navigate.d.ts.map +1 -1
- package/dist/state/navigate.js +13 -4
- package/dist/state/navigate.js.map +1 -1
- package/dist/state/resolve-insert.d.ts.map +1 -1
- package/dist/state/resolve-insert.js +42 -4
- package/dist/state/resolve-insert.js.map +1 -1
- package/dist/state/selection.d.ts +9 -0
- package/dist/state/selection.d.ts.map +1 -1
- package/dist/state/selection.js +25 -1
- package/dist/state/selection.js.map +1 -1
- package/dist/state/slice-ops.d.ts +3 -0
- package/dist/state/slice-ops.d.ts.map +1 -1
- package/dist/state/slice-ops.js +44 -11
- package/dist/state/slice-ops.js.map +1 -1
- package/dist/state/state.d.ts.map +1 -1
- package/dist/state/state.js +27 -8
- package/dist/state/state.js.map +1 -1
- package/dist/state/transaction.d.ts +11 -3
- package/dist/state/transaction.d.ts.map +1 -1
- package/dist/state/transaction.js +37 -4
- package/dist/state/transaction.js.map +1 -1
- package/dist/theme.d.ts.map +1 -1
- package/dist/theme.js +5 -1
- package/dist/theme.js.map +1 -1
- package/dist/view/decoration.d.ts.map +1 -1
- package/dist/view/decoration.js +39 -35
- package/dist/view/decoration.js.map +1 -1
- package/dist/view/hook-ctx.d.ts.map +1 -1
- package/dist/view/hook-ctx.js +30 -9
- package/dist/view/hook-ctx.js.map +1 -1
- package/dist/view/ime.d.ts +6 -0
- package/dist/view/ime.d.ts.map +1 -1
- package/dist/view/ime.js +9 -3
- package/dist/view/ime.js.map +1 -1
- package/dist/view/input.d.ts.map +1 -1
- package/dist/view/input.js +53 -9
- package/dist/view/input.js.map +1 -1
- package/dist/view/node-selection.d.ts.map +1 -1
- package/dist/view/node-selection.js +6 -1
- package/dist/view/node-selection.js.map +1 -1
- package/dist/view/render.d.ts.map +1 -1
- package/dist/view/render.js +37 -4
- package/dist/view/render.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transaction.js","sourceRoot":"","sources":["../../src/state/transaction.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"transaction.js","sourceRoot":"","sources":["../../src/state/transaction.ts"],"names":[],"mappings":"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"}
|
package/dist/theme.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../src/theme.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;0CAC0C;AAC1C,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;AAED,+CAA+C;AAC/C,eAAO,MAAM,SAAS,EAAE,SAAS,OAAO,EAqSvC,CAAC;AAEF,6CAA6C;AAC7C,wBAAgB,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,GAAG,IAAI,CAEvE;AAMD;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../src/theme.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;0CAC0C;AAC1C,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;AAED,+CAA+C;AAC/C,eAAO,MAAM,SAAS,EAAE,SAAS,OAAO,EAqSvC,CAAC;AAEF,6CAA6C;AAC7C,wBAAgB,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,GAAG,IAAI,CAEvE;AAMD;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,GAAG,IAAI,CA2BnE"}
|
package/dist/theme.js
CHANGED
|
@@ -316,7 +316,11 @@ const APPLIED = new WeakMap();
|
|
|
316
316
|
* 스코프 안에 .me-frame이 없으면 el 자체가 스코프다(단독 .me-root 사용).
|
|
317
317
|
*/
|
|
318
318
|
export function applyTheme(el, theme) {
|
|
319
|
-
|
|
319
|
+
// 스코프 = 프레임 우선, 없으면 .me-root 래퍼 — 둘 다 아닌 임의 리프를
|
|
320
|
+
// 그대로 scope로 쓰면 변수가 리프에 박혀 본문/에디터로 상속되지
|
|
321
|
+
// 않고, querySelector는 조상을 찾지 못해 .me-root/.me-editor 허브도
|
|
322
|
+
// 놓친다
|
|
323
|
+
const scope = el.closest(".me-frame") ?? el.closest(".me-root") ?? el;
|
|
320
324
|
// 허브 — 크롬(프레임/툴바/팝), 본문 래퍼, 에디터. 리프는 변수를
|
|
321
325
|
// 자체 정의하지 않으므로 여기에만 박으면 상속으로 전부 도달한다
|
|
322
326
|
const hubs = new Set([scope]);
|
package/dist/theme.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theme.js","sourceRoot":"","sources":["../src/theme.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"theme.js","sourceRoot":"","sources":["../src/theme.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decoration.d.ts","sourceRoot":"","sources":["../../src/view/decoration.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAmB,MAAM,wBAAwB,CAAC;AAE1E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"decoration.d.ts","sourceRoot":"","sources":["../../src/view/decoration.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAmB,MAAM,wBAAwB,CAAC;AAE1E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAIjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AA6N9C;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,UAAU,EAAE,EACjB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,SAAS,UAAU,EAAE,GAC3B,UAAU,EAAE,CAed"}
|
package/dist/view/decoration.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { docOrderCmp } from "../state/selection.js";
|
|
1
2
|
import { samePath } from "../commands.js";
|
|
2
3
|
/**
|
|
3
4
|
* 데코레이션 적용 — 렌더 트리 위의 순수 변환.
|
|
@@ -12,11 +13,6 @@ import { samePath } from "../commands.js";
|
|
|
12
13
|
*/
|
|
13
14
|
/** 경로를 Map 키로 — "0,1,2" 문자열 */
|
|
14
15
|
const keyOf = (p) => p.join(",");
|
|
15
|
-
/** Point가 blockPath 블록 안의 텍스트 좌표인지 — 끝 자식 인덱스 제외 검사 */
|
|
16
|
-
function inBlock(p, blockPath) {
|
|
17
|
-
return (p.path.length === blockPath.length + 1 &&
|
|
18
|
-
samePath(p.path.slice(0, -1), blockPath));
|
|
19
|
-
}
|
|
20
16
|
/** 블록 안 Point → 플랫 문자 오프셋 (blockTextOffset과 동일 규약) */
|
|
21
17
|
function flatOffset(block, p) {
|
|
22
18
|
const tIdx = p.path[p.path.length - 1] ?? 0;
|
|
@@ -115,11 +111,13 @@ function decoSplit(rn, decos) {
|
|
|
115
111
|
};
|
|
116
112
|
return rebuild(rn);
|
|
117
113
|
}
|
|
114
|
+
// 문서 순서 비교는 selection.ts의 docOrderCmp를 쓴다 — 컨테이너 경계
|
|
115
|
+
// 포인트({P,k})를 "자식 k 앞"으로 해석하는 혼합 깊이 비교자
|
|
118
116
|
/**
|
|
119
117
|
* 렌더 트리 재귀 적용 — 노드 데코 병합 + 텍스트블록 자식에 인라인 데코.
|
|
120
118
|
* children[i]는 source.content[i]와 1:1이라 인덱스 정렬로 내려간다.
|
|
121
119
|
*/
|
|
122
|
-
function applyNode(rn, schema, nodeIdx,
|
|
120
|
+
function applyNode(rn, schema, nodeIdx, inlineDecos) {
|
|
123
121
|
let out = rn;
|
|
124
122
|
const nd = nodeIdx.get(keyOf(rn.path));
|
|
125
123
|
if (nd)
|
|
@@ -129,16 +127,38 @@ function applyNode(rn, schema, nodeIdx, inlineIdx) {
|
|
|
129
127
|
const isTextblock = kids.length > 0 &&
|
|
130
128
|
kids.every((c) => c.type === "text" || schema.isInline(c.type));
|
|
131
129
|
if (isTextblock && out.children?.length) {
|
|
132
|
-
// 이
|
|
133
|
-
|
|
130
|
+
// 이 블록과 겹치는 inline 데코를 플랫 오프셋으로 정규화한다.
|
|
131
|
+
// 양 끝점 블록은 각각 끝까지/처음부터 클립하고, 사이에 낀 블록은
|
|
132
|
+
// 전체가 덮인다 — 끝점에만 인덱싱하면 3블록 이상 범위의 중간이
|
|
133
|
+
// 빈 채로 렌더된다 (PM Decoration.inline 관례)
|
|
134
|
+
const total = kids.reduce((n, c) => n + (c.text?.length ?? 0), 0);
|
|
134
135
|
const flat = [];
|
|
135
|
-
|
|
136
|
+
// 블록 안 포인트 → 플랫 오프셋. 컨테이너 경계 포인트({block,k})의
|
|
137
|
+
// offset은 자식 인덱스이므로 리프 포인트와 다르게 해석한다
|
|
138
|
+
const pointFlat = (p) => {
|
|
139
|
+
if (samePath(p.path, rn.path)) {
|
|
140
|
+
let n = 0;
|
|
141
|
+
for (let i = 0; i < Math.min(p.offset, kids.length); i++) {
|
|
142
|
+
n += kids[i].text?.length ?? 0;
|
|
143
|
+
}
|
|
144
|
+
return n;
|
|
145
|
+
}
|
|
146
|
+
return flatOffset(src, p);
|
|
147
|
+
};
|
|
148
|
+
const bStart = { path: rn.path, offset: 0 };
|
|
149
|
+
const bEnd = { path: rn.path, offset: kids.length };
|
|
150
|
+
for (const d of inlineDecos) {
|
|
136
151
|
if (d.type !== "inline")
|
|
137
152
|
continue;
|
|
138
|
-
let
|
|
139
|
-
let
|
|
140
|
-
if (
|
|
141
|
-
[
|
|
153
|
+
let fp = d.from;
|
|
154
|
+
let tp = d.to;
|
|
155
|
+
if (docOrderCmp(fp, tp) > 0)
|
|
156
|
+
[fp, tp] = [tp, fp];
|
|
157
|
+
if (docOrderCmp(tp, bStart) <= 0 || docOrderCmp(fp, bEnd) >= 0) {
|
|
158
|
+
continue;
|
|
159
|
+
}
|
|
160
|
+
const s = docOrderCmp(fp, bStart) <= 0 ? 0 : pointFlat(fp);
|
|
161
|
+
const e = docOrderCmp(tp, bEnd) >= 0 ? total : Math.min(pointFlat(tp), total);
|
|
142
162
|
if (e > s)
|
|
143
163
|
flat.push({ s, e, attrs: d.attrs });
|
|
144
164
|
}
|
|
@@ -168,7 +188,7 @@ function applyNode(rn, schema, nodeIdx, inlineIdx) {
|
|
|
168
188
|
if (out.children && kids.length === out.children.length) {
|
|
169
189
|
out = {
|
|
170
190
|
...out,
|
|
171
|
-
children: out.children.map((c) => applyNode(c, schema, nodeIdx,
|
|
191
|
+
children: out.children.map((c) => applyNode(c, schema, nodeIdx, inlineDecos)),
|
|
172
192
|
};
|
|
173
193
|
}
|
|
174
194
|
return out;
|
|
@@ -181,34 +201,18 @@ export function applyDecorations(rns, schema, decos) {
|
|
|
181
201
|
if (!decos.length)
|
|
182
202
|
return rns;
|
|
183
203
|
const nodeIdx = new Map();
|
|
184
|
-
const
|
|
204
|
+
const inlineDecos = [];
|
|
185
205
|
for (const d of decos) {
|
|
186
206
|
if (d.type === "node") {
|
|
187
207
|
const k = keyOf(d.path);
|
|
188
208
|
nodeIdx.set(k, [...(nodeIdx.get(k) ?? []), d.attrs]);
|
|
189
209
|
}
|
|
190
210
|
else {
|
|
191
|
-
// inline 데코는
|
|
192
|
-
//
|
|
193
|
-
|
|
194
|
-
const toB = d.to.path.slice(0, -1);
|
|
195
|
-
if (samePath(fromB, toB)) {
|
|
196
|
-
const k = keyOf(fromB);
|
|
197
|
-
inlineIdx.set(k, [...(inlineIdx.get(k) ?? []), d]);
|
|
198
|
-
}
|
|
199
|
-
else {
|
|
200
|
-
// 시작 블록의 끝까지 + 끝 블록의 처음까지로 분할
|
|
201
|
-
inlineIdx.set(keyOf(fromB), [
|
|
202
|
-
...(inlineIdx.get(keyOf(fromB)) ?? []),
|
|
203
|
-
{ ...d, to: { path: d.from.path, offset: Number.MAX_SAFE_INTEGER } },
|
|
204
|
-
]);
|
|
205
|
-
inlineIdx.set(keyOf(toB), [
|
|
206
|
-
...(inlineIdx.get(keyOf(toB)) ?? []),
|
|
207
|
-
{ ...d, from: { path: d.to.path, offset: 0 } },
|
|
208
|
-
]);
|
|
209
|
-
}
|
|
211
|
+
// inline 데코는 블록 경계를 넘을 수 있다 — 각 텍스트블록이
|
|
212
|
+
// 자기 커버 구간을 계산한다 (applyNode에서 클립)
|
|
213
|
+
inlineDecos.push(d);
|
|
210
214
|
}
|
|
211
215
|
}
|
|
212
|
-
return rns.map((rn) => applyNode(rn, schema, nodeIdx,
|
|
216
|
+
return rns.map((rn) => applyNode(rn, schema, nodeIdx, inlineDecos));
|
|
213
217
|
}
|
|
214
218
|
//# sourceMappingURL=decoration.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decoration.js","sourceRoot":"","sources":["../../src/view/decoration.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG1C;;;;;;;;;;GAUG;AAEH,+BAA+B;AAC/B,MAAM,KAAK,GAAG,CAAC,CAAoB,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAEpD,
|
|
1
|
+
{"version":3,"file":"decoration.js","sourceRoot":"","sources":["../../src/view/decoration.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hook-ctx.d.ts","sourceRoot":"","sources":["../../src/view/hook-ctx.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EACV,YAAY,EACZ,WAAW,EACX,UAAU,EACV,QAAQ,EACT,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"hook-ctx.d.ts","sourceRoot":"","sources":["../../src/view/hook-ctx.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EACV,YAAY,EACZ,WAAW,EACX,UAAU,EACV,QAAQ,EACT,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAW3D;;;;GAIG;AAEH;;;GAGG;AACH,wBAAgB,QAAQ,CACtB,MAAM,EAAE,MAAM,EACd,CAAC,EAAE;IAAE,MAAM,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,EAClC,EAAE,EAAE,WAAW,GACd,YAAY,GAAG,IAAI,CAuCrB;AAED,yCAAyC;AACzC,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,WAAW,GAAG,QAAQ,CAQ5E;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,OAAO,GAAG,SAAS,GACzC,OAAO,CAET;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,YAAY,GAAG,IAAI,EACvB,MAAM,EAAE,WAAW,CAAC,QAAQ,CAAC,EAC7B,EAAE,EAAE,KAAK,GAAG,IAAI,GACf,OAAO,CAKT"}
|
package/dist/view/hook-ctx.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { nodeAt } from "../model/traverse.js";
|
|
2
|
-
import {
|
|
2
|
+
import { leafPoint } from "../state/apply.js";
|
|
3
|
+
import { blockText, blockTextOffset, blockTextPoint, pointBlockPath, samePath, } from "../commands.js";
|
|
3
4
|
/**
|
|
4
5
|
* 입력 훅(InputHooks) 컨텍스트 팩토리 + 훅 순회 유틸 —
|
|
5
6
|
* input.ts에서 분리. 브라우저 이벤트를 기능 훅이 받는 컨텍스트
|
|
@@ -10,14 +11,21 @@ import { blockText, blockTextOffset, blockTextPoint } from "../commands.js";
|
|
|
10
11
|
* 걸치는 범위는 훅이 받지 않는다 (BlockTextCtx 계약).
|
|
11
12
|
*/
|
|
12
13
|
export function blockCtx(editor, r, tr) {
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
const doc = editor.state.doc;
|
|
15
|
+
// 경계 포인트(빈 블록의 {path:블록,offset:0}, doc/li 경계 등)도
|
|
16
|
+
// 안쪽 블록으로 내려 해석한다 — path.slice(0,-1)로 리프 전제를 두면
|
|
17
|
+
// 경계 포인트의 블록이 doc/컨테이너로 오인돼 훅 전체가 죽는다
|
|
18
|
+
const blockPath = pointBlockPath(doc, editor.state.schema, r.anchor);
|
|
19
|
+
const fBlock = pointBlockPath(doc, editor.state.schema, r.focus);
|
|
20
|
+
if (!blockPath || !fBlock || !samePath(blockPath, fBlock))
|
|
16
21
|
return null;
|
|
17
|
-
|
|
18
|
-
const block = nodeAt(editor.state.doc, blockPath);
|
|
22
|
+
const block = nodeAt(doc, blockPath);
|
|
19
23
|
if (!block)
|
|
20
24
|
return null;
|
|
25
|
+
// 훅에 넘기는 끝점은 리프 좌표로 정규화 — offsetOf/tr 스텝 양쪽이
|
|
26
|
+
// 같은 위치를 가리킨다 ({블록,k} 경계는 자식 k 앞과 같다)
|
|
27
|
+
const anchor = leafPoint(doc, r.anchor);
|
|
28
|
+
const focus = leafPoint(doc, r.focus);
|
|
21
29
|
return {
|
|
22
30
|
state: editor.state,
|
|
23
31
|
tr,
|
|
@@ -25,10 +33,23 @@ export function blockCtx(editor, r, tr) {
|
|
|
25
33
|
block,
|
|
26
34
|
blockPath,
|
|
27
35
|
text: blockText(block),
|
|
28
|
-
anchor
|
|
29
|
-
focus
|
|
36
|
+
anchor,
|
|
37
|
+
focus,
|
|
30
38
|
charPoint: (off) => blockTextPoint(block, blockPath, off),
|
|
31
|
-
offsetOf: (p) =>
|
|
39
|
+
offsetOf: (p) => {
|
|
40
|
+
// {blockPath,k} 경계는 자식 k 앞 — blockTextOffset은 p.path의
|
|
41
|
+
// 마지막 요소를 자식 인덱스로 읽으므로 경계 포인트를 따로 잡는다
|
|
42
|
+
const q = leafPoint(doc, p);
|
|
43
|
+
if (samePath(q.path, blockPath)) {
|
|
44
|
+
const kids = block.content ?? [];
|
|
45
|
+
let off = 0;
|
|
46
|
+
for (let i = 0; i < Math.min(q.offset, kids.length); i++) {
|
|
47
|
+
off += kids[i].text?.length ?? 0;
|
|
48
|
+
}
|
|
49
|
+
return off;
|
|
50
|
+
}
|
|
51
|
+
return blockTextOffset(block, q);
|
|
52
|
+
},
|
|
32
53
|
};
|
|
33
54
|
}
|
|
34
55
|
/** 붙여넣기 훅용 범위 컨텍스트 — tr의 디스패치를 훅에 넘긴다 */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hook-ctx.js","sourceRoot":"","sources":["../../src/view/hook-ctx.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"hook-ctx.js","sourceRoot":"","sources":["../../src/view/hook-ctx.ts"],"names":[],"mappings":"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"}
|
package/dist/view/ime.d.ts
CHANGED
|
@@ -43,6 +43,12 @@ export type ImeGate = "swallow" | "prevent" | "proceed";
|
|
|
43
43
|
export interface ImeSession {
|
|
44
44
|
/** 조합 세션이 살아있는가 — keydown/paste/drop/selectionchange 가드 */
|
|
45
45
|
readonly active: boolean;
|
|
46
|
+
/**
|
|
47
|
+
* compositionend 이후 흡수 트랜잭션 대기 중인가 — 이 창의 DOM은
|
|
48
|
+
* 브라우저가 쓴 조합 텍스트를 품고 있으므로 어댑터의 DOM 셀렉션
|
|
49
|
+
* 복원이 들어오면 흡수가 잘못된 위치를 읽는다
|
|
50
|
+
*/
|
|
51
|
+
readonly absorbing: boolean;
|
|
46
52
|
/** compositionstart — 남은 플러시 예약을 취소하고 새 세션을 연다 */
|
|
47
53
|
start(): void;
|
|
48
54
|
/** compositionend — 커밋 확정. 흡수를 다음 태스크로 예약한다 */
|
package/dist/view/ime.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ime.d.ts","sourceRoot":"","sources":["../../src/view/ime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAIlD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAInD;;;;;;;;;;;;;;;;;;GAkBG;AAEH,yCAAyC;AACzC,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,EAAE,WAAW,CAAC;IACzB,0CAA0C;IAC1C,QAAQ,CAAC,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACjC,4CAA4C;IAC5C,UAAU,IAAI;QAAE,MAAM,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,KAAK,CAAA;KAAE,GAAG,IAAI,CAAC;CACtD;AAED;;;;;;GAMG;AACH,MAAM,MAAM,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAExD,uCAAuC;AACvC,MAAM,WAAW,UAAU;IACzB,2DAA2D;IAC3D,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,kDAAkD;IAClD,KAAK,IAAI,IAAI,CAAC;IACd,+CAA+C;IAC/C,GAAG,IAAI,IAAI,CAAC;IACZ,iDAAiD;IACjD,IAAI,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE;QAAE,MAAM,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,KAAK,CAAA;KAAE,GAAG,IAAI,GAAG,OAAO,CAAC;IAC7E;;;OAGG;IACH,UAAU,CACR,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE;QAAE,MAAM,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,KAAK,CAAA;KAAE,GAAG,IAAI,GAC7C,OAAO,CAAC;IACX,gCAAgC;IAChC,OAAO,IAAI,IAAI,CAAC;CACjB;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,GAAG,UAAU,
|
|
1
|
+
{"version":3,"file":"ime.d.ts","sourceRoot":"","sources":["../../src/view/ime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAIlD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAInD;;;;;;;;;;;;;;;;;;GAkBG;AAEH,yCAAyC;AACzC,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,EAAE,WAAW,CAAC;IACzB,0CAA0C;IAC1C,QAAQ,CAAC,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACjC,4CAA4C;IAC5C,UAAU,IAAI;QAAE,MAAM,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,KAAK,CAAA;KAAE,GAAG,IAAI,CAAC;CACtD;AAED;;;;;;GAMG;AACH,MAAM,MAAM,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAExD,uCAAuC;AACvC,MAAM,WAAW,UAAU;IACzB,2DAA2D;IAC3D,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB;;;;OAIG;IACH,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,kDAAkD;IAClD,KAAK,IAAI,IAAI,CAAC;IACd,+CAA+C;IAC/C,GAAG,IAAI,IAAI,CAAC;IACZ,iDAAiD;IACjD,IAAI,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE;QAAE,MAAM,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,KAAK,CAAA;KAAE,GAAG,IAAI,GAAG,OAAO,CAAC;IAC7E;;;OAGG;IACH,UAAU,CACR,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE;QAAE,MAAM,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,KAAK,CAAA;KAAE,GAAG,IAAI,GAC7C,OAAO,CAAC;IACX,gCAAgC;IAChC,OAAO,IAAI,IAAI,CAAC;CACjB;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,GAAG,UAAU,CA4L1D"}
|
package/dist/view/ime.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { nodeAt } from "../model/traverse.js";
|
|
2
2
|
import { pathEq } from "../state/apply.js";
|
|
3
|
-
import { point, textSelection } from "../state/selection.js";
|
|
3
|
+
import { normalizeRange, point, textSelection } from "../state/selection.js";
|
|
4
4
|
import { domEndsWith, topBlockKey } from "./caret.js";
|
|
5
5
|
import { PATH_ATTR } from "./dom.js";
|
|
6
6
|
/**
|
|
@@ -94,6 +94,9 @@ export function createImeSession(host) {
|
|
|
94
94
|
get active() {
|
|
95
95
|
return composing;
|
|
96
96
|
},
|
|
97
|
+
get absorbing() {
|
|
98
|
+
return pendingAbsorb;
|
|
99
|
+
},
|
|
97
100
|
start() {
|
|
98
101
|
// 이전 세션의 흡수 타이머가 남아있으면 취소한다 — 그대로 두면 새
|
|
99
102
|
// 조합 도중에 flushComposition이 composing을 해제하고 디스패치·
|
|
@@ -117,10 +120,13 @@ export function createImeSession(host) {
|
|
|
117
120
|
// DOM도 같은 범위를 지워 두 문서가 어긋나지 않게 한다 — 지우지
|
|
118
121
|
// 않으면 조합 첫 글자가 stale DOM 위에 네이티브 삭제를 일으킨다
|
|
119
122
|
el.ownerDocument.getSelection()?.deleteFromDocument?.();
|
|
123
|
+
// 역방향 선택(anchor>focus)이면 raw anchor는 삭제 후 무효 좌표다 —
|
|
124
|
+
// 범위 앞점이 붕괴 지점이다
|
|
125
|
+
const head = normalizeRange(sel).anchor;
|
|
120
126
|
editor.dispatch(editor.state
|
|
121
127
|
.tr()
|
|
122
128
|
.delete({ anchor: sel.anchor, focus: sel.focus })
|
|
123
|
-
.setSelection(textSelection(
|
|
129
|
+
.setSelection(textSelection(head))
|
|
124
130
|
.setMeta("history.group", "type")
|
|
125
131
|
.setMeta("ime", true));
|
|
126
132
|
// 양쪽 블록 DOM이 브라우저에 직접 바뀌었다 — 리렌더 시 리컨실이
|
|
@@ -129,7 +135,7 @@ export function createImeSession(host) {
|
|
|
129
135
|
if (k != null)
|
|
130
136
|
dirtyPaths.add(k);
|
|
131
137
|
}
|
|
132
|
-
compStart =
|
|
138
|
+
compStart = head;
|
|
133
139
|
}
|
|
134
140
|
},
|
|
135
141
|
end() {
|
package/dist/view/ime.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ime.js","sourceRoot":"","sources":["../../src/view/ime.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"ime.js","sourceRoot":"","sources":["../../src/view/ime.ts"],"names":[],"mappings":"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"}
|
package/dist/view/input.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../../src/view/input.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../../src/view/input.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AA6BlD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,WAAW,kBAAkB;IACjC,MAAM,IAAI,IAAI,CAAC;IACf,yCAAyC;IACzC,gBAAgB,IAAI,IAAI,CAAC;IACzB,4BAA4B;IAC5B,gBAAgB,IAAI,IAAI,CAAC;IACzB;;;;;;OAMG;IACH,QAAQ,CAAC,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAClC;AAED,wBAAgB,eAAe,CAC7B,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,WAAW,GACd,kBAAkB,CAqtBpB;AAGD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC"}
|
package/dist/view/input.js
CHANGED
|
@@ -8,6 +8,7 @@ import { blockCtx, dispatchFiles, rangeCtx } from "./hook-ctx.js";
|
|
|
8
8
|
import { createImeSession } from "./ime.js";
|
|
9
9
|
import { lineNav } from "./line-nav.js";
|
|
10
10
|
import { nodeSelectionBeforeInput, nodeSelectionKeydown, trySelectAtom, } from "./node-selection.js";
|
|
11
|
+
import { blockHasContent, pointBlockPath } from "../commands.js";
|
|
11
12
|
import { dispatchFormatInput, LINE_NAV_KEYS, normalizeKey } from "./keys.js";
|
|
12
13
|
export function bindEditorInput(editor, el) {
|
|
13
14
|
const dirtyPaths = new Set();
|
|
@@ -52,6 +53,14 @@ export function bindEditorInput(editor, el) {
|
|
|
52
53
|
// focusin에서 한 번에 동기화한다
|
|
53
54
|
let pendingSel = false;
|
|
54
55
|
const restoreSelection = () => {
|
|
56
|
+
// compositionend~흡수 사이 창에는 DOM이 브라우저가 쓴 조합
|
|
57
|
+
// 텍스트를 품고 있다 — 지연된(비동기) 복원이 이 창에 떨어지면
|
|
58
|
+
// 캐럿을 되돌려 흡수가 목표 홀더를 놓친다. 흡수 뒤의 디스패치가
|
|
59
|
+
// 다시 복원을 트리거하므로 이 창만 건너뛴다 — 조합 중(composing)엔
|
|
60
|
+
// 우리 트랜잭션(크로스-블록 선택 선삭제 등)이 DOM을 바꾸므로
|
|
61
|
+
// 복원이 필요하다
|
|
62
|
+
if (ime.absorbing)
|
|
63
|
+
return;
|
|
55
64
|
const sel = editor.state.selection;
|
|
56
65
|
// 포커스가 에디터 밖의 다른 요소(찾기 바·팝오버 입력)에 잡혀
|
|
57
66
|
// 있으면 DOM 셀렉션을 건드리지 않는다 — Blink는 contenteditable
|
|
@@ -207,10 +216,12 @@ export function bindEditorInput(editor, el) {
|
|
|
207
216
|
case "insertLineBreak": {
|
|
208
217
|
e.preventDefault();
|
|
209
218
|
const r = normalizeRange(sel);
|
|
210
|
-
// 분기 판단은 삭제 전 문서의 캐럿 블록 기준
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
const
|
|
219
|
+
// 분기 판단은 삭제 전 문서의 캐럿 블록 기준 — 경계 포인트
|
|
220
|
+
// (빈 블록의 {path:블록,offset:0} 관례)도 안쪽 블록으로 내려
|
|
221
|
+
// 해석해야 빈 리스트 아이템의 Enter가 lift로 잡힌다
|
|
222
|
+
const blockPath = pointBlockPath(editor.state.doc, editor.state.schema, r.anchor);
|
|
223
|
+
const parentPath = blockPath?.slice(0, -1);
|
|
224
|
+
const parent = parentPath?.length
|
|
214
225
|
? nodeAt(editor.state.doc, parentPath)
|
|
215
226
|
: undefined;
|
|
216
227
|
const pspec = parent
|
|
@@ -238,11 +249,13 @@ export function bindEditorInput(editor, el) {
|
|
|
238
249
|
}
|
|
239
250
|
}
|
|
240
251
|
if (!consumed) {
|
|
241
|
-
if (pspec?.listItem) {
|
|
242
|
-
// 리스트 아이템 — 빈 아이템이면 리스트 탈출, 아니면 아이템
|
|
252
|
+
if (parentPath && pspec?.listItem) {
|
|
253
|
+
// 리스트 아이템 — 빈 아이템이면 리스트 탈출, 아니면 아이템 분할.
|
|
254
|
+
// 텍스트 길이만 보면 멘션·hardBreak만 담은 아이템이
|
|
255
|
+
// "비었다"로 오판돼 Enter에 내용이 통째로 리프트된다
|
|
243
256
|
const kids = parent.content ?? [];
|
|
244
257
|
const empty = kids.length === 1 &&
|
|
245
|
-
!(kids[0]
|
|
258
|
+
!blockHasContent(editor.state.schema, kids[0]);
|
|
246
259
|
if (empty) {
|
|
247
260
|
tr.liftItem(parentPath);
|
|
248
261
|
}
|
|
@@ -521,7 +534,12 @@ export function bindEditorInput(editor, el) {
|
|
|
521
534
|
const t = e.target;
|
|
522
535
|
if (!(t instanceof Element) || !t.hasAttribute(PATH_ATTR))
|
|
523
536
|
return;
|
|
524
|
-
|
|
537
|
+
// .me-editor 자신은 data-me-path=""다 — "".split(",") → [NaN]이
|
|
538
|
+
// 아니라 [0]으로 매핑돼 배경 클릭이 첫 블록으로 오인된다
|
|
539
|
+
const raw = t.getAttribute(PATH_ATTR) ?? "";
|
|
540
|
+
const path = raw === "" ? [] : raw.split(",").map(Number);
|
|
541
|
+
if (!path.length)
|
|
542
|
+
return;
|
|
525
543
|
const node = nodeAt(editor.state.doc, path);
|
|
526
544
|
const spec = node && editor.state.schema.nodeSpec(node.type);
|
|
527
545
|
if (spec?.checkbox) {
|
|
@@ -551,6 +569,13 @@ export function bindEditorInput(editor, el) {
|
|
|
551
569
|
const onPaste = (e) => {
|
|
552
570
|
if (ime.active || !editor.editable)
|
|
553
571
|
return;
|
|
572
|
+
// paste 이벤트는 sanitizer·훅 소비 전 원본 페이로드로 발행한다 —
|
|
573
|
+
// 리스너(로깅·커스텀 변환)가 실제 입력을 관측할 수 있는 유일한 지점
|
|
574
|
+
editor.emit("paste", {
|
|
575
|
+
html: e.clipboardData?.getData("text/html") ?? "",
|
|
576
|
+
text: e.clipboardData?.getData("text/plain") ?? "",
|
|
577
|
+
event: e,
|
|
578
|
+
});
|
|
554
579
|
// preventDefault하면 beforeinput이 오지 않는다
|
|
555
580
|
if (dispatchFiles(editor, e.clipboardData, "paste", null)) {
|
|
556
581
|
e.preventDefault();
|
|
@@ -615,10 +640,27 @@ export function bindEditorInput(editor, el) {
|
|
|
615
640
|
};
|
|
616
641
|
// 포커스가 에디터로 돌아오면 건너뛴 DOM 셀렉션을 동기화한다 —
|
|
617
642
|
// 찾기 바에서 내비게이션한 뒤 닫히면 마지막 매치에 캐럿이 선다
|
|
618
|
-
const onFocusIn = () => {
|
|
643
|
+
const onFocusIn = (e) => {
|
|
619
644
|
if (pendingSel)
|
|
620
645
|
restoreSelection();
|
|
646
|
+
// focus는 "밖→안" 진입에서만 한 번 — 자식 간 이동(노드 뷰 내부
|
|
647
|
+
// 입력 등)은 focusin이 다시 떠도 focus 이벤트를 중복 발행하지 않는다
|
|
648
|
+
if (!focused) {
|
|
649
|
+
focused = true;
|
|
650
|
+
editor.emit("focus", { event: e });
|
|
651
|
+
}
|
|
652
|
+
};
|
|
653
|
+
// 포커스가 에디터 밖으로 나갈 때 blur — relatedTarget이 안쪽이면
|
|
654
|
+
// 자식 간 이동이라 무시한다. 협업 캐럿 표시 같은 외부 리스너가
|
|
655
|
+
// 이 이벤트로 리모트 커서를 지운다
|
|
656
|
+
const onFocusOut = (e) => {
|
|
657
|
+
const next = e.relatedTarget;
|
|
658
|
+
if (next && el.contains(next))
|
|
659
|
+
return;
|
|
660
|
+
focused = false;
|
|
661
|
+
editor.emit("blur", { event: e });
|
|
621
662
|
};
|
|
663
|
+
let focused = false;
|
|
622
664
|
el.addEventListener("beforeinput", onBeforeInput);
|
|
623
665
|
el.addEventListener("keydown", onKeydown);
|
|
624
666
|
el.addEventListener("mousedown", onMouseDown);
|
|
@@ -628,6 +670,7 @@ export function bindEditorInput(editor, el) {
|
|
|
628
670
|
el.addEventListener("compositionstart", ime.start);
|
|
629
671
|
el.addEventListener("compositionend", ime.end);
|
|
630
672
|
el.addEventListener("focusin", onFocusIn);
|
|
673
|
+
el.addEventListener("focusout", onFocusOut);
|
|
631
674
|
el.ownerDocument.addEventListener("selectionchange", onSelectionChange);
|
|
632
675
|
// 오버레이 초기 페인트 — React/Vue2처럼 마운트 layoutEffect가
|
|
633
676
|
// 바인딩보다 먼저 도는 렌더러에서도 첫 커밋 전에 오버레이가
|
|
@@ -649,6 +692,7 @@ export function bindEditorInput(editor, el) {
|
|
|
649
692
|
el.removeEventListener("compositionstart", ime.start);
|
|
650
693
|
el.removeEventListener("compositionend", ime.end);
|
|
651
694
|
el.removeEventListener("focusin", onFocusIn);
|
|
695
|
+
el.removeEventListener("focusout", onFocusOut);
|
|
652
696
|
el.ownerDocument.removeEventListener("selectionchange", onSelectionChange);
|
|
653
697
|
},
|
|
654
698
|
restoreSelection,
|