@aeriz/wysiwyg 1.0.5 → 2.0.0

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 (129) hide show
  1. package/LICENSE +201 -201
  2. package/README.md +82 -573
  3. package/angular/README.md +10 -4
  4. package/angular/aeriz-editor.directive.ts +40 -18
  5. package/dist/adapters/jquery.cjs +1 -1
  6. package/dist/adapters/jquery.js +14 -14
  7. package/dist/adapters/shared.cjs +1 -1
  8. package/dist/adapters/shared.js +59 -56
  9. package/dist/adapters/vue.cjs +1 -1
  10. package/dist/adapters/vue.js +64 -56
  11. package/dist/adapters/vue2.cjs +1 -1
  12. package/dist/adapters/vue2.js +24 -17
  13. package/dist/adapters/wc.cjs +1 -1
  14. package/dist/adapters/wc.js +108 -72
  15. package/dist/aeriz-wysiwyg-adapter.js +24 -32
  16. package/dist/aeriz-wysiwyg-adapter.min.js +1 -1
  17. package/dist/aeriz-wysiwyg-highlight.js +964 -0
  18. package/dist/aeriz-wysiwyg-highlight.min.js +5 -0
  19. package/dist/aeriz-wysiwyg-jquery.js +25 -32
  20. package/dist/aeriz-wysiwyg-jquery.min.js +1 -1
  21. package/dist/aeriz-wysiwyg-wc.js +80 -43
  22. package/dist/aeriz-wysiwyg-wc.min.js +1 -1
  23. package/dist/aeriz-wysiwyg.cjs +3525 -1744
  24. package/dist/aeriz-wysiwyg.css +2104 -1904
  25. package/dist/aeriz-wysiwyg.esm.js +3525 -1744
  26. package/dist/aeriz-wysiwyg.esm.min.js +4840 -3581
  27. package/dist/aeriz-wysiwyg.js +3525 -1744
  28. package/dist/aeriz-wysiwyg.min.cjs +51 -46
  29. package/dist/aeriz-wysiwyg.min.css +1 -1
  30. package/dist/aeriz-wysiwyg.min.js +51 -46
  31. package/dist/highlight.cjs +5 -0
  32. package/dist/highlight.js +895 -0
  33. package/dist/server.cjs +24 -19
  34. package/dist/server.js +612 -251
  35. package/dist-types/adapters/shared.d.ts +0 -8
  36. package/dist-types/adapters/shared.d.ts.map +1 -1
  37. package/dist-types/adapters/vue.d.ts +62 -21
  38. package/dist-types/adapters/vue.d.ts.map +1 -1
  39. package/dist-types/adapters/vue2.d.ts +33 -14
  40. package/dist-types/adapters/vue2.d.ts.map +1 -1
  41. package/dist-types/adapters/wc.d.ts +15 -6
  42. package/dist-types/adapters/wc.d.ts.map +1 -1
  43. package/dist-types/cjs/adapters/shared.d.cts +0 -8
  44. package/dist-types/cjs/adapters/vue.d.cts +62 -21
  45. package/dist-types/cjs/adapters/vue2.d.cts +33 -14
  46. package/dist-types/cjs/adapters/wc.d.cts +15 -6
  47. package/dist-types/cjs/core/AerizEditor.d.cts +204 -48
  48. package/dist-types/cjs/core/AerizViewer.d.cts +7 -0
  49. package/dist-types/cjs/core/block-meta.d.cts +40 -0
  50. package/dist-types/cjs/core/block-tracker.d.cts +64 -0
  51. package/dist-types/cjs/core/blocks.d.cts +39 -4
  52. package/dist-types/cjs/core/fonts.d.cts +33 -46
  53. package/dist-types/cjs/core/history.d.cts +28 -10
  54. package/dist-types/cjs/core/html-to-blocks.d.cts +10 -0
  55. package/dist-types/cjs/core/i18n.d.cts +44 -0
  56. package/dist-types/cjs/core/import-html.d.cts +0 -13
  57. package/dist-types/cjs/core/insert-fragment.d.cts +21 -0
  58. package/dist-types/cjs/core/paste-clean.d.cts +36 -0
  59. package/dist-types/cjs/core/sanitize-dom.d.cts +21 -0
  60. package/dist-types/cjs/core/sanitize-html.d.cts +8 -0
  61. package/dist-types/cjs/core/sanitize-policy.d.cts +22 -0
  62. package/dist-types/cjs/core/selection.d.cts +5 -0
  63. package/dist-types/cjs/core/table-grid.d.cts +87 -0
  64. package/dist-types/cjs/core/table-ops.d.cts +2 -22
  65. package/dist-types/cjs/highlight/index.d.cts +5 -0
  66. package/dist-types/cjs/index.d.cts +19 -11
  67. package/dist-types/cjs/server/index.d.cts +4 -5
  68. package/dist-types/cjs/types/index.d.cts +63 -15
  69. package/dist-types/cjs/ui/Toolbar.d.cts +10 -0
  70. package/dist-types/cjs/ui/doc-tools.d.cts +58 -0
  71. package/dist-types/cjs/ui/popovers.d.cts +14 -25
  72. package/dist-types/core/AerizEditor.d.ts +204 -48
  73. package/dist-types/core/AerizEditor.d.ts.map +1 -1
  74. package/dist-types/core/AerizViewer.d.ts +7 -0
  75. package/dist-types/core/AerizViewer.d.ts.map +1 -1
  76. package/dist-types/core/block-meta.d.ts +40 -0
  77. package/dist-types/core/block-meta.d.ts.map +1 -1
  78. package/dist-types/core/block-policy.d.ts.map +1 -1
  79. package/dist-types/core/block-tracker.d.ts +64 -0
  80. package/dist-types/core/block-tracker.d.ts.map +1 -0
  81. package/dist-types/core/blocks.d.ts +39 -4
  82. package/dist-types/core/blocks.d.ts.map +1 -1
  83. package/dist-types/core/fonts.d.ts +33 -46
  84. package/dist-types/core/fonts.d.ts.map +1 -1
  85. package/dist-types/core/history.d.ts +28 -10
  86. package/dist-types/core/history.d.ts.map +1 -1
  87. package/dist-types/core/html-mini.d.ts.map +1 -1
  88. package/dist-types/core/html-to-blocks.d.ts +10 -0
  89. package/dist-types/core/html-to-blocks.d.ts.map +1 -0
  90. package/dist-types/core/i18n.d.ts +44 -0
  91. package/dist-types/core/i18n.d.ts.map +1 -1
  92. package/dist-types/core/import-html.d.ts +0 -13
  93. package/dist-types/core/import-html.d.ts.map +1 -1
  94. package/dist-types/core/import-markdown.d.ts.map +1 -1
  95. package/dist-types/core/insert-fragment.d.ts +21 -0
  96. package/dist-types/core/insert-fragment.d.ts.map +1 -0
  97. package/dist-types/core/markdown-export.d.ts.map +1 -1
  98. package/dist-types/core/paste-clean.d.ts +36 -0
  99. package/dist-types/core/paste-clean.d.ts.map +1 -0
  100. package/dist-types/core/render-string.d.ts.map +1 -1
  101. package/dist-types/core/sanitize-dom.d.ts +21 -0
  102. package/dist-types/core/sanitize-dom.d.ts.map +1 -0
  103. package/dist-types/core/sanitize-html.d.ts +8 -0
  104. package/dist-types/core/sanitize-html.d.ts.map +1 -0
  105. package/dist-types/core/sanitize-policy.d.ts +22 -0
  106. package/dist-types/core/sanitize-policy.d.ts.map +1 -0
  107. package/dist-types/core/selection.d.ts +5 -0
  108. package/dist-types/core/selection.d.ts.map +1 -1
  109. package/dist-types/core/snapshot.d.ts.map +1 -1
  110. package/dist-types/core/table-grid.d.ts +87 -0
  111. package/dist-types/core/table-grid.d.ts.map +1 -0
  112. package/dist-types/core/table-ops.d.ts +2 -22
  113. package/dist-types/core/table-ops.d.ts.map +1 -1
  114. package/dist-types/highlight/index.d.ts +5 -0
  115. package/dist-types/highlight/index.d.ts.map +1 -0
  116. package/dist-types/index.d.ts +19 -11
  117. package/dist-types/index.d.ts.map +1 -1
  118. package/dist-types/server/index.d.ts +4 -5
  119. package/dist-types/server/index.d.ts.map +1 -1
  120. package/dist-types/types/index.d.ts +63 -15
  121. package/dist-types/types/index.d.ts.map +1 -1
  122. package/dist-types/ui/Toolbar.d.ts +10 -0
  123. package/dist-types/ui/Toolbar.d.ts.map +1 -1
  124. package/dist-types/ui/doc-tools.d.ts +58 -0
  125. package/dist-types/ui/doc-tools.d.ts.map +1 -0
  126. package/dist-types/ui/icons.d.ts.map +1 -1
  127. package/dist-types/ui/popovers.d.ts +14 -25
  128. package/dist-types/ui/popovers.d.ts.map +1 -1
  129. package/package.json +70 -5
