@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,5 +1,6 @@
1
+ import type { FontFamily } from '../core/fonts.cjs';
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
  // (์†Œ์Šค๋งต์€ CJS ์„ ์–ธ ์‚ฌ๋ณธ์—์„œ ์ œ์™ธ๋จ โ€” scripts/finalize-types.mjs)
@@ -1,11 +1,21 @@
1
1
  import type { ToolbarConfig, ToolbarItemName } from '../types/index.cjs';
2
2
  export interface ToolbarHandlers {
3
3
  onAction: (name: ToolbarItemName, anchor: HTMLElement) => void;
4
+ /** ํˆด๋ฐ”์—์„œ Esc โ€” ๋ณธ๋ฌธ์œผ๋กœ ๋Œ์•„๊ฐ„๋‹ค. */
5
+ onEscape: () => void;
4
6
  }
5
7
  export declare class Toolbar {
6
8
  readonly element: HTMLDivElement;
7
9
  private buttons;
8
10
  constructor(config: ToolbarConfig, handlers: ToolbarHandlers);
11
+ /** ํˆด๋ฐ”์— ์žˆ๋Š” ํ•ญ๋ชฉ ์ด๋ฆ„๋“ค. */
12
+ names(): ToolbarItemName[];
13
+ /** ํˆด๋ฐ”๋กœ ํฌ์ปค์Šค๋ฅผ ์˜ฎ๊ธด๋‹ค (Alt+F10). ๋งˆ์ง€๋ง‰์œผ๋กœ ๋จธ๋ฌธ ๋ฒ„ํŠผ, ์—†์œผ๋ฉด ์ฒซ ๋ฒ„ํŠผ. */
14
+ focus(): void;
15
+ /** ์†Œ์Šค ๋ณด๊ธฐ์ฒ˜๋Ÿผ ํˆด๋ฐ” ๋Œ€๋ถ€๋ถ„์„ ์ž ๊ธ€ ๋•Œ. `except` ๋Š” ๊ณ„์† ์“ธ ์ˆ˜ ์žˆ๋‹ค. */
16
+ setAllEnabled(enabled: boolean, except: ToolbarItemName): void;
17
+ private focusable;
18
+ private handleKeydown;
9
19
  setActive(name: ToolbarItemName, active: boolean): void;
10
20
  setEnabled(name: ToolbarItemName, enabled: boolean): void;
11
21
  /** ์กฐ๊ฑด๋ถ€ ํ•ญ๋ชฉ์„ ์™„์ „ํžˆ ์ˆจ๊ธด๋‹ค (display:none). ํ—ˆ์šฉ ๋ธ”๋ก์œผ๋กœ ๋Œ์•„์˜ค๋ฉด ๋‹ค์‹œ ๋ณด์ž„. */
@@ -0,0 +1,58 @@
1
+ /** ์ค„ ๊ฐ„๊ฒฉ(%). ํ•œ๊ธ€์˜ ๊ธฐ๋ณธ๊ฐ’ 160% ๋ฅผ ํฌํ•จํ•œ๋‹ค. */
2
+ export declare const LINE_HEIGHTS: ReadonlyArray<number>;
3
+ /** ์ž๊ฐ„(em ์˜ ๋ฐฑ๋ถ„์œจ). ํ•œ๊ธ€์˜ ์ž๊ฐ„ -5% ๋Š” letter-spacing: -0.05em ์ด๋‹ค. */
4
+ export declare const LETTER_SPACINGS: ReadonlyArray<number>;
5
+ /** ์ค„ ๊ฐ„๊ฒฉ ๋“œ๋กญ๋‹ค์šด. `current` ๋Š” ์ง€๊ธˆ ๋ธ”๋ก์˜ line-height(%), ๋ชจ๋ฅด๋ฉด null. */
6
+ export declare function openLineHeightDropdown(anchor: HTMLElement, onPick: (percent: number) => void, current: number | null): void;
7
+ /** ์ž๊ฐ„ ๋“œ๋กญ๋‹ค์šด. ๊ฐ’์€ em ์˜ ๋ฐฑ๋ถ„์œจ(-5 โ†’ -0.05em). */
8
+ export declare function openLetterSpacingDropdown(anchor: HTMLElement, onPick: (percent: number) => void, current: number | null): void;
9
+ /** ํŠน์ˆ˜ ๋ฌธ์ž ํ‘œ. ๊ณ ๋ฅด๋ฉด `onPick(char)` โ€” ํŒ์˜ค๋ฒ„๋Š” ์—ด์–ด ๋‘”๋‹ค(์—ฌ๋Ÿฌ ๊ฐœ ๋„ฃ๊ธฐ). */
10
+ export declare function openSpecialCharDropdown(anchor: HTMLElement, onPick: (char: string) => void): void;
11
+ interface Match {
12
+ range: Range;
13
+ }
14
+ /**
15
+ * ๋ณธ๋ฌธ ์•ˆ ๊ธ€์ž ๊ฒ€์ƒ‰. ๋ธ”๋ก๋งˆ๋‹ค ํ…์ŠคํŠธ ๋…ธ๋“œ๋ฅผ ์ด์–ด ๋ถ™์ธ ๋ฌธ์ž์—ด์—์„œ ์ฐพ์œผ๋ฏ€๋กœ
16
+ * ๊ตต๊ฒŒ ยท ์ƒ‰ ๊ฐ™์€ ์„œ์‹ ๊ฒฝ๊ณ„๋ฅผ ๋„˜๋Š” ๋‚ฑ๋ง๋„ ์ฐพ๋Š”๋‹ค. ๋ธ”๋ก ๊ฒฝ๊ณ„๋Š” ๋„˜์ง€ ์•Š๋Š”๋‹ค.
17
+ */
18
+ export declare function findInContent(root: HTMLElement, query: string, matchCase: boolean): Match[];
19
+ export interface FindPanelHost {
20
+ content: HTMLElement;
21
+ /** ๋ฐ”๊พธ๊ธฐ ์ „์— ๋ถ€๋ฅธ๋‹ค โ€” ์ด๋ ฅ์ด ํ•œ ๋‹จ๊ณ„๋กœ ๋ฌถ์ด๋„๋ก. */
22
+ beforeChange(): void;
23
+ /** ๋ฐ”๊พผ ๋’ค์— ๋ถ€๋ฅธ๋‹ค. */
24
+ afterChange(): void;
25
+ }
26
+ /**
27
+ * ์ฐพ๊ธฐ ยท ๋ฐ”๊พธ๊ธฐ ํŒจ๋„. ์—๋””ํ„ฐ ์œ„์ชฝ์— ๋ถ™๋Š” ์ž‘์€ ๋ง‰๋Œ€๋‹ค โ€” ๋ชจ๋‹ฌ๋กœ ๋„์šฐ๋ฉด ์ฐพ์€
28
+ * ์ž๋ฆฌ๋ฅผ ๊ฐ€๋ฆฐ๋‹ค.
29
+ */
30
+ export declare class FindPanel {
31
+ private readonly host;
32
+ readonly element: HTMLDivElement;
33
+ private readonly findInput;
34
+ private readonly replaceInput;
35
+ private readonly caseBox;
36
+ private readonly status;
37
+ private matches;
38
+ private index;
39
+ constructor(host: FindPanelHost);
40
+ get isOpen(): boolean;
41
+ open(): void;
42
+ close(): void;
43
+ /** ๋ฌธ์„œ๊ฐ€ ๋ฐ”๋€Œ๋ฉด ๋‹ค์‹œ ์ฐพ๋Š”๋‹ค (์—ด๋ ค ์žˆ์„ ๋•Œ๋งŒ). */
44
+ refresh(): void;
45
+ private search;
46
+ private step;
47
+ private paint;
48
+ private replaceOne;
49
+ private replaceAll;
50
+ }
51
+ /**
52
+ * ๋ฌธ์„œ๋งŒ ์ธ์‡„ํ•œ๋‹ค โ€” ํˆด๋ฐ” ยท ํ•ธ๋“ค ยท ํŽ˜์ด์ง€์˜ ๋‹ค๋ฅธ ๋ถ€๋ถ„ ์—†์ด. ๋ณด์ด์ง€ ์•Š๋Š” iframe
53
+ * ์— `getHTML()` ๊ฒฐ๊ณผ(์Šคํƒ€์ผ์ด ์ธ๋ผ์ธ์œผ๋กœ ๋“ค์–ด ์žˆ๋‹ค) ๋ฅผ ๋„ฃ๊ณ  ๊ทธ ์ฐฝ์„ ์ธ์‡„ํ•œ๋‹ค.
54
+ * iframe ์€ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋Œ๋ฆฌ์ง€ ์•Š๋Š”๋‹ค(sandbox) โ€” ์ธ์‡„๋งŒ ํ—ˆ์šฉํ•œ๋‹ค.
55
+ */
56
+ export declare function printHtml(html: string, title: string): void;
57
+ export {};
58
+ // (์†Œ์Šค๋งต์€ CJS ์„ ์–ธ ์‚ฌ๋ณธ์—์„œ ์ œ์™ธ๋จ โ€” scripts/finalize-types.mjs)
@@ -1,4 +1,7 @@
1
1
  import type { BlockAttrs, BlockKind } from '../core/blocks.cjs';
2
+ import type { FontFamily } from '../core/fonts.cjs';
3
+ /** contentEditable ์„ ํƒ ์˜์—ญ์ด ์‚ฌ๋ผ์ง€์ง€ ์•Š๋„๋ก mousedown ์‹œ ํฌ์ปค์Šค ์ด๋™์„ ๋ง‰๋Š”๋‹ค. */
4
+ export declare function preserveSelection(el: HTMLElement): void;
2
5
  export declare const COLOR_PALETTE: string[];
3
6
  export declare function openColorPicker(anchor: HTMLElement, onPick: (color: string | null) => void, recents?: ReadonlyArray<string>): void;
4
7
  /**
@@ -12,46 +15,30 @@ export interface BlockTypeChoice {
12
15
  }
13
16
  export declare function openBlockTypeDropdown(anchor: HTMLElement, onPick: (choice: BlockTypeChoice) => void): void;
14
17
  export declare function openAlignDropdown(anchor: HTMLElement, onPick: (value: 'left' | 'center' | 'right' | 'justify') => void): void;
15
- export interface FontFamilyChoice {
16
- id: string;
17
- label: string;
18
- stack: string;
19
- }
20
18
  /**
21
- * ๊ธ€๊ผด ์„ ํƒ ๋“œ๋กญ๋‹ค์šด. ์ฒซ ํ˜ธ์ถœ ์‹œ ๋ชจ๋“  ๊ธ€๊ผด CSS ๋ฅผ lazy ๋กœ๋“œ(Google Fonts +
22
- * Pretendard CDN), ํ•ญ๋ชฉ ๋ผ๋ฒจ์€ ๊ฐ ๊ธ€๊ผด ์ž์‹ ์œผ๋กœ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ๋ Œ๋”ํ•œ๋‹ค.
23
- *
24
- * - `currentId` ๊ฐ€ ์ง€์ •๋˜๋ฉด ํ•ด๋‹น ๊ธ€๊ผด ํ•ญ๋ชฉ์— `aw-popover-item-active` ์ ์šฉ
25
- * - ์„ ํƒ ์‹œ `onPick(choice)` ํ˜ธ์ถœ + ํŒ์˜ค๋ฒ„ ๋‹ซํž˜
19
+ * ๊ธ€๊ผด ๋“œ๋กญ๋‹ค์šด. ํ•ญ๋ชฉ ์ด๋ฆ„ ์˜† ๋ฏธ๋ฆฌ๋ณด๊ธฐ('๊ฐ€A') ๋งŒ ๊ทธ ๊ธ€๊ผด๋กœ ๊ทธ๋ฆฐ๋‹ค.
20
+ * ์ด PC ์— ์—†๋Š” ๊ธ€๊ผด์€ ํ™•์ธ๋˜๋Š” ๋Œ€๋กœ ๋ชฉ๋ก์—์„œ ๋น ์ง„๋‹ค.
26
21
  */
27
- export declare function openFontFamilyDropdown(anchor: HTMLElement, onPick: (choice: FontFamilyChoice) => void, currentId?: string): void;
22
+ export declare function openFontFamilyDropdown(anchor: HTMLElement, fonts: ReadonlyArray<FontFamily>, onPick: (font: FontFamily) => void, current?: FontFamily | null): void;
28
23
  export interface CodeLanguageChoice {
29
24
  id: string;
30
25
  label: string;
31
26
  }
32
27
  /**
33
- * ์ฝ”๋“œ ๋ธ”๋ก์˜ ์–ธ์–ด ์„ ํƒ ๋“œ๋กญ๋‹ค์šด. highlight.ts ์˜ LANGUAGES ๋ฅผ ๊ทธ๋Œ€๋กœ ๋…ธ์ถœ.
28
+ * ์ฝ”๋“œ ๋ธ”๋ก์˜ ์–ธ์–ด ์„ ํƒ ๋“œ๋กญ๋‹ค์šด. ์ƒ‰์น ๊ธฐ(`highlighter.languages`) ์˜ ๋ชฉ๋ก์„ ๋ณด์—ฌ ์ค€๋‹ค.
34
29
  *
35
30
  * - `currentId` ๊ฐ€ ์ผ์น˜ํ•˜๋Š” ํ•ญ๋ชฉ์— active(โœ“) ํ‘œ์‹œ
36
31
  * - ์„ ํƒ ์‹œ onPick(choice) ํ˜ธ์ถœ + ํŒ์˜ค๋ฒ„ ๋‹ซํž˜
37
32
  */
38
- export declare function openCodeLanguageDropdown(anchor: HTMLElement, onPick: (choice: CodeLanguageChoice) => void, currentId?: string): void;
39
- export type TableMenuAction = 'rowAbove' | 'rowBelow' | 'colLeft' | 'colRight' | 'deleteRow' | 'deleteCol';
33
+ export declare function openCodeLanguageDropdown(anchor: HTMLElement, languages: ReadonlyArray<CodeLanguageChoice>, onPick: (choice: CodeLanguageChoice) => void, currentId?: string): void;
34
+ export type TableMenuAction = 'rowAbove' | 'rowBelow' | 'colLeft' | 'colRight' | 'deleteRow' | 'deleteCol' | 'mergeCells' | 'splitCell';
40
35
  /**
41
36
  * ํ‘œ ํŽธ์ง‘ ๋“œ๋กญ๋‹ค์šด โ€” ํ–‰/์—ด ์ถ”๊ฐ€ยท์‚ญ์ œ. ํ™œ์„ฑ ๋ธ”๋ก์ด table ์ผ ๋•Œ๋งŒ ์˜๋ฏธ๊ฐ€ ์žˆ์–ด
42
37
  * AerizEditor ๊ฐ€ toolbar 'tableMenu' ํ•ญ๋ชฉ ํด๋ฆญ ์‹œ์ ์— ํ˜ธ์ถœ.
43
38
  */
44
- export declare function openTableMenuDropdown(anchor: HTMLElement, onPick: (action: TableMenuAction) => void): void;
45
- export interface FontSizeChoice {
46
- px: number;
47
- }
48
- /**
49
- * ๊ธ€์ž ํฌ๊ธฐ ํ”„๋ฆฌ์…‹ ๋“œ๋กญ๋‹ค์šด. FONT_SIZES ์˜ px ๊ฐ’์„ ์ž‘์€ ๋ผ๋ฒจ๋กœ ๋‚˜์—ด.
50
- *
51
- * - `currentPx` ๊ฐ€ ์ผ์น˜ํ•˜๋Š” ํ•ญ๋ชฉ์— active ํ‘œ์‹œ
52
- * - ์„ ํƒ ์‹œ `onPick({ px })` ํ˜ธ์ถœ + ํŒ์˜ค๋ฒ„ ๋‹ซํž˜
53
- */
54
- export declare function openFontSizeDropdown(anchor: HTMLElement, onPick: (choice: FontSizeChoice) => void, currentPx?: number): void;
39
+ export declare function openTableMenuDropdown(anchor: HTMLElement, onPick: (action: TableMenuAction) => void, disabled?: ReadonlySet<TableMenuAction>): void;
40
+ /** ๊ธ€์ž ํฌ๊ธฐ(pt) ๋“œ๋กญ๋‹ค์šด. `current` ์™€ ๊ฐ™์€ ํ•ญ๋ชฉ์— ํ‘œ์‹œ. */
41
+ export declare function openFontSizeDropdown(anchor: HTMLElement, sizes: ReadonlyArray<number>, onPick: (pt: number) => void, current?: number | null): void;
55
42
  /**
56
43
  * ๊ธฐ๋Šฅ ๋ฏธ๊ตฌํ˜„ ๋ฉ”๋‰ด ํ•ญ๋ชฉ์šฉ placeholder ๋“œ๋กญ๋‹ค์šด.
57
44
  * ํ•ญ๋ชฉ๋ช…๋งŒ ๋…ธ์ถœํ•˜๊ณ  "์ค€๋น„ ์ค‘" ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด์—ฌ์ค€๋‹ค.
@@ -67,4 +54,6 @@ export interface TableSizeChoice {
67
54
  cols: number;
68
55
  }
69
56
  export declare function openTableDropdown(anchor: HTMLElement, onPick: (choice: TableSizeChoice) => void): void;
57
+ export declare function anchorPopover(popover: HTMLElement, anchor: HTMLElement): void;
58
+ export declare function closeAllPopovers(): void;
70
59
  // (์†Œ์Šค๋งต์€ CJS ์„ ์–ธ ์‚ฌ๋ณธ์—์„œ ์ œ์™ธ๋จ โ€” scripts/finalize-types.mjs)
@@ -1,13 +1,15 @@
1
1
  import type { EditorOptions, SerializeHtmlOptions } from '../types/index.js';
2
2
  import { Toolbar } from '../ui/Toolbar.js';
3
- import type { Block, BlockAttrs, BlockKind, BlockSnapshot } from './blocks.js';
3
+ import type { Block, BlockAttrs, BlockKind, BlockSnapshot, InlineMarkName } from './blocks.js';
4
4
  export type { Block, BlockAttrs, BlockKind, BlockMatch, BlockSnapshot, BlockType, ClassifyResult, HeadingLevel, } from './blocks.js';
5
- export interface InlineState {
6
- bold: boolean;
7
- italic: boolean;
8
- underline: boolean;
9
- strike: boolean;
10
- }
5
+ /**
6
+ * ์ปค์„œ ์œ„์น˜์—์„œ ์ผœ์ ธ ์žˆ๋Š” ์ธ๋ผ์ธ ๋งˆํฌ๋“ค.
7
+ *
8
+ * ๋งˆํฌ ๋ชฉ๋ก์„ ๊ทธ๋Œ€๋กœ ๋”ฐ๋ผ๊ฐ„๋‹ค โ€” ๋งˆํฌ๋ฅผ ํ•˜๋‚˜ ๋Š˜๋ฆด ๋•Œ ์ด ํƒ€์ž… ยท ์ƒํƒœ ์ˆ˜์ง‘ ยท
9
+ * ํˆด๋ฐ” ๋™๊ธฐํ™”๋ฅผ ๊ฐ๊ฐ ๊ณ ์น˜๋ฉด ๋ฐ˜๋“œ์‹œ ํ•œ ๊ตฐ๋ฐ๋ฅผ ๋น ๋œจ๋ฆฐ๋‹ค (๊ทธ๋Ÿฌ๋ฉด ๋ฒ„ํŠผ์ด ๋ˆŒ๋ฆฌ๊ธด
10
+ * ํ•˜๋Š”๋ฐ ๋ˆŒ๋ฆฐ ํ‘œ์‹œ๊ฐ€ ์•ˆ ๋‚˜๋Š” ์‹์œผ๋กœ ์–ด๊ธ‹๋‚œ๋‹ค).
11
+ */
12
+ export type InlineState = Record<InlineMarkName, boolean>;
11
13
  export interface EditorState {
12
14
  blocks: Block[];
13
15
  activeBlockId: string | null;
@@ -31,20 +33,39 @@ export declare class AerizEditor {
31
33
  private readonly statusBlockEl;
32
34
  private readonly statusBlocksEl;
33
35
  private readonly statusCharsEl;
34
- private readonly statusSourceEl;
35
36
  private readonly options;
36
37
  private readonly observer;
37
38
  private readonly blockIds;
38
39
  private readonly idFor;
39
40
  private readonly listeners;
40
41
  private readonly handleSelectionChange;
42
+ /**
43
+ * ๋ฌธ์„œ ์ „์ฒด์˜ selectionchange. **์„ ํƒ์ด ์ด ์—๋””ํ„ฐ ์•ˆ์— ์žˆ์„ ๋•Œ๋งŒ** ๋ฐ˜์‘ํ•œ๋‹ค.
44
+ * ๊ฐ™์€ ํŽ˜์ด์ง€์˜ ์ œ๋ชฉ ์ž…๋ ฅ๋ž€์—์„œ ํƒ€์ž๋ฅผ ์น  ๋•Œ๋„ ์ด ์ด๋ฒคํŠธ๊ฐ€ ์˜ค๋Š”๋ฐ, ๊ทธ๋•Œ๋งˆ๋‹ค
45
+ * ์—๋””ํ„ฐ๋ฅผ ๋‹ค์‹œ ๋™๊ธฐํ™”ํ•˜๋ฉด ํ‚ค ํ•˜๋‚˜์— ์ˆ˜์‹ญ ms ๋ฅผ ์“ด๋‹ค(1.0 ์˜ ๋ฌธ์ œ).
46
+ * ์•ˆ์— ์žˆ๋‹ค๊ฐ€ ๋ฐ–์œผ๋กœ ๋‚˜๊ฐ„ ์ˆœ๊ฐ„ ํ•œ ๋ฒˆ์€ ๋™๊ธฐํ™”ํ•ด์„œ ํ™œ์„ฑ ๋ธ”๋ก ํ‘œ์‹œ๋ฅผ ์ง€์šด๋‹ค.
47
+ */
48
+ private readonly handleDocumentSelectionChange;
49
+ private selectionInside;
41
50
  private readonly handleResize;
42
51
  /** document ์— ๋ถ™๋Š”๋‹ค โ€” destroy() ์—์„œ ๋ฐ˜๋“œ์‹œ ๋–ผ์•ผ ์ธ์Šคํ„ด์Šค๊ฐ€ GC ๋œ๋‹ค. */
43
52
  private readonly handleDocumentMouseUp;
44
53
  private state;
45
54
  private destroyed;
46
55
  private syncQueued;
47
- private lastSerialized;
56
+ /** ๋ฐ”๋€ ๋ธ”๋ก๋งŒ ๋‹ค์‹œ ๊ณ„์‚ฐํ•˜๊ธฐ ์œ„ํ•œ ์žฅ๋ถ€. */
57
+ private tracker;
58
+ /** ํ‘œ์‹(data-block-kind ยท label) ์„ ๋‹ค์‹œ ๋‹ฌ์•„์•ผ ํ•˜๋Š” ๋ธ”๋ก. */
59
+ private readonly markerPending;
60
+ /** state.blocks ๋ฅผ ๋‹ค์‹œ ๋งŒ๋“ค์–ด์•ผ ํ•˜๋Š”์ง€. */
61
+ private blocksStale;
62
+ private cachedBlocks;
63
+ /** ํ‘œ์‹์„ ๋‹จ ๋งˆ์ง€๋ง‰ ํ™œ์„ฑ ๋ธ”๋ก. */
64
+ private focusedEl;
65
+ /** ์˜ค๋ฒ„๋ ˆ์ด(ํ•ธ๋“ค ยท ๋ผ๋ฒจ) ์œ„์น˜ ๊ณ„์‚ฐ์„ ํ”„๋ ˆ์ž„๋‹น ํ•œ ๋ฒˆ์œผ๋กœ ๋ฌถ๋Š” rAF ํ•ธ๋“ค. */
66
+ private overlayRaf;
67
+ /** ์ƒํƒœ๋ฐ” ๊ฐฑ์‹ ์„ ํƒ€์ดํ•‘์ด ๋ฉˆ์ถ˜ ๋’ค๋กœ ๋ฏธ๋ฃจ๋Š” ํƒ€์ด๋จธ. */
68
+ private statusTimer;
48
69
  /** ํฌ์ธํ„ฐ๊ฐ€ ์˜ฌ๋ผ๊ฐ€ ์žˆ๋Š” ๋ธ”๋ก. ๊ทธ ๋ธ”๋ก์˜ ์ปจํŠธ๋กค๋งŒ ๋“œ๋Ÿฌ๋‚ธ๋‹ค. */
49
70
  private hoveredBlockId;
50
71
  /** hover ํŒ์ •์„ ํ”„๋ ˆ์ž„๋‹น 1 ํšŒ๋กœ ๋ฌถ๊ธฐ ์œ„ํ•œ rAF ํ•ธ๋“ค. */
@@ -94,18 +115,39 @@ export declare class AerizEditor {
94
115
  * data-block-id ๋Š” ๋ณด์กด.
95
116
  */
96
117
  getHTML(options?: SerializeHtmlOptions): string;
97
- /** ๊ฐ€๊ณต ์—†๋Š” ์›๋ณธ innerHTML. ์ง๋ ฌํ™” ๊ฒ€์ฆ/๋””๋ฒ„๊ทธ ์šฉ๋„. */
98
- getRawHTML(): string;
118
+ /**
119
+ * ๋ณธ๋ฌธ์„ ํ†ต์งธ๋กœ ๊ฐˆ์•„๋ผ์šด๋‹ค.
120
+ *
121
+ * ๋“ค์–ด์˜จ HTML ์€ ์ €์žฅ์†Œ์—์„œ ๋ฐ”๋กœ ์˜จ ๊ฐ’์ผ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ •ํ™”๋ฅผ ๊ฑฐ์นœ๋‹ค
122
+ * (`renderBlock` ยท `renderBlocksToHTML` ๊ณผ ๊ฐ™์€ ๊ทœ์น™). ์—๋””ํ„ฐ๊ฐ€ ์Šค์Šค๋กœ ๋งŒ๋“ 
123
+ * ์ถœ๋ ฅ์—๋Š” ๊ฑธ๋ฆด ๊ฒƒ์ด ์—†์œผ๋‹ˆ ์™•๋ณต(`getHTML()` โ†’ ์ €์žฅ โ†’ `setHTML()`) ์€ ๊ทธ๋Œ€๋กœ๋‹ค.
124
+ */
99
125
  setHTML(html: string): void;
126
+ /**
127
+ * ๋ธ”๋ก ์Šค๋ƒ…์ƒท(`getBlocks()` ์˜ ๊ฒฐ๊ณผ ยท ์„œ๋ฒ„์— ์ €์žฅํ•œ ๊ฐ’) ์œผ๋กœ ๋ณธ๋ฌธ์„ ๋ฐ”๊พผ๋‹ค.
128
+ * `setHTML` ๊ณผ ๊ฐ™์ด ์ด๋ ฅ์„ ์ƒˆ๋กœ ์‹œ์ž‘ํ•œ๋‹ค.
129
+ */
130
+ setBlocks(blocks: readonly BlockSnapshot[]): void;
131
+ /** ๋ณธ๋ฌธ์„ ํ†ต์งธ๋กœ ๊ฐˆ์•„๋ผ์šฐ๋Š” ๊ณตํ†ต ๊ฒฝ๋กœ (setHTML ยท setBlocks). */
132
+ private replaceDocument;
100
133
  focus(): void;
134
+ private readOnly;
135
+ /** ์ฝ๊ธฐ ์ „์šฉ ์ผœ๊ณ  ๋„๊ธฐ. ์ผœ๋ฉด ๊ธ€์„ ๊ณ ์น  ์ˆ˜ ์—†๊ณ  ํˆด๋ฐ”๋Š” ์ธ์‡„ ยท ์ „์ฒด ํ™”๋ฉด๋งŒ ๋‚จ๋Š”๋‹ค. */
136
+ setReadOnly(readOnly: boolean): void;
101
137
  setTheme(theme: 'light' | 'dark'): void;
102
138
  getState(): EditorState;
103
- getBlocks(): Block[];
104
139
  /**
105
- * ๋ณธ๋ฌธ ๋ธ”๋ก๋“ค์„ ์ง๋ ฌํ™” ๊ฐ€๋Šฅํ•œ BlockSnapshot ๋ฐฐ์—ด๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
106
- * AerizViewer.setBlocks(snapshots) ๊ฐ€ ๋ฐ›์•„ ๋™์ผํ•œ ํŠธ๋ฆฌ๋ฅผ ๋ Œ๋”ํ•  ์ˆ˜ ์žˆ๋‹ค.
140
+ * ๋ณธ๋ฌธ์„ ๋ธ”๋ก ์Šค๋ƒ…์ƒท ๋ฐฐ์—ด๋กœ. ์„œ๋ฒ„์— ์ €์žฅํ•˜๊ฑฐ๋‚˜ `AerizViewer.setBlocks()` ยท
141
+ * `setBlocks()` ๋กœ ๊ทธ๋Œ€๋กœ ๋˜์‚ด๋ฆด ์ˆ˜ ์žˆ๋Š” ์ง๋ ฌํ™” ํ˜•์‹์ด๋‹ค.
142
+ */
143
+ getBlocks(): BlockSnapshot[];
144
+ /**
145
+ * ๋ธ”๋ก ๋ชฉ๋ก. ๊ตฌ์กฐ๋‚˜ ๋‚ด์šฉ์ด ๋ฐ”๋€ ๋’ค ์ฒ˜์Œ ๋ถ€๋ฅผ ๋•Œ๋งŒ ๋‹ค์‹œ ๋งŒ๋“ ๋‹ค โ€” ๋ฐ”๋€Œ์ง€
146
+ * ์•Š์€ ๋ธ”๋ก์€ ๋ถ„๋ฅ˜ ๊ฒฐ๊ณผ์™€ Block ๊ฐ์ฒด๋ฅผ ๊ทธ๋Œ€๋กœ ์“ด๋‹ค.
107
147
  */
108
- serialize(): BlockSnapshot[];
148
+ private currentBlocks;
149
+ /** ๋ณธ๋ฌธ ์ง๊ณ„ ์ž์‹ ํ•˜๋‚˜๋ฅผ Block ์œผ๋กœ. ๋ถ„๋ฅ˜๋Š” ์บ์‹œ๋ฅผ ์“ด๋‹ค. */
150
+ private blockOf;
109
151
  /**
110
152
  * data-block-id ๋กœ ๋ณธ๋ฌธ์—์„œ ๋ธ”๋ก์„ ์ฐพ์•„ ๋ฐ˜ํ™˜. ์—†์œผ๋ฉด null.
111
153
  */
@@ -128,6 +170,11 @@ export declare class AerizEditor {
128
170
  * takeRecords ๋กœ ํก์ˆ˜ํ•œ ๋’ค onChange + queueSync.
129
171
  */
130
172
  private flush;
173
+ /** ์ง€๊ธˆ ๋ณธ๋ฌธ์œผ๋กœ ์ด๋ ฅ ํ•œ ์นธ์„ ๋งŒ๋“ ๋‹ค. ๋ฐ”๋€Œ์ง€ ์•Š์€ ๋ธ”๋ก ๋ฌธ์ž์—ด์€ ๊ณต์œ ๋œ๋‹ค. */
174
+ private makeHistoryEntry;
175
+ /** ์บ๋Ÿฟ ์œ„์น˜๋ฅผ "๋ธ”๋ก ์ˆœ๋ฒˆ + ๋ธ”๋ก ์•ˆ ๊ธ€์ž ์˜คํ”„์…‹" ์œผ๋กœ ์ฝ๋Š”๋‹ค. */
176
+ private captureDocSelection;
177
+ private restoreDocSelection;
131
178
  /**
132
179
  * ์ง€๊ธˆ ๋ณธ๋ฌธ์„ ์ด๋ ฅ์— ๊ธฐ๋กํ•œ๋‹ค.
133
180
  *
@@ -165,17 +212,45 @@ export declare class AerizEditor {
165
212
  redo(): void;
166
213
  private applyHistoryEntry;
167
214
  private handleToolbarAction;
215
+ /** ์„ ํƒ ์˜์—ญ์ด ๊ฑธ์นœ ๋ณธ๋ฌธ ๋ธ”๋ก๋“ค (์บ๋Ÿฟ๋งŒ ์žˆ์œผ๋ฉด ๊ทธ ๋ธ”๋ก ํ•˜๋‚˜). */
216
+ private selectedTopBlocks;
217
+ /** ์ค„ ๊ฐ„๊ฒฉ(%) โ€” ๋ธ”๋ก ๋‹จ์œ„. ํ•œ๊ธ€์ฒ˜๋Ÿผ ๋ฌธ๋‹จ ์ „์ฒด์— ์ ์šฉ๋œ๋‹ค. */
218
+ private applyLineHeight;
219
+ /** ์ž๊ฐ„ โ€” ์„ ํƒํ•œ ๊ธ€์ž์— `letter-spacing: Nem`. 0 ์€ ๊ธฐ๋ณธ์œผ๋กœ ๋˜๋Œ๋ฆฐ๋‹ค. */
220
+ private applyLetterSpacing;
221
+ private findPanel;
222
+ /** ์ฐพ๊ธฐ ยท ๋ฐ”๊พธ๊ธฐ (Ctrl+H). */
223
+ openFind(): void;
224
+ private sourceArea;
225
+ private sourceStart;
226
+ /**
227
+ * HTML ์†Œ์Šค ๋ณด๊ธฐ โ†” ํŽธ์ง‘ ํ™”๋ฉด. ์†Œ์Šค์—์„œ ๊ณ ์นœ ๋‚ด์šฉ์€ ๋Œ์•„์˜ฌ ๋•Œ **๊ฑฐ๋ฅธ ๋’ค**
228
+ * ๋ณธ๋ฌธ์— ๋„ฃ๊ณ , ๋˜๋Œ๋ฆฌ๊ธฐ ํ•œ ๋ฒˆ์œผ๋กœ ์†Œ์Šค ํŽธ์ง‘ ์ „์ฒด๋ฅผ ๋˜๋Œ๋ฆด ์ˆ˜ ์žˆ๋‹ค.
229
+ */
230
+ toggleSource(): void;
231
+ private fullscreenScroll;
232
+ /** ์ „์ฒด ํ™”๋ฉด โ€” ์—๋””ํ„ฐ๊ฐ€ ์ฐฝ์„ ๊ฝ‰ ์ฑ„์šด๋‹ค. Esc ๋กœ ๋‚˜์˜จ๋‹ค. */
233
+ toggleFullscreen(): void;
168
234
  /**
169
235
  * ์„ ํƒ ์˜์—ญ์˜ ์ธ๋ผ์ธ ์„œ์‹์„ ์ง€์šด๋‹ค. ๋ธ”๋ก ์œ ํ˜•์€ ๊ฑด๋“œ๋ฆฌ์ง€ ์•Š๋Š”๋‹ค โ€”
170
236
  * "์„œ์‹ ์ง€์šฐ๊ธฐ" ๋กœ ์ œ๋ชฉ์ด ๋ณธ๋ฌธ์ด ๋˜๋ฉด ๋˜๋Œ๋ฆด ๋ฐฉ๋ฒ•์„ ์ฐพ๊ธฐ ์–ด๋ ต๋‹ค.
171
237
  */
172
238
  private clearInlineFormat;
173
239
  /**
174
- * ์ธ๋ผ์ธ ๋งˆํฌ(bold/italic/underline/strike) ํ† ๊ธ€. ํ™œ์„ฑ ๋ธ”๋ก์˜ allowedMarks
175
- * ์— ํฌํ•จ๋˜์ง€ ์•Š์€ ๋งˆํฌ๋ฉด ๋ฌด์‹œ. styleWithCSS=true ๋ชจ๋“œ๋กœ deprecated ํƒœ๊ทธ
176
- * (<b>/<i>/<u>) ๋Œ€์‹  `<span style="font-weight:bold">` ํ˜•ํƒœ๊ฐ€ ๋งŒ๋“ค์–ด์ง„๋‹ค.
240
+ * ์ธ๋ผ์ธ ๋งˆํฌ ํ† ๊ธ€. ํ™œ์„ฑ ๋ธ”๋ก์˜ allowedMarks ์— ํฌํ•จ๋˜์ง€ ์•Š์€ ๋งˆํฌ๋ฉด ๋ฌด์‹œ.
241
+ * styleWithCSS=true ๋ชจ๋“œ๋กœ deprecated ํƒœ๊ทธ(<b>/<i>/<u>) ๋Œ€์‹ 
242
+ * `<span style="font-weight:bold">` ํ˜•ํƒœ๊ฐ€ ๋งŒ๋“ค์–ด์ง„๋‹ค.
243
+ *
244
+ * ๋งˆํฌ ์ด๋ฆ„๊ณผ execCommand ๋ช…๋ น๋ช…์ด ๋‹ค๋ฅธ ๊ฒƒ๋งŒ {@link MARK_COMMAND} ๋กœ ์˜ฎ๊ธด๋‹ค.
245
+ *
246
+ * **์œ„/์•„๋ž˜ ์ฒจ์ž๋งŒ styleWithCSS ๋ฅผ ๋ˆ๋‹ค.** ์ผœ ๋‘๋ฉด Chrome ์ด `<sub>` ๋Œ€์‹ 
247
+ * `<span style="vertical-align: sub">` ๋ฅผ ๋งŒ๋“œ๋Š”๋ฐ, ๊ทธ span ์€
248
+ * - ๊ธ€์ž๊ฐ€ ์ž‘์•„์ง€์ง€ ์•Š์•„ ์ฒจ์ž๋กœ ๋ณด์ด์ง€ ์•Š๊ณ ,
249
+ * - ์Šคํฌ๋ฆฐ ๋ฆฌ๋”๊ฐ€ ์ฒจ์ž๋กœ ์ฝ์ง€ ์•Š์œผ๋ฉฐ,
250
+ * - ๋งˆํฌ๋‹ค์šด ๋‚ด๋ณด๋‚ด๊ธฐ๊ฐ€ `<sub>` / `<sup>` **ํƒœ๊ทธ**๋ฅผ ๋ณด๊ณ  ํŒ๋‹จํ•˜๋ฏ€๋กœ ์ฒจ์ž๊ฐ€
251
+ * ํ†ต์งธ๋กœ ์‚ฌ๋ผ์ง„๋‹ค.
177
252
  *
178
- * 'strike' ๋Š” execCommand ํ‘œ์ค€ ๋ช…๋ น๋ช…์ด 'strikeThrough'.
253
+ * ๋‚˜๋จธ์ง€ ๋งˆํฌ๋Š” ๋ฐ˜๋Œ€๋‹ค โ€” deprecated ๋œ `<b>` / `<i>` ๋Œ€์‹  style ์„ ์›ํ•œ๋‹ค.
179
254
  */
180
255
  private applyMark;
181
256
  /**
@@ -230,14 +305,11 @@ export declare class AerizEditor {
230
305
  * ๊ฐ€ ํ•ญ์ƒ ์šฐ์„ ํ•˜๋„๋ก setProperty('important') ๋กœ ๋ฐ•๋Š”๋‹ค.
231
306
  */
232
307
  private applyCellBgToCells;
233
- /** ํ‘œ ํŽธ์ง‘ ๋“œ๋กญ๋‹ค์šด์—์„œ ๋ฐ›์€ ์•ก์…˜์„ ๋ถ„๊ธฐ ์‹คํ–‰. */
308
+ /**
309
+ * ํ‘œ ํŽธ์ง‘ ๋“œ๋กญ๋‹ค์šด์—์„œ ๋ฐ›์€ ์•ก์…˜์„ ์‹คํ–‰ํ•œ๋‹ค. ํ–‰ ยท ์—ด ๊ณ„์‚ฐ์€ ๋ณ‘ํ•ฉ ์…€์„ ์•„๋Š”
310
+ * ๊ฒฉ์ž ๋ชจ๋ธ(`table-grid`) ์ด ๋งก๋Š”๋‹ค โ€” DOM ์˜ ์…€ ์ˆœ๋ฒˆ์€ ์—ด ๋ฒˆํ˜ธ๊ฐ€ ์•„๋‹ˆ๋‹ค.
311
+ */
234
312
  private runTableMenu;
235
- /** ํ™œ์„ฑ ์…€์˜ ํ–‰ ์œ„/์•„๋ž˜์— ์ƒˆ ํ–‰ ์‚ฝ์ž…. ๊ฐ™์€ ์—ด ์ˆ˜, ๋นˆ td ๋กœ ์ฑ„์›€. */
236
- private insertRow;
237
- /** ํ™œ์„ฑ ์…€์ด ์†ํ•œ ์—ด์˜ ์ขŒ/์šฐ์— ์ƒˆ ์—ด ์‚ฝ์ž…. ๋ชจ๋“  ํ–‰์— ๋นˆ td ์ถ”๊ฐ€. */
238
- private insertColumn;
239
- /** ํ™œ์„ฑ ์…€์˜ ํ–‰ ์ „์ฒด ์‚ญ์ œ. ๋งˆ์ง€๋ง‰ ํ–‰์ด๋ฉด ๋ณด์กด(๋นˆ ํ‘œ ํšŒํ”ผ). */
240
- private deleteRow;
241
313
  /**
242
314
  * ์ฝ”๋“œ ๋ธ”๋ก input ๋งˆ๋‹ค ํ˜ธ์ถœ๋˜๋Š” debounced rehighlight. ํ™œ์„ฑ ๋ธ”๋ก์ด codeBlock
243
315
  * ์ด๊ณ  data-language ๊ฐ€ ์„ค์ •๋ผ ์žˆ์„ ๋•Œ๋งŒ ๋™์ž‘ โ€” ํƒ€์ดํ•‘ ๋ฉˆ์ถ˜ ๋’ค 300ms ํ›„ 1 ํšŒ.
@@ -254,13 +326,17 @@ export declare class AerizEditor {
254
326
  * code ์•ˆ์— ์žˆ๋‹ค๋ฉด textContent offset ์œผ๋กœ caret ์œ„์น˜ ๋ณด์กด.
255
327
  */
256
328
  private rehighlightCode;
329
+ /**
330
+ * ์ฝ”๋“œ ๊ธ€์„ `<code>` ์•ˆ์— ๋„ฃ์„ HTML ๋กœ. ์ƒ‰์น ๊ธฐ๊ฐ€ ์—†์œผ๋ฉด ๊ธ€์„ ๊ทธ๋Œ€๋กœ(escape),
331
+ * ์žˆ์œผ๋ฉด ๊ทธ ๊ฒฐ๊ณผ๋ฅผ `<span class>` ๋งŒ ๋‚จ๊ธฐ๊ณ  ๊ฑฐ๋ฅธ๋‹ค โ€” ๋ฐ”๊นฅ ์ƒ‰์น ๊ธฐ๊ฐ€ ๋Œ๋ ค์ค€
332
+ * HTML ์ด ๋ณธ๋ฌธ์— ์Šคํฌ๋ฆฝํŠธ๋‚˜ ์ด๋ฒคํŠธ ์†์„ฑ์„ ๋“ค์ด์ง€ ๋ชปํ•˜๊ฒŒ.
333
+ */
334
+ private codeHtml;
257
335
  /**
258
336
  * ๋ณธ๋ฌธ์—์„œ ๋ชจ๋“  codeBlock ์„ ์ˆœํšŒํ•˜๋ฉฐ highlight ์ ์šฉ. setHTML / ์ดˆ๊ธฐ ๋กœ๋“œ
259
337
  * / ์™ธ๋ถ€ import ํ›„ ํ˜ธ์ถœ.
260
338
  */
261
339
  private rehighlightAllCodeBlocks;
262
- /** ํ™œ์„ฑ ์…€์˜ ์—ด ์ „์ฒด ์‚ญ์ œ. ๋งˆ์ง€๋ง‰ ์—ด์ด๋ฉด ๋ณด์กด(๋นˆ ํ‘œ ํšŒํ”ผ). */
263
- private deleteColumn;
264
340
  /**
265
341
  * ๋งˆ์šฐ์Šค ์ด๋™ ์‹œ ์…€ ์šฐ/ํ•˜ ๊ฐ€์žฅ์ž๋ฆฌ์—์„œ col-resize / row-resize ์ปค์„œ ํ‘œ์‹œ.
266
342
  * ๋“œ๋ž˜๊ทธ ์ง„ํ–‰ ์ค‘์—๋Š” ๋ณ„๋„ ํ•ธ๋“ค๋Ÿฌ๊ฐ€ cursor ๋ฅผ ๊ด€๋ฆฌํ•˜๋ฏ€๋กœ skip.
@@ -285,6 +361,28 @@ export declare class AerizEditor {
285
361
  * ์‚ฌ์ด์— ์บ๋Ÿฟ์ด ํ•ญ๋ชฉ ์•ˆ์œผ๋กœ ๋“ค์–ด๊ฐ€ ํ™”๋ฉด์ด ํ•œ ๋ฒˆ ํ”๋“ค๋ฆฐ๋‹ค.
286
362
  */
287
363
  private handleTaskToggle;
364
+ /**
365
+ * ์ฝœ์•„์›ƒ์˜ ์•„์ด์ฝ˜ ์ž๋ฆฌ๋ฅผ ๋ˆ„๋ฅด๋ฉด ์ข…๋ฅ˜๋ฅผ ์ˆœํ™˜์‹œํ‚จ๋‹ค
366
+ * (์•ˆ๋‚ด โ†’ ๋„์›€๋ง โ†’ ์ฃผ์˜ โ†’ ๊ฒฝ๊ณ  โ†’ ์•ˆ๋‚ด).
367
+ *
368
+ * ์ข…๋ฅ˜๋งˆ๋‹ค ๋ฉ”๋‰ด ํ•ญ๋ชฉ์„ ๋”ฐ๋กœ ๋‘๋ฉด ์‚ฝ์ž… ๋ฉ”๋‰ด๊ฐ€ ์ฝœ์•„์›ƒ ๋„ท์œผ๋กœ ๋’ค๋ฎ์ธ๋‹ค. ๋ฐ˜๋Œ€๋กœ
369
+ * ์ข…๋ฅ˜๋ฅผ ๋ฐ”๊ฟ€ ๋ฐฉ๋ฒ•์ด ์•„์˜ˆ ์—†์œผ๋ฉด ์•ˆ๋‚ด ํ•˜๋‚˜๋งŒ ์“ธ ์ˆ˜ ์žˆ๋Š” ๋ฐ˜์ชฝ ๊ธฐ๋Šฅ์ด ๋œ๋‹ค.
370
+ * ์ฒดํฌ๋ฆฌ์ŠคํŠธ์˜ ์ฒดํฌ๋ฐ•์Šค ยท ํ† ๊ธ€์˜ ํ‘œ์‹๊ณผ ๊ฐ™์€ "์™ผ์ชฝ ์—ฌ๋ฐฑ์„ ๋ˆ„๋ฅธ๋‹ค" ๊ทœ์น™์„
371
+ * ์žฌ์‚ฌ์šฉํ•ด, ์ƒˆ๋กœ ๋ฐฐ์šธ ๊ฒƒ ์—†์ด ์ž๋ฆฌ๋งŒ ์•Œ๋ฉด ๋˜๊ฒŒ ํ–ˆ๋‹ค.
372
+ */
373
+ private handleCalloutVariantClick;
374
+ /**
375
+ * ํ† ๊ธ€์˜ ์š”์•ฝ ์ค„์„ ํด๋ฆญํ–ˆ์„ ๋•Œ ์ ‘๊ธฐ/ํŽด๊ธฐ๋ฅผ ํ• ์ง€ ์ •ํ•œ๋‹ค.
376
+ *
377
+ * `<details>` ๋Š” ์š”์•ฝ ์ค„ **์–ด๋””๋ฅผ ๋ˆŒ๋Ÿฌ๋„** ์—ด๋ฆฌ๊ณ  ๋‹ซํžŒ๋‹ค. ํŽธ์ง‘ ์ค‘์—๋Š” ๊ทธ๊ฒŒ
378
+ * ๋ฐฉํ•ด๊ฐ€ ๋œ๋‹ค โ€” ์ œ๋ชฉ์˜ ์˜คํƒ€๋ฅผ ๊ณ ์น˜๋ ค๊ณ  ์บ๋Ÿฟ์„ ์˜ฎ๊ธธ ๋•Œ๋งˆ๋‹ค ๋ธ”๋ก์ด ์ ‘ํ˜€์„œ
379
+ * ๋ฐฉ๊ธˆ ์“ฐ๋˜ ๋ณธ๋ฌธ์ด ์‚ฌ๋ผ์ง„๋‹ค.
380
+ *
381
+ * ๊ทธ๋ž˜์„œ ์‚ผ๊ฐํ˜• ํ‘œ์‹ ์ž๋ฆฌ๋ฅผ ๋ˆ„๋ฅธ ๊ฒƒ๋งŒ ์ ‘๊ธฐ/ํŽด๊ธฐ๋กœ ๋ณด๊ณ , ๊ธ€์ž ์ž๋ฆฌ๋ฅผ ๋ˆ„๋ฅธ
382
+ * ๊ฒƒ์€ ์บ๋Ÿฟ ์ด๋™์œผ๋กœ๋งŒ ๋‘”๋‹ค. ์ฒดํฌ๋ฆฌ์ŠคํŠธ ์ฒดํฌ๋ฐ•์Šค์™€ ๊ฐ™์€ ํŒ์ • ๋ฐฉ์‹์ด๋ผ
383
+ * ์‚ฌ์šฉ์ž๊ฐ€ ๊ทœ์น™์„ ์ƒˆ๋กœ ๋ฐฐ์šธ ํ•„์š”๊ฐ€ ์—†๋‹ค.
384
+ */
385
+ private handleToggleSummaryClick;
288
386
  /**
289
387
  * ์ด๋ฏธ์ง€ ์บก์…˜(`<figcaption>`) ์— ์บ๋Ÿฟ์„ ๋‘”๋‹ค. ์—†์œผ๋ฉด ๋งŒ๋“ ๋‹ค.
290
388
  *
@@ -321,11 +419,8 @@ export declare class AerizEditor {
321
419
  * ๋น„์–ด ์žˆ์œผ๋ฉด(์บ๋Ÿฟ๋งŒ) ๋‹ค์Œ ์ž…๋ ฅ ๊ธ€๊ผด์ด ๊ฒฐ์ •๋œ๋‹ค(๋ธŒ๋ผ์šฐ์ € ๊ธฐ๋ณธ ๋™์ž‘).
322
420
  */
323
421
  private applyFontFamily;
324
- /**
325
- * ํ˜„์žฌ selection ์˜ anchor ๋…ธ๋“œ ๊ธฐ์ค€ computed font-family ๋ฅผ ์ฝ์–ด ์•Œ๋ ค์ง„
326
- * FONT_FAMILIES id ์™€ ๋งค์นญ. ๊ธ€๊ผด ๋“œ๋กญ๋‹ค์šด์˜ active ํ‘œ์‹œ์— ์‚ฌ์šฉ.
327
- */
328
- private detectActiveFontId;
422
+ /** ์บ๋Ÿฟ ์œ„์น˜ ์š”์†Œ์˜ ๊ณ„์‚ฐ๋œ ์Šคํƒ€์ผ. ๋“œ๋กญ๋‹ค์šด์˜ "์ง€๊ธˆ ๊ฐ’" ํ‘œ์‹œ์— ์“ด๋‹ค. */
423
+ private computedStyleAtCaret;
329
424
  /**
330
425
  * ์„ ํƒ ์˜์—ญ์— ๊ธ€์ž ํฌ๊ธฐ๋ฅผ ์ ์šฉํ•œ๋‹ค. execCommand('fontSize') ๋Š” 1~7 ๋งŒ ๋ฐ›๊ธฐ
331
426
  * ๋•Œ๋ฌธ์— px ์ ์šฉ์„ ์œ„ํ•ด Range API ๋กœ ์ง์ ‘ `<span style="font-size: Xpx">`
@@ -337,11 +432,11 @@ export declare class AerizEditor {
337
432
  */
338
433
  private applyFontSize;
339
434
  /**
340
- * ํ˜„์žฌ selection ์˜ anchor ๋…ธ๋“œ ๊ธฐ์ค€ computed font-size ๋ฅผ px ์ •์ˆ˜๋กœ ์ฝ์–ด
341
- * FONT_SIZES ์˜ ๊ฐ’๊ณผ ์ผ์น˜ํ•  ๋•Œ๋งŒ ๋ฐ˜ํ™˜. ๊ธ€์ž ํฌ๊ธฐ ๋“œ๋กญ๋‹ค์šด์˜ active ํ‘œ์‹œ์—
342
- * ์‚ฌ์šฉ.
435
+ * ์„ ํƒํ•œ ๊ธ€์ž๋ฅผ `<span style>` ๋กœ ๊ฐ์‹ผ๋‹ค. `execCommand` ๋Š” ๊ธ€์ž ํฌ๊ธฐ๋ฅผ 1~7
436
+ * ๋‹จ๊ณ„๋กœ๋งŒ ๋ฐ›๊ณ  ์ž๊ฐ„์€ ์•„์˜ˆ ์—†์–ด ์ง์ ‘ ๊ฐ์‹ผ๋‹ค. ์บ๋Ÿฟ๋งŒ ์žˆ์œผ๋ฉด ๋นˆ span ์„ ๋‘์–ด
437
+ * ๋‹ค์Œ์— ์น  ๊ธ€์ž๊ฐ€ ๊ทธ ์„œ์‹์„ ๋ฐ›๊ฒŒ ํ•œ๋‹ค.
343
438
  */
344
- private detectActiveFontSize;
439
+ private wrapSelectionStyle;
345
440
  /**
346
441
  * ๋ธ”๋ก ์œ ํ˜• ๋“œ๋กญ๋‹ค์šด์„ ์—ด์–ด ์‚ฌ์šฉ์ž ์„ ํƒ ๊ฒฐ๊ณผ๋ฅผ ์ฒ˜๋ฆฌํ•œ๋‹ค.
347
442
  * ํˆด๋ฐ”์˜ blockType ๋ฒ„ํŠผ / ํ™œ์„ฑ ๋ธ”๋ก ๋ผ๋ฒจ pill ์–‘์ชฝ ์ง„์ž…์ ์ด ๋™์ผํ•œ ๋ถ„๊ธฐ
@@ -384,19 +479,25 @@ export declare class AerizEditor {
384
479
  */
385
480
  private openFileAttachmentDialogAndApply;
386
481
  /**
387
- * ํŒŒ์ผ ์—…๋กœ๋“œ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ๊ฒฐ์ •. onFileUpload ๊ฐ€ ์šฐ์„ , ์—†์œผ๋ฉด fileUploadUrl ์—
388
- * multipart/form-data POST ํ›„ ์‘๋‹ต JSON ์˜ `url` ํ•„๋“œ๋ฅผ ์‚ฌ์šฉ. ๋‘˜ ๋‹ค ์—†์œผ๋ฉด
389
- * undefined โ†’ ๋‹ค์ด์–ผ๋กœ๊ทธ ์—…๋กœ๋“œ ํƒญ ๋น„ํ™œ์„ฑ.
390
- */
391
- private resolveFileUploadFn;
392
- /**
393
- * ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ๊ฒฐ์ •. options.onImageUpload ๊ฐ€ ์šฐ์„ ์ด๋ฉฐ, ์—†์œผ๋ฉด
394
- * options.imageUploadUrl ๋กœ multipart/form-data POST ํ›„ ์‘๋‹ต JSON ์˜
395
- * `url` ํ•„๋“œ๋ฅผ ์‚ฌ์šฉ. ๋‘˜ ๋‹ค ์—†์œผ๋ฉด undefined โ†’ ๋‹ค์ด์–ผ๋กœ๊ทธ ์—…๋กœ๋“œ ํƒญ ๋น„ํ™œ์„ฑ.
482
+ * ์˜ฌ๋ฆฌ๊ธฐ ํ•จ์ˆ˜. `upload.handler` ๊ฐ€ ์žˆ์œผ๋ฉด ๊ทธ๊ฒƒ, `upload.url` ์ด ์žˆ์œผ๋ฉด ๊ทธ ์ฃผ์†Œ๋กœ
483
+ * POST. ๋‘˜ ๋‹ค ์—†์œผ๋ฉด undefined โ€” ๋‹ค์ด์–ผ๋กœ๊ทธ์˜ "์˜ฌ๋ฆฌ๊ธฐ" ํƒญ์ด ๊บผ์ง„๋‹ค.
484
+ * ํฌ๊ธฐ ์ œํ•œ ยท ์˜ค๋ฅ˜ ๋ณด๊ณ ๋Š” ์—ฌ๊ธฐ์„œ ํ•œ ๋ฒˆ์— ์ฒ˜๋ฆฌํ•œ๋‹ค.
396
485
  */
397
- private resolveImageUploadFn;
486
+ private uploader;
487
+ private reportError;
398
488
  private queueSync;
399
489
  private sync;
490
+ /**
491
+ * ์บ๋Ÿฟ ์œ„์น˜์˜ ์ธ๋ผ์ธ ๋งˆํฌ ์ƒํƒœ.
492
+ *
493
+ * `queryCommandState` ๋Š” ๋ถ€๋ฅผ ๋•Œ๋งˆ๋‹ค ์Šคํƒ€์ผ ยท ๋ ˆ์ด์•„์›ƒ์„ ๊ฐ•์ œ๋กœ ๋‹ค์‹œ ๊ณ„์‚ฐํ•œ๋‹ค
494
+ * (๋งˆํฌ 7๊ฐœ ร— ํ‚ค ํ•˜๋‚˜). ๊ฐ™์€ ํ…์ŠคํŠธ ๋…ธ๋“œ ์•ˆ์—์„œ ํƒ€์ดํ•‘ํ•˜๋Š” ๋™์•ˆ์—๋Š” ๊ฒฐ๊ณผ๊ฐ€
495
+ * ๋ฐ”๋€Œ์ง€ ์•Š์œผ๋ฏ€๋กœ, ์บ๋Ÿฟ์ด ๋†“์ธ ๋…ธ๋“œ์™€ ๊ทธ ๋ถ€๋ชจ๊ฐ€ ๊ฐ™์œผ๋ฉด ์ง€๋‚œ ๊ฒฐ๊ณผ๋ฅผ ์“ด๋‹ค.
496
+ * ์„œ์‹ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋ฉด {@link invalidateInlineState} ๋กœ ๋‹ค์‹œ ์ฝ๊ฒŒ ํ•œ๋‹ค.
497
+ */
498
+ private readInlineState;
499
+ private inlineCache;
500
+ private invalidateInlineState;
400
501
  private handleKeyDown;
401
502
  /**
402
503
  * ๋งˆํฌ๋‹ค์šด ์ž…๋ ฅ ๊ทœ์น™.
@@ -499,7 +600,20 @@ export declare class AerizEditor {
499
600
  * ์ธ์šฉ๊ตฌ / ์ฝ”๋“œ ๋ธ”๋ก์˜ Enter ํƒˆ์ถœ, ์ œ๋ชฉ ๋ Enter ์— ์‚ฌ์šฉ.
500
601
  */
501
602
  private exitBlockOnEnter;
603
+ /**
604
+ * ํ•ธ๋“ค์€ **๋ณด์ด๋Š” ๋ธ”๋ก์—๋งŒ** ๋งŒ๋“ ๋‹ค โ€” ์บ๋Ÿฟ์ด ์žˆ๋Š” ๋ธ”๋ก๊ณผ ํฌ์ธํ„ฐ๊ฐ€ ์˜ฌ๋ผ๊ฐ„
605
+ * ๋ธ”๋ก, ๋งŽ์•„์•ผ ๋‘ ๊ฐœ๋‹ค.
606
+ *
607
+ * 1.0 ์€ ๋ธ”๋ก๋งˆ๋‹ค ํ•ธ๋“ค DOM ์„ ๋งŒ๋“ค๊ณ  ์œ„์น˜๋ฅผ ์žก์•˜๋‹ค. ํ™”๋ฉด์—๋Š” ํ•˜๋‚˜๋งŒ ๋ณด์ด๋Š”๋ฐ
608
+ * 190์ชฝ ๋ฌธ์„œ์—์„œ๋Š” 3,000๊ฐœ๋ฅผ ๋งŒ๋“ค๊ณ  ๋ธ”๋ก๋งˆ๋‹ค ๋ ˆ์ด์•„์›ƒ์„ ๋‹ค์‹œ ์ฝ์–ด์„œ ์—ด๊ธฐ์—๋งŒ
609
+ * 8์ดˆ ๊ฐ€๊นŒ์ด ๊ฑธ๋ ธ๋‹ค(์ดˆ๊ธฐํ™” ์‹œ๊ฐ„์˜ 86%).
610
+ */
502
611
  private syncBlockHandles;
612
+ /**
613
+ * ํ•ธ๋“ค ยท ๋ผ๋ฒจ ์œ„์น˜๋Š” ๋‹ค์Œ ํ”„๋ ˆ์ž„ ์ง์ „์— ํ•œ ๋ฒˆ๋งŒ ๊ณ„์‚ฐํ•œ๋‹ค. ๊ฐ™์€ ํ”„๋ ˆ์ž„ ์•ˆ์˜
614
+ * ํ‚ค ์ž…๋ ฅ ยท selectionchange ยท keyup ์ด ๋ ˆ์ด์•„์›ƒ์„ ์—ฌ๋Ÿฌ ๋ฒˆ ๊ฐ•์ œ๋กœ ์ฝ์ง€ ์•Š๊ฒŒ.
615
+ */
616
+ private scheduleOverlays;
503
617
  /**
504
618
  * ์ปจํŠธ๋กค(๋“œ๋ž˜๊ทธ ํ•ธ๋“ค ยท ๋‹จ๋ฝ ์ถ”๊ฐ€) ์€ **์ง€๊ธˆ ๋‹ค๋ฃจ๊ณ  ์žˆ๋Š” ๋ธ”๋ก** ์—๋งŒ ๋ณด์ธ๋‹ค.
505
619
  * ํฌ์ธํ„ฐ๊ฐ€ ๋†“์ธ ๋ธ”๋ก๊ณผ ์บ๋Ÿฟ์ด ์žˆ๋Š” ๋ธ”๋ก ๋‘ ๊ฐ€์ง€๊ฐ€ ๊ทธ ๋Œ€์ƒ์ด๋‹ค.
@@ -517,7 +631,14 @@ export declare class AerizEditor {
517
631
  * ๊ฐ€๊นŒ์šด ๋ธ”๋ก์œผ๋กœ ๋ถ™์ธ๋‹ค โ€” ๋ฌธ๋‹จ ์‚ฌ์ด ๊ฐ„๊ฒฉ์—์„œ ์ปจํŠธ๋กค์ด ๊นœ๋นก์ด์ง€ ์•Š๊ฒŒ.
518
632
  */
519
633
  private blockIdAtViewportY;
634
+ /** `clientY` ๊ฐ€ ๊ฑธ์น˜๊ฑฐ๋‚˜ ๊ทธ ์•„๋ž˜์— ์žˆ๋Š” ์ฒซ ๋ธ”๋ก์˜ ์ˆœ๋ฒˆ (์ด์ง„ ํƒ์ƒ‰). */
635
+ private blockIndexAtY;
520
636
  private repositionHandles;
637
+ /**
638
+ * id ๋กœ ๋ธ”๋ก element ๋ฅผ ์ฐพ๋Š”๋‹ค. ํ™œ์„ฑ ยท hover ๋ธ”๋ก์€ ๋Œ€๊ฐœ ๋ฐฉ๊ธˆ ๋ณธ ๊ฒƒ์ด๋ผ
639
+ * ๊ทธ์ชฝ๋ถ€ํ„ฐ ํ™•์ธํ•˜๊ณ , ์—†์„ ๋•Œ๋งŒ ๋ฌธ์„œ๋ฅผ ์ฐพ๋Š”๋‹ค.
640
+ */
641
+ private elementOfId;
521
642
  private positionHandle;
522
643
  private createBlockHandle;
523
644
  /**
@@ -525,6 +646,22 @@ export declare class AerizEditor {
525
646
  * MutationObserver flush ๊ฐ€ ์ƒˆ ๋‹จ๋ฝ์— ์‹ ๊ทœ data-block-id ๋ฅผ ๋ฐœ๊ธ‰ํ•œ๋‹ค.
526
647
  */
527
648
  private insertParagraphAfter;
649
+ private plainPasteNext;
650
+ /**
651
+ * ๋ถ™์—ฌ๋„ฃ๊ธฐ. ๋ธŒ๋ผ์šฐ์ € ๊ธฐ๋ณธ ๋™์ž‘์— ๋งก๊ธฐ์ง€ ์•Š๋Š”๋‹ค โ€” ๊ธฐ๋ณธ ๋™์ž‘์€ ์›Œ๋“œ ยท ํ•œ๊ธ€ ยท
652
+ * ์—‘์…€์˜ ํด๋ž˜์Šค ์„œ์‹์„ ์žƒ๊ณ  `mso-*` ์“ฐ๋ ˆ๊ธฐ๋ฅผ ๋‚จ๊ธฐ๋ฉฐ, ์›น ํŽ˜์ด์ง€์˜ ์œ„ํ—˜ํ•œ
653
+ * ์†์„ฑ๋„ ์ผ๋‹จ ๋ฌธ์„œ์— ๋“ค์–ด์˜จ๋‹ค. ์—ฌ๊ธฐ์„œ ๋‹ค๋“ฌ๊ณ (`cleanPastedHtml`) ๊ฑฐ๋ฅธ ๋’ค
654
+ * (`parseSafeFragment`) ์ง์ ‘ ๋„ฃ๋Š”๋‹ค.
655
+ */
656
+ private handlePaste;
657
+ /** ํด๋ฆฝ๋ณด๋“œ ยท ๋Œ์–ด ๋†“๊ธฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ง€๊ธˆ ์บ๋Ÿฟ ์ž๋ฆฌ์— ๋„ฃ๋Š”๋‹ค. */
658
+ private insertTransfer;
659
+ private insertFragmentAtCaret;
660
+ /**
661
+ * ๊ทธ๋ฆผ ํŒŒ์ผ์„ ์ง€๊ธˆ ๋ธ”๋ก ๋’ค์— ๊ทธ๋ฆผ ๋ธ”๋ก์œผ๋กœ ๋„ฃ๋Š”๋‹ค. ์—…๋กœ๋“œ ์ฒ˜๋ฆฌ๊ธฐ๊ฐ€ ์žˆ์œผ๋ฉด
662
+ * ์˜ฌ๋ฆฐ ๋’ค์˜ ์ฃผ์†Œ๋ฅผ, ์—†์œผ๋ฉด data URL ์„ ์“ด๋‹ค (๋ฌธ์„œ์— ๊ทธ๋ฆผ์ด ๊ทธ๋Œ€๋กœ ๋‹ด๊ธด๋‹ค).
663
+ */
664
+ private insertImageFiles;
528
665
  private handleDragOver;
529
666
  private handleDrop;
530
667
  private handleDragLeave;
@@ -550,7 +687,14 @@ export declare class AerizEditor {
550
687
  * - ์ขŒ์ธก: ํ™œ์„ฑ ๋ธ”๋ก ๋ผ๋ฒจ + id (์—†์œผ๋ฉด โ€” )
551
688
  * - ์šฐ์ธก: ์ด ๋ธ”๋ก ์ˆ˜, ๋ณธ๋ฌธ ๊ธ€์ž ์ˆ˜(๊ณต๋ฐฑ ์ œ์™ธ)
552
689
  */
553
- private syncStatusBar;
690
+ /**
691
+ * ์ƒํƒœ๋ฐ”๋Š” ํƒ€์ดํ•‘์ด ์ž ๊น ๋ฉˆ์ถ˜ ๋’ค์— ๊ฐฑ์‹ ํ•œ๋‹ค. ๊ธ€์ž ์ˆ˜๋ฅผ ์„ธ๋ ค๋ฉด ๋ฌธ์„œ ์ „์ฒด
692
+ * ํ…์ŠคํŠธ๋ฅผ ์ฝ์–ด์•ผ ํ•ด์„œ, ํ‚ค๋งˆ๋‹ค ํ•˜๋ฉด ๊ธด ๋ฌธ์„œ์—์„œ ๊ทธ ๋น„์šฉ์ด ๊ทธ๋Œ€๋กœ ์Œ“์ธ๋‹ค.
693
+ * ํ™œ์„ฑ ๋ธ”๋ก ๋ผ๋ฒจ์€ ๋ฐ”๋กœ ๋ฐ”๊พผ๋‹ค(์‹ธ๊ณ , ๋Šฆ์œผ๋ฉด ์–ด์ƒ‰ํ•˜๋‹ค).
694
+ */
695
+ private scheduleStatusBar;
696
+ private syncStatusBlock;
697
+ private syncStatusCounts;
554
698
  /**
555
699
  * ๋˜๋Œ๋ฆฌ๊ธฐ / ๋‹ค์‹œ ์‹คํ–‰ ๋ฒ„ํŠผ์˜ ํ™œ์„ฑ ์ƒํƒœ.
556
700
  *
@@ -558,7 +702,19 @@ export declare class AerizEditor {
558
702
  * ์ผ์–ด๋‚˜๋Š” ๊ฒฝํ—˜์„ ์ค€๋‹ค. ์ด๋ ฅ ๋์— ๋‹ฟ์•˜๋‹ค๋Š” ์‚ฌ์‹ค ์ž์ฒด๊ฐ€ ์ •๋ณด๋‹ค.
559
703
  */
560
704
  private syncHistoryButtons;
705
+ /**
706
+ * ๋ฐ”๋€ ๋ธ”๋ก์—๋งŒ ํ‘œ์‹(kind ยท label) ์„ ๋‹ค์‹œ ๋‹ฌ๊ณ , ํ™œ์„ฑ ํ‘œ์‹œ๋Š” ์ด์ „ ํ™œ์„ฑ
707
+ * ๋ธ”๋ก๊ณผ ์ƒˆ ํ™œ์„ฑ ๋ธ”๋ก ๋‘˜๋งŒ ๊ณ ์นœ๋‹ค. 1.0 ์€ ํ‚ค๋งˆ๋‹ค ๋ชจ๋“  ๋ธ”๋ก์— ์†์„ฑ์„ ๋‹ค์‹œ
708
+ * ์ผ๋‹ค.
709
+ */
561
710
  private syncBlockMarkers;
711
+ /**
712
+ * ์˜ต์ €๋ฒ„์— ์Œ“์ธ ๋ ˆ์ฝ”๋“œ๋ฅผ ์ง€๊ธˆ ์žฅ๋ถ€๋กœ ์˜ฎ๊ธด๋‹ค. ์—๋””ํ„ฐ๊ฐ€ ์Šค์Šค๋กœ ์“ด ํ‘œ์‹๋งŒ
713
+ * ๋ฐ”๋€ ๋ ˆ์ฝ”๋“œ๋Š” ์žฅ๋ถ€๊ฐ€ ๋ฒ„๋ฆฐ๋‹ค. ์ง„์งœ ๋ณ€๊ฒฝ์ด ์„ž์—ฌ ์žˆ์—ˆ๋‹ค๋ฉด ํ™•์ •์€ ๋‹ค์Œ
714
+ * ๋งˆ์ดํฌ๋กœํƒœ์Šคํฌ์˜ flush ๊ฐ€ ํ•œ๋‹ค โ€” ๊ฐ€์ ธ๊ฐ„ ๋ ˆ์ฝ”๋“œ๋Š” ์˜ต์ €๋ฒ„ ์ฝœ๋ฐฑ์œผ๋กœ ๋‹ค์‹œ
715
+ * ์˜ค์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
716
+ */
717
+ private absorb;
562
718
  private applyToolbarState;
563
719
  }
564
720
  //# sourceMappingURL=AerizEditor.d.ts.map