@rtif-sdk/web 1.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 (215) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +67 -0
  3. package/dist/block-drag-handler.d.ts +189 -0
  4. package/dist/block-drag-handler.d.ts.map +1 -0
  5. package/dist/block-drag-handler.js +745 -0
  6. package/dist/block-drag-handler.js.map +1 -0
  7. package/dist/block-renderer.d.ts +402 -0
  8. package/dist/block-renderer.d.ts.map +1 -0
  9. package/dist/block-renderer.js +424 -0
  10. package/dist/block-renderer.js.map +1 -0
  11. package/dist/clipboard.d.ts +178 -0
  12. package/dist/clipboard.d.ts.map +1 -0
  13. package/dist/clipboard.js +432 -0
  14. package/dist/clipboard.js.map +1 -0
  15. package/dist/command-bus.d.ts +113 -0
  16. package/dist/command-bus.d.ts.map +1 -0
  17. package/dist/command-bus.js +70 -0
  18. package/dist/command-bus.js.map +1 -0
  19. package/dist/composition.d.ts +220 -0
  20. package/dist/composition.d.ts.map +1 -0
  21. package/dist/composition.js +271 -0
  22. package/dist/composition.js.map +1 -0
  23. package/dist/content-extraction.d.ts +69 -0
  24. package/dist/content-extraction.d.ts.map +1 -0
  25. package/dist/content-extraction.js +228 -0
  26. package/dist/content-extraction.js.map +1 -0
  27. package/dist/content-handler-file.d.ts +40 -0
  28. package/dist/content-handler-file.d.ts.map +1 -0
  29. package/dist/content-handler-file.js +91 -0
  30. package/dist/content-handler-file.js.map +1 -0
  31. package/dist/content-handler-image.d.ts +82 -0
  32. package/dist/content-handler-image.d.ts.map +1 -0
  33. package/dist/content-handler-image.js +120 -0
  34. package/dist/content-handler-image.js.map +1 -0
  35. package/dist/content-handler-url.d.ts +129 -0
  36. package/dist/content-handler-url.d.ts.map +1 -0
  37. package/dist/content-handler-url.js +244 -0
  38. package/dist/content-handler-url.js.map +1 -0
  39. package/dist/content-handlers.d.ts +67 -0
  40. package/dist/content-handlers.d.ts.map +1 -0
  41. package/dist/content-handlers.js +263 -0
  42. package/dist/content-handlers.js.map +1 -0
  43. package/dist/content-pipeline.d.ts +383 -0
  44. package/dist/content-pipeline.d.ts.map +1 -0
  45. package/dist/content-pipeline.js +232 -0
  46. package/dist/content-pipeline.js.map +1 -0
  47. package/dist/cursor-nav.d.ts +149 -0
  48. package/dist/cursor-nav.d.ts.map +1 -0
  49. package/dist/cursor-nav.js +230 -0
  50. package/dist/cursor-nav.js.map +1 -0
  51. package/dist/cursor-rect.d.ts +65 -0
  52. package/dist/cursor-rect.d.ts.map +1 -0
  53. package/dist/cursor-rect.js +98 -0
  54. package/dist/cursor-rect.js.map +1 -0
  55. package/dist/drop-indicator.d.ts +108 -0
  56. package/dist/drop-indicator.d.ts.map +1 -0
  57. package/dist/drop-indicator.js +236 -0
  58. package/dist/drop-indicator.js.map +1 -0
  59. package/dist/editor.d.ts +41 -0
  60. package/dist/editor.d.ts.map +1 -0
  61. package/dist/editor.js +710 -0
  62. package/dist/editor.js.map +1 -0
  63. package/dist/floating-toolbar.d.ts +93 -0
  64. package/dist/floating-toolbar.d.ts.map +1 -0
  65. package/dist/floating-toolbar.js +159 -0
  66. package/dist/floating-toolbar.js.map +1 -0
  67. package/dist/index.d.ts +62 -0
  68. package/dist/index.d.ts.map +1 -0
  69. package/dist/index.js +119 -0
  70. package/dist/index.js.map +1 -0
  71. package/dist/input-bridge.d.ts +273 -0
  72. package/dist/input-bridge.d.ts.map +1 -0
  73. package/dist/input-bridge.js +884 -0
  74. package/dist/input-bridge.js.map +1 -0
  75. package/dist/link-popover.d.ts +38 -0
  76. package/dist/link-popover.d.ts.map +1 -0
  77. package/dist/link-popover.js +278 -0
  78. package/dist/link-popover.js.map +1 -0
  79. package/dist/mark-renderer.d.ts +275 -0
  80. package/dist/mark-renderer.d.ts.map +1 -0
  81. package/dist/mark-renderer.js +210 -0
  82. package/dist/mark-renderer.js.map +1 -0
  83. package/dist/perf.d.ts +145 -0
  84. package/dist/perf.d.ts.map +1 -0
  85. package/dist/perf.js +260 -0
  86. package/dist/perf.js.map +1 -0
  87. package/dist/plugin-kit.d.ts +265 -0
  88. package/dist/plugin-kit.d.ts.map +1 -0
  89. package/dist/plugin-kit.js +234 -0
  90. package/dist/plugin-kit.js.map +1 -0
  91. package/dist/plugins/alignment-plugin.d.ts +68 -0
  92. package/dist/plugins/alignment-plugin.d.ts.map +1 -0
  93. package/dist/plugins/alignment-plugin.js +98 -0
  94. package/dist/plugins/alignment-plugin.js.map +1 -0
  95. package/dist/plugins/block-utils.d.ts +113 -0
  96. package/dist/plugins/block-utils.d.ts.map +1 -0
  97. package/dist/plugins/block-utils.js +191 -0
  98. package/dist/plugins/block-utils.js.map +1 -0
  99. package/dist/plugins/blockquote-plugin.d.ts +39 -0
  100. package/dist/plugins/blockquote-plugin.d.ts.map +1 -0
  101. package/dist/plugins/blockquote-plugin.js +88 -0
  102. package/dist/plugins/blockquote-plugin.js.map +1 -0
  103. package/dist/plugins/bold-plugin.d.ts +37 -0
  104. package/dist/plugins/bold-plugin.d.ts.map +1 -0
  105. package/dist/plugins/bold-plugin.js +48 -0
  106. package/dist/plugins/bold-plugin.js.map +1 -0
  107. package/dist/plugins/callout-plugin.d.ts +100 -0
  108. package/dist/plugins/callout-plugin.d.ts.map +1 -0
  109. package/dist/plugins/callout-plugin.js +200 -0
  110. package/dist/plugins/callout-plugin.js.map +1 -0
  111. package/dist/plugins/code-block-plugin.d.ts +62 -0
  112. package/dist/plugins/code-block-plugin.d.ts.map +1 -0
  113. package/dist/plugins/code-block-plugin.js +176 -0
  114. package/dist/plugins/code-block-plugin.js.map +1 -0
  115. package/dist/plugins/code-plugin.d.ts +37 -0
  116. package/dist/plugins/code-plugin.d.ts.map +1 -0
  117. package/dist/plugins/code-plugin.js +48 -0
  118. package/dist/plugins/code-plugin.js.map +1 -0
  119. package/dist/plugins/embed-plugin.d.ts +90 -0
  120. package/dist/plugins/embed-plugin.d.ts.map +1 -0
  121. package/dist/plugins/embed-plugin.js +147 -0
  122. package/dist/plugins/embed-plugin.js.map +1 -0
  123. package/dist/plugins/font-family-plugin.d.ts +58 -0
  124. package/dist/plugins/font-family-plugin.d.ts.map +1 -0
  125. package/dist/plugins/font-family-plugin.js +57 -0
  126. package/dist/plugins/font-family-plugin.js.map +1 -0
  127. package/dist/plugins/font-size-plugin.d.ts +57 -0
  128. package/dist/plugins/font-size-plugin.d.ts.map +1 -0
  129. package/dist/plugins/font-size-plugin.js +56 -0
  130. package/dist/plugins/font-size-plugin.js.map +1 -0
  131. package/dist/plugins/heading-plugin.d.ts +52 -0
  132. package/dist/plugins/heading-plugin.d.ts.map +1 -0
  133. package/dist/plugins/heading-plugin.js +114 -0
  134. package/dist/plugins/heading-plugin.js.map +1 -0
  135. package/dist/plugins/hr-plugin.d.ts +33 -0
  136. package/dist/plugins/hr-plugin.d.ts.map +1 -0
  137. package/dist/plugins/hr-plugin.js +75 -0
  138. package/dist/plugins/hr-plugin.js.map +1 -0
  139. package/dist/plugins/image-plugin.d.ts +115 -0
  140. package/dist/plugins/image-plugin.d.ts.map +1 -0
  141. package/dist/plugins/image-plugin.js +199 -0
  142. package/dist/plugins/image-plugin.js.map +1 -0
  143. package/dist/plugins/indent-plugin.d.ts +62 -0
  144. package/dist/plugins/indent-plugin.d.ts.map +1 -0
  145. package/dist/plugins/indent-plugin.js +128 -0
  146. package/dist/plugins/indent-plugin.js.map +1 -0
  147. package/dist/plugins/index.d.ts +45 -0
  148. package/dist/plugins/index.d.ts.map +1 -0
  149. package/dist/plugins/index.js +42 -0
  150. package/dist/plugins/index.js.map +1 -0
  151. package/dist/plugins/italic-plugin.d.ts +37 -0
  152. package/dist/plugins/italic-plugin.d.ts.map +1 -0
  153. package/dist/plugins/italic-plugin.js +48 -0
  154. package/dist/plugins/italic-plugin.js.map +1 -0
  155. package/dist/plugins/link-plugin.d.ts +129 -0
  156. package/dist/plugins/link-plugin.d.ts.map +1 -0
  157. package/dist/plugins/link-plugin.js +212 -0
  158. package/dist/plugins/link-plugin.js.map +1 -0
  159. package/dist/plugins/list-plugin.d.ts +53 -0
  160. package/dist/plugins/list-plugin.d.ts.map +1 -0
  161. package/dist/plugins/list-plugin.js +309 -0
  162. package/dist/plugins/list-plugin.js.map +1 -0
  163. package/dist/plugins/mark-utils.d.ts +173 -0
  164. package/dist/plugins/mark-utils.d.ts.map +1 -0
  165. package/dist/plugins/mark-utils.js +425 -0
  166. package/dist/plugins/mark-utils.js.map +1 -0
  167. package/dist/plugins/mention-plugin.d.ts +191 -0
  168. package/dist/plugins/mention-plugin.d.ts.map +1 -0
  169. package/dist/plugins/mention-plugin.js +295 -0
  170. package/dist/plugins/mention-plugin.js.map +1 -0
  171. package/dist/plugins/strikethrough-plugin.d.ts +37 -0
  172. package/dist/plugins/strikethrough-plugin.d.ts.map +1 -0
  173. package/dist/plugins/strikethrough-plugin.js +48 -0
  174. package/dist/plugins/strikethrough-plugin.js.map +1 -0
  175. package/dist/plugins/text-color-plugin.d.ts +57 -0
  176. package/dist/plugins/text-color-plugin.d.ts.map +1 -0
  177. package/dist/plugins/text-color-plugin.js +56 -0
  178. package/dist/plugins/text-color-plugin.js.map +1 -0
  179. package/dist/plugins/underline-plugin.d.ts +37 -0
  180. package/dist/plugins/underline-plugin.d.ts.map +1 -0
  181. package/dist/plugins/underline-plugin.js +48 -0
  182. package/dist/plugins/underline-plugin.js.map +1 -0
  183. package/dist/presets.d.ts +95 -0
  184. package/dist/presets.d.ts.map +1 -0
  185. package/dist/presets.js +159 -0
  186. package/dist/presets.js.map +1 -0
  187. package/dist/renderer.d.ts +125 -0
  188. package/dist/renderer.d.ts.map +1 -0
  189. package/dist/renderer.js +415 -0
  190. package/dist/renderer.js.map +1 -0
  191. package/dist/scroll-to-cursor.d.ts +25 -0
  192. package/dist/scroll-to-cursor.d.ts.map +1 -0
  193. package/dist/scroll-to-cursor.js +59 -0
  194. package/dist/scroll-to-cursor.js.map +1 -0
  195. package/dist/selection-sync.d.ts +159 -0
  196. package/dist/selection-sync.d.ts.map +1 -0
  197. package/dist/selection-sync.js +527 -0
  198. package/dist/selection-sync.js.map +1 -0
  199. package/dist/shortcut-handler.d.ts +98 -0
  200. package/dist/shortcut-handler.d.ts.map +1 -0
  201. package/dist/shortcut-handler.js +155 -0
  202. package/dist/shortcut-handler.js.map +1 -0
  203. package/dist/toolbar.d.ts +103 -0
  204. package/dist/toolbar.d.ts.map +1 -0
  205. package/dist/toolbar.js +134 -0
  206. package/dist/toolbar.js.map +1 -0
  207. package/dist/trigger-manager.d.ts +205 -0
  208. package/dist/trigger-manager.d.ts.map +1 -0
  209. package/dist/trigger-manager.js +466 -0
  210. package/dist/trigger-manager.js.map +1 -0
  211. package/dist/types.d.ts +216 -0
  212. package/dist/types.d.ts.map +1 -0
  213. package/dist/types.js +2 -0
  214. package/dist/types.js.map +1 -0
  215. package/package.json +30 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input-bridge.js","sourceRoot":"","sources":["../src/input-bridge.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Link popover — floating UI for creating and editing links.