@@ -1 +1 @@
1
- {"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../src/core/i18n.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../src/core/i18n.ts"],"names":[],"mappings":"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"}
@@ -1,16 +1,3 @@
1
- /**
2
- * 외부 HTML 문서를 가져와 모든 스타일을 인라인으로 베이크한다.
3
- *
4
- * 흐름:
5
- * 1. 숨김 iframe 을 만들고 srcdoc 으로 HTML 주입
6
- * 2. iframe load 이벤트(=body 의 마지막 동기 스크립트까지 실행 완료) +
7
- * 추가 RAF/idle 대기 → setTimeout(0) 류 비동기 스타일 적용까지 안정화
8
- * 3. body 트리 전체를 walk 하면서 각 element 의 computed style 중
9
- * "캐스케이드로 채워지지 않을" 속성만 인라인 style 속성으로 베이크
10
- * 4. iframe 제거 후 변환된 element 들의 outerHTML 배열 반환
11
- *
12
- * 다른 origin / iframe contentDocument 접근 제한이 발생하면 reject.
13
- */
14
1
  export declare function isBlockLevelTag(tagName: string): boolean;
15
2
  export interface ImportHtmlOptions {
16
3
  /** iframe load 후 추가 idle 대기(ms). Tailwind CDN 등 런타임 스타일 주입을
@@ -1 +1 @@
1
- {"version":3,"file":"import-html.d.ts","sourceRoot":"","sources":["../../src/core/import-html.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAiBH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAExD;AAiJD,MAAM,WAAW,iBAAiB;IAChC;6BACyB;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0CAA0C;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8DAA8D;IAC9D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;;;;;OASG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAED;;;GAGG;AACH,wBAAsB,4BAA4B,CAChD,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,WAAW,EAAE,CAAC,CA0GxB"}
1
+ {"version":3,"file":"import-html.d.ts","sourceRoot":"","sources":["../../src/core/import-html.ts"],"names":[],"mappings":"AA8BA,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAExD;AAiJD,MAAM,WAAW,iBAAiB;IAChC;6BACyB;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0CAA0C;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8DAA8D;IAC9D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;;;;;OASG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAED;;;GAGG;AACH,wBAAsB,4BAA4B,CAChD,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,WAAW,EAAE,CAAC,CAwGxB"}
@@ -1 +1 @@
1
- {"version":3,"file":"import-markdown.d.ts","sourceRoot":"","sources":["../../src/core/import-markdown.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAaH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,WAAW,EAAE,CAS1D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAuHjD"}
1
+ {"version":3,"file":"import-markdown.d.ts","sourceRoot":"","sources":["../../src/core/import-markdown.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAiBH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,WAAW,EAAE,CAU1D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAiIjD"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * 붙여넣기 · 끌어 놓기로 들어온 조각을 캐럿 자리에 넣는다.
3
+ *
4
+ * `document.execCommand('insertHTML')` 을 쓰지 않는 이유 — 크롬은 넣는 순간
5
+ * 주변 글자의 계산된 스타일을 `<span style>` 으로 덧입혀, 깨끗하게 다듬은 조각을
6
+ * 다시 지저분하게 만든다. 표를 문단 안에 넣으면 문단을 이상하게 쪼개기도 한다.
7
+ * 이 에디터는 이력을 직접 관리하므로 브라우저 undo 스택이 필요 없다.
8
+ *
9
+ * 규칙은 워드프로세서와 같다.
10
+ * - 글자만 있는 조각은 캐럿 자리에 그대로 끼운다.
11
+ * - 문단 · 표 같은 블록이 있으면 지금 문단을 캐럿에서 둘로 나누고 그 사이에
12
+ * 넣는다. 첫 문단은 앞 조각에, 마지막 문단은 뒤 조각에 이어 붙인다.
13
+ * - 표 칸 · 목록 항목 · 코드 안처럼 블록을 둘 수 없는 자리에는 줄바꿈으로
14
+ * 이은 글로 넣는다.
15
+ */
16
+ /**
17
+ * `range` 자리에 조각을 넣고, 넣은 내용의 **끝** 을 가리키는 [노드, 오프셋]
18
+ * 을 돌려준다 (캐럿을 둘 곳). `root` 는 본문 element.
19
+ */
20
+ export declare function insertFragment(root: HTMLElement, range: Range, frag: DocumentFragment): [Node, number] | null;
21
+ //# sourceMappingURL=insert-fragment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"insert-fragment.d.ts","sourceRoot":"","sources":["../../src/core/insert-fragment.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AA2FH;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,WAAW,EACjB,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,gBAAgB,GACrB,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,IAAI,CAyEvB"}
@@ -1 +1 @@
1
- {"version":3,"file":"markdown-export.d.ts","sourceRoot":"","sources":["../../src/core/markdown-export.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAM9C,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,MAAM,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IACzB;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAOD,6BAA6B;AAC7B,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,SAAS,aAAa,EAAE,EACnC,OAAO,GAAE,eAAoB,GAC5B,MAAM,CAWR"}
1
+ {"version":3,"file":"markdown-export.d.ts","sourceRoot":"","sources":["../../src/core/markdown-export.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAe9C,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,MAAM,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IACzB;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAOD,6BAA6B;AAC7B,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,SAAS,aAAa,EAAE,EACnC,OAAO,GAAE,eAAoB,GAC5B,MAAM,CAWR"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * 붙여넣은 HTML 을 에디터 문서로 다듬는다 — 워드 · 한글 · 엑셀 · 웹.
3
+ *
4
+ * ## 왜 필요한가
5
+ *
6
+ * 오피스 프로그램이 클립보드에 올리는 HTML 은 문서가 아니라 "그 프로그램이
7
+ * 다시 읽을 수 있는 덤프" 다. 서식 대부분이 `<style>` 의 클래스 규칙
8
+ * (`.xl65`, `p.MsoNormal`, `P.HStyle0`) 에 들어 있고, 본문에는 `mso-*` 속성 ·
9
+ * `<o:p>` · 조건부 주석 · 목록 기호를 흉내 낸 글자가 섞여 있다. 그대로 넣으면
10
+ *
11
+ * - 엑셀 머리글의 배경 · 테두리 · 굵기가 사라지고(클래스에만 있으므로),
12
+ * - 워드 글머리 목록이 "§ 신규 고객" 같은 글자 문단이 되고,
13
+ * - 저장한 HTML 이 몇 배로 부풀어 서버 · 뷰어에서도 같은 쓰레기를 끌고 다닌다.
14
+ *
15
+ * ## 무엇을 하는가
16
+ *
17
+ * 1. `DOMParser` 로 **비활성 문서** 에 읽는다 — 스크립트가 돌지 않고 이미지도
18
+ * 내려받지 않는다. 보안 거름은 이 다음 단계(`parseSafeFragment`) 가 맡는다.
19
+ * 2. `<style>` 의 클래스 규칙에서 **눈에 보이는 서식만**(굵기 · 기울임 · 색 ·
20
+ * 배경 · 정렬 · 테두리) 골라 요소의 style 로 옮긴다. 글꼴 · 크기 · 줄 간격 같은
21
+ * "문서 기본값" 은 옮기지 않는다 — 붙여넣은 글이 주변 글과 다른 글꼴로 박히는
22
+ * 것이 사용자가 가장 싫어하는 결과다. 요소에 **직접** 쓴 글꼴 · 크기는 남긴다.
23
+ * 3. 워드의 `mso-list` 문단을 진짜 `<ul>/<ol>` 로 묶는다(수준별 중첩 포함).
24
+ * 4. `mso-*` · 클래스 · `lang` · `<o:p>` · 빈 `<span>` 을 걷어 낸다. 길이 단위 pt 는
25
+ * px 로 (글자 크기는 에디터 목록과 같은 pt 로 둔다).
26
+ * 5. 표 칸 안의 문단 하나짜리 `<p>` 는 풀어 칸에 글만 남긴다.
27
+ */
28
+ export type PasteSource = 'word' | 'excel' | 'hwp' | 'web';
29
+ /** 클립보드 HTML 이 어느 프로그램에서 왔는지. */
30
+ export declare function detectSource(html: string): PasteSource;
31
+ /**
32
+ * 붙여넣을 HTML 을 다듬어 돌려준다. 결과는 아직 **신뢰할 수 없는** HTML 이다
33
+ * — 호출하는 쪽이 반드시 sanitize 를 거쳐 문서에 넣는다.
34
+ */
35
+ export declare function cleanPastedHtml(html: string): string;
36
+ //# sourceMappingURL=paste-clean.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paste-clean.d.ts","sourceRoot":"","sources":["../../src/core/paste-clean.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAoBH,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,CAAC;AAE3D,iCAAiC;AACjC,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAMtD;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAqDpD"}
@@ -1 +1 @@
1
- {"version":3,"file":"render-string.d.ts","sourceRoot":"","sources":["../../src/core/render-string.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,OAAO,KAAK,EAAE,aAAa,EAAgB,MAAM,UAAU,CAAC;AA8B5D,MAAM,WAAW,iBAAiB;IAChC;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,6CAA6C;IAC7C,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;CAC1B;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,SAAS,aAAa,EAAE,EACnC,OAAO,GAAE,iBAAsB,GAC9B,MAAM,CAQR;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,aAAa,EACvB,OAAO,GAAE,IAAI,CAAC,iBAAiB,EAAE,UAAU,CAAM,GAChD,MAAM,CAER"}
1
+ {"version":3,"file":"render-string.d.ts","sourceRoot":"","sources":["../../src/core/render-string.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,OAAO,KAAK,EAAE,aAAa,EAAgB,MAAM,UAAU,CAAC;AAkC5D,MAAM,WAAW,iBAAiB;IAChC;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,6CAA6C;IAC7C,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;CAC1B;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,SAAS,aAAa,EAAE,EACnC,OAAO,GAAE,iBAAsB,GAC9B,MAAM,CAQR;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,aAAa,EACvB,OAAO,GAAE,IAAI,CAAC,iBAAiB,EAAE,UAAU,CAAM,GAChD,MAAM,CAER"}
@@ -0,0 +1,21 @@
1
+ /** 신뢰할 수 없는 HTML 을 정화한 DocumentFragment 로 만든다. `doc` 의 노드다. */
2
+ export declare function parseSafeFragment(html: string, doc?: Document): DocumentFragment;
3
+ /**
4
+ * `root` 아래를 제자리에서 정화한다. `root` 자신의 속성은 건드리지 않는다.
5
+ *
6
+ * 이미 문서에 붙어 있는 트리에도 쓸 수 있다 (붙여넣기 뒤 방어선 등). 다만
7
+ * 그때는 이미 로드가 시작됐을 수 있으므로 들어오는 길목에서는
8
+ * {@link parseSafeFragment} 를 쓴다.
9
+ */
10
+ export declare function sanitizeTree(root: ParentNode): void;
11
+ /**
12
+ * 이미 본문에 붙은 트리의 방어선 — **실행 경로만** 끊는다.
13
+ *
14
+ * 들어오는 길목은 {@link parseSafeFragment} 가 맡는다. 이 함수는 그 길목을
15
+ * 거치지 않고 브라우저가 직접 넣은 HTML(끌어다 놓기 등) 을 위해 타이핑마다
16
+ * 바뀐 블록에만 돈다. 그래서 가볍게 유지한다 — 모르는 태그를 벗기거나
17
+ * 속성 허용 목록을 적용하지 않는다(에디터의 편집 보조 버튼도 이 트리 안에
18
+ * 있다). 스크립트 · 임베드 · 이벤트 핸들러 · 위험한 URL 만 지운다.
19
+ */
20
+ export declare function guardLiveTree(root: Element): void;
21
+ //# sourceMappingURL=sanitize-dom.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sanitize-dom.d.ts","sourceRoot":"","sources":["../../src/core/sanitize-dom.ts"],"names":[],"mappings":"AAYA,+DAA+D;AAC/D,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,GAAE,QAAmB,GAAG,gBAAgB,CAO1F;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAOnD;AA0DD;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAajD"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * 신뢰할 수 없는 HTML 을 허용 목록으로 정화해 문자열로 돌려준다.
3
+ *
4
+ * 에디터의 `getHTML()` 출력은 이미 이 규칙을 만족하므로 그대로 통과한다
5
+ * (정화는 멱등이다 — 두 번 거쳐도 결과가 같다).
6
+ */
7
+ export declare function sanitizeHTML(html: string): string;
8
+ //# sourceMappingURL=sanitize-html.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sanitize-html.d.ts","sourceRoot":"","sources":["../../src/core/sanitize-html.ts"],"names":[],"mappings":"AAeA;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGjD"}
@@ -0,0 +1,22 @@
1
+ export type TagAction = 'keep' | 'unwrap' | 'drop';
2
+ export declare function tagAction(tag: string): TagAction;
3
+ /**
4
+ * 속성 하나를 판정한다. 남길 값(필요하면 고친 값) 또는 버리라는 뜻의 `null`.
5
+ *
6
+ * `tag` · `name` 은 소문자로 넘긴다.
7
+ */
8
+ export declare function cleanAttr(tag: string, name: string, value: string): string | null;
9
+ export declare function safeId(value: string): string | null;
10
+ /**
11
+ * 인라인 `style` 값을 정화한다. 위험한 선언만 빼고 나머지는 그대로 둔다.
12
+ *
13
+ * `url(...)` 은 이미지 URL 로 안전한 것(http(s), data:image, 상대 경로) 만
14
+ * 남긴다. `url(javascript:…)` 는 오래된 브라우저에서 실행된다.
15
+ */
16
+ export declare function cleanStyle(css: string): string;
17
+ /**
18
+ * 새 창으로 여는 링크에 `rel="noopener noreferrer"` 를 보장한다.
19
+ * 열린 페이지가 `window.opener` 로 원래 페이지를 바꿔치기하는 것을 막는다.
20
+ */
21
+ export declare function relForTarget(target: string | null, rel: string | null): string | null;
22
+ //# sourceMappingURL=sanitize-policy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sanitize-policy.d.ts","sourceRoot":"","sources":["../../src/core/sanitize-policy.ts"],"names":[],"mappings":"AAmCA,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;AAoCnD,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAKhD;AAkDD;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAuBjF;AAiBD,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGnD;AAMD;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAqB9C;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAMrF"}
@@ -20,6 +20,11 @@ export declare function captureSelectionOffsets(root: HTMLElement): SelectionOff
20
20
  * 문서가 짧아져 오프셋이 넘치면 가장 가까운 위치(문서 끝) 에 둔다.
21
21
  */
22
22
  export declare function restoreSelectionOffsets(root: HTMLElement, saved: SelectionOffsets): void;
23
+ /** 문자 오프셋에 해당하는 (텍스트 노드, 노드 안 offset). */
24
+ export declare function pointAtTextOffset(root: HTMLElement, offset: number): {
25
+ node: Node;
26
+ offset: number;
27
+ };
23
28
  /**
24
29
  * 캐럿이 블록의 맨 끝에 있는지.
25
30
  *
@@ -1 +1 @@
1
- {"version":3,"file":"selection.d.ts","sourceRoot":"","sources":["../../src/core/selection.ts"],"names":[],"mappings":"AAcA,0BAA0B;AAC1B,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,WAAW,GAAG,gBAAgB,GAAG,IAAI,CAE9E;AAED,oDAAoD;AACpD,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,gBAAgB,GACtB,IAAI,CAEN;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,WAAW,GAChB,gBAAgB,GAAG,IAAI,CAgBzB;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,WAAW,EACjB,KAAK,EAAE,gBAAgB,GACtB,IAAI,CAcN;AAwBD;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAa/D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,WAAW,GACnB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,GAAG,IAAI,CAavC"}
1
+ {"version":3,"file":"selection.d.ts","sourceRoot":"","sources":["../../src/core/selection.ts"],"names":[],"mappings":"AAcA,0BAA0B;AAC1B,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,WAAW,GAAG,gBAAgB,GAAG,IAAI,CAE9E;AAED,oDAAoD;AACpD,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,gBAAgB,GACtB,IAAI,CAEN;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,WAAW,GAChB,gBAAgB,GAAG,IAAI,CAgBzB;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,WAAW,EACjB,KAAK,EAAE,gBAAgB,GACtB,IAAI,CAcN;AAED,0CAA0C;AAC1C,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,WAAW,EACjB,MAAM,EAAE,MAAM,GACb;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAgBhC;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAa/D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,WAAW,GACnB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,GAAG,IAAI,CAavC"}
@@ -1 +1 @@
1
- {"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../../src/core/snapshot.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAa,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAElC;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM,CAGjE;AAqBD;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,SAAS,aAAa,EAAE,GAC9B,aAAa,EAAE,CAEjB;AAED,oDAAoD;AACpD,wBAAgB,eAAe,CAAC,QAAQ,EAAE,aAAa,GAAG,aAAa,CAatE"}
1
+ {"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../../src/core/snapshot.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAa,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAElC;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM,CAGjE;AAuBD;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,SAAS,aAAa,EAAE,GAC9B,aAAa,EAAE,CAEjB;AAED,oDAAoD;AACpD,wBAAgB,eAAe,CAAC,QAAQ,EAAE,aAAa,GAAG,aAAa,CAatE"}
@@ -0,0 +1,87 @@
1
+ /**
2
+ * 표 격자 모델 — 병합 셀(`rowspan` · `colspan`) 을 반영한 좌표.
3
+ *
4
+ * ## 왜 필요한가
5
+ *
6
+ * DOM 의 `<tr>` 안 셀 순번은 **열 번호가 아니다.** 위 행의 `rowspan` 이 내려와
7
+ * 자리를 차지하면 그 행의 첫 `<td>` 가 2열일 수 있고, `colspan="2"` 셀 다음
8
+ * 셀은 3열이다. 1.0 은 셀 순번을 열 번호로 써서, 엑셀 · 한글에서 가져온 병합
9
+ * 표에 열을 넣으면 머리글과 데이터가 어긋났다.
10
+ *
11
+ * 여기서는 표를 한 번 훑어 "몇 행 몇 열 칸을 어느 셀이 차지하는가" 를 담은
12
+ * 격자를 만들고, 행 · 열 삽입과 삭제 · 병합 · 분할을 모두 그 격자 위에서
13
+ * 계산한다. 모든 조작은 끝난 뒤에도 표가 **직사각형**(모든 행의 칸 수가 같음)
14
+ * 이도록 유지한다.
15
+ */
16
+ /** 격자 위 셀 하나. `row` · `col` 은 셀이 시작하는 칸(왼쪽 위) 이다. */
17
+ export interface GridCell {
18
+ el: HTMLTableCellElement;
19
+ row: number;
20
+ col: number;
21
+ rowSpan: number;
22
+ colSpan: number;
23
+ }
24
+ export interface TableGrid {
25
+ /** 표의 모든 행 (thead · tbody · tfoot 순서 그대로). */
26
+ rows: HTMLTableRowElement[];
27
+ /** `slots[r][c]` = 그 칸을 차지하는 셀. 빈 칸(모양이 깨진 표) 은 null. */
28
+ slots: (GridCell | null)[][];
29
+ /** 열 수. */
30
+ width: number;
31
+ /** 셀 element → 격자 정보. */
32
+ cells: Map<HTMLTableCellElement, GridCell>;
33
+ }
34
+ /** 직사각형 범위. 양 끝 포함. */
35
+ export interface GridRect {
36
+ top: number;
37
+ left: number;
38
+ bottom: number;
39
+ right: number;
40
+ }
41
+ /** 표를 훑어 격자를 만든다. */
42
+ export declare function buildGrid(table: HTMLTableElement): TableGrid;
43
+ /** 셀이 덮는 범위. */
44
+ export declare function rectOf(cell: GridCell): GridRect;
45
+ /**
46
+ * 두 셀을 모서리로 하는 직사각형. 걸치는 병합 셀이 있으면 그 셀이 통째로
47
+ * 들어오도록 범위를 넓힌다 — 병합 셀의 일부만 고르는 일은 없다.
48
+ */
49
+ export declare function expandRect(grid: TableGrid, rect: GridRect): GridRect;
50
+ /** 직사각형 안의 셀들 (문서 순서, 중복 없음). */
51
+ export declare function cellsInRect(grid: TableGrid, rect: GridRect): HTMLTableCellElement[];
52
+ /** 두 셀을 모서리로 한 선택 범위의 셀들 (병합 셀을 통째로 포함). */
53
+ export declare function cellsBetween(table: HTMLTableElement, a: HTMLTableCellElement, b: HTMLTableCellElement): HTMLTableCellElement[];
54
+ /** `cell` 이 있는 행의 위/아래에 행을 넣는다. 새 행의 첫 셀을 돌려준다. */
55
+ export declare function insertRow(table: HTMLTableElement, cell: HTMLTableCellElement, where: 'above' | 'below'): HTMLTableCellElement | null;
56
+ /** `cell` 이 덮는 행들을 지운다. 표에 행이 하나뿐이면 아무 것도 하지 않는다. */
57
+ export declare function deleteRow(table: HTMLTableElement, cell: HTMLTableCellElement): boolean;
58
+ /** `cell` 이 있는 열의 왼쪽/오른쪽에 열을 넣는다. */
59
+ export declare function insertColumn(table: HTMLTableElement, cell: HTMLTableCellElement, where: 'left' | 'right'): void;
60
+ /** `cell` 이 덮는 열들을 지운다. 열이 하나뿐이면 아무 것도 하지 않는다. */
61
+ export declare function deleteColumn(table: HTMLTableElement, cell: HTMLTableCellElement): boolean;
62
+ /** 고른 셀들을 하나로 합칠 수 있는지 (두 칸 이상을 덮어야 한다). */
63
+ export declare function canMerge(table: HTMLTableElement, cells: readonly HTMLTableCellElement[]): boolean;
64
+ /**
65
+ * 고른 셀들을 감싸는 직사각형을 셀 하나로 합친다. 합쳐진 셀(왼쪽 위) 을
66
+ * 돌려준다. 다른 셀의 내용은 줄을 바꿔 뒤에 이어 붙인다 — 한글 · 워드와 같다.
67
+ */
68
+ export declare function mergeCells(table: HTMLTableElement, cells: readonly HTMLTableCellElement[]): HTMLTableCellElement | null;
69
+ /** 병합 셀을 1×1 칸들로 나눈다. 나눌 것이 없으면 false. */
70
+ export declare function splitCell(table: HTMLTableElement, cell: HTMLTableCellElement): boolean;
71
+ /** 셀이 병합 셀인지. */
72
+ export declare function isMerged(cell: HTMLTableCellElement): boolean;
73
+ /** 격자 순서(행 우선) 로 다음 셀. 마지막 셀이면 null. */
74
+ export declare function gridNextCell(table: HTMLTableElement, cell: HTMLTableCellElement): HTMLTableCellElement | null;
75
+ /** 격자 순서로 이전 셀. 첫 셀이면 null. */
76
+ export declare function gridPreviousCell(table: HTMLTableElement, cell: HTMLTableCellElement): HTMLTableCellElement | null;
77
+ /**
78
+ * 행 · 열을 지운 뒤 캐럿을 둘 셀. 지워지는 범위 바로 아래(오른쪽) 셀, 없으면
79
+ * 바로 위(왼쪽) 셀. 지우기 **전에** 부른다.
80
+ */
81
+ export declare function neighborAfterDelete(table: HTMLTableElement, cell: HTMLTableCellElement, axis: 'row' | 'col'): HTMLTableCellElement | null;
82
+ /**
83
+ * 열 너비를 끌어 바꿀 때 너비를 줄 셀들 — `cell` 의 오른쪽 경계 열에 있는
84
+ * 1칸짜리 셀. 병합 셀의 너비는 그 열들의 합이라 브라우저가 맞춘다.
85
+ */
86
+ export declare function columnCells(table: HTMLTableElement, cell: HTMLTableCellElement): HTMLTableCellElement[];
87
+ //# sourceMappingURL=table-grid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table-grid.d.ts","sourceRoot":"","sources":["../../src/core/table-grid.ts"],"names":[],"mappings":"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"}
@@ -1,30 +1,10 @@
1
1
  /**
2
- * 표 셀의 기하와 이동.
2
+ * 표 셀 하나에 대한 판정 — 노드가 속한 셀, 포인터가 셀 가장자리에 있는지.
3
3
  *
4
- * 표 편집은 "지금 어느 셀인가" 를 계속 되묻는 일이다 — 캐럿이 놓인 셀, 드래그
5
- * 로 걸친 셀 범위, 마우스가 가장자리에 닿았는지, Tab 을 눌렀을 때 다음 셀.
6
- * 그 판정들만 여기 모은다. 에디터 인스턴스 상태를 보지 않는 순수 계산이라
7
- * 따로 두면 표 동작을 고칠 때 에디터 본체를 읽지 않아도 된다.
8
- *
9
- * **rowspan / colspan 은 고려하지 않는다.** 이 에디터는 둘 다 만들지 않으며,
10
- * 병합 셀을 지원하게 되면 여기 있는 인덱스 계산은 전부 다시 짜야 한다.
4
+ * 행 · 열 · 병합처럼 표 전체 모양을 따지는 계산은 `table-grid` 에 있다.
11
5
  */
12
6
  /** 임의의 노드에서 가장 가까운 td/th element. 없으면 null. */
13
7
  export declare function nearestCell(node: Node): HTMLTableCellElement | null;
14
- /**
15
- * 다음 표 셀. 행 끝이면 다음 행의 첫 셀, 표의 마지막 셀이면 **새 행을 만들어**
16
- * 그 첫 셀을 돌려준다 — Tab 만으로 표를 끝까지 채울 수 있도록.
17
- */
18
- export declare function nextTableCell(cell: HTMLTableCellElement, table: HTMLTableElement): HTMLTableCellElement | null;
19
- /** 이전 표 셀. 첫 셀이면 null. */
20
- export declare function previousTableCell(cell: HTMLTableCellElement): HTMLTableCellElement | null;
21
- /**
22
- * `startCell` 과 `endCell` 을 모서리로 하는 사각 영역의 모든 td/th.
23
- *
24
- * thead 와 tbody 가 섞여 있어도 `querySelectorAll('tr')` 의 document order 로
25
- * 단일 행 인덱스를 매긴다 — 사용자 눈에 보이는 순서와 같다.
26
- */
27
- export declare function cellsInRectangle(table: HTMLTableElement, startCell: HTMLTableCellElement, endCell: HTMLTableCellElement): HTMLTableCellElement[];
28
8
  /** 셀의 우/하 가장자리에 포인터가 있으면 'right' / 'bottom'. 아니면 null. */
29
9
  export declare function detectCellEdge(cell: HTMLTableCellElement, x: number, y: number): 'right' | 'bottom' | null;
30
10
  //# sourceMappingURL=table-ops.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"table-ops.d.ts","sourceRoot":"","sources":["../../src/core/table-ops.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,+CAA+C;AAC/C,wBAAgB,WAAW,CAAC,IAAI,EAAE,IAAI,GAAG,oBAAoB,GAAG,IAAI,CAMnE;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,oBAAoB,EAC1B,KAAK,EAAE,gBAAgB,GACtB,oBAAoB,GAAG,IAAI,CAO7B;AAED,0BAA0B;AAC1B,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,oBAAoB,GACzB,oBAAoB,GAAG,IAAI,CAM7B;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,gBAAgB,EACvB,SAAS,EAAE,oBAAoB,EAC/B,OAAO,EAAE,oBAAoB,GAC5B,oBAAoB,EAAE,CA8BxB;AAKD,0DAA0D;AAC1D,wBAAgB,cAAc,CAC5B,IAAI,EAAE,oBAAoB,EAC1B,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,GACR,OAAO,GAAG,QAAQ,GAAG,IAAI,CAQ3B"}
1
+ {"version":3,"file":"table-ops.d.ts","sourceRoot":"","sources":["../../src/core/table-ops.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,+CAA+C;AAC/C,wBAAgB,WAAW,CAAC,IAAI,EAAE,IAAI,GAAG,oBAAoB,GAAG,IAAI,CAMnE;AAKD,0DAA0D;AAC1D,wBAAgB,cAAc,CAC5B,IAAI,EAAE,oBAAoB,EAC1B,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,GACR,OAAO,GAAG,QAAQ,GAAG,IAAI,CAQ3B"}
@@ -0,0 +1,5 @@
1
+ import type { CodeHighlighter } from '../types/index.js';
2
+ export type { CodeHighlighter } from '../types/index.js';
3
+ /** 기본 제공 언어 16 종(Plain Text 포함) 의 색칠기. */
4
+ export declare const highlighter: CodeHighlighter;
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/highlight/index.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAEhD,YAAY,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAEhD,0CAA0C;AAC1C,eAAO,MAAM,WAAW,EAAE,eAGzB,CAAC"}
@@ -1,22 +1,30 @@
1
+ /**
2
+ * `@aeriz/wysiwyg` — 브라우저 진입점. 스타일시트를 부수 효과로 불러온다.
3
+ *
4
+ * 여기서 내보내는 것이 공개 API 의 전부다. 에디터 내부(블록 레지스트리 ·
5
+ * 정규화 · HTML 파서 · 로케일 사전) 는 내보내지 않는다 — 내보내면 고칠 때마다
6
+ * 호환이 깨진다. 서버(Node · workerd · Deno) 에서는 CSS 를 끌어오지 않는
7
+ * `@aeriz/wysiwyg/server` 를 쓴다.
8
+ */
1
9
  // (CSS 부수 효과 import 는 타입 선언에서 제거됨 — scripts/strip-css-imports.mjs)
2
10
  export { AerizEditor } from './core/AerizEditor.js';
3
- export type { EditorState, EditorStateListener, InlineState, } from './core/AerizEditor.js';
11
+ export type { EditorState, EditorStateListener, InlineState } from './core/AerizEditor.js';
4
12
  export { AerizViewer } from './core/AerizViewer.js';
5
13
  export type { ViewerOptions } from './core/AerizViewer.js';
6
- export { ALIGN_CLASS_BY_VALUE, ALL_INLINE_MARKS, BLOCK_ID_ATTR, BLOCK_TYPES, BLOCK_TYPE_BY_KIND, BlockIdRegistry, applyBlockClassNames, applyBlockInlineStyles, assignMissingIds, classifyBlockElement, extractInlineContent, fillInlineContent, findBlockFrom, getBlockLabel, isElementBlank, listBlocks, normalizeContent, placeCaretAtStart, readBlockStyleTheme, renderBlock, renderBlocks, serializeBlock, serializeBlocks, restoreAlignFromClasses, stripEditorOnlyAttrs, stripEditorOnlyNodes, } from './core/blocks.js';
7
- export type { BlockStyleTheme } from './core/blocks.js';
8
- export type { Block, BlockAttrs, BlockAttrsByKind, BlockIdResolver, BlockKind, BlockMatch, BlockSnapshot, BlockType, BlockquoteAttrs, BulletListAttrs, ClassifyResult, CodeBlockAttrs, FileAttrs, HeadingAttrs, HeadingLevel, HrAttrs, ImageAttrs, ImportedHtmlAttrs, InlineMarkName, LinkCardAttrs, OrderedListAttrs, ParagraphAttrs, Snapshot, TableAttrs, UnknownAttrs, YoutubeAttrs, } from './core/blocks.js';
9
- export { getLocale, setLocale, t } from './core/i18n.js';
10
- export type { Locale, Strings } from './core/i18n.js';
11
- export type { EditorOptions, HtmlStyleMode, SerializeHtmlOptions, ToolbarConfig, ToolbarItem, ToolbarItemName, } from './types/index.js';
14
+ export type { EditorErrorCode, EditorOptions, HtmlStyleMode, SerializeHtmlOptions, ToolbarConfig, ToolbarItem, ToolbarItemName, UploadOptions, CodeHighlighter, } from './types/index.js';
12
15
  export { DEFAULT_TOOLBAR } from './types/index.js';
13
- export { SNAPSHOT_VERSION, snapshotVersionOf, upgradeSnapshot, upgradeSnapshots, } from './core/snapshot.js';
14
- export { renderBlockToHTML, renderBlocksToHTML } from './core/render-string.js';
16
+ export { DEFAULT_FONTS, DEFAULT_FONT_SIZES } from './core/fonts.js';
17
+ export type { FontFamily } from './core/fonts.js';
18
+ export type { Locale } from './core/i18n.js';
19
+ export { SNAPSHOT_VERSION, upgradeSnapshots } from './core/snapshot.js';
20
+ export { renderBlocksToHTML } from './core/render-string.js';
15
21
  export type { RenderHtmlOptions } from './core/render-string.js';
22
+ export { sanitizeHTML } from './core/sanitize-html.js';
23
+ export { htmlToBlocks } from './core/html-to-blocks.js';
16
24
  export { blocksToMarkdown } from './core/markdown-export.js';
17
25
  export type { MarkdownOptions } from './core/markdown-export.js';
26
+ export { markdownToBlocks, markdownToHtml } from './core/import-markdown.js';
18
27
  export { blocksToPlainText } from './core/plain-text.js';
19
28
  export type { PlainTextOptions } from './core/plain-text.js';
20
- export { decodeEntities, escapeAttr, escapeHtml, parseHtmlFragment, serializeNodes, textOf, textWithBlockBreaks, } from './core/html-mini.js';
21
- export type { HtmlElementNode, HtmlNode, HtmlText } from './core/html-mini.js';
29
+ export type { Block, BlockAttrs, BlockAttrsByKind, BlockKind, BlockSnapshot, BlockquoteAttrs, BulletListAttrs, CodeBlockAttrs, FileAttrs, HeadingAttrs, HeadingLevel, HrAttrs, ImageAttrs, ImportedHtmlAttrs, InlineMarkName, LinkCardAttrs, OrderedListAttrs, ParagraphAttrs, Snapshot, TableAttrs, UnknownAttrs, YoutubeAttrs, } from './core/blocks.js';
22
30
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,oBAAoB,CAAC;AAE5B,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,YAAY,EACV,WAAW,EACX,mBAAmB,EACnB,WAAW,GACZ,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,OAAO,EACL,oBAAoB,EACpB,gBAAgB,EAChB,aAAa,EACb,WAAW,EACX,kBAAkB,EAClB,eAAe,EACf,oBAAoB,EACpB,sBAAsB,EACtB,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,EACpB,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,cAAc,EACd,UAAU,EACV,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,WAAW,EACX,YAAY,EACZ,cAAc,EACd,eAAe,EACf,uBAAuB,EACvB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,eAAe,CAAC;AACvB,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,YAAY,EACV,KAAK,EACL,UAAU,EACV,gBAAgB,EAChB,eAAe,EACf,SAAS,EACT,UAAU,EACV,aAAa,EACb,SAAS,EACT,eAAe,EACf,eAAe,EACf,cAAc,EACd,cAAc,EACd,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,OAAO,EACP,UAAU,EACV,iBAAiB,EACjB,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,YAAY,GACb,MAAM,eAAe,CAAC;AAKvB,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,aAAa,CAAC;AACtD,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEnD,YAAY,EACV,aAAa,EACb,aAAa,EACb,oBAAoB,EACpB,aAAa,EACb,WAAW,EACX,eAAe,GAChB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAQ1C,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,gBAAgB,GACjB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC7E,YAAY,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,YAAY,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE1D,OAAO,EACL,cAAc,EACd,UAAU,EACV,UAAU,EACV,iBAAiB,EACjB,cAAc,EACd,MAAM,EACN,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,eAAe,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,oBAAoB,CAAC;AAE5B,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,YAAY,EAAE,WAAW,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAExF,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,YAAY,EACV,eAAe,EACf,aAAa,EACb,aAAa,EACb,oBAAoB,EACpB,aAAa,EACb,WAAW,EACX,eAAe,EACf,aAAa,EACb,eAAe,GAChB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE1C,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACjE,YAAY,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,YAAY,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAI1C,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,YAAY,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,YAAY,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE1D,YAAY,EACV,KAAK,EACL,UAAU,EACV,gBAAgB,EAChB,SAAS,EACT,aAAa,EACb,eAAe,EACf,eAAe,EACf,cAAc,EACd,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,OAAO,EACP,UAAU,EACV,iBAAiB,EACjB,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,YAAY,GACb,MAAM,eAAe,CAAC"}
@@ -24,14 +24,13 @@
24
24
  * },
25
25
  * };
26
26
  */
27
- export { renderBlockToHTML, renderBlocksToHTML, } from '../core/render-string.js';
27
+ export { renderBlocksToHTML } from '../core/render-string.js';
28
28
  export type { RenderHtmlOptions } from '../core/render-string.js';
29
+ export { sanitizeHTML } from '../core/sanitize-html.js';
29
30
  export { blocksToMarkdown } from '../core/markdown-export.js';
30
31
  export type { MarkdownOptions } from '../core/markdown-export.js';
31
32
  export { blocksToPlainText } from '../core/plain-text.js';
32
33
  export type { PlainTextOptions } from '../core/plain-text.js';
33
- export { SNAPSHOT_VERSION, snapshotVersionOf, upgradeSnapshot, upgradeSnapshots, } from '../core/snapshot.js';
34
- export type { Block, BlockAttrs, BlockAttrsByKind, BlockKind, BlockSnapshot, BlockquoteAttrs, BulletListAttrs, CodeBlockAttrs, FileAttrs, HeadingAttrs, HeadingLevel, HrAttrs, ImageAttrs, ImportedHtmlAttrs, InlineMarkName, LinkCardAttrs, OrderedListAttrs, ParagraphAttrs, Snapshot, TableAttrs, UnknownAttrs, YoutubeAttrs, } from '../core/blocks.js';
35
- export { decodeEntities, escapeAttr, escapeHtml, parseHtmlFragment, serializeNodes, textOf, textWithBlockBreaks, } from '../core/html-mini.js';
36
- export type { HtmlElementNode, HtmlNode, HtmlText } from '../core/html-mini.js';
34
+ export { SNAPSHOT_VERSION, upgradeSnapshots } from '../core/snapshot.js';
35
+ export type { BlockAttrs, BlockAttrsByKind, BlockKind, BlockSnapshot, BlockquoteAttrs, BulletListAttrs, CodeBlockAttrs, FileAttrs, HeadingAttrs, HeadingLevel, HrAttrs, ImageAttrs, ImportedHtmlAttrs, InlineMarkName, LinkCardAttrs, OrderedListAttrs, ParagraphAttrs, Snapshot, TableAttrs, UnknownAttrs, YoutubeAttrs, } from '../core/blocks.js';
37
36
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EACL,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,YAAY,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAI1B,YAAY,EACV,KAAK,EACL,UAAU,EACV,gBAAgB,EAChB,SAAS,EACT,aAAa,EACb,eAAe,EACf,eAAe,EACf,cAAc,EACd,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,OAAO,EACP,UAAU,EACV,iBAAiB,EACjB,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,YAAY,GACb,MAAM,gBAAgB,CAAC;AAIxB,OAAO,EACL,cAAc,EACd,UAAU,EACV,UAAU,EACV,iBAAiB,EACjB,cAAc,EACd,MAAM,EACN,mBAAmB,GACpB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,eAAe,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,YAAY,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,YAAY,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAItE,YAAY,EACV,UAAU,EACV,gBAAgB,EAChB,SAAS,EACT,aAAa,EACb,eAAe,EACf,eAAe,EACf,cAAc,EACd,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,OAAO,EACP,UAAU,EACV,iBAAiB,EACjB,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,YAAY,GACb,MAAM,gBAAgB,CAAC"}
@@ -1,5 +1,6 @@
1
+ import type { FontFamily } from '../core/fonts.js';
1
2
  export type ToolbarItem = ToolbarItemName | '|';
2
- export type ToolbarItemName = 'undo' | 'redo' | 'blockType' | 'fontFamily' | 'fontSize' | 'bold' | 'italic' | 'underline' | 'strike' | 'color' | 'backgroundColor' | 'align' | 'cellBg' | 'tableMenu' | 'codeLang' | 'bulletList' | 'orderedList' | 'blockquote' | 'codeBlock' | 'link' | 'image' | 'table' | 'hr' | 'clearFormat';
3
+ export type ToolbarItemName = 'undo' | 'redo' | 'blockType' | 'fontFamily' | 'fontSize' | 'bold' | 'italic' | 'underline' | 'strike' | 'superscript' | 'subscript' | 'color' | 'backgroundColor' | 'align' | 'cellBg' | 'tableMenu' | 'codeLang' | 'bulletList' | 'orderedList' | 'blockquote' | 'codeBlock' | 'link' | 'image' | 'table' | 'hr' | 'clearFormat' | 'lineHeight' | 'letterSpacing' | 'specialChar' | 'findReplace' | 'source' | 'print' | 'fullscreen';
3
4
  export interface ToolbarConfig {
4
5
  items: ToolbarItem[];
5
6
  sticky?: boolean;
@@ -24,6 +25,12 @@ export interface EditorOptions {
24
25
  element: HTMLElement;
25
26
  initialHTML?: string;
26
27
  placeholder?: string;
28
+ /**
29
+ * 아래쪽 상태바(되돌리기 · 블록 수 · 글자 수) 를 보일지. 기본 `true`.
30
+ */
31
+ statusBar?: boolean;
32
+ /** 본문 편집 영역의 접근성 이름(aria-label). 기본은 로케일의 "본문 편집기". */
33
+ ariaLabel?: string;
27
34
  toolbar?: ToolbarConfig | false;
28
35
  theme?: 'light' | 'dark';
29
36
  /** UI 언어. 'en' / 'ko' / 'ja' / 'zh'. 기본 'ko'. */
@@ -35,27 +42,68 @@ export interface EditorOptions {
35
42
  htmlStyles?: HtmlStyleMode;
36
43
  onChange?: (html: string) => void;
37
44
  /**
38
- * 직접 업로드 핸들러. 우선 적용된다. 미설정 + `imageUploadUrl` 만 있을 때는
39
- * 에디터가 multipart/form-data 로 그 URL 에 POST 한 응답 JSON 의
40
- * `url` 필드를 사용한다.
45
+ * 읽기 전용. 글을 고칠 수 없고 툴바는 인쇄 · 전체 화면만 쓸 수 있다.
46
+ * 나중에 바꾸려면 `editor.setReadOnly()`.
47
+ */
48
+ readOnly?: boolean;
49
+ /**
50
+ * 에디터 높이. 숫자는 px, 문자열은 CSS 값('60vh' 등). 지정하면 본문이 그 안에서
51
+ * 스크롤된다. 지정하지 않으면 부모 높이를 채우고 최소 320px 이다.
41
52
  */
42
- onImageUpload?: (file: File) => Promise<string>;
53
+ height?: number | string;
54
+ /** 그림 · 파일 올리기. 없으면 다이얼로그의 "올리기" 탭이 꺼지고 붙여넣은 그림은 문서에 그대로 담긴다. */
55
+ upload?: UploadOptions;
43
56
  /**
44
- * 서버 이미지 업로드 API URL. 설정 시 이미지 다이얼로그의 "업로드" 탭이
45
- * 활성화된다. 미설정 시 업로드 탭은 비활성 + 툴팁 안내.
57
+ * 에디터 안에서 난 오류(올리기 실패 등). 지정하지 않으면 콘솔에 남긴다.
58
+ * `code` 로 종류를 가린다.
46
59
  */
47
- imageUploadUrl?: string;
60
+ onError?: (error: Error, context: {
61
+ code: EditorErrorCode;
62
+ }) => void;
48
63
  /**
49
- * 파일 첨부 직접 업로드 핸들러. 첨부 다이얼로그의 "업로드" 탭에서 사용.
50
- * 미설정 + `fileUploadUrl` 만 있을 때는 에디터가 multipart/form-data 로
51
- * POST 한 응답 JSON 의 `url` 필드를 사용한다.
64
+ * 코드 블록 색칠기. 없으면 코드는 색 없이 보이고 언어 고르기 버튼도 숨는다.
65
+ * 기본 색칠기는 `import { highlighter } from '@aeriz/wysiwyg/highlight'`.
52
66
  */
53
- onFileUpload?: (file: File) => Promise<string>;
67
+ highlighter?: CodeHighlighter;
54
68
  /**
55
- * 서버 파일 업로드 API URL. 설정 시 파일 첨부 다이얼로그의 "업로드" 탭이
56
- * 활성화된다. 미설정 시 업로드 탭은 비활성 + 툴팁 안내.
69
+ * 글꼴 드롭다운 목록. 기본은 한국 문서에서 쓰는 시스템 글꼴(맑은 고딕 · 굴림 ·
70
+ * 돋움 · 바탕 · 궁서 …) 이며 네트워크를 쓰지 않는다. 웹폰트는 `cssUrl` 을
71
+ * 함께 주면 드롭다운을 처음 열 때 받는다. 이 PC 에 없는 글꼴은 목록에서 빠진다.
72
+ *
73
+ * `{ label: '', stack: '' }` 항목은 "기본 글꼴"(서식 지우기) 이다.
57
74
  */
58
- fileUploadUrl?: string;
75
+ fonts?: ReadonlyArray<FontFamily>;
76
+ /** 글자 크기 드롭다운 목록(pt). 기본 8 ~ 48pt. */
77
+ fontSizes?: ReadonlyArray<number>;
78
+ }
79
+ /** `onError` 의 오류 종류. */
80
+ export type EditorErrorCode = 'upload' | 'paste';
81
+ /**
82
+ * 그림 · 파일 올리기 설정. 둘 중 하나를 준다.
83
+ *
84
+ * - `url` — 그 주소로 `multipart/form-data`(필드 `file`, `kind`) 를 POST 하고,
85
+ * 응답 JSON 의 `url` 을 쓴다. 인증이 필요하면 `headers`.
86
+ * - `handler` — 직접 올리고 주소를 돌려준다 (S3 서명 URL 등).
87
+ */
88
+ /**
89
+ * 코드 블록 색칠기. `highlight` 는 글을 받아 HTML 을 돌려준다. 결과는 `<span class>`
90
+ * 만 남기고 걸러서 넣으므로, 다른 태그나 속성은 무시된다.
91
+ */
92
+ export interface CodeHighlighter {
93
+ /** 언어 고르기 목록. `id` 는 `<code data-language>` 에 저장된다. */
94
+ languages: ReadonlyArray<{
95
+ id: string;
96
+ label: string;
97
+ }>;
98
+ highlight(code: string, languageId: string | undefined): string;
99
+ }
100
+ export interface UploadOptions {
101
+ url?: string;
102
+ /** `url` 로 보낼 때 붙일 헤더. 함수면 보낼 때마다 불러 최신 토큰을 쓴다. */
103
+ headers?: Record<string, string> | (() => Record<string, string>);
104
+ handler?: (file: File, kind: 'image' | 'file') => Promise<string>;
105
+ /** 올릴 수 있는 최대 크기(바이트). 넘으면 올리지 않고 `onError('upload')`. */
106
+ maxSize?: number;
59
107
  }
60
108
  export declare const DEFAULT_TOOLBAR: ToolbarConfig;
61
109
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG,eAAe,GAAG,GAAG,CAAC;AAEhD,MAAM,MAAM,eAAe,GACvB,MAAM,GACN,MAAM,GACN,WAAW,GACX,YAAY,GACZ,UAAU,GACV,MAAM,GACN,QAAQ,GACR,WAAW,GACX,QAAQ,GACR,OAAO,GACP,iBAAiB,GACjB,OAAO,GACP,QAAQ,GACR,WAAW,GACX,UAAU,GACV,YAAY,GACZ,aAAa,GACb,YAAY,GACZ,WAAW,GACX,MAAM,GACN,OAAO,GACP,OAAO,GACP,IAAI,GACJ,aAAa,CAAC;AAElB,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;;;;GASG;AACH,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE/C,4BAA4B;AAC5B,MAAM,WAAW,oBAAoB;IACnC,mCAAmC;IACnC,MAAM,CAAC,EAAE,aAAa,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,WAAW,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,aAAa,GAAG,KAAK,CAAC;IAChC,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACzB,iDAAiD;IACjD,MAAM,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IACnC;;;OAGG;IACH,UAAU,CAAC,EAAE,aAAa,CAAC;IAC3B,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC;;;;OAIG;IACH,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAChD;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/C;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,eAAO,MAAM,eAAe,EAAE,aAiC7B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}