@moda-editor/core 0.1.2 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/dist/conformance.d.ts.map +1 -1
  2. package/dist/conformance.js +140 -0
  3. package/dist/conformance.js.map +1 -1
  4. package/dist/editor/extension.d.ts +4 -2
  5. package/dist/editor/extension.d.ts.map +1 -1
  6. package/dist/features/ace.d.ts.map +1 -1
  7. package/dist/features/ace.js +23 -12
  8. package/dist/features/ace.js.map +1 -1
  9. package/dist/features/code-block.d.ts +29 -0
  10. package/dist/features/code-block.d.ts.map +1 -1
  11. package/dist/features/code-block.js +551 -36
  12. package/dist/features/code-block.js.map +1 -1
  13. package/dist/features/image.d.ts +14 -1
  14. package/dist/features/image.d.ts.map +1 -1
  15. package/dist/features/image.js +279 -11
  16. package/dist/features/image.js.map +1 -1
  17. package/dist/features/marks.d.ts.map +1 -1
  18. package/dist/features/marks.js +28 -1
  19. package/dist/features/marks.js.map +1 -1
  20. package/dist/features/table.d.ts +16 -3
  21. package/dist/features/table.d.ts.map +1 -1
  22. package/dist/features/table.js +295 -8
  23. package/dist/features/table.js.map +1 -1
  24. package/dist/index.d.ts +3 -2
  25. package/dist/index.d.ts.map +1 -1
  26. package/dist/index.js +3 -2
  27. package/dist/index.js.map +1 -1
  28. package/dist/parse/sanitize.d.ts.map +1 -1
  29. package/dist/parse/sanitize.js +10 -1
  30. package/dist/parse/sanitize.js.map +1 -1
  31. package/dist/presets/highlight.d.ts +17 -0
  32. package/dist/presets/highlight.d.ts.map +1 -1
  33. package/dist/presets/highlight.js +51 -0
  34. package/dist/presets/highlight.js.map +1 -1
  35. package/dist/state/transaction.d.ts +0 -7
  36. package/dist/state/transaction.d.ts.map +1 -1
  37. package/dist/state/transaction.js +30 -1
  38. package/dist/state/transaction.js.map +1 -1
  39. package/dist/styles.css +312 -17
  40. package/dist/view/dom.d.ts.map +1 -1
  41. package/dist/view/dom.js +62 -22
  42. package/dist/view/dom.js.map +1 -1
  43. package/dist/view/input.d.ts.map +1 -1
  44. package/dist/view/input.js +158 -20
  45. package/dist/view/input.js.map +1 -1
  46. package/dist/view/mount.d.ts.map +1 -1
  47. package/dist/view/mount.js +16 -4
  48. package/dist/view/mount.js.map +1 -1
  49. package/dist/view/render.d.ts +7 -1
  50. package/dist/view/render.d.ts.map +1 -1
  51. package/dist/view/render.js +5 -1
  52. package/dist/view/render.js.map +1 -1
  53. package/dist/view/serialize.d.ts +8 -0
  54. package/dist/view/serialize.d.ts.map +1 -1
  55. package/dist/view/serialize.js +19 -0
  56. package/dist/view/serialize.js.map +1 -1
  57. package/package.json +1 -1
package/dist/styles.css CHANGED
@@ -12,6 +12,8 @@
12
12
  --me-gutter-bg: rgba(15, 23, 42, 0.035);
13
13
  --me-gutter-color: #94a3b8;
14
14
  --me-line-active-num: #3b82f6;
15
+ /* atom 노드 셀렉션 링 + 이미지 핸들 — 거터와 같은 이유로 루트에 둔다 */
16
+ --me-node-sel-color: #3b82f6;
15
17
  display: flex;
16
18
  flex-direction: column;
17
19
  gap: 8px;
@@ -53,7 +55,6 @@
53
55
  * 크롬을 담당한다 ─────────────────────────────────────────── */
