@moda-editor/core 0.3.1 → 0.3.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/commands.d.ts.map +1 -1
- package/dist/commands.js +14 -1
- package/dist/commands.js.map +1 -1
- package/dist/editor/editor.d.ts.map +1 -1
- package/dist/editor/editor.js +3 -1
- package/dist/editor/editor.js.map +1 -1
- package/dist/features/code-block.d.ts.map +1 -1
- package/dist/features/code-block.js +10 -2
- package/dist/features/code-block.js.map +1 -1
- package/dist/features/code-edit.d.ts.map +1 -1
- package/dist/features/code-edit.js.map +1 -1
- package/dist/features/code-format.js.map +1 -1
- package/dist/features/hard-break.d.ts.map +1 -1
- package/dist/features/hard-break.js +2 -0
- package/dist/features/hard-break.js.map +1 -1
- package/dist/features/heading.d.ts.map +1 -1
- package/dist/features/heading.js +3 -1
- package/dist/features/heading.js.map +1 -1
- package/dist/features/horizontal-rule.d.ts.map +1 -1
- package/dist/features/horizontal-rule.js.map +1 -1
- package/dist/features/image.d.ts.map +1 -1
- package/dist/features/image.js.map +1 -1
- package/dist/features/link.d.ts.map +1 -1
- package/dist/features/link.js.map +1 -1
- package/dist/features/marks.d.ts.map +1 -1
- package/dist/features/marks.js +1 -1
- package/dist/features/marks.js.map +1 -1
- package/dist/features/search.d.ts.map +1 -1
- package/dist/features/search.js +1 -7
- package/dist/features/search.js.map +1 -1
- package/dist/features/table.d.ts.map +1 -1
- package/dist/features/table.js +30 -7
- package/dist/features/table.js.map +1 -1
- package/dist/history.d.ts.map +1 -1
- package/dist/history.js.map +1 -1
- package/dist/index.d.ts +6 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/model/node.d.ts.map +1 -1
- package/dist/model/node.js +1 -2
- package/dist/model/node.js.map +1 -1
- package/dist/model/schema.d.ts +7 -0
- package/dist/model/schema.d.ts.map +1 -1
- package/dist/model/schema.js.map +1 -1
- package/dist/model/traverse.d.ts +10 -3
- package/dist/model/traverse.d.ts.map +1 -1
- package/dist/model/traverse.js +13 -5
- package/dist/model/traverse.js.map +1 -1
- package/dist/parse/html.d.ts.map +1 -1
- package/dist/parse/html.js +28 -1
- package/dist/parse/html.js.map +1 -1
- package/dist/presets/markdown-parse.d.ts.map +1 -1
- package/dist/presets/markdown-parse.js +9 -0
- package/dist/presets/markdown-parse.js.map +1 -1
- package/dist/presets/markdown.d.ts.map +1 -1
- package/dist/presets/markdown.js +7 -6
- package/dist/presets/markdown.js.map +1 -1
- package/dist/presets/starter.d.ts.map +1 -1
- package/dist/presets/starter.js.map +1 -1
- package/dist/state/apply.d.ts.map +1 -1
- package/dist/state/apply.js +1 -3
- package/dist/state/apply.js.map +1 -1
- package/dist/state/input-rules.d.ts.map +1 -1
- package/dist/state/input-rules.js +4 -0
- package/dist/state/input-rules.js.map +1 -1
- package/dist/state/insert-ops.d.ts.map +1 -1
- package/dist/state/insert-ops.js +9 -2
- 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.map +1 -1
- package/dist/state/navigate.d.ts.map +1 -1
- package/dist/state/navigate.js +14 -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 +12 -1
- package/dist/state/resolve-insert.js.map +1 -1
- package/dist/styles.css +27 -12
- package/dist/theme.d.ts.map +1 -1
- package/dist/theme.js.map +1 -1
- package/dist/view/decoration.d.ts.map +1 -1
- package/dist/view/decoration.js +60 -44
- package/dist/view/decoration.js.map +1 -1
- package/dist/view/highlight-registry.d.ts.map +1 -1
- package/dist/view/highlight-registry.js.map +1 -1
- package/dist/view/ime.d.ts +1 -1
- package/dist/view/ime.d.ts.map +1 -1
- package/dist/view/ime.js +50 -11
- package/dist/view/ime.js.map +1 -1
- package/dist/view/input-beforeinput.d.ts +25 -0
- package/dist/view/input-beforeinput.d.ts.map +1 -0
- package/dist/view/input-beforeinput.js +330 -0
- package/dist/view/input-beforeinput.js.map +1 -0
- package/dist/view/input-keys.d.ts +25 -0
- package/dist/view/input-keys.d.ts.map +1 -0
- package/dist/view/input-keys.js +69 -0
- package/dist/view/input-keys.js.map +1 -0
- package/dist/view/input-pointer.d.ts +24 -0
- package/dist/view/input-pointer.d.ts.map +1 -0
- package/dist/view/input-pointer.js +96 -0
- package/dist/view/input-pointer.js.map +1 -0
- package/dist/view/input-selection.d.ts +41 -0
- package/dist/view/input-selection.d.ts.map +1 -0
- package/dist/view/input-selection.js +216 -0
- package/dist/view/input-selection.js.map +1 -0
- package/dist/view/input.d.ts +25 -30
- package/dist/view/input.d.ts.map +1 -1
- package/dist/view/input.js +36 -685
- package/dist/view/input.js.map +1 -1
- package/dist/view/mount.d.ts.map +1 -1
- package/dist/view/mount.js +20 -7
- package/dist/view/mount.js.map +1 -1
- package/dist/view/node-selection.d.ts.map +1 -1
- package/dist/view/node-selection.js +1 -3
- package/dist/view/node-selection.js.map +1 -1
- package/dist/view/render.d.ts.map +1 -1
- package/dist/view/render.js +10 -3
- package/dist/view/render.js.map +1 -1
- package/dist/widget/core.d.ts +37 -0
- package/dist/widget/core.d.ts.map +1 -0
- package/dist/widget/core.js +117 -0
- package/dist/widget/core.js.map +1 -0
- package/dist/widget/mount.d.ts +24 -0
- package/dist/widget/mount.d.ts.map +1 -0
- package/dist/widget/mount.js +45 -0
- package/dist/widget/mount.js.map +1 -0
- package/dist/widget/types.d.ts +44 -0
- package/dist/widget/types.d.ts.map +1 -0
- package/dist/widget/types.js +8 -0
- package/dist/widget/types.js.map +1 -0
- package/package.json +2 -6
package/dist/view/decoration.js
CHANGED
|
@@ -44,31 +44,13 @@ function mergeAttrs(base, decos) {
|
|
|
44
44
|
return out;
|
|
45
45
|
}
|
|
46
46
|
/**
|
|
47
|
-
* 텍스트
|
|
48
|
-
*
|
|
47
|
+
* 텍스트 리프(RenderNode.text 보유) 하나를 리프 상대 데코 구간으로
|
|
48
|
+
* 분할한다. 구간 경계를 모아 세그먼트를 만들고 데코가 덮는
|
|
49
|
+
* 세그먼트만 span.me-deco로 감싼다 — 리프 안쪽 분할이라 바깥의
|
|
50
|
+
* 자식 수·data-me-path 매핑은 불변이다.
|
|
49
51
|
*/
|
|
50
|
-
function
|
|
51
|
-
|
|
52
|
-
for (;;) {
|
|
53
|
-
if (cur.text != null)
|
|
54
|
-
return cur;
|
|
55
|
-
if (cur.children?.length === 1) {
|
|
56
|
-
cur = cur.children[0];
|
|
57
|
-
continue;
|
|
58
|
-
}
|
|
59
|
-
return null;
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* 텍스트 노드 하나에 걸린 데코로 RenderNode를 분할한다.
|
|
64
|
-
* 구간 경계를 모아 세그먼트를 만들고, 데코가 덮는 세그먼트만
|
|
65
|
-
* span.me-deco로 감싼다 — 홀더 안쪽이라 자식 수·매핑 불변.
|
|
66
|
-
*/
|
|
67
|
-
function decoSplit(rn, decos) {
|
|
68
|
-
const holder = textHolder(rn);
|
|
69
|
-
if (!holder)
|
|
70
|
-
return rn;
|
|
71
|
-
const text = holder.text ?? "";
|
|
52
|
+
function splitTextLeaf(leaf, decos) {
|
|
53
|
+
const text = leaf.text ?? "";
|
|
72
54
|
const len = text.length;
|
|
73
55
|
// 경계점 — 0/len과 겹치는 데코의 클립된 끝
|
|
74
56
|
const cuts = new Set([0, len]);
|
|
@@ -85,31 +67,65 @@ function decoSplit(rn, decos) {
|
|
|
85
67
|
const e = pts[i + 1];
|
|
86
68
|
const segText = text.slice(s, e);
|
|
87
69
|
const covering = decos.filter((d) => d.s <= s && d.e >= e);
|
|
88
|
-
|
|
89
|
-
|
|
70
|
+
children.push(covering.length
|
|
71
|
+
? {
|
|
72
|
+
tag: "span",
|
|
73
|
+
attrs: mergeAttrs({ class: "me-deco" }, covering.map((d) => d.attrs)),
|
|
74
|
+
text: segText,
|
|
75
|
+
path: [...leaf.path, i],
|
|
76
|
+
source: leaf.source,
|
|
77
|
+
}
|
|
78
|
+
: {
|
|
90
79
|
tag: "span",
|
|
91
80
|
text: segText,
|
|
92
|
-
path: [...
|
|
93
|
-
source:
|
|
81
|
+
path: [...leaf.path, i],
|
|
82
|
+
source: leaf.source,
|
|
94
83
|
});
|
|
95
|
-
|
|
84
|
+
}
|
|
85
|
+
return { ...leaf, text: undefined, children };
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* 텍스트 노드 하나의 렌더 결과에 데코를 적용한다.
|
|
89
|
+
*
|
|
90
|
+
* 텍스트 리프를 문서 순서로 순회하며 누적 오프셋을 매긴다 — 렌더
|
|
91
|
+
* 변환(마크 래퍼·코드블록의 .me-cl 줄/.me-tok·.me-ws 토큰 분할)로
|
|
92
|
+
* 한 텍스트 자식이 여러 리프로 쪼개져도 textContent 합은 원문과
|
|
93
|
+
* 같으므로 같은 플랫 오프셋 규약이 성립한다. 데코와 겹치는 리프만
|
|
94
|
+
* 세그먼트로 분할한다. 이전 구현은 "단일 자식 체인 끝의 홀더"만
|
|
95
|
+
* 찾아 토큰화된 홀더의 데코를 통째로 버렸다.
|
|
96
|
+
*/
|
|
97
|
+
function decoSplit(rn, decos) {
|
|
98
|
+
// st.base — 순회 중 누적 플랫 오프셋. 형제 배열 순회가 곧 문서 순서다
|
|
99
|
+
const walk = (node, st) => {
|
|
100
|
+
if (node.text != null) {
|
|
101
|
+
const s = st.base;
|
|
102
|
+
const len = node.text.length;
|
|
103
|
+
st.base += len;
|
|
104
|
+
// 이 리프 구간 [s, s+len)과 겹치는 데코를 리프 상대 좌표로 클립
|
|
105
|
+
const local = [];
|
|
106
|
+
for (const d of decos) {
|
|
107
|
+
const ls = Math.max(0, d.s - s);
|
|
108
|
+
const le = Math.min(len, d.e - s);
|
|
109
|
+
if (le > ls)
|
|
110
|
+
local.push({ s: ls, e: le, attrs: d.attrs });
|
|
111
|
+
}
|
|
112
|
+
return local.length ? splitTextLeaf(node, local) : node;
|
|
96
113
|
}
|
|
97
|
-
children
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
114
|
+
const kids = node.children;
|
|
115
|
+
if (!kids?.length)
|
|
116
|
+
return node; // bogus br·atom — 오프셋 기여 없음
|
|
117
|
+
let changed = false;
|
|
118
|
+
const next = kids.map((k) => {
|
|
119
|
+
const n = walk(k, st);
|
|
120
|
+
if (n !== k)
|
|
121
|
+
changed = true;
|
|
122
|
+
return n;
|
|
103
123
|
});
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
...node,
|
|
110
|
-
children: node.children.map((c) => rebuild(c)),
|
|
111
|
-
};
|
|
112
|
-
return rebuild(rn);
|
|
124
|
+
// 무변경 서브트리는 참조를 유지한다 — 어댑터의 shallow 비교가
|
|
125
|
+
// 데코 무관 구역의 리렌더를 건너뛰게 한다
|
|
126
|
+
return changed ? { ...node, children: next } : node;
|
|
127
|
+
};
|
|
128
|
+
return walk(rn, { base: 0 });
|
|
113
129
|
}
|
|
114
130
|
// 문서 순서 비교는 selection.ts의 docOrderCmp를 쓴다 — 컨테이너 경계
|
|
115
131
|
// 포인트({P,k})를 "자식 k 앞"으로 해석하는 혼합 깊이 비교자
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decoration.js","sourceRoot":"","sources":["../../src/view/decoration.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,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,sDAAsD;AACtD,SAAS,UAAU,CAAC,KAAiB,EAAE,CAAQ;IAC7C,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;IAC5C,IAAI,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC;IACnB,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC;IACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACjD,GAAG,IAAI,IAAI,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,0CAA0C;AAC1C,SAAS,UAAU,CACjB,IAAwC,EACxC,KAAiC;IAEjC,MAAM,GAAG,GAA2B,EAAE,GAAG,IAAI,EAAE,CAAC;IAChD,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YACvC,IAAI,CAAC,IAAI,IAAI;gBAAE,SAAS;YACxB,IAAI,CAAC,KAAK,OAAO,EAAE,CAAC;gBAClB,GAAG,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3D,CAAC;iBAAM,IAAI,CAAC,KAAK,OAAO,EAAE,CAAC;gBACzB,GAAG,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3D,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACb,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;
|
|
1
|
+
{"version":3,"file":"decoration.js","sourceRoot":"","sources":["../../src/view/decoration.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"highlight-registry.d.ts","sourceRoot":"","sources":["../../src/view/highlight-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;
|
|
1
|
+
{"version":3,"file":"highlight-registry.d.ts","sourceRoot":"","sources":["../../src/view/highlight-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAuDH;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,EAAE,EAAE,WAAW,EACf,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,SAAS,KAAK,EAAE,GACvB,IAAI,CAON;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI,CAO1D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"highlight-registry.js","sourceRoot":"","sources":["../../src/view/highlight-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAWH,kCAAkC;AAClC,MAAM,YAAY,GAAG,IAAI,OAAO,EAG7B,CAAC;AAEJ,SAAS,WAAW,CAAC,EAAe;IAClC,OACE,EAAE,CAAC,aAAa,CAAC,WAGlB,EAAE,GAAG,EAAE,UAAU,CAAC;AACrB,CAAC;AAED,SAAS,aAAa,CAAC,EAAe;IACpC,
|
|
1
|
+
{"version":3,"file":"highlight-registry.js","sourceRoot":"","sources":["../../src/view/highlight-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAWH,kCAAkC;AAClC,MAAM,YAAY,GAAG,IAAI,OAAO,EAG7B,CAAC;AAEJ,SAAS,WAAW,CAAC,EAAe;IAClC,OACE,EAAE,CAAC,aAAa,CAAC,WAGlB,EAAE,GAAG,EAAE,UAAU,CAAC;AACrB,CAAC;AAED,SAAS,aAAa,CAAC,EAAe;IACpC,OACE,EAAE,CAAC,aAAa,CAAC,WAElB,EAAE,SAAS,CAAC;AACf,CAAC;AAED,SAAS,MAAM,CACb,GAAa,EACb,IAAY;IAEZ,IAAI,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,CAAC,MAAM;QAAE,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC;IACzD,IAAI,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACzB,IAAI,CAAC,CAAC;QAAE,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC;IAC1C,OAAO,CAAC,CAAC;AACX,CAAC;AAED,4CAA4C;AAC5C,SAAS,KAAK,CAAC,GAAa,EAAE,EAAe,EAAE,IAAY;IACzD,MAAM,GAAG,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;IAC5B,MAAM,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC3C,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QAAE,OAAO;IACvB,MAAM,GAAG,GAAY,EAAE,CAAC;IACxB,KAAK,MAAM,MAAM,IAAI,CAAC,CAAC,MAAM,EAAE;QAAE,GAAG,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;IACrD,MAAM,CAAC,GAAG,aAAa,CAAC,EAAE,CAAC,CAAC;IAC5B,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC;QAAE,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;;QAC7C,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACxB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CACjC,EAAe,EACf,IAAY,EACZ,MAAwB;IAExB,MAAM,GAAG,GAAG,EAAE,CAAC,aAAa,CAAC;IAC7B,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;QAAE,OAAO;IACnD,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC5B,IAAI,MAAM,CAAC,MAAM;QAAE,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;;QAChC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAClB,KAAK,CAAC,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;AACvB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,EAAe;IAClD,MAAM,GAAG,GAAG,EAAE,CAAC,aAAa,CAAC;IAC7B,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACrC,IAAI,CAAC,MAAM;QAAE,OAAO;IACpB,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,MAAM,EAAE,CAAC;QAC/B,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;YAAE,KAAK,CAAC,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;IACzC,CAAC;AACH,CAAC"}
|
package/dist/view/ime.d.ts
CHANGED
|
@@ -52,7 +52,7 @@ export interface ImeSession {
|
|
|
52
52
|
/** compositionstart — 남은 플러시 예약을 취소하고 새 세션을 연다 */
|
|
53
53
|
start(): void;
|
|
54
54
|
/** compositionend — 커밋 확정. 흡수를 다음 태스크로 예약한다 */
|
|
55
|
-
end(): void;
|
|
55
|
+
end(e?: CompositionEvent): void;
|
|
56
56
|
/** beforeinput 게이트 — 조합 중 도착한 입력의 처리 방침을 결정한다 */
|
|
57
57
|
gate(e: InputEvent, domSel: {
|
|
58
58
|
anchor: Point;
|
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;;;;OAIG;IACH,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,kDAAkD;IAClD,KAAK,IAAI,IAAI,CAAC;IACd,+CAA+C;IAC/C,GAAG,
|
|
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,CAAC,CAAC,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAChC,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,CAwQ1D"}
|
package/dist/view/ime.js
CHANGED
|
@@ -26,6 +26,11 @@ export function createImeSession(host) {
|
|
|
26
26
|
// 한 번 더 보낸다(Safari 확정, Chromium도 비동기 커밋 경로가 있다) —
|
|
27
27
|
// 타이머보다 늦게 오면 에코를 구별하기 위해 종료 시각을 기록한다
|
|
28
28
|
let compEndedAt = 0;
|
|
29
|
+
// compositionend의 커밋 페이로드 — 늦은 에코는 이 문자열을 반복한다.
|
|
30
|
+
// "DOM 끝자락 일치"만으로는 커밋 직후 같은 문자를 재입력한 실제
|
|
31
|
+
// 키입력까지 에코로 삼키므로 페이로드 일치를 함께 요구한다.
|
|
32
|
+
// 페이로드를 못 읽는 환경(null)은 기존 판정으로 폴백한다
|
|
33
|
+
let compEndData = null;
|
|
29
34
|
/**
|
|
30
35
|
* composition 중 브라우저가 직접 바꾼 DOM을 doc에 흡수한다.
|
|
31
36
|
* 캐럿이 위치한 텍스트 홀더의 DOM 텍스트와 doc 텍스트를 공통
|
|
@@ -55,19 +60,39 @@ export function createImeSession(host) {
|
|
|
55
60
|
}
|
|
56
61
|
if (!focus || focus.path.length === 0)
|
|
57
62
|
return;
|
|
58
|
-
|
|
59
|
-
//
|
|
60
|
-
|
|
63
|
+
// 텍스트 홀더를 찾는다 — focus가 컨테이너 경계({[i],k})면 홀더가
|
|
64
|
+
// 아니라 블록이 걸리므로, 캐럿 기준 이웃 자식 경로로 내려간다.
|
|
65
|
+
// Chromium은 빈 문단(bogus br)의 조합 커밋 뒤 캐럿을 <p>의 자식
|
|
66
|
+
// 인덱스 경계에 놓는다 — 이 경로를 해석 못 하면 커밋이 통째로 유실된다
|
|
67
|
+
const holderPath = (p) => el.querySelector(`[${PATH_ATTR}="${p.join(",")}"]`);
|
|
68
|
+
const isTextHolder = (h) => !!h && !h.querySelector(`[${PATH_ATTR}]`);
|
|
69
|
+
let focusPath = focus.path;
|
|
70
|
+
let holder = holderPath(focusPath);
|
|
71
|
+
if (!isTextHolder(holder)) {
|
|
72
|
+
holder = null;
|
|
73
|
+
for (const i of [focus.offset - 1, focus.offset]) {
|
|
74
|
+
if (i < 0)
|
|
75
|
+
continue;
|
|
76
|
+
const p = [...focus.path, i];
|
|
77
|
+
const h = holderPath(p);
|
|
78
|
+
if (isTextHolder(h)) {
|
|
79
|
+
holder = h;
|
|
80
|
+
focusPath = p;
|
|
81
|
+
break;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
if (!holder)
|
|
61
86
|
return;
|
|
62
87
|
const domText = holder.textContent ?? "";
|
|
63
|
-
const docText = docTextAt(focus);
|
|
88
|
+
const docText = docTextAt({ path: focusPath, offset: focus.offset });
|
|
64
89
|
// 조합 리프의 doc이 시작 스냅샷과 다르면 대기 창에 외부(원격·
|
|
65
90
|
// 플러그인) 편집이 들어온 것 — DOM(스냅샷+커밋 텍스트) 기준 diff가
|
|
66
91
|
// 그 편집을 지우므로 흡수를 건너뛴다. 커밋은 유실되지만 문서는
|
|
67
92
|
// 수렴 상태를 유지한다
|
|
68
93
|
if (compStart &&
|
|
69
94
|
compStartText !== null &&
|
|
70
|
-
pathEq(
|
|
95
|
+
pathEq(focusPath, compStart.path) &&
|
|
71
96
|
docText !== compStartText) {
|
|
72
97
|
return;
|
|
73
98
|
}
|
|
@@ -88,13 +113,13 @@ export function createImeSession(host) {
|
|
|
88
113
|
const tr = editor.state.tr();
|
|
89
114
|
if (hiDoc > lo) {
|
|
90
115
|
tr.delete({
|
|
91
|
-
anchor: point(
|
|
92
|
-
focus: point(
|
|
116
|
+
anchor: point(focusPath, lo),
|
|
117
|
+
focus: point(focusPath, hiDoc),
|
|
93
118
|
});
|
|
94
119
|
}
|
|
95
120
|
const inserted = domText.slice(lo, hiDom);
|
|
96
121
|
if (inserted)
|
|
97
|
-
tr.insertText(inserted, point(
|
|
122
|
+
tr.insertText(inserted, point(focusPath, lo));
|
|
98
123
|
if (!tr.docChanged)
|
|
99
124
|
return;
|
|
100
125
|
tr.setMeta("history.group", "type").setMeta("ime", true);
|
|
@@ -171,14 +196,22 @@ export function createImeSession(host) {
|
|
|
171
196
|
// 흡수 대상 리프의 doc 텍스트 스냅샷 — 대기 창에 외부 편집이
|
|
172
197
|
// 들어왔는지 absorb이 판별하는 기준 (정리 tr 이후에 잡는다)
|
|
173
198
|
compStartText = compStart ? docTextAt(compStart) : null;
|
|
199
|
+
compEndData = null;
|
|
174
200
|
},
|
|
175
|
-
end() {
|
|
201
|
+
end(e) {
|
|
202
|
+
// start 없는 compositionend(일부 IME의 취소·포커스 해제 경로)나
|
|
203
|
+
// 같은 세션의 중복 end는 무시한다 — 없는 조합을 흡수하면 엉뚱한
|
|
204
|
+
// 홀더의 DOM/doc 차이를 커밋해 원격 편집 등의 정상 텍스트를
|
|
205
|
+
// 되돌릴 수 있다
|
|
206
|
+
if (!composing || pendingAbsorb)
|
|
207
|
+
return;
|
|
176
208
|
// composing 해제와 흡수를 다음 태스크로 미룬다 — 같은 태스크의
|
|
177
209
|
// 후속 beforeinput/keydown(Safari 최종 커밋, IME Enter 오커밋)을
|
|
178
210
|
// composing 가드가 계속 걸러내게 하기 위해서다. 단 그 창에 도착한
|
|
179
211
|
// 구조 입력은 flushComposition이 흡수를 앞당겨 정상 처리한다.
|
|
180
212
|
pendingAbsorb = true;
|
|
181
213
|
compEndedAt = performance.now();
|
|
214
|
+
compEndData = e?.data ?? null;
|
|
182
215
|
compTimer = setTimeout(flushComposition, 0);
|
|
183
216
|
},
|
|
184
217
|
gate(e, domSel) {
|
|
@@ -198,10 +231,13 @@ export function createImeSession(host) {
|
|
|
198
231
|
}
|
|
199
232
|
// 커밋 에코 — DOM에 이미 같은 텍스트가 쓰여 있으면(조합 중 브라우저가
|
|
200
233
|
// 넣은 상태) 통과시키면 브라우저가 한 번 더 써서 "세세"가 된다.
|
|
201
|
-
// DOM에 없으면(Safari 최종 커밋) 살려둬야 글자가 사라지지
|
|
234
|
+
// DOM에 없으면(Safari 최종 커밋) 살려둬야 글자가 사라지지 않는다.
|
|
235
|
+
// 페이로드가 읽힐 때는 커밋 문자열과도 일치해야 한다 — DOM 끝자락
|
|
236
|
+
// 일치만으로는 커밋 직후 같은 문자의 실제 재입력까지 막는다
|
|
202
237
|
if ((e.inputType === "insertText" ||
|
|
203
238
|
e.inputType === "insertCompositionText") &&
|
|
204
239
|
e.data &&
|
|
240
|
+
(compEndData == null || e.data === compEndData) &&
|
|
205
241
|
domSel &&
|
|
206
242
|
domEndsWith(el, domSel.focus, e.data)) {
|
|
207
243
|
return "prevent";
|
|
@@ -210,9 +246,12 @@ export function createImeSession(host) {
|
|
|
210
246
|
},
|
|
211
247
|
isLateEcho(data, domSel) {
|
|
212
248
|
// 커밋 에코가 흡수 타이머보다 늦게 도착한 경우 — DOM과 doc에
|
|
213
|
-
// 이미 같은 글자가 있으므로 다시 넣으면 "세세"가
|
|
249
|
+
// 이미 같은 글자가 있으므로 다시 넣으면 "세세"가 된다.
|
|
250
|
+
// 커밋 페이로드와의 일치를 요구해, 커밋 직후 같은 문자를 빠르게
|
|
251
|
+
// 재입력한 실제 키입력이 에코로 삼켜지는 것을 막는다
|
|
214
252
|
return (compEndedAt > 0 &&
|
|
215
253
|
performance.now() - compEndedAt < 300 &&
|
|
254
|
+
(compEndData == null || data === compEndData) &&
|
|
216
255
|
domSel != null &&
|
|
217
256
|
domEndsWith(el, domSel.focus, data));
|
|
218
257
|
},
|
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,cAAc,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE7E,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAqErC;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAa;IAC5C,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;IAEpD,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,2CAA2C;IAC3C,IAAI,SAAS,GAAiB,IAAI,CAAC;IACnC,yCAAyC;IACzC,6BAA6B;IAC7B,IAAI,aAAa,GAAkB,IAAI,CAAC;IACxC,gCAAgC;IAChC,IAAI,SAAS,GAAyC,IAAI,CAAC;IAC3D,8CAA8C;IAC9C,+CAA+C;IAC/C,oCAAoC;IACpC,IAAI,aAAa,GAAG,KAAK,CAAC;IAC1B,sDAAsD;IACtD,kDAAkD;IAClD,sCAAsC;IACtC,IAAI,WAAW,GAAG,CAAC,CAAC;
|
|
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,cAAc,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE7E,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAqErC;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAa;IAC5C,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;IAEpD,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,2CAA2C;IAC3C,IAAI,SAAS,GAAiB,IAAI,CAAC;IACnC,yCAAyC;IACzC,6BAA6B;IAC7B,IAAI,aAAa,GAAkB,IAAI,CAAC;IACxC,gCAAgC;IAChC,IAAI,SAAS,GAAyC,IAAI,CAAC;IAC3D,8CAA8C;IAC9C,+CAA+C;IAC/C,oCAAoC;IACpC,IAAI,aAAa,GAAG,KAAK,CAAC;IAC1B,sDAAsD;IACtD,kDAAkD;IAClD,sCAAsC;IACtC,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,gDAAgD;IAChD,wCAAwC;IACxC,mCAAmC;IACnC,oCAAoC;IACpC,IAAI,WAAW,GAAkB,IAAI,CAAC;IAEtC;;;;;;OAMG;IACH,2CAA2C;IAC3C,MAAM,SAAS,GAAG,CAAC,CAAQ,EAAU,EAAE;QACrC,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QAC3C,OAAO,CAAC,EAAE,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAClD,CAAC,CAAC;IAEF,MAAM,iBAAiB,GAAG,GAAG,EAAE;QAC7B,MAAM,IAAI,GAAG,UAAU,EAAE,EAAE,KAAK,CAAC;QACjC,IAAI,KAAK,GAAG,IAAI,IAAI,SAAS,CAAC;QAC9B,0CAA0C;QAC1C,wCAAwC;QACxC,6CAA6C;QAC7C,qCAAqC;QACrC,IAAI,SAAS,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5D,MAAM,WAAW,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM;gBACvC,CAAC,CAAC,EAAE,CAAC,aAAa,CACd,IAAI,SAAS,KAAK,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAC/C;gBACH,CAAC,CAAC,IAAI,CAAC;YACT,IAAI,CAAC,WAAW,EAAE,WAAW,IAAI,EAAE,CAAC,KAAK,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC9D,KAAK,GAAG,SAAS,CAAC;YACpB,CAAC;QACH,CAAC;QACD,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAC9C,6CAA6C;QAC7C,sCAAsC;QACtC,gDAAgD;QAChD,2CAA2C;QAC3C,MAAM,UAAU,GAAG,CAAC,CAAoB,EAAE,EAAE,CAC1C,EAAE,CAAC,aAAa,CAAc,IAAI,SAAS,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACnE,MAAM,YAAY,GAAG,CAAC,CAAqB,EAAoB,EAAE,CAC/D,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,SAAS,GAAG,CAAC,CAAC;QAC5C,IAAI,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC;QAC3B,IAAI,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;QACnC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1B,MAAM,GAAG,IAAI,CAAC;YACd,KAAK,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;gBACjD,IAAI,CAAC,GAAG,CAAC;oBAAE,SAAS;gBACpB,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;gBAC7B,MAAM,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;gBACxB,IAAI,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;oBACpB,MAAM,GAAG,CAAC,CAAC;oBACX,SAAS,GAAG,CAAC,CAAC;oBACd,MAAM;gBACR,CAAC;YACH,CAAC;QACH,CAAC;QACD,IAAI,CAAC,MAAM;YAAE,OAAO;QACpB,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,SAAS,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QACrE,uCAAuC;QACvC,6CAA6C;QAC7C,qCAAqC;QACrC,cAAc;QACd,IACE,SAAS;YACT,aAAa,KAAK,IAAI;YACtB,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC;YACjC,OAAO,KAAK,aAAa,EACzB,CAAC;YACD,OAAO;QACT,CAAC;QACD,IAAI,OAAO,KAAK,OAAO;YAAE,OAAO;QAChC,IAAI,EAAE,GAAG,CAAC,CAAC;QACX,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QACrD,OAAO,EAAE,GAAG,GAAG,IAAI,OAAO,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,EAAE,CAAC;YAAE,EAAE,EAAE,CAAC;QACrD,IAAI,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC;QAC3B,IAAI,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC;QAC3B,OACE,KAAK,GAAG,EAAE;YACV,KAAK,GAAG,EAAE;YACV,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,EACzC,CAAC;YACD,KAAK,EAAE,CAAC;YACR,KAAK,EAAE,CAAC;QACV,CAAC;QACD,MAAM,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;QAC7B,IAAI,KAAK,GAAG,EAAE,EAAE,CAAC;YACf,EAAE,CAAC,MAAM,CAAC;gBACR,MAAM,EAAE,KAAK,CAAC,SAAS,EAAE,EAAE,CAAC;gBAC5B,KAAK,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC;aAC/B,CAAC,CAAC;QACL,CAAC;QACD,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QAC1C,IAAI,QAAQ;YAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC;QAC5D,IAAI,CAAC,EAAE,CAAC,UAAU;YAAE,OAAO;QAC3B,EAAE,CAAC,OAAO,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACzD,wCAAwC;QACxC,gCAAgC;QAChC,MAAM,EAAE,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,SAAS,CAAC,CAAC;QACxD,IAAI,EAAE,IAAI,IAAI;YAAE,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACnC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACtB,CAAC,CAAC;IAEF;;;OAGG;IACH,MAAM,gBAAgB,GAAG,GAAG,EAAE;QAC5B,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;YACvB,YAAY,CAAC,SAAS,CAAC,CAAC;YACxB,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC;QACD,SAAS,GAAG,KAAK,CAAC;QAClB,aAAa,GAAG,KAAK,CAAC;QACtB,IAAI,MAAM,CAAC,QAAQ;YAAE,iBAAiB,EAAE,CAAC;QACzC,SAAS,GAAG,IAAI,CAAC;QACjB,aAAa,GAAG,IAAI,CAAC;IACvB,CAAC,CAAC;IAEF,OAAO;QACL,IAAI,MAAM;YACR,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,SAAS;YACX,OAAO,aAAa,CAAC;QACvB,CAAC;QAED,KAAK;YACH,uCAAuC;YACvC,iDAAiD;YACjD,+BAA+B;YAC/B,yCAAyC;YACzC,2CAA2C;YAC3C,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;gBACvB,YAAY,CAAC,SAAS,CAAC,CAAC;gBACxB,SAAS,GAAG,IAAI,CAAC;YACnB,CAAC;YACD,aAAa,GAAG,KAAK,CAAC;YACtB,SAAS,GAAG,IAAI,CAAC;YACjB,MAAM,GAAG,GAAG,UAAU,EAAE,CAAC;YACzB,SAAS,GAAG,GAAG,EAAE,KAAK,IAAI,IAAI,CAAC;YAC/B,qCAAqC;YACrC,sCAAsC;YACtC,sCAAsC;YACtC,sCAAsC;YACtC,qCAAqC;YACrC,IAAI,GAAG,IAAI,MAAM,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBACvE,wCAAwC;gBACxC,0CAA0C;gBAC1C,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,EAAE,kBAAkB,EAAE,EAAE,CAAC;gBACxD,mDAAmD;gBACnD,iBAAiB;gBACjB,MAAM,IAAI,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;gBACxC,MAAM,CAAC,QAAQ,CACb,MAAM,CAAC,KAAK;qBACT,EAAE,EAAE;qBACJ,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC;qBAChD,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;qBACjC,OAAO,CAAC,eAAe,EAAE,MAAM,CAAC;qBAChC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CACxB,CAAC;gBACF,wCAAwC;gBACxC,qBAAqB;gBACrB,KAAK,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;oBAClE,IAAI,CAAC,IAAI,IAAI;wBAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACnC,CAAC;gBACD,SAAS,GAAG,IAAI,CAAC;YACnB,CAAC;YACD,uCAAuC;YACvC,wCAAwC;YACxC,aAAa,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACxD,WAAW,GAAG,IAAI,CAAC;QACrB,CAAC;QAED,GAAG,CAAC,CAAoB;YACtB,iDAAiD;YACjD,wCAAwC;YACxC,uCAAuC;YACvC,WAAW;YACX,IAAI,CAAC,SAAS,IAAI,aAAa;gBAAE,OAAO;YACxC,0CAA0C;YAC1C,uDAAuD;YACvD,4CAA4C;YAC5C,4CAA4C;YAC5C,aAAa,GAAG,IAAI,CAAC;YACrB,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;YAChC,WAAW,GAAG,CAAC,EAAE,IAAI,IAAI,IAAI,CAAC;YAC9B,SAAS,GAAG,UAAU,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;QAC9C,CAAC;QAED,IAAI,CAAC,CAAC,EAAE,MAAM;YACZ,IAAI,CAAC,SAAS;gBAAE,OAAO,SAAS,CAAC;YACjC,4CAA4C;YAC5C,2CAA2C;YAC3C,8BAA8B;YAC9B,MAAM,UAAU,GACd,CAAC,CAAC,SAAS,KAAK,iBAAiB;gBACjC,CAAC,CAAC,SAAS,KAAK,iBAAiB;gBACjC,CAAC,CAAC,SAAS,KAAK,iBAAiB;gBACjC,CAAC,CAAC,SAAS,KAAK,gBAAgB;gBAChC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YACnC,IAAI,aAAa,IAAI,UAAU,EAAE,CAAC;gBAChC,gBAAgB,EAAE,CAAC;gBACnB,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,4CAA4C;YAC5C,wCAAwC;YACxC,4CAA4C;YAC5C,yCAAyC;YACzC,mCAAmC;YACnC,IACE,CAAC,CAAC,CAAC,SAAS,KAAK,YAAY;gBAC3B,CAAC,CAAC,SAAS,KAAK,uBAAuB,CAAC;gBAC1C,CAAC,CAAC,IAAI;gBACN,CAAC,WAAW,IAAI,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC;gBAC/C,MAAM;gBACN,WAAW,CAAC,EAAE,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,EACrC,CAAC;gBACD,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,UAAU,CAAC,IAAI,EAAE,MAAM;YACrB,wCAAwC;YACxC,kCAAkC;YAClC,sCAAsC;YACtC,+BAA+B;YAC/B,OAAO,CACL,WAAW,GAAG,CAAC;gBACf,WAAW,CAAC,GAAG,EAAE,GAAG,WAAW,GAAG,GAAG;gBACrC,CAAC,WAAW,IAAI,IAAI,IAAI,IAAI,KAAK,WAAW,CAAC;gBAC7C,MAAM,IAAI,IAAI;gBACd,WAAW,CAAC,EAAE,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CACpC,CAAC;QACJ,CAAC;QAED,OAAO;YACL,IAAI,SAAS,KAAK,IAAI;gBAAE,YAAY,CAAC,SAAS,CAAC,CAAC;QAClD,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { Editor } from "../editor/editor.js";
|
|
2
|
+
import type { Point } from "../state/selection.js";
|
|
3
|
+
import type { ImeSession } from "./ime.js";
|
|
4
|
+
/**
|
|
5
|
+
* beforeinput 핸들러 — 브라우저가 contenteditable DOM을 직접 바꾸는
|
|
6
|
+
* 것을 막고(preventDefault) 모든 입력을 트랜잭션으로 번역한다.
|
|
7
|
+
*
|
|
8
|
+
* bindEditorInput에서 분리된 모듈 — inputType별 디스패치(텍스트 삽입·
|
|
9
|
+
* 개행·삭제·붙여넣기·드롭·서식 커맨드)만 담는다. IME 게이트 판정과
|
|
10
|
+
* 입력 훅 소비가 먼저 돌고, 남은 입력은 tr.delete+insert로 처리한다.
|
|
11
|
+
*/
|
|
12
|
+
export interface BeforeInputDeps {
|
|
13
|
+
editor: Editor;
|
|
14
|
+
el: HTMLElement;
|
|
15
|
+
/** DOM 셀렉션을 Point로 읽는 판독기 */
|
|
16
|
+
readDomSel: () => {
|
|
17
|
+
anchor: Point;
|
|
18
|
+
focus: Point;
|
|
19
|
+
} | null;
|
|
20
|
+
/** IME 세션 — gate/isLateEcho 판정에 쓴다 */
|
|
21
|
+
ime: ImeSession;
|
|
22
|
+
}
|
|
23
|
+
/** beforeinput 리스너를 생성한다 */
|
|
24
|
+
export declare function createBeforeInputHandler(deps: BeforeInputDeps): (e: InputEvent) => void;
|
|
25
|
+
//# sourceMappingURL=input-beforeinput.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input-beforeinput.d.ts","sourceRoot":"","sources":["../../src/view/input-beforeinput.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAKlD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAInD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAK3C;;;;;;;GAOG;AAEH,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,EAAE,EAAE,WAAW,CAAC;IAChB,6BAA6B;IAC7B,UAAU,EAAE,MAAM;QAAE,MAAM,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,KAAK,CAAA;KAAE,GAAG,IAAI,CAAC;IACzD,sCAAsC;IACtC,GAAG,EAAE,UAAU,CAAC;CACjB;AAED,4BAA4B;AAC5B,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,eAAe,GACpB,CAAC,CAAC,EAAE,UAAU,KAAK,IAAI,CA6TzB"}
|