@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.
- package/LICENSE +21 -0
- package/README.md +67 -0
- package/dist/block-drag-handler.d.ts +189 -0
- package/dist/block-drag-handler.d.ts.map +1 -0
- package/dist/block-drag-handler.js +745 -0
- package/dist/block-drag-handler.js.map +1 -0
- package/dist/block-renderer.d.ts +402 -0
- package/dist/block-renderer.d.ts.map +1 -0
- package/dist/block-renderer.js +424 -0
- package/dist/block-renderer.js.map +1 -0
- package/dist/clipboard.d.ts +178 -0
- package/dist/clipboard.d.ts.map +1 -0
- package/dist/clipboard.js +432 -0
- package/dist/clipboard.js.map +1 -0
- package/dist/command-bus.d.ts +113 -0
- package/dist/command-bus.d.ts.map +1 -0
- package/dist/command-bus.js +70 -0
- package/dist/command-bus.js.map +1 -0
- package/dist/composition.d.ts +220 -0
- package/dist/composition.d.ts.map +1 -0
- package/dist/composition.js +271 -0
- package/dist/composition.js.map +1 -0
- package/dist/content-extraction.d.ts +69 -0
- package/dist/content-extraction.d.ts.map +1 -0
- package/dist/content-extraction.js +228 -0
- package/dist/content-extraction.js.map +1 -0
- package/dist/content-handler-file.d.ts +40 -0
- package/dist/content-handler-file.d.ts.map +1 -0
- package/dist/content-handler-file.js +91 -0
- package/dist/content-handler-file.js.map +1 -0
- package/dist/content-handler-image.d.ts +82 -0
- package/dist/content-handler-image.d.ts.map +1 -0
- package/dist/content-handler-image.js +120 -0
- package/dist/content-handler-image.js.map +1 -0
- package/dist/content-handler-url.d.ts +129 -0
- package/dist/content-handler-url.d.ts.map +1 -0
- package/dist/content-handler-url.js +244 -0
- package/dist/content-handler-url.js.map +1 -0
- package/dist/content-handlers.d.ts +67 -0
- package/dist/content-handlers.d.ts.map +1 -0
- package/dist/content-handlers.js +263 -0
- package/dist/content-handlers.js.map +1 -0
- package/dist/content-pipeline.d.ts +383 -0
- package/dist/content-pipeline.d.ts.map +1 -0
- package/dist/content-pipeline.js +232 -0
- package/dist/content-pipeline.js.map +1 -0
- package/dist/cursor-nav.d.ts +149 -0
- package/dist/cursor-nav.d.ts.map +1 -0
- package/dist/cursor-nav.js +230 -0
- package/dist/cursor-nav.js.map +1 -0
- package/dist/cursor-rect.d.ts +65 -0
- package/dist/cursor-rect.d.ts.map +1 -0
- package/dist/cursor-rect.js +98 -0
- package/dist/cursor-rect.js.map +1 -0
- package/dist/drop-indicator.d.ts +108 -0
- package/dist/drop-indicator.d.ts.map +1 -0
- package/dist/drop-indicator.js +236 -0
- package/dist/drop-indicator.js.map +1 -0
- package/dist/editor.d.ts +41 -0
- package/dist/editor.d.ts.map +1 -0
- package/dist/editor.js +710 -0
- package/dist/editor.js.map +1 -0
- package/dist/floating-toolbar.d.ts +93 -0
- package/dist/floating-toolbar.d.ts.map +1 -0
- package/dist/floating-toolbar.js +159 -0
- package/dist/floating-toolbar.js.map +1 -0
- package/dist/index.d.ts +62 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +119 -0
- package/dist/index.js.map +1 -0
- package/dist/input-bridge.d.ts +273 -0
- package/dist/input-bridge.d.ts.map +1 -0
- package/dist/input-bridge.js +884 -0
- package/dist/input-bridge.js.map +1 -0
- package/dist/link-popover.d.ts +38 -0
- package/dist/link-popover.d.ts.map +1 -0
- package/dist/link-popover.js +278 -0
- package/dist/link-popover.js.map +1 -0
- package/dist/mark-renderer.d.ts +275 -0
- package/dist/mark-renderer.d.ts.map +1 -0
- package/dist/mark-renderer.js +210 -0
- package/dist/mark-renderer.js.map +1 -0
- package/dist/perf.d.ts +145 -0
- package/dist/perf.d.ts.map +1 -0
- package/dist/perf.js +260 -0
- package/dist/perf.js.map +1 -0
- package/dist/plugin-kit.d.ts +265 -0
- package/dist/plugin-kit.d.ts.map +1 -0
- package/dist/plugin-kit.js +234 -0
- package/dist/plugin-kit.js.map +1 -0
- package/dist/plugins/alignment-plugin.d.ts +68 -0
- package/dist/plugins/alignment-plugin.d.ts.map +1 -0
- package/dist/plugins/alignment-plugin.js +98 -0
- package/dist/plugins/alignment-plugin.js.map +1 -0
- package/dist/plugins/block-utils.d.ts +113 -0
- package/dist/plugins/block-utils.d.ts.map +1 -0
- package/dist/plugins/block-utils.js +191 -0
- package/dist/plugins/block-utils.js.map +1 -0
- package/dist/plugins/blockquote-plugin.d.ts +39 -0
- package/dist/plugins/blockquote-plugin.d.ts.map +1 -0
- package/dist/plugins/blockquote-plugin.js +88 -0
- package/dist/plugins/blockquote-plugin.js.map +1 -0
- package/dist/plugins/bold-plugin.d.ts +37 -0
- package/dist/plugins/bold-plugin.d.ts.map +1 -0
- package/dist/plugins/bold-plugin.js +48 -0
- package/dist/plugins/bold-plugin.js.map +1 -0
- package/dist/plugins/callout-plugin.d.ts +100 -0
- package/dist/plugins/callout-plugin.d.ts.map +1 -0
- package/dist/plugins/callout-plugin.js +200 -0
- package/dist/plugins/callout-plugin.js.map +1 -0
- package/dist/plugins/code-block-plugin.d.ts +62 -0
- package/dist/plugins/code-block-plugin.d.ts.map +1 -0
- package/dist/plugins/code-block-plugin.js +176 -0
- package/dist/plugins/code-block-plugin.js.map +1 -0
- package/dist/plugins/code-plugin.d.ts +37 -0
- package/dist/plugins/code-plugin.d.ts.map +1 -0
- package/dist/plugins/code-plugin.js +48 -0
- package/dist/plugins/code-plugin.js.map +1 -0
- package/dist/plugins/embed-plugin.d.ts +90 -0
- package/dist/plugins/embed-plugin.d.ts.map +1 -0
- package/dist/plugins/embed-plugin.js +147 -0
- package/dist/plugins/embed-plugin.js.map +1 -0
- package/dist/plugins/font-family-plugin.d.ts +58 -0
- package/dist/plugins/font-family-plugin.d.ts.map +1 -0
- package/dist/plugins/font-family-plugin.js +57 -0
- package/dist/plugins/font-family-plugin.js.map +1 -0
- package/dist/plugins/font-size-plugin.d.ts +57 -0
- package/dist/plugins/font-size-plugin.d.ts.map +1 -0
- package/dist/plugins/font-size-plugin.js +56 -0
- package/dist/plugins/font-size-plugin.js.map +1 -0
- package/dist/plugins/heading-plugin.d.ts +52 -0
- package/dist/plugins/heading-plugin.d.ts.map +1 -0
- package/dist/plugins/heading-plugin.js +114 -0
- package/dist/plugins/heading-plugin.js.map +1 -0
- package/dist/plugins/hr-plugin.d.ts +33 -0
- package/dist/plugins/hr-plugin.d.ts.map +1 -0
- package/dist/plugins/hr-plugin.js +75 -0
- package/dist/plugins/hr-plugin.js.map +1 -0
- package/dist/plugins/image-plugin.d.ts +115 -0
- package/dist/plugins/image-plugin.d.ts.map +1 -0
- package/dist/plugins/image-plugin.js +199 -0
- package/dist/plugins/image-plugin.js.map +1 -0
- package/dist/plugins/indent-plugin.d.ts +62 -0
- package/dist/plugins/indent-plugin.d.ts.map +1 -0
- package/dist/plugins/indent-plugin.js +128 -0
- package/dist/plugins/indent-plugin.js.map +1 -0
- package/dist/plugins/index.d.ts +45 -0
- package/dist/plugins/index.d.ts.map +1 -0
- package/dist/plugins/index.js +42 -0
- package/dist/plugins/index.js.map +1 -0
- package/dist/plugins/italic-plugin.d.ts +37 -0
- package/dist/plugins/italic-plugin.d.ts.map +1 -0
- package/dist/plugins/italic-plugin.js +48 -0
- package/dist/plugins/italic-plugin.js.map +1 -0
- package/dist/plugins/link-plugin.d.ts +129 -0
- package/dist/plugins/link-plugin.d.ts.map +1 -0
- package/dist/plugins/link-plugin.js +212 -0
- package/dist/plugins/link-plugin.js.map +1 -0
- package/dist/plugins/list-plugin.d.ts +53 -0
- package/dist/plugins/list-plugin.d.ts.map +1 -0
- package/dist/plugins/list-plugin.js +309 -0
- package/dist/plugins/list-plugin.js.map +1 -0
- package/dist/plugins/mark-utils.d.ts +173 -0
- package/dist/plugins/mark-utils.d.ts.map +1 -0
- package/dist/plugins/mark-utils.js +425 -0
- package/dist/plugins/mark-utils.js.map +1 -0
- package/dist/plugins/mention-plugin.d.ts +191 -0
- package/dist/plugins/mention-plugin.d.ts.map +1 -0
- package/dist/plugins/mention-plugin.js +295 -0
- package/dist/plugins/mention-plugin.js.map +1 -0
- package/dist/plugins/strikethrough-plugin.d.ts +37 -0
- package/dist/plugins/strikethrough-plugin.d.ts.map +1 -0
- package/dist/plugins/strikethrough-plugin.js +48 -0
- package/dist/plugins/strikethrough-plugin.js.map +1 -0
- package/dist/plugins/text-color-plugin.d.ts +57 -0
- package/dist/plugins/text-color-plugin.d.ts.map +1 -0
- package/dist/plugins/text-color-plugin.js +56 -0
- package/dist/plugins/text-color-plugin.js.map +1 -0
- package/dist/plugins/underline-plugin.d.ts +37 -0
- package/dist/plugins/underline-plugin.d.ts.map +1 -0
- package/dist/plugins/underline-plugin.js +48 -0
- package/dist/plugins/underline-plugin.js.map +1 -0
- package/dist/presets.d.ts +95 -0
- package/dist/presets.d.ts.map +1 -0
- package/dist/presets.js +159 -0
- package/dist/presets.js.map +1 -0
- package/dist/renderer.d.ts +125 -0
- package/dist/renderer.d.ts.map +1 -0
- package/dist/renderer.js +415 -0
- package/dist/renderer.js.map +1 -0
- package/dist/scroll-to-cursor.d.ts +25 -0
- package/dist/scroll-to-cursor.d.ts.map +1 -0
- package/dist/scroll-to-cursor.js +59 -0
- package/dist/scroll-to-cursor.js.map +1 -0
- package/dist/selection-sync.d.ts +159 -0
- package/dist/selection-sync.d.ts.map +1 -0
- package/dist/selection-sync.js +527 -0
- package/dist/selection-sync.js.map +1 -0
- package/dist/shortcut-handler.d.ts +98 -0
- package/dist/shortcut-handler.d.ts.map +1 -0
- package/dist/shortcut-handler.js +155 -0
- package/dist/shortcut-handler.js.map +1 -0
- package/dist/toolbar.d.ts +103 -0
- package/dist/toolbar.d.ts.map +1 -0
- package/dist/toolbar.js +134 -0
- package/dist/toolbar.js.map +1 -0
- package/dist/trigger-manager.d.ts +205 -0
- package/dist/trigger-manager.d.ts.map +1 -0
- package/dist/trigger-manager.js +466 -0
- package/dist/trigger-manager.js.map +1 -0
- package/dist/types.d.ts +216 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- 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":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,8EAA8E;AAC9E,cAAc;AACd,8EAA8E;AAE9E;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,iBAAiB,CAC/B,MAAiB,EACjB,IAAiB;IAEjB,IAAI,SAAS,GAAuB,IAAI,CAAC;IACzC,IAAI,WAAW,GAAsB,QAAQ,CAAC;IAC9C,IAAI,SAAS,GAAG,KAAK,CAAC;IAEtB,sEAAsE;IACtE,uBAAuB;IACvB,sEAAsE;IAEtE,SAAS,oBAAoB;QAC3B,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAChD,SAAS,CAAC,SAAS,GAAG,mBAAmB,CAAC;QAC1C,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QACzC,SAAS,CAAC,YAAY,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;QACpD,SAAS,CAAC,KAAK,CAAC,OAAO,GAAG;;;;;;;;;;;;;KAazB,CAAC;QAEF,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAC9C,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC;QACnB,KAAK,CAAC,SAAS,GAAG,yBAAyB,CAAC;QAC5C,KAAK,CAAC,WAAW,GAAG,cAAc,CAAC;QACnC,KAAK,CAAC,YAAY,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QACxC,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG;;;;;;;;KAQrB,CAAC;QAEF,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAClD,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC;QACzB,QAAQ,CAAC,SAAS,GAAG,yBAAyB,CAAC;QAC/C,QAAQ,CAAC,WAAW,GAAG,OAAO,CAAC;QAC/B,QAAQ,CAAC,KAAK,CAAC,OAAO,GAAG;;;;;;;;KAQxB,CAAC;QAEF,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QACnD,SAAS,CAAC,IAAI,GAAG,QAAQ,CAAC;QAC1B,SAAS,CAAC,SAAS,GAAG,0BAA0B,CAAC;QACjD,SAAS,CAAC,WAAW,GAAG,QAAQ,CAAC;QACjC,SAAS,CAAC,KAAK,CAAC,OAAO,GAAG;;;;;;;;;KASzB,CAAC;QAEF,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC7B,SAAS,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAChC,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAEjC,iBAAiB;QACjB,KAAK,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,CAAgB,EAAE,EAAE;YACrD,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,EAAE,CAAC;gBACtB,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,CAAC,CAAC,eAAe,EAAE,CAAC;gBACpB,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACzB,CAAC;iBAAM,IAAI,CAAC,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;gBAC9B,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,CAAC,CAAC,eAAe,EAAE,CAAC;gBACpB,WAAW,EAAE,CAAC;YAChB,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;YACtC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;YACvC,UAAU,EAAE,CAAC;QACf,CAAC,CAAC,CAAC;QAEH,kEAAkE;QAClE,SAAS,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC,CAAa,EAAE,EAAE;YACxD,CAAC,CAAC,cAAc,EAAE,CAAC;QACrB,CAAC,CAAC,CAAC;QAEH,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,sEAAsE;IACtE,cAAc;IACd,sEAAsE;IAEtE,SAAS,WAAW,CAAC,IAAuB,EAAE,WAAoB;QAChE,WAAW,EAAE,CAAC,CAAC,6BAA6B;QAE5C,WAAW,GAAG,IAAI,CAAC;QACnB,SAAS,GAAG,oBAAoB,EAAE,CAAC;QAEnC,MAAM,KAAK,GAAG,SAAS,CAAC,aAAa,CAAmB,0BAA0B,CAAC,CAAC;QACpF,MAAM,SAAS,GAAG,SAAS,CAAC,aAAa,CAAoB,2BAA2B,CAAC,CAAC;QAE1F,IAAI,KAAK,IAAI,WAAW,EAAE,CAAC;YACzB,KAAK,CAAC,KAAK,GAAG,WAAW,CAAC;QAC5B,CAAC;QAED,IAAI,SAAS,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;YACjC,SAAS,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;QAC/B,CAAC;QAED,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAErC,uBAAuB;QACvB,eAAe,EAAE,CAAC;QAElB,oCAAoC;QACpC,IAAI,KAAK,EAAE,CAAC;YACV,KAAK,CAAC,KAAK,EAAE,CAAC;YACd,IAAI,WAAW,EAAE,CAAC;gBAChB,KAAK,CAAC,MAAM,EAAE,CAAC;YACjB,CAAC;QACH,CAAC;QAED,qEAAqE;QACrE,iEAAiE;QACjE,SAAS,GAAG,IAAI,CAAC;QACjB,qBAAqB,CAAC,GAAG,EAAE,GAAG,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD,CAAC;IAED,SAAS,WAAW;QAClB,IAAI,SAAS,EAAE,CAAC;YACd,SAAS,CAAC,MAAM,EAAE,CAAC;YACnB,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC;QACD,yBAAyB;QACzB,MAAM,CAAC,KAAK,EAAE,CAAC;IACjB,CAAC;IAED,SAAS,eAAe;QACtB,IAAI,CAAC,SAAS;YAAE,OAAO;QAEvB,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;QAC/C,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,2CAA2C;YAC3C,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;YACrD,IAAI,UAAU,EAAE,CAAC;gBACf,SAAS,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,UAAU,CAAC,IAAI,IAAI,CAAC;gBAC9C,SAAS,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,UAAU,CAAC,GAAG,IAAI,CAAC;YAC9C,CAAC;YACD,OAAO;QACT,CAAC;QAED,4BAA4B;QAC5B,MAAM,YAAY,GAAG,GAAG,CAAC,CAAC,cAAc;QACxC,MAAM,aAAa,GAAG,EAAE,CAAC,CAAC,cAAc;QACxC,MAAM,MAAM,GAAG,CAAC,CAAC;QAEjB,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACrB,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAE/B,6BAA6B;QAC7B,IAAI,IAAI,GAAG,YAAY,GAAG,MAAM,CAAC,UAAU,GAAG,MAAM,EAAE,CAAC;YACrD,IAAI,GAAG,MAAM,CAAC,UAAU,GAAG,YAAY,GAAG,MAAM,CAAC;QACnD,CAAC;QACD,IAAI,IAAI,GAAG,MAAM,EAAE,CAAC;YAClB,IAAI,GAAG,MAAM,CAAC;QAChB,CAAC;QACD,IAAI,GAAG,GAAG,aAAa,GAAG,MAAM,CAAC,WAAW,GAAG,MAAM,EAAE,CAAC;YACtD,4BAA4B;YAC5B,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,aAAa,GAAG,MAAM,CAAC;QAC1C,CAAC;QAED,SAAS,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,IAAI,IAAI,CAAC;QACnC,SAAS,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC;IACnC,CAAC;IAED,sEAAsE;IACtE,UAAU;IACV,sEAAsE;IAEtE,SAAS,SAAS,CAAC,IAAY;QAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,WAAW,EAAE,CAAC;YACd,OAAO;QACT,CAAC;QAED,IAAI,WAAW,KAAK,MAAM,EAAE,CAAC;YAC3B,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QACpE,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QACpE,CAAC;QACD,WAAW,EAAE,CAAC;IAChB,CAAC;IAED,SAAS,UAAU;QACjB,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAC/C,WAAW,EAAE,CAAC;IAChB,CAAC;IAED,sEAAsE;IACtE,gCAAgC;IAChC,sEAAsE;IAEtE,MAAM,WAAW,GAAG,CAAC,CAAa,EAAQ,EAAE;QAC1C,MAAM,MAAM,GAAG,CAAC,CAAC,MAA4B,CAAC;QAC9C,IAAI,CAAC,MAAM;YAAE,OAAO;QAEpB,2DAA2D;QAC3D,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAuB,CAAC;QACxE,IAAI,CAAC,MAAM;YAAE,OAAO;QAEpB,MAAM,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;QACnD,IAAI,IAAI,EAAE,CAAC;YACT,+CAA+C;YAC/C,qBAAqB,CAAC,GAAG,EAAE;gBACzB,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC5B,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC;IAEF,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAE5C,sEAAsE;IACtE,uCAAuC;IACvC,sEAAsE;IAEtE,mGAAmG;IACnG,6DAA6D;IAE7D,kCAAkC;IAClC,MAAM,eAAe,GAAG,CAAC,CAAa,EAAQ,EAAE;QAC9C,IAAI,CAAC,SAAS;YAAE,OAAO;QACvB,IAAI,SAAS;YAAE,OAAO,CAAC,4CAA4C;QACnE,IAAI,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAc,CAAC;YAAE,OAAO;QACjD,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAc,CAAC;YAAE,OAAO,CAAC,4CAA4C;QACzF,WAAW,EAAE,CAAC;IAChB,CAAC,CAAC;IAEF,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IAEpD,mCAAmC;IACnC,MAAM,iBAAiB,GAAG,CAAC,CAAgB,EAAQ,EAAE;QACnD,IAAI,CAAC,SAAS;YAAE,OAAO;QACvB,IAAI,CAAC,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;YACvB,WAAW,EAAE,CAAC;QAChB,CAAC;IACH,CAAC,CAAC;IAEF,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;IAExD,OAAO;QACL,8CAA8C;QAC9C,IAAI,EAAE,WAAW;QAEjB,OAAO;YACL,WAAW,EAAE,CAAC;YACd,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;YAC/C,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;YACvD,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;QAC7D,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -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"}
|