54
56
  .me-frame {
55
57
  --me-frame-shadow: 0 1px 2px rgba(15, 23, 42, 0.06);
56
- --me-focus-ring: rgba(59, 130, 246, 0.18);
57
58
  --me-border-color: #e2e8f0;
58
59
  --me-text-color: #1e293b;
59
60
  --me-font-mono: ui-monospace, SFMono-Regular, Menlo, Consolas,
@@ -67,9 +68,10 @@
67
68
  overflow: hidden;
68
69
  }
69
70
 
71
+ /* 포커스 표시는 테두리 색만 — 글로우 링은 입력 중 카드 전체를
72
+ * 파란 띠로 둘러 산만했다 */
70
73
  .me-frame:focus-within {
71
74
  border-color: var(--me-editor-focus, #3b82f6);
72
- box-shadow: 0 0 0 3px var(--me-focus-ring);
73
75
  }
74
76
 
75
77
  /* ── 에디터 — Ace 계열 코드 에디터 서페이스: 모노스페이스 본문 +
@@ -82,7 +84,6 @@
82
84
  --me-code-bg: #f1f5f9;
83
85
  --me-code-border: #e2e8f0;
84
86
  --me-gutter-border: var(--me-border-color);
85
- --me-line-active-bg: rgba(59, 130, 246, 0.07);
86
87
  --me-sel-bg: rgba(59, 130, 246, 0.22);
87
88
  --me-print-margin: rgba(148, 163, 184, 0.4);
88
89
 
@@ -182,11 +183,11 @@
182
183
  }
183
184
 
184
185
  /* 활성 라인 — aceFeature의 paintOverlay가 캐럿의 최상위 블록에
185
- * me-line-active를 단다 (Ace highlightActiveLine 관례).
186
- * 코드블록은 .me-cl.is-active가 이미 줄 단위로 칠하니 배경은 뺀다 */
187
- .me-editor > *.me-line-active:not(pre) {
188
- background-color: var(--me-line-active-bg);
189
- }
186
+ * me-line-active를 단다. 배경 띠는 칠하지 않는다(문서 편집에서
187
+ * 파란 띠가 산만하다는 피드백) — 활성 표시는 거터 번호 강조
188
+ * (.me-gnum.is-active)로만 한다. 코드블록은 코드 에디터 관례대로
189
+ * .me-cl.is-active가 줄 단위 배경을 칠한다. 클래스는 계속 달리므로
190
+ * 원하면 제품 CSS에서 배경을 되살릴 수 있다 */
190
191
 
191
192
  /* 선택 영역 — Ace 선택색 관례 (코드블록 안도 같은 변수) */
192
193
  .me-editor ::selection {
@@ -325,6 +326,280 @@
325
326
  max-width: 100%;
326
327
  border-radius: 6px;
327
328
  margin: 0 0 8px;
329
+ cursor: default;
330
+ }
331
+
332
+ /* atom 노드 셀렉션 — 클릭으로 선택된 img/hr 등에 파란 링을 둔다
333
+ * (input.ts의 paintOverlays가 is-selected를 마킹한다) */
334
+ .me-editor [data-me-path].is-selected {
335
+ outline: 2px solid var(--me-node-sel-color);
336
+ outline-offset: 2px;
337
+ }
338
+ .me-editor hr.is-selected {
339
+ /* hr은 테두리가 굵어 outline이 묻힌다 — 위아래 여백으로 링을 띄운다 */
340
+ outline-offset: 4px;
341
+ }
342
+
343
+ /* ── 이미지 선택 오버레이 — 선택된 img 위에 얹히는 편집/리사이즈 UI.
344
+ * .me-editor의 형제(.me-root의 absolute 자식)로 둬 DOM↔Point 매핑을
345
+ * 깨지 않는다. 래퍼는 pointer-events:none — 이미지 자체 클릭은 그대로
346
+ * 통과하고 핸들/바만 이벤트를 받는다 */
347
+ .me-imgui {
348
+ position: absolute;
349
+ z-index: 40;
350
+ pointer-events: none;
351
+ }
352
+ .me-imgui[hidden] {
353
+ display: none;
354
+ }
355
+ /* 우하단 크기 핸들 — nwse-resize (GDocs/Word 관례) */
356
+ .me-imgui .me-img-handle {
357
+ position: absolute;
358
+ right: -6px;
359
+ bottom: -6px;
360
+ width: 12px;
361
+ height: 12px;
362
+ border-radius: 4px;
363
+ background: var(--me-toolbar-bg, #fff);
364
+ border: 2px solid var(--me-node-sel-color);
365
+ box-shadow: 0 1px 3px rgba(15, 23, 42, 0.3);
366
+ cursor: nwse-resize;
367
+ pointer-events: auto;
368
+ touch-action: none;
369
+ }
370
+ /* 액션 바 — 이미지 위쪽. 루트 상단에 붙으면 is-below로 아래로 뒤집는다 */
371
+ .me-imgui .me-img-bar {
372
+ position: absolute;
373
+ left: 0;
374
+ top: -6px;
375
+ transform: translateY(-100%);
376
+ display: flex;
377
+ flex-wrap: wrap;
378
+ gap: 3px;
379
+ padding: 4px;
380
+ max-width: min(320px, 90vw);
381
+ background: var(--me-toolbar-bg, #fff);
382
+ border: 1px solid var(--me-border-color);
383
+ border-radius: 6px;
384
+ box-shadow: 0 4px 14px rgba(15, 23, 42, 0.18);
385
+ pointer-events: auto;
386
+ }
387
+ .me-imgui.is-below .me-img-bar {
388
+ top: auto;
389
+ bottom: -6px;
390
+ transform: translateY(100%);
391
+ }
392
+ .me-imgui .me-imgbtn {
393
+ padding: 3px 8px;
394
+ font: inherit;
395
+ font-size: 12px;
396
+ color: inherit;
397
+ background: var(--me-btn-bg, transparent);
398
+ border: 1px solid var(--me-border-color);
399
+ border-radius: 4px;
400
+ cursor: pointer;
401
+ }
402
+ .me-imgui .me-imgbtn:hover {
403
+ background: var(--me-tool-hover-bg, #e2e8f0);
404
+ }
405
+ .me-imgui .me-imgbtn[data-img-act="del"]:hover {
406
+ color: #dc2626;
407
+ border-color: #dc2626;
408
+ }
409
+ /* 편집 폼 — 액션 바 안의 두 번째 행 (wrap으로 전체 폭을 차지) */
410
+ .me-imgui .me-imgedit {
411
+ flex-basis: 100%;
412
+ display: flex;
413
+ gap: 4px;
414
+ }
415
+ .me-imgui .me-imgedit[hidden] {
416
+ display: none;
417
+ }
418
+ .me-imgui .me-imged-src,
419
+ .me-imgui .me-imged-alt {
420
+ width: min(150px, 30vw);
421
+ padding: 4px 6px;
422
+ font: inherit;
423
+ font-size: 12px;
424
+ color: inherit;
425
+ background: transparent;
426
+ border: 1px solid var(--me-border-color);
427
+ border-radius: 4px;
428
+ outline: none;
429
+ }
430
+ .me-imgui .me-imged-src:focus,
431
+ .me-imgui .me-imged-alt:focus {
432
+ border-color: var(--me-accent, #2563eb);
433
+ }
434
+
435
+ /* ── 표 편집 오버레이 — 캐럿이 셀 안에 있을 때 표 위에 얹히는 UI.
436
+ * .me-imgui와 같은 패턴: 래퍼 pointer-events:none, 바/핸들만 받는다 */
437
+ .me-tableui {
438
+ position: absolute;
439
+ z-index: 40;
440
+ pointer-events: none;
441
+ }
442
+ .me-tableui[hidden] {
443
+ display: none;
444
+ }
445
+ /* 액션 바 — 표 위쪽 중앙. 루트 상단에 붙으면 is-below로 안쪽에 띄운다 */
446
+ .me-tableui .me-tbl-bar {
447
+ position: absolute;
448
+ left: 50%;
449
+ top: -6px;
450
+ transform: translate(-50%, -100%);
451
+ display: flex;
452
+ gap: 3px;
453
+ padding: 4px;
454
+ background: var(--me-toolbar-bg, #fff);
455
+ border: 1px solid var(--me-border-color);
456
+ border-radius: 6px;
457
+ box-shadow: 0 4px 14px rgba(15, 23, 42, 0.18);
458
+ white-space: nowrap;
459
+ pointer-events: auto;
460
+ }
461
+ .me-tableui.is-below .me-tbl-bar {
462
+ top: 4px;
463
+ transform: translate(-50%, 0);
464
+ }
465
+ .me-tableui .me-tblbtn {
466
+ padding: 3px 8px;
467
+ font: inherit;
468
+ font-size: 12px;
469
+ color: inherit;
470
+ background: var(--me-btn-bg, transparent);
471
+ border: 1px solid var(--me-border-color);
472
+ border-radius: 4px;
473
+ cursor: pointer;
474
+ }
475
+ .me-tableui .me-tblbtn:hover {
476
+ background: var(--me-tool-hover-bg, #e2e8f0);
477
+ }
478
+ .me-tableui .me-tblbtn[data-tbl-act="tabledel"]:hover,
479
+ .me-tableui .me-tblbtn[data-tbl-act="rowdel"]:hover,
480
+ .me-tableui .me-tblbtn[data-tbl-act="coldel"]:hover {
481
+ color: #dc2626;
482
+ border-color: #dc2626;
483
+ }
484
+ /* 열 경계 핸들 — 각 열 우측 경계의 8px 스트립. 평소엔 투명하고
485
+ * hover/드래그 시 리사이즈 커서 + 강조선 (GDocs 열 리사이즈 관례) */
486
+ .me-tableui .me-tbl-cols {
487
+ position: absolute;
488
+ inset: 0;
489
+ }
490
+ .me-tableui .me-col-handle {
491
+ position: absolute;
492
+ top: 0;
493
+ width: 8px;
494
+ cursor: col-resize;
495
+ pointer-events: auto;
496
+ touch-action: none;
497
+ }
498
+ .me-tableui .me-col-handle::after {
499
+ content: "";
500
+ position: absolute;
501
+ top: 0;
502
+ bottom: 0;
503
+ left: 3px;
504
+ width: 2px;
505
+ background: transparent;
506
+ transition: background 0.1s;
507
+ }
508
+ .me-tableui .me-col-handle:hover::after,
509
+ .me-tableui .me-col-handle:active::after {
510
+ background: var(--me-node-sel-color, #2563eb);
511
+ }
512
+
513
+ /* 코드블록 크롬 바 — 캐럿이 들어간 pre의 우측 상단(언어 라벨 자리).
514
+ * Notion 코드블록 언어 피커 관례. 래퍼는 좌표만 잡고 자식이 이벤트를 받는다 */
515
+ .me-codeui {
516
+ position: absolute;
517
+ z-index: 40;
518
+ transform: translateX(-100%);
519
+ display: flex;
520
+ align-items: center;
521
+ gap: 3px;
522
+ padding: 2px 4px;
523
+ background: var(--me-toolbar-bg, #fff);
524
+ border: 1px solid var(--me-border-color);
525
+ border-radius: 6px;
526
+ box-shadow: 0 2px 8px rgba(15, 23, 42, 0.12);
527
+ white-space: nowrap;
528
+ }
529
+ .me-codeui[hidden] {
530
+ display: none;
531
+ }
532
+ .me-codeui .me-codelang,
533
+ .me-codehead .me-codelang {
534
+ font: inherit;
535
+ font-size: 11px;
536
+ max-width: 7.5em;
537
+ padding: 1px 2px;
538
+ color: var(--me-text-muted, #64748b);
539
+ background: transparent;
540
+ border: none;
541
+ border-radius: 3px;
542
+ cursor: pointer;
543
+ }
544
+ .me-codeui .me-codelang:hover,
545
+ .me-codehead .me-codelang:hover {
546
+ background: var(--me-tool-hover-bg, #e2e8f0);
547
+ }
548
+ .me-codeui .me-codebtn,
549
+ .me-codehead .me-codebtn {
550
+ padding: 1px 7px;
551
+ font: inherit;
552
+ font-size: 11px;
553
+ color: var(--me-text-muted, #64748b);
554
+ background: transparent;
555
+ border: none;
556
+ border-radius: 3px;
557
+ cursor: pointer;
558
+ }
559
+ .me-codeui .me-codebtn:hover,
560
+ .me-codehead .me-codebtn:hover {
561
+ color: inherit;
562
+ background: var(--me-tool-hover-bg, #e2e8f0);
563
+ }
564
+ /* 캐럿이 들어간 코드블록은 첫 줄 우측에 바 자리를 넓힌다 —
565
+ * 바가 코드 텍스트를 가리지 않도록 (기본 언어 라벨 패딩 5em을 덮는다) */
566
+ .me-editor pre.me-line-active .me-cl:first-child {
567
+ padding-right: 13.5em;
568
+ }
569
+
570
+ /* 코드블록 노드 뷰 — 언어/정리/복사 크롬 헤더(.me-codehead) + pre
571
+ * 아울렛을 한 장의 카드로 묶는다 (Notion/VS Code 코드 카드 관례).
572
+ * 헤더는 .me-node-view의 ce=false 영역이라 캐럿 매핑에 무영향 */
573
+ .me-codeview {
574
+ background: var(--me-code-bg);
575
+ border: 1px solid var(--me-code-border);
576
+ border-radius: 6px;
577
+ }
578
+ .me-codehead {
579
+ display: flex;
580
+ align-items: center;
581
+ justify-content: flex-end;
582
+ gap: 3px;
583
+ padding: 2px 6px;
584
+ border-bottom: 1px solid var(--me-code-border);
585
+ border-radius: 6px 6px 0 0;
586
+ user-select: none;
587
+ }
588
+ /* Notion 관례 — 언어 표시는 좌측, 액션 버튼은 우측 */
589
+ .me-codehead .me-codelang {
590
+ margin-right: auto;
591
+ }
592
+ /* 카드 안 pre — 카드가 배경/테두리를 담당하므로 pre 자체 크롬은 뗀다 */
593
+ .me-codeview > .me-node-content {
594
+ margin: 0;
595
+ border: none;
596
+ border-radius: 0;
597
+ background: transparent;
598
+ }
599
+ /* 노드 뷰 코드블록은 헤더가 언어·액션을 담당 — 오버레이 라벨/바용
600
+ * 첫 줄 우측 패딩(5em/13.5em 규칙보다 뒤에 선언해 덮는다)을 되돌린다 */
601
+ .me-editor .me-codeview .me-cl:first-child {
602
+ padding-right: 0;
328
603
  }
329
604
 
330
605
  /* 형광펜 — 브라우저 기본 mark 색을 attr 색이 덮는다 */
@@ -680,11 +955,18 @@
680
955
  display: flex;
681
956
  align-items: center;
682
957
  /* 한 줄 원칙 — 넘치는 항목은 두 줄로 내리지 않고 ⋯ 메뉴로 보낸다
683
- * (data-rsp 티어, 아래 미디어 쿼리). 남는 초窄 폭은 overflow로 자른다 */
958
+ * (data-rsp 티어, 아래 미디어 쿼리).
959
+ * overflow:hidden을 쓰지 않는다 — absolute인 ⋯/A▾의 .me-menu가
960
+ * 툴바 아래로 열릴 때 같이 잘린다. ⋯는 absolute로 우측에 고정하고
961
+ * padding-right로 그 자리를 비워 넘치는 항목이 그 밑으로 스치게 한다 */
684
962
  flex-wrap: nowrap;
685
- overflow: hidden;
963
+ /* relative+z-index: 툴바 전체를 에디터(.me-editor relative) 위에
964
+ * 올려 ⋯/A▾ 드롭다운이 본문에 가려지지 않게 한다. 팝오버/버블
965
+ * (fixed, z 50~60)보다는 아래라 겹쳐도 그쪽이 위에 뜬다 */
966
+ position: relative;
967
+ z-index: 20;
686
968
  gap: 2px;
687
- padding: 6px 8px;
969
+ padding: 6px 44px 6px 8px;
688
970
  background: var(--me-toolbar-bg);
689
971
  border-bottom: 1px solid var(--me-border-color);
690
972
  /* IDE 크롬 — 툴 라벨도 코드 에디터 폰트로 */
@@ -776,13 +1058,19 @@
776
1058
  position: relative;
777
1059
  display: inline-flex;
778
1060
  }
779
- /* ⋯는 항상 우측 끝에 살아있어야 한다 — 툴바가 잘려도(sticky가
780
- * 스크롤/클립 경계에 붙는다) 오버플로 진입점이 사라지지 않는다 */
1061
+ /* ⋯는 항상 우측 끝에 살아있어야 한다 — absolute로 핀 고정해 항목이
1062
+ * 넘쳐도 오버플로 진입점이 사라지지 않는다. 넘친 항목이 밑으로
1063
+ * 스치므로 불투명 배경으로 덮는다. absolute라 이 details 자체가
1064
+ * .me-menu의 containing block이다 */
781
1065
  .me-toolbar > .me-overflow {
782
- position: sticky;
783
- right: 0;
1066
+ position: absolute;
1067
+ /* translateY 중앙정렬 대신 패딩과 같은 top — transform은 스태킹
1068
+ * 컨텍스트를 만들어 자식 .me-menu의 z-index를 가둔다 */
1069
+ right: 8px;
1070
+ top: 6px;
784
1071
  flex-shrink: 0;
785
1072
  background: var(--me-toolbar-bg);
1073
+ border-radius: 6px;
786
1074
  }
787
1075
  .me-overflow > summary,
788
1076
  .me-styles > summary {
@@ -961,10 +1249,10 @@
961
1249
  --me-gutter-bg: rgba(0, 0, 0, 0.22);
962
1250
  --me-gutter-color: #8f908a;
963
1251
  --me-line-active-num: #c2c2bf;
1252
+ --me-node-sel-color: #66d9ef;
964
1253
  }
965
1254
 
966
1255
  .me-frame[data-me-theme="dark"] {
967
- --me-focus-ring: rgba(102, 217, 239, 0.25);
968
1256
  background: #1e1f1c;
969
1257
  }
970
1258
 
@@ -974,7 +1262,6 @@
974
1262
  --me-code-bg: #1e1f1c;
975
1263
  --me-code-border: #3e3d32;
976
1264
  --me-gutter-border: #3e3d32;
977
- --me-line-active-bg: rgba(255, 255, 255, 0.045);
978
1265
  --me-sel-bg: rgba(73, 72, 62, 0.95);
979
1266
  --me-print-margin: rgba(73, 72, 62, 0.9);
980
1267
  }
@@ -1037,6 +1324,14 @@
1037
1324
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.5);
1038
1325
  }
1039
1326
 
1327
+ [data-me-theme="dark"] .me-imgui {
1328
+ --me-toolbar-bg: #1e1f1c;
1329
+ --me-btn-bg: #3e3d32;
1330
+ --me-tool-hover-bg: #575643;
1331
+ --me-accent: #66d9ef;
1332
+ box-shadow: none;
1333
+ }
1334
+
1040
1335
  [data-me-theme="dark"] .me-pop,
1041
1336
  [data-me-theme="dark"] .me-linkcard {
1042
1337
  --me-toolbar-bg: #1e1f1c;
@@ -1 +1 @@
1
- {"version":3,"file":"dom.d.ts","sourceRoot":"","sources":["../../src/view/dom.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAEnD;;;;;;;;GAQG;AAEH,eAAO,MAAM,SAAS,iBAAiB,CAAC;AAqDxC,wCAAwC;AACxC,wBAAgB,UAAU,CACxB,IAAI,EAAE,WAAW,EACjB,OAAO,EAAE,IAAI,EACb,SAAS,EAAE,MAAM,GAChB,KAAK,GAAG,IAAI,CA0Cd;AAED,+CAA+C;AAC/C,wBAAgB,UAAU,CACxB,IAAI,EAAE,WAAW,EACjB,KAAK,EAAE,KAAK,GACX;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAmFvC;AAED,6CAA6C;AAC7C,wBAAgB,YAAY,CAC1B,IAAI,EAAE,WAAW,GAChB;IAAE,MAAM,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,GAAG,IAAI,CAmCxC;AAED,8BAA8B;AAC9B,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,WAAW,EACjB,MAAM,EAAE,KAAK,EACb,KAAK,EAAE,KAAK,GACX,IAAI,CAMN"}
1
+ {"version":3,"file":"dom.d.ts","sourceRoot":"","sources":["../../src/view/dom.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAEnD;;;;;;;;GAQG;AAEH,eAAO,MAAM,SAAS,iBAAiB,CAAC;AAqDxC,wCAAwC;AACxC,wBAAgB,UAAU,CACxB,IAAI,EAAE,WAAW,EACjB,OAAO,EAAE,IAAI,EACb,SAAS,EAAE,MAAM,GAChB,KAAK,GAAG,IAAI,CA0Cd;AAED,+CAA+C;AAC/C,wBAAgB,UAAU,CACxB,IAAI,EAAE,WAAW,EACjB,KAAK,EAAE,KAAK,GACX;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAsHvC;AAED,6CAA6C;AAC7C,wBAAgB,YAAY,CAC1B,IAAI,EAAE,WAAW,GAChB;IAAE,MAAM,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,GAAG,IAAI,CAmCxC;AAED,8BAA8B;AAC9B,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,WAAW,EACjB,MAAM,EAAE,KAAK,EACb,KAAK,EAAE,KAAK,GACX,IAAI,CAMN"}
package/dist/view/dom.js CHANGED
@@ -116,38 +116,71 @@ export function pointToDOM(root, point) {
116
116
  if (!holder)
117
117
  return null;
118
118
  if (isTextHolder(holder)) {
119
- // 문자 오프셋 → 텍스트 노드 + 남은 오프셋
119
+ // 문자 오프셋 → 텍스트 노드 + 남은 오프셋.
120
+ // 앵커 규칙: Chromium IME 조합은 "요소 경계 끝자락" 위치(마지막 텍스트
121
+ // 노드의 끝, bogus <br>, 프레임워크 빈 텍스트 앵커)에서 세션을 갱신마다
122
+ // 리셋해 자모가 중복으로 남는다. 그래서 텍스트 끝 경계는 뒤쪽 텍스트
123
+ // 노드의 시작으로 내리고, 안전한 위치가 없으면 요소 경계를 쓴다.
120
124
  let rest = point.offset;
125
+ let found = null;
126
+ let atEnd = false; // 직전 텍스트 노드의 끝에 정확히 걸친 상태
121
127
  const walk = (n) => {
128
+ if (found)
129
+ return;
130
+ // <br> 안의 텍스트 노드는 유효한 편집 위치가 아니다 — 브라우저나
131
+ // 프레임워크 정규화로 생기는 유령 노드다
132
+ if (n.nodeType === 1 && n.tagName === "BR")
133
+ return;
122
134
  if (n.nodeType === 3) {
123
135
  const len = n.textContent?.length ?? 0;
124
- if (rest <= len)
125
- return { node: n, offset: rest };
136
+ // 길이 0 텍스트 노드는 건너뛴다 — 프레임워크 앵커용 빈 텍스트
137
+ // 노드(주석과 같은 역할)는 문자를 안 실으면서 캐럿만 잘못된 위치로
138
+ // 잡는다
139
+ if (!len)
140
+ return;
141
+ if (atEnd) {
142
+ // 경계 뒤 첫 텍스트 — 같은 doc 오프셋의 안전한 앵커
143
+ found = { node: n, offset: 0 };
144
+ return;
145
+ }
146
+ if (rest < len) {
147
+ found = { node: n, offset: rest };
148
+ return;
149
+ }
126
150
  rest -= len;
127
- return null;
128
- }
129
- for (const c of Array.from(n.childNodes)) {
130
- const r = walk(c);
131
- if (r)
132
- return r;
151
+ if (rest === 0)
152
+ atEnd = true;
153
+ return;
133
154
  }
134
- return null;
155
+ for (const c of Array.from(n.childNodes))
156
+ walk(c);
135
157
  };
136
- const found = walk(holder);
158
+ walk(holder);
137
159
  if (found)
138
160
  return found;
139
- // 오프셋이 텍스트보다 길면 끝으로 클램프 — 요소 노드엔 자식
140
- // 인덱스로 놓는다 (textContent 길이는 문자 수라 범위를 넘는다)
141
- const last = holder.lastChild;
142
- // 빈 텍스트 홀더 — 요소 안쪽이 유효한 유일한 위치다 (빈 문단 캐럿)
143
- return last
144
- ? {
145
- node: last,
146
- offset: last.nodeType === 3
147
- ? (last.textContent?.length ?? 0)
148
- : last.childNodes.length,
161
+ // 끝으로 클램프 — bogus <br> 자리표시자에는 절대 앵커하지 않고 그 앞의
162
+ // 요소 경계를 쓴다. 끝 자식이 요소면 같은 규칙으로 안쪽까지 내린다.
163
+ const endPos = (el) => {
164
+ let last = el.lastChild;
165
+ // 끝에서부터 마지막 "유효한" 자식을 찾는다 — 빈 텍스트 노드와
166
+ // 주석은 문자를 안 싣는다
167
+ while (last &&
168
+ (last.nodeType === 8 ||
169
+ (last.nodeType === 3 && !(last.textContent?.length ?? 0)))) {
170
+ last = last.previousSibling;
149
171
  }
150
- : { node: holder, offset: 0 };
172
+ if (!last)
173
+ return { node: el, offset: 0 };
174
+ if (last.nodeType === 3)
175
+ return { node: last, offset: last.textContent?.length ?? 0 };
176
+ if (last.tagName === "BR")
177
+ return {
178
+ node: el,
179
+ offset: Array.prototype.indexOf.call(el.childNodes, last),
180
+ };
181
+ return endPos(last);
182
+ };
183
+ return endPos(holder);
151
184
  }
152
185
  // 컨테이너 경계를 리프 텍스트 위치로 내린다 — contenteditable 요소의
153
186
  // (요소, 자식인덱스) 경계 셀렉션은 ce=false/중첩 editable을 건널 때
@@ -169,6 +202,13 @@ export function pointToDOM(root, point) {
169
202
  if (last)
170
203
  nodes.reverse();
171
204
  for (const n of nodes) {
205
+ // <br> 안의 텍스트 노드와 길이 0 텍스트 노드는 편집 위치가 아니다 —
206
+ // 브라우저/프레임워크 정규화로 생기는 유령 노드라 여기에 앵커하면
207
+ // IME 조합이 깨진다
208
+ if (n.parentElement?.tagName === "BR")
209
+ continue;
210
+ if (!n.textContent?.length)
211
+ continue;
172
212
  // 가장 가까운 contenteditable 조상이 false면 편집 위치가 아니다
173
213
  // (아톰/노드뷰 크롬). 콜아웃 아울렛 안의 텍스트는 조상이 true라
174
214
  // 통과한다
@@ -1 +1 @@
1
- {"version":3,"file":"dom.js","sourceRoot":"","sources":["../../src/view/dom.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dom.js","sourceRoot":"","sources":["../../src/view/dom.ts"],"names":[],"mappings":"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"}
@@ -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;AAoFlD;;;;;;;;;;;;;;;GAeG;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;;;;;GAKG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA6B;IACtD,0DAA0D;IAC1D,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,SAAS,GAAG,MAAM;CAO7D;AA2BD,wBAAgB,eAAe,CAC7B,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,WAAW,GACd,kBAAkB,CAy1BpB"}
1
+ {"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../../src/view/input.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AA0FlD;;;;;;;;;;;;;;;GAeG;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;;;;;GAKG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA6B;IACtD,0DAA0D;IAC1D,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,SAAS,GAAG,MAAM;CAO7D;AA2BD,wBAAgB,eAAe,CAC7B,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,WAAW,GACd,kBAAkB,CAk/BpB"}