@echozedlabs/react 0.1.0 → 0.2.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/dist/HostServiceToolbar.d.ts +8 -0
- package/dist/HostServiceToolbar.d.ts.map +1 -0
- package/dist/HostServiceToolbar.js +83 -0
- package/dist/HostServiceToolbar.js.map +1 -0
- package/dist/MarkdownEditor.d.ts.map +1 -1
- package/dist/MarkdownEditor.js +59 -147
- package/dist/MarkdownEditor.js.map +1 -1
- package/dist/PreviewSurface.d.ts +8 -0
- package/dist/PreviewSurface.d.ts.map +1 -0
- package/dist/PreviewSurface.js +67 -0
- package/dist/PreviewSurface.js.map +1 -0
- package/dist/icons.d.ts +8 -0
- package/dist/icons.d.ts.map +1 -0
- package/dist/icons.js +8 -0
- package/dist/icons.js.map +1 -0
- package/dist/sanitizeHtml.d.ts +19 -3
- package/dist/sanitizeHtml.d.ts.map +1 -1
- package/dist/sanitizeHtml.js +19 -9
- package/dist/sanitizeHtml.js.map +1 -1
- package/package.json +5 -5
- package/src/styles.css +1700 -1395
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { HostServices, MarkdownEditorProps } from '@echozedlabs/core';
|
|
2
|
+
/** Optional toolbar controls backed by host services (link search + asset upload). */
|
|
3
|
+
export declare function HostServiceToolbar({ services, onInsertMarkdown, onDiagnostics, }: {
|
|
4
|
+
services?: HostServices;
|
|
5
|
+
onInsertMarkdown(markdown: string): void;
|
|
6
|
+
onDiagnostics(diagnostics: Parameters<NonNullable<MarkdownEditorProps['onDiagnostics']>>[0]): void;
|
|
7
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
//# sourceMappingURL=HostServiceToolbar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HostServiceToolbar.d.ts","sourceRoot":"","sources":["../src/HostServiceToolbar.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAkB,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAE3F,sFAAsF;AACtF,wBAAgB,kBAAkB,CAAC,EACjC,QAAQ,EACR,gBAAgB,EAChB,aAAa,GACd,EAAE;IACD,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,aAAa,CAAC,WAAW,EAAE,UAAU,CAAC,WAAW,CAAC,mBAAmB,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;CACpG,2CA2IA"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import React from 'react';
|
|
3
|
+
/** Optional toolbar controls backed by host services (link search + asset upload). */
|
|
4
|
+
export function HostServiceToolbar({ services, onInsertMarkdown, onDiagnostics, }) {
|
|
5
|
+
const [query, setQuery] = React.useState('');
|
|
6
|
+
const [suggestions, setSuggestions] = React.useState([]);
|
|
7
|
+
const [searching, setSearching] = React.useState(false);
|
|
8
|
+
const [uploading, setUploading] = React.useState(false);
|
|
9
|
+
const fileInputId = React.useId();
|
|
10
|
+
React.useEffect(() => {
|
|
11
|
+
if (!services?.searchLinks || query.trim().length === 0) {
|
|
12
|
+
setSuggestions([]);
|
|
13
|
+
setSearching(false);
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
const controller = new AbortController();
|
|
17
|
+
setSearching(true);
|
|
18
|
+
services.searchLinks(query.trim(), controller.signal)
|
|
19
|
+
.then((nextSuggestions) => {
|
|
20
|
+
if (!controller.signal.aborted) {
|
|
21
|
+
setSuggestions(nextSuggestions);
|
|
22
|
+
}
|
|
23
|
+
})
|
|
24
|
+
.catch((error) => {
|
|
25
|
+
if (controller.signal.aborted) {
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
29
|
+
onDiagnostics([{
|
|
30
|
+
code: 'host.searchLinks.failed',
|
|
31
|
+
message,
|
|
32
|
+
severity: 'error',
|
|
33
|
+
source: 'host-service',
|
|
34
|
+
}]);
|
|
35
|
+
setSuggestions([]);
|
|
36
|
+
})
|
|
37
|
+
.finally(() => {
|
|
38
|
+
if (!controller.signal.aborted) {
|
|
39
|
+
setSearching(false);
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
return () => controller.abort();
|
|
43
|
+
}, [onDiagnostics, query, services]);
|
|
44
|
+
async function uploadFile(file) {
|
|
45
|
+
if (!services?.uploadAsset) {
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
const controller = new AbortController();
|
|
49
|
+
setUploading(true);
|
|
50
|
+
try {
|
|
51
|
+
const asset = await services.uploadAsset(file, controller.signal);
|
|
52
|
+
const alt = (asset.alt ?? file.name.replace(/\.[^.]+$/, '')) || 'Uploaded image';
|
|
53
|
+
onInsertMarkdown(`\n\n\n`);
|
|
54
|
+
}
|
|
55
|
+
catch (error) {
|
|
56
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
57
|
+
onDiagnostics([{
|
|
58
|
+
code: 'host.uploadAsset.failed',
|
|
59
|
+
message,
|
|
60
|
+
severity: 'error',
|
|
61
|
+
source: 'host-service',
|
|
62
|
+
}]);
|
|
63
|
+
}
|
|
64
|
+
finally {
|
|
65
|
+
setUploading(false);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return (_jsxs("div", { className: "me-host-tools", "aria-label": "Host services", children: [services?.searchLinks ? (_jsxs("div", { className: "me-link-search", children: [_jsx("label", { className: "me-visually-hidden", htmlFor: `${fileInputId}-link-search`, children: "Search pages" }), _jsx("input", { id: `${fileInputId}-link-search`, type: "search", value: query, placeholder: "Search pages", "aria-label": "Search pages", "aria-controls": `${fileInputId}-link-suggestions`, "aria-expanded": suggestions.length > 0, onChange: (event) => setQuery(event.target.value) }), query.trim().length > 0 ? (_jsxs("div", { id: `${fileInputId}-link-suggestions`, className: "me-link-suggestions", role: "listbox", "aria-label": "Page suggestions", children: [searching ? _jsx("div", { className: "me-link-suggestion-status", children: "Searching..." }) : null, !searching && suggestions.length === 0 ? (_jsx("div", { className: "me-link-suggestion-status", children: "No matches" })) : null, suggestions.map((suggestion) => (_jsxs("button", { type: "button", role: "option", className: "me-link-suggestion", onClick: () => {
|
|
69
|
+
onInsertMarkdown(suggestion.insertText);
|
|
70
|
+
setQuery('');
|
|
71
|
+
setSuggestions([]);
|
|
72
|
+
}, children: [_jsx("span", { children: suggestion.label }), suggestion.description ? _jsx("small", { children: suggestion.description }) : null] }, suggestion.id)))] })) : null] })) : null, services?.uploadAsset ? (_jsxs("div", { className: "me-upload-control", children: [_jsx("input", { id: `${fileInputId}-asset-upload`, type: "file", accept: "image/*", "aria-label": "Upload image", onChange: (event) => {
|
|
73
|
+
const file = event.currentTarget.files?.[0];
|
|
74
|
+
event.currentTarget.value = '';
|
|
75
|
+
if (file) {
|
|
76
|
+
void uploadFile(file);
|
|
77
|
+
}
|
|
78
|
+
} }), _jsx("label", { className: "me-upload-button", htmlFor: `${fileInputId}-asset-upload`, children: uploading ? 'Uploading...' : 'Upload image' })] })) : null] }));
|
|
79
|
+
}
|
|
80
|
+
function escapeMarkdownLabel(value) {
|
|
81
|
+
return value.replace(/\\/g, '\\\\').replace(/]/g, '\\]');
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=HostServiceToolbar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HostServiceToolbar.js","sourceRoot":"","sources":["../src/HostServiceToolbar.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MarkdownEditor.d.ts","sourceRoot":"","sources":["../src/MarkdownEditor.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAEV,UAAU,
|
|
1
|
+
{"version":3,"file":"MarkdownEditor.d.ts","sourceRoot":"","sources":["../src/MarkdownEditor.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAEV,UAAU,EACV,oBAAoB,EACpB,mBAAmB,EAGpB,MAAM,mBAAmB,CAAC;AAM3B,OAAO,EAGL,KAAK,gBAAgB,EACtB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAaxE,MAAM,WAAW,4BACf,SAAQ,IAAI,CAAC,mBAAmB,EAAE,YAAY,GAAG,kBAAkB,GAAG,WAAW,CAAC;IAClF,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,wGAAwG;IACxG,SAAS,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;IACzD,uGAAuG;IACvG,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,cAAc,2GA6ZzB,CAAC"}
|
package/dist/MarkdownEditor.js
CHANGED
|
@@ -3,6 +3,9 @@ import React from 'react';
|
|
|
3
3
|
import { createMarkdownEditorView, } from '@echozedlabs/codemirror';
|
|
4
4
|
import { createDefaultRendererRegistry, renderMarkdownToHtml, } from '@echozedlabs/renderers';
|
|
5
5
|
import { sanitizePreviewHtml } from './sanitizeHtml.js';
|
|
6
|
+
import { PreviewSurface } from './PreviewSurface.js';
|
|
7
|
+
import { HostServiceToolbar } from './HostServiceToolbar.js';
|
|
8
|
+
import { IconSvg, LIST_ICON_PATH, SLIDERS_ICON_PATH } from './icons.js';
|
|
6
9
|
const CODEMIRROR_MODES = new Set(['markdown', 'hybrid']);
|
|
7
10
|
const DEFAULT_MODES = ['hybrid', 'markdown', 'preview'];
|
|
8
11
|
const LazyWysiwygLexicalEditor = React.lazy(async () => {
|
|
@@ -14,10 +17,21 @@ export const MarkdownEditor = React.forwardRef(function MarkdownEditor({ value,
|
|
|
14
17
|
const firstMode = initialMode ?? defaultMode ?? preferredInitialMode(allowedModes);
|
|
15
18
|
const [internalMarkdown, setInternalMarkdown] = React.useState(defaultValue);
|
|
16
19
|
const [internalMode, setInternalMode] = React.useState(allowedModes.includes(firstMode) ? firstMode : preferredInitialMode(allowedModes));
|
|
20
|
+
// If `modes` changes so the current internal mode is no longer permitted — e.g.
|
|
21
|
+
// a host reuses this editor instance for a different surface, or React
|
|
22
|
+
// reconciles one usage into another — fall back to a valid mode rather than
|
|
23
|
+
// rendering a mode outside `modes` (which would show no surface at all).
|
|
24
|
+
const fallbackMode = allowedModes.includes(firstMode) ? firstMode : preferredInitialMode(allowedModes);
|
|
25
|
+
const resolvedInternalMode = allowedModes.includes(internalMode) ? internalMode : fallbackMode;
|
|
26
|
+
React.useEffect(() => {
|
|
27
|
+
if (!allowedModes.includes(internalMode)) {
|
|
28
|
+
setInternalMode(fallbackMode);
|
|
29
|
+
}
|
|
30
|
+
}, [allowedModes, internalMode, fallbackMode]);
|
|
17
31
|
const normalizedFrontmatterDisplay = frontmatterDisplay ?? 'expanded';
|
|
18
32
|
const [showProperties, setShowProperties] = React.useState(normalizedFrontmatterDisplay !== 'hidden');
|
|
19
33
|
const markdown = value ?? internalMarkdown;
|
|
20
|
-
const activeMode = mode ??
|
|
34
|
+
const activeMode = mode ?? resolvedInternalMode;
|
|
21
35
|
const hasFrontmatter = /^---\r?\n/.test(markdown);
|
|
22
36
|
const hasHostServiceControls = !readOnly && hostServiceToolbar && activeMode !== 'preview' && (hostServices?.searchLinks !== undefined || hostServices?.uploadAsset !== undefined);
|
|
23
37
|
const showToolbar = allowedModes.length > 1 || (activeMode === 'hybrid' && hasFrontmatter) || hasHostServiceControls;
|
|
@@ -29,12 +43,14 @@ export const MarkdownEditor = React.forwardRef(function MarkdownEditor({ value,
|
|
|
29
43
|
const onSaveShortcutRef = React.useRef(onSaveShortcut);
|
|
30
44
|
const onCancelShortcutRef = React.useRef(onCancelShortcut);
|
|
31
45
|
const onDiagnosticsRef = React.useRef(onDiagnostics);
|
|
46
|
+
const hostServicesRef = React.useRef(hostServices);
|
|
32
47
|
markdownRef.current = markdown;
|
|
33
48
|
modeRef.current = activeMode;
|
|
34
49
|
onChangeRef.current = onChange;
|
|
35
50
|
onSaveShortcutRef.current = onSaveShortcut;
|
|
36
51
|
onCancelShortcutRef.current = onCancelShortcut;
|
|
37
52
|
onDiagnosticsRef.current = onDiagnostics;
|
|
53
|
+
hostServicesRef.current = hostServices;
|
|
38
54
|
const isCodeMirrorMode = CODEMIRROR_MODES.has(activeMode);
|
|
39
55
|
const hybridRenderMarkdown = React.useCallback(async (blockMarkdown, context) => {
|
|
40
56
|
const activeRegistry = renderers ?? createDefaultRendererRegistry();
|
|
@@ -43,7 +59,10 @@ export const MarkdownEditor = React.forwardRef(function MarkdownEditor({ value,
|
|
|
43
59
|
signal: context.signal,
|
|
44
60
|
});
|
|
45
61
|
onDiagnosticsRef.current?.(result.diagnostics);
|
|
46
|
-
|
|
62
|
+
// Sanitize before the hybrid widget injects it, exactly as the preview
|
|
63
|
+
// surface does — otherwise hybrid would be an unsanitized XSS path while
|
|
64
|
+
// preview is protected.
|
|
65
|
+
return { html: sanitizePreviewHtml(result.html) };
|
|
47
66
|
}, [renderers]);
|
|
48
67
|
const wysiwygRenderServices = React.useMemo(() => ({
|
|
49
68
|
renderPlantUml: async (source, context) => {
|
|
@@ -59,8 +78,12 @@ export const MarkdownEditor = React.forwardRef(function MarkdownEditor({ value,
|
|
|
59
78
|
return { html: result.html, diagnostics: result.diagnostics };
|
|
60
79
|
},
|
|
61
80
|
}), [hostServices, renderers]);
|
|
81
|
+
// Single diagnostics dispatch: both public channels (the onDiagnostics prop and
|
|
82
|
+
// the optional hostServices.reportDiagnostics) receive every diagnostic, so a
|
|
83
|
+
// host can use either without ambiguity.
|
|
62
84
|
const emitDiagnostics = React.useCallback((diagnostics) => {
|
|
63
85
|
onDiagnosticsRef.current?.(diagnostics);
|
|
86
|
+
hostServicesRef.current?.reportDiagnostics?.(diagnostics);
|
|
64
87
|
}, []);
|
|
65
88
|
React.useEffect(() => {
|
|
66
89
|
if (!isCodeMirrorMode || !hostRef.current) {
|
|
@@ -103,7 +126,12 @@ export const MarkdownEditor = React.forwardRef(function MarkdownEditor({ value,
|
|
|
103
126
|
cmRef.current = null;
|
|
104
127
|
}
|
|
105
128
|
};
|
|
106
|
-
|
|
129
|
+
// Recreate ONLY for true surface changes (entering/leaving CodeMirror, a new
|
|
130
|
+
// aria-label, a new property schema, or a new hybrid renderer). markdown<->hybrid,
|
|
131
|
+
// read-only, and show/hide-properties are reconfigured in place below so they
|
|
132
|
+
// keep selection, scroll, and undo history. `readOnly`/`activeMode`/properties
|
|
133
|
+
// values are read at creation and corrected by the in-place effects.
|
|
134
|
+
}, [ariaLabel, hybridRenderMarkdown, isCodeMirrorMode, propertySchema]);
|
|
107
135
|
React.useEffect(() => {
|
|
108
136
|
setShowProperties(normalizedFrontmatterDisplay !== 'hidden');
|
|
109
137
|
}, [normalizedFrontmatterDisplay]);
|
|
@@ -116,6 +144,21 @@ export const MarkdownEditor = React.forwardRef(function MarkdownEditor({ value,
|
|
|
116
144
|
handle.setMarkdown(markdown);
|
|
117
145
|
}
|
|
118
146
|
}, [markdown]);
|
|
147
|
+
// Reconfigure mode + frontmatter display in place (keeps selection, scroll, and
|
|
148
|
+
// undo history) instead of recreating the view on markdown<->hybrid or
|
|
149
|
+
// show/hide-properties changes.
|
|
150
|
+
React.useEffect(() => {
|
|
151
|
+
const handle = cmRef.current;
|
|
152
|
+
if (!handle || !isCodeMirrorMode) {
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
155
|
+
const hybridFrontmatterMode = showProperties
|
|
156
|
+
? normalizedFrontmatterDisplay === 'collapsed'
|
|
157
|
+
? 'collapsed'
|
|
158
|
+
: 'table'
|
|
159
|
+
: 'hidden';
|
|
160
|
+
handle.setMode(activeMode, hybridFrontmatterMode);
|
|
161
|
+
}, [activeMode, showProperties, normalizedFrontmatterDisplay, isCodeMirrorMode]);
|
|
119
162
|
React.useEffect(() => {
|
|
120
163
|
cmRef.current?.setReadOnly(readOnly || activeMode === 'preview');
|
|
121
164
|
}, [activeMode, readOnly]);
|
|
@@ -172,21 +215,20 @@ export const MarkdownEditor = React.forwardRef(function MarkdownEditor({ value,
|
|
|
172
215
|
// Native CodeMirror history is intentionally preserved for now.
|
|
173
216
|
},
|
|
174
217
|
getSnapshot() {
|
|
218
|
+
const cmSelection = cmRef.current?.getSelection();
|
|
219
|
+
const textSelection = cmSelection ? cmSelectionToTextSelection(cmSelection) : null;
|
|
175
220
|
return {
|
|
176
221
|
markdown: markdownRef.current,
|
|
177
222
|
version: 1,
|
|
178
223
|
mode: modeRef.current,
|
|
179
|
-
selection:
|
|
224
|
+
selection: textSelection
|
|
225
|
+
? { ranges: [{ anchor: textSelection.from, head: textSelection.to }], mainIndex: 0 }
|
|
226
|
+
: undefined,
|
|
180
227
|
};
|
|
181
228
|
},
|
|
182
229
|
replaceMarkdown(nextMarkdown, meta) {
|
|
183
|
-
updateMarkdown(
|
|
184
|
-
|
|
185
|
-
source: 'programmatic',
|
|
186
|
-
timestamp: Date.now(),
|
|
187
|
-
mode: modeRef.current,
|
|
188
|
-
...meta,
|
|
189
|
-
});
|
|
230
|
+
// updateMarkdown emits exactly one onChange (React is the single source).
|
|
231
|
+
updateMarkdown(nextMarkdown, meta?.source ?? 'programmatic', meta);
|
|
190
232
|
},
|
|
191
233
|
}), [value]);
|
|
192
234
|
function selectMode(nextMode, source = 'user') {
|
|
@@ -204,9 +246,11 @@ export const MarkdownEditor = React.forwardRef(function MarkdownEditor({ value,
|
|
|
204
246
|
timestamp: Date.now(),
|
|
205
247
|
});
|
|
206
248
|
}
|
|
207
|
-
function updateMarkdown(nextMarkdown, source) {
|
|
249
|
+
function updateMarkdown(nextMarkdown, source, meta) {
|
|
208
250
|
markdownRef.current = nextMarkdown;
|
|
209
|
-
|
|
251
|
+
// React is the single emit source for imperative paths: set the document
|
|
252
|
+
// silently so CodeMirror does not also fire onChange (avoids a double-fire).
|
|
253
|
+
cmRef.current?.setMarkdown(nextMarkdown, { emitChange: false });
|
|
210
254
|
if (value === undefined) {
|
|
211
255
|
setInternalMarkdown(nextMarkdown);
|
|
212
256
|
}
|
|
@@ -214,6 +258,7 @@ export const MarkdownEditor = React.forwardRef(function MarkdownEditor({ value,
|
|
|
214
258
|
source,
|
|
215
259
|
mode: modeRef.current,
|
|
216
260
|
timestamp: Date.now(),
|
|
261
|
+
...meta,
|
|
217
262
|
});
|
|
218
263
|
}
|
|
219
264
|
function insertHostMarkdown(insertedMarkdown) {
|
|
@@ -233,7 +278,7 @@ export const MarkdownEditor = React.forwardRef(function MarkdownEditor({ value,
|
|
|
233
278
|
const icon = modeIcons?.[allowedMode];
|
|
234
279
|
return (_jsxs("button", { type: "button", className: "me-mode-button", "data-active": allowedMode === activeMode ? 'true' : 'false', "data-icon-only": icon ? 'true' : 'false', "aria-label": label, title: label, "aria-pressed": allowedMode === activeMode, onClick: () => selectMode(allowedMode), children: [icon ? _jsx("span", { className: "me-mode-button-icon", "aria-hidden": "true", children: icon }) : null, _jsx("span", { className: icon ? 'me-sr-only' : undefined, children: label })] }, allowedMode));
|
|
235
280
|
})
|
|
236
|
-
: null, activeMode === 'hybrid' && hasFrontmatter ? (_jsxs("button", { type: "button", className: "me-mode-button me-properties-toggle", "data-active": showProperties ? 'true' : 'false', "data-icon-only": "true", "aria-label": showProperties ? 'Hide properties' : 'Show properties', title: showProperties ? 'Hide properties' : 'Show properties', "aria-pressed": showProperties, onClick: () => setShowProperties((current) => !current), children: [_jsx("span", { className: "me-mode-button-icon", "aria-hidden": "true", children: showProperties ? _jsx(IconSvg, { path: SLIDERS_ICON_PATH, dataIcon: "sliders" }) : _jsx(IconSvg, { path: LIST_ICON_PATH, dataIcon: "list" }) }), _jsx("span", { className: "me-sr-only", children: showProperties ? 'Hide properties' : 'Show properties' })] })) : null, hasHostServiceControls ? (_jsx(HostServiceToolbar, { services: hostServices, onInsertMarkdown: insertHostMarkdown, onDiagnostics: emitDiagnostics })) : null] })) : null, isCodeMirrorMode ? (_jsx("div", { ref: hostRef, className: "me-editor-surface" })) : activeMode === 'preview' ? (_jsx(PreviewSurface, { markdown: markdown, registry: renderers, onDiagnostics:
|
|
281
|
+
: null, activeMode === 'hybrid' && hasFrontmatter ? (_jsxs("button", { type: "button", className: "me-mode-button me-properties-toggle", "data-active": showProperties ? 'true' : 'false', "data-icon-only": "true", "aria-label": showProperties ? 'Hide properties' : 'Show properties', title: showProperties ? 'Hide properties' : 'Show properties', "aria-pressed": showProperties, onClick: () => setShowProperties((current) => !current), children: [_jsx("span", { className: "me-mode-button-icon", "aria-hidden": "true", children: showProperties ? _jsx(IconSvg, { path: SLIDERS_ICON_PATH, dataIcon: "sliders" }) : _jsx(IconSvg, { path: LIST_ICON_PATH, dataIcon: "list" }) }), _jsx("span", { className: "me-sr-only", children: showProperties ? 'Hide properties' : 'Show properties' })] })) : null, hasHostServiceControls ? (_jsx(HostServiceToolbar, { services: hostServices, onInsertMarkdown: insertHostMarkdown, onDiagnostics: emitDiagnostics })) : null] })) : null, isCodeMirrorMode ? (_jsx("div", { ref: hostRef, className: "me-editor-surface" })) : activeMode === 'preview' ? (_jsx(PreviewSurface, { markdown: markdown, registry: renderers, onDiagnostics: emitDiagnostics })) : (_jsx(React.Suspense, { fallback: _jsx("div", { className: "me-wysiwyg-loading", role: "status", children: "Loading rich text editor..." }), children: _jsx(LazyWysiwygLexicalEditor, { markdown: markdown, readOnly: readOnly, ariaLabel: ariaLabel, renderServices: wysiwygRenderServices, toolbarIcons: wysiwygToolbarIcons, onDiagnostics: emitDiagnostics, onChange: (nextMarkdown, meta) => {
|
|
237
282
|
markdownRef.current = nextMarkdown;
|
|
238
283
|
if (value === undefined) {
|
|
239
284
|
setInternalMarkdown(nextMarkdown);
|
|
@@ -244,129 +289,6 @@ export const MarkdownEditor = React.forwardRef(function MarkdownEditor({ value,
|
|
|
244
289
|
});
|
|
245
290
|
} }) }))] }));
|
|
246
291
|
});
|
|
247
|
-
function IconSvg({ path, dataIcon }) {
|
|
248
|
-
return (_jsx("svg", { className: "me-inline-icon", "data-icon": dataIcon, viewBox: "0 0 576 512", focusable: "false", "aria-hidden": "true", children: _jsx("path", { fill: "currentColor", d: path }) }));
|
|
249
|
-
}
|
|
250
|
-
const LIST_ICON_PATH = 'M40 48C26.7 48 16 58.7 16 72v48c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V72c0-13.3-10.7-24-24-24H40zm144 16c-17.7 0-32 14.3-32 32s14.3 32 32 32h352c17.7 0 32-14.3 32-32s-14.3-32-32-32H184zM40 208c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24v-48c0-13.3-10.7-24-24-24H40zm144 16c-17.7 0-32 14.3-32 32s14.3 32 32 32h352c17.7 0 32-14.3 32-32s-14.3-32-32-32H184zM40 368c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24v-48c0-13.3-10.7-24-24-24H40zm144 16c-17.7 0-32 14.3-32 32s14.3 32 32 32h352c17.7 0 32-14.3 32-32s-14.3-32-32-32H184z';
|
|
251
|
-
const SLIDERS_ICON_PATH = 'M0 416c0 17.7 14.3 32 32 32h54.7c13.2 37.3 48.7 64 90.5 64s77.4-26.7 90.5-64H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H267.8c-13.2-37.3-48.7-64-90.5-64s-77.4 26.7-90.5 64H32c-17.7 0-32 14.3-32 32zm128 0a49.3 49.3 0 1 1 98.7 0 49.3 49.3 0 1 1-98.7 0zM0 256c0 17.7 14.3 32 32 32h246.7c13.2 37.3 48.7 64 90.5 64s77.4-26.7 90.5-64H544c17.7 0 32-14.3 32-32s-14.3-32-32-32h-84.3c-13.2-37.3-48.7-64-90.5-64s-77.4 26.7-90.5 64H32c-17.7 0-32 14.3-32 32zm320 0a49.3 49.3 0 1 1 98.7 0 49.3 49.3 0 1 1-98.7 0zM0 96c0 17.7 14.3 32 32 32h54.7c13.2 37.3 48.7 64 90.5 64s77.4-26.7 90.5-64H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H267.8C254.6 26.7 219.1 0 177.3 0S99.9 26.7 86.7 64H32C14.3 64 0 78.3 0 96zm128 0a49.3 49.3 0 1 1 98.7 0 49.3 49.3 0 1 1-98.7 0z';
|
|
252
|
-
function HostServiceToolbar({ services, onInsertMarkdown, onDiagnostics, }) {
|
|
253
|
-
const [query, setQuery] = React.useState('');
|
|
254
|
-
const [suggestions, setSuggestions] = React.useState([]);
|
|
255
|
-
const [searching, setSearching] = React.useState(false);
|
|
256
|
-
const [uploading, setUploading] = React.useState(false);
|
|
257
|
-
const fileInputId = React.useId();
|
|
258
|
-
React.useEffect(() => {
|
|
259
|
-
if (!services?.searchLinks || query.trim().length === 0) {
|
|
260
|
-
setSuggestions([]);
|
|
261
|
-
setSearching(false);
|
|
262
|
-
return;
|
|
263
|
-
}
|
|
264
|
-
const controller = new AbortController();
|
|
265
|
-
setSearching(true);
|
|
266
|
-
services.searchLinks(query.trim(), controller.signal)
|
|
267
|
-
.then((nextSuggestions) => {
|
|
268
|
-
if (!controller.signal.aborted) {
|
|
269
|
-
setSuggestions(nextSuggestions);
|
|
270
|
-
}
|
|
271
|
-
})
|
|
272
|
-
.catch((error) => {
|
|
273
|
-
if (controller.signal.aborted) {
|
|
274
|
-
return;
|
|
275
|
-
}
|
|
276
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
277
|
-
onDiagnostics([{
|
|
278
|
-
code: 'host.searchLinks.failed',
|
|
279
|
-
message,
|
|
280
|
-
severity: 'error',
|
|
281
|
-
source: 'host-service',
|
|
282
|
-
}]);
|
|
283
|
-
setSuggestions([]);
|
|
284
|
-
})
|
|
285
|
-
.finally(() => {
|
|
286
|
-
if (!controller.signal.aborted) {
|
|
287
|
-
setSearching(false);
|
|
288
|
-
}
|
|
289
|
-
});
|
|
290
|
-
return () => controller.abort();
|
|
291
|
-
}, [onDiagnostics, query, services]);
|
|
292
|
-
async function uploadFile(file) {
|
|
293
|
-
if (!services?.uploadAsset) {
|
|
294
|
-
return;
|
|
295
|
-
}
|
|
296
|
-
const controller = new AbortController();
|
|
297
|
-
setUploading(true);
|
|
298
|
-
try {
|
|
299
|
-
const asset = await services.uploadAsset(file, controller.signal);
|
|
300
|
-
const alt = (asset.alt ?? file.name.replace(/\.[^.]+$/, '')) || 'Uploaded image';
|
|
301
|
-
onInsertMarkdown(`\n\n\n`);
|
|
302
|
-
}
|
|
303
|
-
catch (error) {
|
|
304
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
305
|
-
onDiagnostics([{
|
|
306
|
-
code: 'host.uploadAsset.failed',
|
|
307
|
-
message,
|
|
308
|
-
severity: 'error',
|
|
309
|
-
source: 'host-service',
|
|
310
|
-
}]);
|
|
311
|
-
}
|
|
312
|
-
finally {
|
|
313
|
-
setUploading(false);
|
|
314
|
-
}
|
|
315
|
-
}
|
|
316
|
-
return (_jsxs("div", { className: "me-host-tools", "aria-label": "Host services", children: [services?.searchLinks ? (_jsxs("div", { className: "me-link-search", children: [_jsx("label", { className: "me-visually-hidden", htmlFor: `${fileInputId}-link-search`, children: "Search pages" }), _jsx("input", { id: `${fileInputId}-link-search`, type: "search", value: query, placeholder: "Search pages", "aria-label": "Search pages", "aria-controls": `${fileInputId}-link-suggestions`, "aria-expanded": suggestions.length > 0, onChange: (event) => setQuery(event.target.value) }), query.trim().length > 0 ? (_jsxs("div", { id: `${fileInputId}-link-suggestions`, className: "me-link-suggestions", role: "listbox", "aria-label": "Page suggestions", children: [searching ? _jsx("div", { className: "me-link-suggestion-status", children: "Searching..." }) : null, !searching && suggestions.length === 0 ? (_jsx("div", { className: "me-link-suggestion-status", children: "No matches" })) : null, suggestions.map((suggestion) => (_jsxs("button", { type: "button", role: "option", className: "me-link-suggestion", onClick: () => {
|
|
317
|
-
onInsertMarkdown(suggestion.insertText);
|
|
318
|
-
setQuery('');
|
|
319
|
-
setSuggestions([]);
|
|
320
|
-
}, children: [_jsx("span", { children: suggestion.label }), suggestion.description ? _jsx("small", { children: suggestion.description }) : null] }, suggestion.id)))] })) : null] })) : null, services?.uploadAsset ? (_jsxs("div", { className: "me-upload-control", children: [_jsx("input", { id: `${fileInputId}-asset-upload`, type: "file", accept: "image/*", "aria-label": "Upload image", onChange: (event) => {
|
|
321
|
-
const file = event.currentTarget.files?.[0];
|
|
322
|
-
event.currentTarget.value = '';
|
|
323
|
-
if (file) {
|
|
324
|
-
void uploadFile(file);
|
|
325
|
-
}
|
|
326
|
-
} }), _jsx("label", { className: "me-upload-button", htmlFor: `${fileInputId}-asset-upload`, children: uploading ? 'Uploading...' : 'Upload image' })] })) : null] }));
|
|
327
|
-
}
|
|
328
|
-
function PreviewSurface({ markdown, registry, onDiagnostics, }) {
|
|
329
|
-
const [result, setResult] = React.useState(null);
|
|
330
|
-
const registryRef = React.useRef(registry);
|
|
331
|
-
registryRef.current = registry;
|
|
332
|
-
React.useEffect(() => {
|
|
333
|
-
const controller = new AbortController();
|
|
334
|
-
const activeRegistry = registryRef.current ?? createDefaultRendererRegistry();
|
|
335
|
-
renderMarkdownToHtml(markdown, {
|
|
336
|
-
registry: activeRegistry,
|
|
337
|
-
signal: controller.signal,
|
|
338
|
-
})
|
|
339
|
-
.then((nextResult) => {
|
|
340
|
-
if (controller.signal.aborted) {
|
|
341
|
-
return;
|
|
342
|
-
}
|
|
343
|
-
setResult(nextResult);
|
|
344
|
-
onDiagnostics(nextResult.diagnostics);
|
|
345
|
-
})
|
|
346
|
-
.catch((error) => {
|
|
347
|
-
if (controller.signal.aborted) {
|
|
348
|
-
return;
|
|
349
|
-
}
|
|
350
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
351
|
-
const diagnostics = [
|
|
352
|
-
{
|
|
353
|
-
code: 'preview.render.failed',
|
|
354
|
-
message,
|
|
355
|
-
severity: 'error',
|
|
356
|
-
source: 'renderer',
|
|
357
|
-
},
|
|
358
|
-
];
|
|
359
|
-
setResult({
|
|
360
|
-
html: `<pre class="me-preview-error">${escapeHtml(markdown)}</pre>`,
|
|
361
|
-
blocks: [],
|
|
362
|
-
diagnostics,
|
|
363
|
-
});
|
|
364
|
-
onDiagnostics(diagnostics);
|
|
365
|
-
});
|
|
366
|
-
return () => controller.abort();
|
|
367
|
-
}, [markdown, onDiagnostics]);
|
|
368
|
-
return (_jsx("div", { className: "me-preview", "aria-label": "Markdown preview", dangerouslySetInnerHTML: { __html: result?.html ? sanitizePreviewHtml(result.html) : '<p>Rendering preview...</p>' } }));
|
|
369
|
-
}
|
|
370
292
|
function normalizeModes(modes) {
|
|
371
293
|
const normalized = modes.filter((modeName, index) => modes.indexOf(modeName) === index);
|
|
372
294
|
return normalized.length > 0 ? normalized : DEFAULT_MODES;
|
|
@@ -394,14 +316,4 @@ function cmSelectionToTextSelection(selection) {
|
|
|
394
316
|
to: Math.max(selection.anchor, selection.head),
|
|
395
317
|
};
|
|
396
318
|
}
|
|
397
|
-
function escapeHtml(value) {
|
|
398
|
-
return value
|
|
399
|
-
.replace(/&/g, '&')
|
|
400
|
-
.replace(/</g, '<')
|
|
401
|
-
.replace(/>/g, '>')
|
|
402
|
-
.replace(/"/g, '"');
|
|
403
|
-
}
|
|
404
|
-
function escapeMarkdownLabel(value) {
|
|
405
|
-
return value.replace(/\\/g, '\\\\').replace(/]/g, '\\]');
|
|
406
|
-
}
|
|
407
319
|
//# sourceMappingURL=MarkdownEditor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MarkdownEditor.js","sourceRoot":"","sources":["../src/MarkdownEditor.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MarkdownEditor.js","sourceRoot":"","sources":["../src/MarkdownEditor.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type RenderMarkdownToHtmlResult, type RendererRegistry } from '@echozedlabs/renderers';
|
|
2
|
+
/** Read-only preview surface: renders Markdown to sanitized HTML. */
|
|
3
|
+
export declare function PreviewSurface({ markdown, registry, onDiagnostics, }: {
|
|
4
|
+
markdown: string;
|
|
5
|
+
registry?: RendererRegistry;
|
|
6
|
+
onDiagnostics(diagnostics: NonNullable<RenderMarkdownToHtmlResult['diagnostics']>): void;
|
|
7
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
//# sourceMappingURL=PreviewSurface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PreviewSurface.d.ts","sourceRoot":"","sources":["../src/PreviewSurface.tsx"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,0BAA0B,EAC/B,KAAK,gBAAgB,EACtB,MAAM,wBAAwB,CAAC;AAGhC,qEAAqE;AACrE,wBAAgB,cAAc,CAAC,EAC7B,QAAQ,EACR,QAAQ,EACR,aAAa,GACd,EAAE;IACD,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,aAAa,CAAC,WAAW,EAAE,WAAW,CAAC,0BAA0B,CAAC,aAAa,CAAC,CAAC,GAAG,IAAI,CAAC;CAC1F,2CA+DA"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { createDefaultRendererRegistry, renderMarkdownToHtml, } from '@echozedlabs/renderers';
|
|
4
|
+
import { sanitizePreviewHtml } from './sanitizeHtml.js';
|
|
5
|
+
/** Read-only preview surface: renders Markdown to sanitized HTML. */
|
|
6
|
+
export function PreviewSurface({ markdown, registry, onDiagnostics, }) {
|
|
7
|
+
const [result, setResult] = React.useState(null);
|
|
8
|
+
const registryRef = React.useRef(registry);
|
|
9
|
+
registryRef.current = registry;
|
|
10
|
+
// Keep onDiagnostics out of the render effect's deps (via a ref). Putting it in
|
|
11
|
+
// the deps makes reporting diagnostics — which updates host state — re-trigger
|
|
12
|
+
// the effect, so the preview re-renders in a loop; and any non-stable callback
|
|
13
|
+
// identity desync would also break the single-fire-on-mount. The effect should
|
|
14
|
+
// run purely when `markdown` changes.
|
|
15
|
+
const onDiagnosticsRef = React.useRef(onDiagnostics);
|
|
16
|
+
onDiagnosticsRef.current = onDiagnostics;
|
|
17
|
+
React.useEffect(() => {
|
|
18
|
+
// Use a local "cancelled" guard rather than aborting the render: the renderer
|
|
19
|
+
// lazy-loads (and caches) shiki/mermaid, and aborting on cleanup can break the
|
|
20
|
+
// shared loader. The guard still drops stale/after-unmount results.
|
|
21
|
+
let cancelled = false;
|
|
22
|
+
const activeRegistry = registryRef.current ?? createDefaultRendererRegistry();
|
|
23
|
+
renderMarkdownToHtml(markdown, { registry: activeRegistry })
|
|
24
|
+
.then((nextResult) => {
|
|
25
|
+
if (cancelled) {
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
setResult(nextResult);
|
|
29
|
+
onDiagnosticsRef.current?.(nextResult.diagnostics);
|
|
30
|
+
})
|
|
31
|
+
.catch((error) => {
|
|
32
|
+
if (cancelled) {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
36
|
+
const diagnostics = [
|
|
37
|
+
{
|
|
38
|
+
code: 'preview.render.failed',
|
|
39
|
+
message,
|
|
40
|
+
severity: 'error',
|
|
41
|
+
source: 'renderer',
|
|
42
|
+
},
|
|
43
|
+
];
|
|
44
|
+
setResult({
|
|
45
|
+
html: `<pre class="me-preview-error">${escapeHtml(markdown)}</pre>`,
|
|
46
|
+
blocks: [],
|
|
47
|
+
diagnostics,
|
|
48
|
+
});
|
|
49
|
+
onDiagnosticsRef.current?.(diagnostics);
|
|
50
|
+
});
|
|
51
|
+
return () => {
|
|
52
|
+
cancelled = true;
|
|
53
|
+
};
|
|
54
|
+
// `registry` is a real render input (a host may swap renderers without changing
|
|
55
|
+
// markdown); it must be a stable reference. Diagnostics stay on a ref, so this
|
|
56
|
+
// can't reintroduce the re-render loop that narrowing these deps once fixed.
|
|
57
|
+
}, [markdown, registry]);
|
|
58
|
+
return (_jsx("div", { className: "me-preview", "aria-label": "Markdown preview", dangerouslySetInnerHTML: { __html: result?.html ? sanitizePreviewHtml(result.html) : '<p>Rendering preview...</p>' } }));
|
|
59
|
+
}
|
|
60
|
+
function escapeHtml(value) {
|
|
61
|
+
return value
|
|
62
|
+
.replace(/&/g, '&')
|
|
63
|
+
.replace(/</g, '<')
|
|
64
|
+
.replace(/>/g, '>')
|
|
65
|
+
.replace(/"/g, '"');
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=PreviewSurface.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PreviewSurface.js","sourceRoot":"","sources":["../src/PreviewSurface.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EACL,6BAA6B,EAC7B,oBAAoB,GAGrB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAExD,qEAAqE;AACrE,MAAM,UAAU,cAAc,CAAC,EAC7B,QAAQ,EACR,QAAQ,EACR,aAAa,GAKd;IACC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAoC,IAAI,CAAC,CAAC;IACpF,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAA+B,QAAQ,CAAC,CAAC;IACzE,WAAW,CAAC,OAAO,GAAG,QAAQ,CAAC;IAC/B,gFAAgF;IAChF,+EAA+E;IAC/E,+EAA+E;IAC/E,+EAA+E;IAC/E,sCAAsC;IACtC,MAAM,gBAAgB,GAAG,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IACrD,gBAAgB,CAAC,OAAO,GAAG,aAAa,CAAC;IAEzC,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,8EAA8E;QAC9E,+EAA+E;QAC/E,oEAAoE;QACpE,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,MAAM,cAAc,GAAG,WAAW,CAAC,OAAO,IAAI,6BAA6B,EAAE,CAAC;QAE9E,oBAAoB,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC;aACzD,IAAI,CAAC,CAAC,UAAsC,EAAE,EAAE;YAC/C,IAAI,SAAS,EAAE,CAAC;gBACd,OAAO;YACT,CAAC;YACD,SAAS,CAAC,UAAU,CAAC,CAAC;YACtB,gBAAgB,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QACrD,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;YACxB,IAAI,SAAS,EAAE,CAAC;gBACd,OAAO;YACT,CAAC;YACD,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,MAAM,WAAW,GAAG;gBAClB;oBACE,IAAI,EAAE,uBAAuB;oBAC7B,OAAO;oBACP,QAAQ,EAAE,OAAgB;oBAC1B,MAAM,EAAE,UAAU;iBACnB;aACF,CAAC;YACF,SAAS,CAAC;gBACR,IAAI,EAAE,iCAAiC,UAAU,CAAC,QAAQ,CAAC,QAAQ;gBACnE,MAAM,EAAE,EAAE;gBACV,WAAW;aACZ,CAAC,CAAC;YACH,gBAAgB,CAAC,OAAO,EAAE,CAAC,WAAW,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;QAEL,OAAO,GAAG,EAAE;YACV,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC,CAAC;QACF,gFAAgF;QAChF,+EAA+E;QAC/E,6EAA6E;IAC/E,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;IAEzB,OAAO,CACL,cACE,SAAS,EAAC,YAAY,gBACX,kBAAkB,EAC7B,uBAAuB,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,6BAA6B,EAAE,GACpH,CACH,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,KAAa;IAC/B,OAAO,KAAK;SACT,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC7B,CAAC"}
|
package/dist/icons.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/** Inline FontAwesome-style glyph used by the built-in toolbar controls. */
|
|
2
|
+
export declare function IconSvg({ path, dataIcon }: {
|
|
3
|
+
path: string;
|
|
4
|
+
dataIcon?: string;
|
|
5
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
export declare const LIST_ICON_PATH = "M40 48C26.7 48 16 58.7 16 72v48c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V72c0-13.3-10.7-24-24-24H40zm144 16c-17.7 0-32 14.3-32 32s14.3 32 32 32h352c17.7 0 32-14.3 32-32s-14.3-32-32-32H184zM40 208c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24v-48c0-13.3-10.7-24-24-24H40zm144 16c-17.7 0-32 14.3-32 32s14.3 32 32 32h352c17.7 0 32-14.3 32-32s-14.3-32-32-32H184zM40 368c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24v-48c0-13.3-10.7-24-24-24H40zm144 16c-17.7 0-32 14.3-32 32s14.3 32 32 32h352c17.7 0 32-14.3 32-32s-14.3-32-32-32H184z";
|
|
7
|
+
export declare const SLIDERS_ICON_PATH = "M0 416c0 17.7 14.3 32 32 32h54.7c13.2 37.3 48.7 64 90.5 64s77.4-26.7 90.5-64H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H267.8c-13.2-37.3-48.7-64-90.5-64s-77.4 26.7-90.5 64H32c-17.7 0-32 14.3-32 32zm128 0a49.3 49.3 0 1 1 98.7 0 49.3 49.3 0 1 1-98.7 0zM0 256c0 17.7 14.3 32 32 32h246.7c13.2 37.3 48.7 64 90.5 64s77.4-26.7 90.5-64H544c17.7 0 32-14.3 32-32s-14.3-32-32-32h-84.3c-13.2-37.3-48.7-64-90.5-64s-77.4 26.7-90.5 64H32c-17.7 0-32 14.3-32 32zm320 0a49.3 49.3 0 1 1 98.7 0 49.3 49.3 0 1 1-98.7 0zM0 96c0 17.7 14.3 32 32 32h54.7c13.2 37.3 48.7 64 90.5 64s77.4-26.7 90.5-64H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H267.8C254.6 26.7 219.1 0 177.3 0S99.9 26.7 86.7 64H32C14.3 64 0 78.3 0 96zm128 0a49.3 49.3 0 1 1 98.7 0 49.3 49.3 0 1 1-98.7 0z";
|
|
8
|
+
//# sourceMappingURL=icons.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"icons.d.ts","sourceRoot":"","sources":["../src/icons.tsx"],"names":[],"mappings":"AAEA,4EAA4E;AAC5E,wBAAgB,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,2CAM9E;AAED,eAAO,MAAM,cAAc,ykBAAykB,CAAC;AACrmB,eAAO,MAAM,iBAAiB,uuBAAuuB,CAAC"}
|
package/dist/icons.js
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/** Inline FontAwesome-style glyph used by the built-in toolbar controls. */
|
|
3
|
+
export function IconSvg({ path, dataIcon }) {
|
|
4
|
+
return (_jsx("svg", { className: "me-inline-icon", "data-icon": dataIcon, viewBox: "0 0 576 512", focusable: "false", "aria-hidden": "true", children: _jsx("path", { fill: "currentColor", d: path }) }));
|
|
5
|
+
}
|
|
6
|
+
export const LIST_ICON_PATH = 'M40 48C26.7 48 16 58.7 16 72v48c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V72c0-13.3-10.7-24-24-24H40zm144 16c-17.7 0-32 14.3-32 32s14.3 32 32 32h352c17.7 0 32-14.3 32-32s-14.3-32-32-32H184zM40 208c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24v-48c0-13.3-10.7-24-24-24H40zm144 16c-17.7 0-32 14.3-32 32s14.3 32 32 32h352c17.7 0 32-14.3 32-32s-14.3-32-32-32H184zM40 368c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24v-48c0-13.3-10.7-24-24-24H40zm144 16c-17.7 0-32 14.3-32 32s14.3 32 32 32h352c17.7 0 32-14.3 32-32s-14.3-32-32-32H184z';
|
|
7
|
+
export const SLIDERS_ICON_PATH = 'M0 416c0 17.7 14.3 32 32 32h54.7c13.2 37.3 48.7 64 90.5 64s77.4-26.7 90.5-64H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H267.8c-13.2-37.3-48.7-64-90.5-64s-77.4 26.7-90.5 64H32c-17.7 0-32 14.3-32 32zm128 0a49.3 49.3 0 1 1 98.7 0 49.3 49.3 0 1 1-98.7 0zM0 256c0 17.7 14.3 32 32 32h246.7c13.2 37.3 48.7 64 90.5 64s77.4-26.7 90.5-64H544c17.7 0 32-14.3 32-32s-14.3-32-32-32h-84.3c-13.2-37.3-48.7-64-90.5-64s-77.4 26.7-90.5 64H32c-17.7 0-32 14.3-32 32zm320 0a49.3 49.3 0 1 1 98.7 0 49.3 49.3 0 1 1-98.7 0zM0 96c0 17.7 14.3 32 32 32h54.7c13.2 37.3 48.7 64 90.5 64s77.4-26.7 90.5-64H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H267.8C254.6 26.7 219.1 0 177.3 0S99.9 26.7 86.7 64H32C14.3 64 0 78.3 0 96zm128 0a49.3 49.3 0 1 1 98.7 0 49.3 49.3 0 1 1-98.7 0z';
|
|
8
|
+
//# sourceMappingURL=icons.js.map
|