3
+ *
4
+ * Shows a URL input with Apply/Remove buttons, positioned near the cursor
5
+ * or the existing link span. Supports keyboard interaction (Enter to confirm,
6
+ * Escape to dismiss).
7
+ *
8
+ * @module
9
+ */
10
+ import type { WebEditor, Disposable } from './types.js';
11
+ /**
12
+ * Create a link popover attached to a web editor.
13
+ *
14
+ * The popover is shown when the `showLinkUI` command is triggered (via Cmd+K
15
+ * or programmatically). It can also be shown by clicking on an existing link
16
+ * span in the editor.
17
+ *
18
+ * @param editor - The web editor instance
19
+ * @param root - The editor's root element (used for event delegation and positioning)
20
+ * @returns A disposable for cleanup
21
+ *
22
+ * @example
23
+ * ```ts
24
+ * const { plugin, attach } = createLinkPlugin();
25
+ * engine.use(plugin);
26
+ * const editor = createWebEditor({ root, engine, accessibleLabel: 'Editor' });
27
+ * const popoverDisposable = createLinkPopover(editor, root);
28
+ * ```
29
+ */
30
+ export declare function createLinkPopover(editor: WebEditor, root: HTMLElement): LinkPopoverHandle;
31
+ /**
32
+ * Extended disposable that also exposes the show function.
33
+ */
34
+ export interface LinkPopoverHandle extends Disposable {
35
+ /** Show the link popover. */
36
+ show(mode: 'insert' | 'edit', currentHref?: string): void;
37
+ }
38
+ //# sourceMappingURL=link-popover.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"link-popover.d.ts","sourceRoot":"","sources":["../src/link-popover.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAOxD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,WAAW,GAChB,iBAAiB,CAuRnB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAkB,SAAQ,UAAU;IACnD,6BAA6B;IAC7B,IAAI,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3D"}
@@ -0,0 +1,278 @@
1
+ /**
2
+ * Link popover — floating UI for creating and editing links.
3
+ *
4
+ * Shows a URL input with Apply/Remove buttons, positioned near the cursor
5
+ * or the existing link span. Supports keyboard interaction (Enter to confirm,
6
+ * Escape to dismiss).
7
+ *
8
+ * @module
9
+ */
10
+ import { LinkCommands } from './plugins/link-plugin.js';
11
+ // ---------------------------------------------------------------------------
12
+ // LinkPopover
13
+ // ---------------------------------------------------------------------------
14
+ /**
15
+ * Create a link popover attached to a web editor.
16
+ *
17
+ * The popover is shown when the `showLinkUI` command is triggered (via Cmd+K
18
+ * or programmatically). It can also be shown by clicking on an existing link
19
+ * span in the editor.
20
+ *
21
+ * @param editor - The web editor instance
22
+ * @param root - The editor's root element (used for event delegation and positioning)
23
+ * @returns A disposable for cleanup
24
+ *
25
+ * @example
26
+ * ```ts
27
+ * const { plugin, attach } = createLinkPlugin();
28
+ * engine.use(plugin);
29
+ * const editor = createWebEditor({ root, engine, accessibleLabel: 'Editor' });
30
+ * const popoverDisposable = createLinkPopover(editor, root);
31
+ * ```
32
+ */
33
+ export function createLinkPopover(editor, root) {
34
+ let popoverEl = null;
35
+ let currentMode = 'insert';
36
+ let justShown = false;
37
+ // -------------------------------------------------------------------
38
+ // Popover DOM creation
39
+ // -------------------------------------------------------------------
40
+ function createPopoverElement() {
41
+ const container = document.createElement('div');
42
+ container.className = 'rtif-link-popover';
43
+ container.setAttribute('role', 'dialog');
44
+ container.setAttribute('aria-label', 'Link editor');
45
+ container.style.cssText = `
46
+ position: fixed;
47
+ z-index: 9999;
48
+ background-color: #fff;
49
+ border: 1px solid #ccc;
50
+ border-radius: 6px;
51
+ padding: 8px;
52
+ box-shadow: 0 2px 8px rgba(0,0,0,0.15);
53
+ display: flex;
54
+ align-items: center;
55
+ gap: 6px;
56
+ font-family: system-ui, -apple-system, sans-serif;
57
+ font-size: 14px;
58
+ `;
59
+ const input = document.createElement('input');
60
+ input.type = 'url';
61
+ input.className = 'rtif-link-popover-input';
62
+ input.placeholder = 'Enter URL...';
63
+ input.setAttribute('aria-label', 'URL');
64
+ input.style.cssText = `
65
+ flex: 1;
66
+ min-width: 200px;
67
+ padding: 4px 8px;
68
+ border: 1px solid #ccc;
69
+ border-radius: 4px;
70
+ font-size: 14px;
71
+ outline: none;
72
+ `;
73
+ const applyBtn = document.createElement('button');
74
+ applyBtn.type = 'button';
75
+ applyBtn.className = 'rtif-link-popover-apply';
76
+ applyBtn.textContent = 'Apply';
77
+ applyBtn.style.cssText = `
78
+ padding: 4px 12px;
79
+ border: none;
80
+ border-radius: 4px;
81
+ background-color: #0066cc;
82
+ color: #fff;
83
+ cursor: pointer;
84
+ font-size: 13px;
85
+ `;
86
+ const removeBtn = document.createElement('button');
87
+ removeBtn.type = 'button';
88
+ removeBtn.className = 'rtif-link-popover-remove';
89
+ removeBtn.textContent = 'Remove';
90
+ removeBtn.style.cssText = `
91
+ padding: 4px 12px;
92
+ border: 1px solid #cc0000;
93
+ border-radius: 4px;
94
+ background-color: transparent;
95
+ color: #cc0000;
96
+ cursor: pointer;
97
+ font-size: 13px;
98
+ display: none;
99
+ `;
100
+ container.appendChild(input);
101
+ container.appendChild(applyBtn);
102
+ container.appendChild(removeBtn);
103
+ // Event handlers
104
+ input.addEventListener('keydown', (e) => {
105
+ if (e.key === 'Enter') {
106
+ e.preventDefault();
107
+ e.stopPropagation();
108
+ applyLink(input.value);
109
+ }
110
+ else if (e.key === 'Escape') {
111
+ e.preventDefault();
112
+ e.stopPropagation();
113
+ hidePopover();
114
+ }
115
+ });
116
+ applyBtn.addEventListener('click', () => {
117
+ applyLink(input.value);
118
+ });
119
+ removeBtn.addEventListener('click', () => {
120
+ removeLink();
121
+ });
122
+ // Prevent editor from losing focus when clicking popover elements
123
+ container.addEventListener('mousedown', (e) => {
124
+ e.preventDefault();
125
+ });
126
+ return container;
127
+ }
128
+ // -------------------------------------------------------------------
129
+ // Show / hide
130
+ // -------------------------------------------------------------------
131
+ function showPopover(mode, currentHref) {
132
+ hidePopover(); // Close any existing popover
133
+ currentMode = mode;
134
+ popoverEl = createPopoverElement();
135
+ const input = popoverEl.querySelector('.rtif-link-popover-input');
136
+ const removeBtn = popoverEl.querySelector('.rtif-link-popover-remove');
137
+ if (input && currentHref) {
138
+ input.value = currentHref;
139
+ }
140
+ if (removeBtn && mode === 'edit') {
141
+ removeBtn.style.display = '';
142
+ }
143
+ document.body.appendChild(popoverEl);
144
+ // Position near cursor
145
+ positionPopover();
146
+ // Focus the input after positioning
147
+ if (input) {
148
+ input.focus();
149
+ if (currentHref) {
150
+ input.select();
151
+ }
152
+ }
153
+ // Prevent the current click event (which triggered showPopover) from
154
+ // immediately closing the popover via the outside-click handler.
155
+ justShown = true;
156
+ requestAnimationFrame(() => { justShown = false; });
157
+ }
158
+ function hidePopover() {
159
+ if (popoverEl) {
160
+ popoverEl.remove();
161
+ popoverEl = null;
162
+ }
163
+ // Return focus to editor
164
+ editor.focus();
165
+ }
166
+ function positionPopover() {
167
+ if (!popoverEl)
168
+ return;
169
+ const rect = editor.cursorRect.getCursorRect();
170
+ if (!rect) {
171
+ // Fallback: position at top-left of editor
172
+ const editorRect = editor.cursorRect.getEditorRect();
173
+ if (editorRect) {
174
+ popoverEl.style.left = `${editorRect.left}px`;
175
+ popoverEl.style.top = `${editorRect.top}px`;
176
+ }
177
+ return;
178
+ }
179
+ // Position below the cursor
180
+ const popoverWidth = 340; // approximate
181
+ const popoverHeight = 44; // approximate
182
+ const margin = 4;
183
+ let left = rect.left;
184
+ let top = rect.bottom + margin;
185
+ // Viewport boundary clamping
186
+ if (left + popoverWidth > window.innerWidth - margin) {
187
+ left = window.innerWidth - popoverWidth - margin;
188
+ }
189
+ if (left < margin) {
190
+ left = margin;
191
+ }
192
+ if (top + popoverHeight > window.innerHeight - margin) {
193
+ // Show above cursor instead
194
+ top = rect.top - popoverHeight - margin;
195
+ }
196
+ popoverEl.style.left = `${left}px`;
197
+ popoverEl.style.top = `${top}px`;
198
+ }
199
+ // -------------------------------------------------------------------
200
+ // Actions
201
+ // -------------------------------------------------------------------
202
+ function applyLink(href) {
203
+ const trimmed = href.trim();
204
+ if (!trimmed) {
205
+ hidePopover();
206
+ return;
207
+ }
208
+ if (currentMode === 'edit') {
209
+ editor.commandBus.execute(LinkCommands.UPDATE, { href: trimmed });
210
+ }
211
+ else {
212
+ editor.commandBus.execute(LinkCommands.INSERT, { href: trimmed });
213
+ }
214
+ hidePopover();
215
+ }
216
+ function removeLink() {
217
+ editor.commandBus.execute(LinkCommands.REMOVE);
218
+ hidePopover();
219
+ }
220
+ // -------------------------------------------------------------------
221
+ // Click detection on link spans
222
+ // -------------------------------------------------------------------
223
+ const onRootClick = (e) => {
224
+ const target = e.target;
225
+ if (!target)
226
+ return;
227
+ // Find the closest element with data-link-href (link span)
228
+ const linkEl = target.closest('[data-link-href]');
229
+ if (!linkEl)
230
+ return;
231
+ const href = linkEl.getAttribute('data-link-href');
232
+ if (href) {
233
+ // Defer to allow the selection to settle first
234
+ requestAnimationFrame(() => {
235
+ showPopover('edit', href);
236
+ });
237
+ }
238
+ };
239
+ root.addEventListener('click', onRootClick);
240
+ // -------------------------------------------------------------------
241
+ // Wire showLinkUI command via attach()
242
+ // -------------------------------------------------------------------
243
+ // Use the link plugin's attach if available, otherwise listen for showLinkUI via alternative means
244
+ // For now, we directly hook into showPopover as the callback
245
+ // Close popover on outside clicks
246
+ const onDocumentClick = (e) => {
247
+ if (!popoverEl)
248
+ return;
249
+ if (justShown)
250
+ return; // Skip the click that triggered the popover
251
+ if (popoverEl.contains(e.target))
252
+ return;
253
+ if (root.contains(e.target))
254
+ return; // Let root click handler handle link clicks
255
+ hidePopover();
256
+ };
257
+ document.addEventListener('click', onDocumentClick);
258
+ // Close popover on Escape anywhere
259
+ const onDocumentKeyDown = (e) => {
260
+ if (!popoverEl)
261
+ return;
262
+ if (e.key === 'Escape') {
263
+ hidePopover();
264
+ }
265
+ };
266
+ document.addEventListener('keydown', onDocumentKeyDown);
267
+ return {
268
+ /** Show the link popover programmatically. */
269
+ show: showPopover,
270
+ dispose() {
271
+ hidePopover();
272
+ root.removeEventListener('click', onRootClick);
273
+ document.removeEventListener('click', onDocumentClick);
274
+ document.removeEventListener('keydown', onDocumentKeyDown);
275
+ },
276
+ };
277
+ }
278
+ //# sourceMappingURL=link-popover.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"link-popover.js","sourceRoot":"","sources":["../src/link-popover.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,275 @@
1
+ /**
2
+ * Mark renderer registry — maps mark types to DOM rendering functions.
3
+ *
4
+ * The renderer consults this registry when creating span elements to apply
5
+ * visual mark effects (CSS classes, inline styles, data attributes).
6
+ * Built-in renderers handle bold, italic, underline, strikethrough, code,
7
+ * and link. Plugins can register custom renderers for additional marks.
8
+ *
9
+ * @module
10
+ */
11
+ /**
12
+ * A mark renderer applies visual styling to a span element for a specific mark type.
13
+ *
14
+ * @example
15
+ * ```ts
16
+ * const boldRenderer: MarkRenderer = {
17
+ * apply(el) { el.classList.add('rtif-bold'); },
18
+ * };
19
+ * ```
20
+ */
21
+ export interface MarkRenderer {
22
+ /**
23
+ * Apply this mark's visual effect to a span element.
24
+ *
25
+ * @param el - The span element to style
26
+ * @param value - The mark value (e.g., `true` for bold, `{ href: "..." }` for link)
27
+ */
28
+ apply(el: HTMLSpanElement, value: unknown): void;
29
+ /**
30
+ * Whether spans with this mark are atomic (non-editable, indivisible units).
31
+ * When true, backspace/delete removes the entire mark range at once,
32
+ * and cursor placement avoids positioning inside the span.
33
+ *
34
+ * @example
35
+ * ```ts
36
+ * const mentionRenderer: MarkRenderer = {
37
+ * apply(el) { el.classList.add('rtif-mention'); el.setAttribute('contenteditable', 'false'); },
38
+ * atomic: true,
39
+ * };
40
+ * ```
41
+ */
42
+ atomic?: boolean;
43
+ /**
44
+ * Whether this mark is exclusive (does not extend at span boundaries).
45
+ * When true, typing at the end of a span with this mark will NOT inherit
46
+ * the mark — pending marks are automatically cleared at the boundary.
47
+ * Matches Google Docs / Notion / ProseMirror behavior for links.
48
+ *
49
+ * @example
50
+ * ```ts
51
+ * const linkRenderer: MarkRenderer = {
52
+ * apply(el) { el.classList.add('rtif-link'); },
53
+ * exclusive: true,
54
+ * };
55
+ * ```
56
+ */
57
+ exclusive?: boolean;
58
+ }
59
+ /**
60
+ * A span replacer creates a fully custom DOM element for a span with
61
+ * a specific mark, instead of modifying the default `<span>`.
62
+ *
63
+ * Use this when a mark needs entirely custom DOM structure (e.g., an
64
+ * avatar + name chip for mentions, a badge element, etc.).
65
+ *
66
+ * @example
67
+ * ```ts
68
+ * const mentionReplacer: SpanReplacer = {
69
+ * createElement(text, marks) {
70
+ * const el = document.createElement('span');
71
+ * el.className = 'mention-chip';
72
+ * const avatar = document.createElement('img');
73
+ * avatar.src = `/avatars/${(marks?.mention as { id: string })?.id}.png`;
74
+ * el.appendChild(avatar);
75
+ * el.appendChild(document.createTextNode(text));
76
+ * return el;
77
+ * },
78
+ * };
79
+ * ```
80
+ */
81
+ export interface SpanReplacer {
82
+ /**
83
+ * Create a custom DOM element for the span.
84
+ *
85
+ * The returned element MUST contain or represent the span's text content.
86
+ * The element will have `data-rtif-span` attribute added automatically.
87
+ *
88
+ * @param text - The span's raw text content
89
+ * @param marks - The span's marks object (may be undefined)
90
+ * @returns A custom HTML element to use instead of the default `<span>`
91
+ */
92
+ createElement(text: string, marks: Record<string, unknown> | undefined): HTMLElement;
93
+ /**
94
+ * Update an existing custom element in place.
95
+ *
96
+ * Return `true` if the update was handled (element updated in place).
97
+ * Return `false` to signal that the element should be replaced entirely
98
+ * (a new `createElement` call will follow).
99
+ *
100
+ * If this method is not provided, the element is always replaced on change.
101
+ *
102
+ * @param el - The existing custom element
103
+ * @param text - The new text content
104
+ * @param marks - The new marks object
105
+ * @returns `true` if updated in place, `false` to replace
106
+ */
107
+ update?(el: HTMLElement, text: string, marks: Record<string, unknown> | undefined): boolean;
108
+ }
109
+ /**
110
+ * Registry of mark renderers, keyed by mark type string.
111
+ *
112
+ * @example
113
+ * ```ts
114
+ * const registry = createMarkRendererRegistry();
115
+ * registry.register('bold', { apply(el) { el.classList.add('rtif-bold'); } });
116
+ * ```
117
+ */
118
+ export interface MarkRendererRegistry {
119
+ /**
120
+ * Register a renderer for a mark type.
121
+ *
122
+ * @param markType - The mark type string (e.g., "bold", "italic", "link")
123
+ * @param renderer - The renderer to apply when this mark is present
124
+ */
125
+ register(markType: string, renderer: MarkRenderer): void;
126
+ /**
127
+ * Get the renderer for a mark type.
128
+ *
129
+ * @param markType - The mark type to look up
130
+ * @returns The registered renderer, or undefined if none registered
131
+ */
132
+ get(markType: string): MarkRenderer | undefined;
133
+ /**
134
+ * Check whether a mark type is registered as atomic.
135
+ *
136
+ * @param markType - The mark type to check
137
+ * @returns `true` if the mark type has a renderer with `atomic: true`
138
+ */
139
+ isAtomic(markType: string): boolean;
140
+ /**
141
+ * Check whether a mark type is registered as exclusive.
142
+ *
143
+ * Exclusive marks do not extend at span boundaries — typing at the end
144
+ * of an exclusive mark span will not inherit the mark.
145
+ *
146
+ * @param markType - The mark type to check
147
+ * @returns `true` if the mark type has a renderer with `exclusive: true`
148
+ */
149
+ isExclusive(markType: string): boolean;
150
+ /**
151
+ * Apply all matching renderers to a span element based on its marks.
152
+ *
153
+ * For each mark key present in `marks`, looks up the registered renderer
154
+ * and calls `apply()` on the element.
155
+ *
156
+ * @param el - The span element to style
157
+ * @param marks - The span's marks object (may be undefined)
158
+ */
159
+ applyAll(el: HTMLSpanElement, marks: Record<string, unknown> | undefined): void;
160
+ /**
161
+ * Register a span replacer for a mark type.
162
+ *
163
+ * When a span has this mark, the replacer's `createElement()` is called
164
+ * instead of creating a default `<span>` element.
165
+ *
166
+ * @param markType - The mark type string (e.g., "mention")
167
+ * @param replacer - The span replacer to use
168
+ */
169
+ registerReplacer(markType: string, replacer: SpanReplacer): void;
170
+ /**
171
+ * Get the span replacer for a mark type.
172
+ *
173
+ * @param markType - The mark type to look up
174
+ * @returns The registered replacer, or undefined if none registered
175
+ */
176
+ getReplacer(markType: string): SpanReplacer | undefined;
177
+ }
178
+ /**
179
+ * Create a new mark renderer registry.
180
+ *
181
+ * @returns An empty registry ready for renderer registration
182
+ *
183
+ * @example
184
+ * ```ts
185
+ * const registry = createMarkRendererRegistry();
186
+ * registry.register('bold', boldRenderer);
187
+ * registry.register('italic', italicRenderer);
188
+ * ```
189
+ */
190
+ export declare function createMarkRendererRegistry(): MarkRendererRegistry;
191
+ /**
192
+ * Built-in renderer for the `bold` mark.
193
+ * Adds the `rtif-bold` CSS class to the span element.
194
+ */
195
+ export declare const boldRenderer: MarkRenderer;
196
+ /**
197
+ * Built-in renderer for the `italic` mark.
198
+ * Adds the `rtif-italic` CSS class to the span element.
199
+ */
200
+ export declare const italicRenderer: MarkRenderer;
201
+ /**
202
+ * Built-in renderer for the `underline` mark.
203
+ * Adds the `rtif-underline` CSS class to the span element.
204
+ */
205
+ export declare const underlineRenderer: MarkRenderer;
206
+ /**
207
+ * Built-in renderer for the `strikethrough` mark.
208
+ * Adds the `rtif-strikethrough` CSS class to the span element.
209
+ */
210
+ export declare const strikethroughRenderer: MarkRenderer;
211
+ /**
212
+ * Built-in renderer for the `code` mark.
213
+ * Adds the `rtif-code` CSS class to the span element.
214
+ */
215
+ export declare const codeRenderer: MarkRenderer;
216
+ /**
217
+ * Built-in renderer for the `link` mark.
218
+ * Adds the `rtif-link` CSS class and sets `data-link-href` attribute.
219
+ *
220
+ * @example
221
+ * ```ts
222
+ * // Mark value: { href: "https://example.com", title: "Example" }
223
+ * // Result: <span class="rtif-link" data-link-href="https://example.com" title="Example">
224
+ * ```
225
+ */
226
+ export declare const linkRenderer: MarkRenderer;
227
+ /**
228
+ * Built-in renderer for the `color` mark.
229
+ * Sets the `color` CSS style on the span element.
230
+ *
231
+ * @example
232
+ * ```ts
233
+ * // Mark value: "#ff0000"
234
+ * // Result: <span style="color: #ff0000;">
235
+ * ```
236
+ */
237
+ export declare const colorRenderer: MarkRenderer;
238
+ /**
239
+ * Built-in renderer for the `fontSize` mark.
240
+ * Sets the `font-size` CSS style on the span element in pixels.
241
+ *
242
+ * @example
243
+ * ```ts
244
+ * // Mark value: 16
245
+ * // Result: <span style="font-size: 16px;">
246
+ * ```
247
+ */
248
+ export declare const fontSizeRenderer: MarkRenderer;
249
+ /**
250
+ * Built-in renderer for the `fontFamily` mark.
251
+ * Sets the `font-family` CSS style on the span element.
252
+ *
253
+ * @example
254
+ * ```ts
255
+ * // Mark value: "Georgia, serif"
256
+ * // Result: <span style="font-family: Georgia, serif;">
257
+ * ```
258
+ */
259
+ export declare const fontFamilyRenderer: MarkRenderer;
260
+ /**
261
+ * Register all built-in mark renderers into a registry.
262
+ *
263
+ * Registers renderers for: bold, italic, underline, strikethrough, code,
264
+ * link, color, fontSize, fontFamily.
265
+ *
266
+ * @param registry - The registry to populate
267
+ *
268
+ * @example
269
+ * ```ts
270
+ * const registry = createMarkRendererRegistry();
271
+ * registerBuiltinRenderers(registry);
272
+ * ```
273
+ */
274
+ export declare function registerBuiltinRenderers(registry: MarkRendererRegistry): void;
275
+ //# sourceMappingURL=mark-renderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mark-renderer.d.ts","sourceRoot":"","sources":["../src/mark-renderer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;;;;;;;;GASG;AACH,MAAM,WAAW,YAAY;IAC3B;;;;;OAKG;IACH,KAAK,CAAC,EAAE,EAAE,eAAe,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;IAEjD;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB;;;;;;;;;;;;;OAaG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,WAAW,YAAY;IAC3B;;;;;;;;;OASG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG,WAAW,CAAC;IAErF;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,CAAC,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG,OAAO,CAAC;CAC7F;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;;;OAKG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAC;IAEzD;;;;;OAKG;IACH,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAAC;IAEhD;;;;;OAKG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IAEpC;;;;;;;;OAQG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IAEvC;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC;IAEhF;;;;;;;;OAQG;IACH,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAC;IAEjE;;;;;OAKG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAAC;CACzD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,0BAA0B,IAAI,oBAAoB,CA6CjE;AAMD;;;GAGG;AACH,eAAO,MAAM,YAAY,EAAE,YAI1B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,YAI5B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,YAI/B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,qBAAqB,EAAE,YAInC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,YAAY,EAAE,YAI1B,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,YAAY,EAAE,YAc1B,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,aAAa,EAAE,YAM3B,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,gBAAgB,EAAE,YAM9B,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,kBAAkB,EAAE,YAMhC,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,oBAAoB,GAAG,IAAI,CAU7E"}