@vertesia/rich-text 1.5.0-dev.20260725.083715Z

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.
@@ -0,0 +1,347 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Editor, Node } from '@tiptap/core';
3
+ import { CodeBlock } from '@tiptap/extension-code-block';
4
+ import { Image } from '@tiptap/extension-image';
5
+ import { Link } from '@tiptap/extension-link';
6
+ import { TableKit } from '@tiptap/extension-table';
7
+ import { Markdown } from '@tiptap/markdown';
8
+ import { MarkViewContent, NodeViewContent, NodeViewWrapper, ReactMarkViewRenderer, ReactNodeViewRenderer, } from '@tiptap/react';
9
+ import StarterKit from '@tiptap/starter-kit';
10
+ import { Marked } from 'marked';
11
+ export const VERTESIA_WIDGET_LANGUAGES = new Set(['chart', 'vega-lite', 'vegalite', 'mermaid', 'mockup', 'svg']);
12
+ const CUSTOM_PROTOCOLS = ['artifact', 'image', 'store', 'document', 'collection'];
13
+ export function isVertesiaWidgetLanguage(language) {
14
+ return Boolean(language && (VERTESIA_WIDGET_LANGUAGES.has(language) || language.startsWith('expand:')));
15
+ }
16
+ function markdownDestination(value) {
17
+ if (!/[\s<>]/.test(value))
18
+ return value;
19
+ return `<${value.replaceAll('>', '%3E')}>`;
20
+ }
21
+ function markdownTitle(value) {
22
+ return value.replaceAll('\\', '\\\\').replaceAll('"', '\\"');
23
+ }
24
+ function markdownLabel(value) {
25
+ return value.replaceAll('\\', '\\\\').replaceAll('[', '\\[').replaceAll(']', '\\]');
26
+ }
27
+ function createIsolatedMarked() {
28
+ // Tiptap types this option as the callable singleton even though MarkdownManager only
29
+ // consumes the instance methods shared by Marked. A fresh instance prevents one editor's
30
+ // custom tokenizers from accumulating globally across tests, remounts, and workspaces.
31
+ return new Marked();
32
+ }
33
+ function trimConsumedNewline(raw) {
34
+ return raw.endsWith('\n') ? raw.slice(0, -1) : raw;
35
+ }
36
+ function matchFrontmatter(src) {
37
+ const opening = /^---[ \t]*(?:\n|$)/.exec(src);
38
+ if (!opening)
39
+ return undefined;
40
+ let offset = opening[0].length;
41
+ let hasContent = false;
42
+ while (offset < src.length) {
43
+ const nextLineEnd = src.indexOf('\n', offset);
44
+ const lineEnd = nextLineEnd === -1 ? src.length : nextLineEnd + 1;
45
+ const line = src.slice(offset, lineEnd);
46
+ if (/^---[ \t]*(?:\n|$)/.test(line)) {
47
+ return hasContent ? src.slice(0, lineEnd) : undefined;
48
+ }
49
+ if (!/^[ \t]*(?:\n|$)/.test(line))
50
+ hasContent = true;
51
+ offset = lineEnd;
52
+ }
53
+ return undefined;
54
+ }
55
+ function matchDirective(src) {
56
+ const singleLine = /^(?: {0,3})(?:::[A-Za-z][\w-]*[^\n]*:::[ \t]*|::[A-Za-z][\w-]*[^\n]*)(?:\n|$)/.exec(src);
57
+ if (singleLine)
58
+ return singleLine[0];
59
+ const opening = /^(?: {0,3}):::[A-Za-z][\w-]*(?:\{[^\n}]*\})?[ \t]*(?:\n|$)/.exec(src);
60
+ if (!opening)
61
+ return undefined;
62
+ let depth = 1;
63
+ let offset = opening[0].length;
64
+ while (offset < src.length) {
65
+ const nextLineEnd = src.indexOf('\n', offset);
66
+ const lineEnd = nextLineEnd === -1 ? src.length : nextLineEnd + 1;
67
+ const line = src.slice(offset, lineEnd);
68
+ if (/^ {0,3}:::[A-Za-z][\w-]*(?:\{[^\n}]*\})?[ \t]*(?:\n|$)/.test(line)) {
69
+ depth += 1;
70
+ }
71
+ else if (/^ {0,3}:::[ \t]*(?:\n|$)/.test(line)) {
72
+ depth -= 1;
73
+ if (depth === 0)
74
+ return src.slice(0, lineEnd);
75
+ }
76
+ offset = lineEnd;
77
+ }
78
+ return undefined;
79
+ }
80
+ function matchDisplayMath(src) {
81
+ const singleLine = /^ {0,3}\$\$(?!\$)[^\n]*\$\$[ \t]*(?:\n|$)/.exec(src);
82
+ if (singleLine)
83
+ return singleLine[0];
84
+ const opening = /^ {0,3}\$\$(?!\$)[^\n]*(?:\n|$)/.exec(src);
85
+ if (!opening)
86
+ return undefined;
87
+ let offset = opening[0].length;
88
+ while (offset < src.length) {
89
+ const nextLineEnd = src.indexOf('\n', offset);
90
+ const lineEnd = nextLineEnd === -1 ? src.length : nextLineEnd + 1;
91
+ if (/^ {0,3}\$\$[ \t]*(?:\n|$)/.test(src.slice(offset, lineEnd))) {
92
+ return src.slice(0, lineEnd);
93
+ }
94
+ offset = lineEnd;
95
+ }
96
+ return undefined;
97
+ }
98
+ function matchGithubAlert(src) {
99
+ if (!/^ {0,3}>[ \t]*\[![A-Z]+\]/.test(src))
100
+ return undefined;
101
+ return /^(?: {0,3}>[^\n]*(?:\n|$))+/.exec(src)?.[0];
102
+ }
103
+ function matchTaskList(src) {
104
+ if (!/^ {0,3}[-+*][ \t]+\[[ xX]\][ \t]+/.test(src))
105
+ return undefined;
106
+ let offset = 0;
107
+ while (offset < src.length) {
108
+ const nextLineEnd = src.indexOf('\n', offset);
109
+ const lineEnd = nextLineEnd === -1 ? src.length : nextLineEnd + 1;
110
+ const line = src.slice(offset, lineEnd);
111
+ const isListItem = /^ {0,3}[-+*][ \t]+/.test(line);
112
+ const isIndentedContinuation = /^(?: {2,}|\t)\S/.test(line);
113
+ const isBlank = /^[ \t]*(?:\n|$)/.test(line);
114
+ if (!isListItem && !isIndentedContinuation && !isBlank)
115
+ break;
116
+ if (isBlank) {
117
+ const remaining = src.slice(lineEnd);
118
+ if (!/^(?: {0,3}[-+*][ \t]+|(?: {2,}|\t)\S)/.test(remaining))
119
+ break;
120
+ }
121
+ offset = lineEnd;
122
+ }
123
+ return offset > 0 ? src.slice(0, offset) : undefined;
124
+ }
125
+ function matchOpaqueMarkdown(src, atDocumentStart) {
126
+ const frontmatter = atDocumentStart ? matchFrontmatter(src) : undefined;
127
+ if (frontmatter)
128
+ return { kind: 'frontmatter', raw: frontmatter };
129
+ const directive = matchDirective(src);
130
+ if (directive)
131
+ return { kind: 'directive', raw: directive };
132
+ const displayMath = matchDisplayMath(src);
133
+ if (displayMath)
134
+ return { kind: 'display-math', raw: displayMath };
135
+ const githubAlert = matchGithubAlert(src);
136
+ if (githubAlert)
137
+ return { kind: 'github-alert', raw: githubAlert };
138
+ const taskList = matchTaskList(src);
139
+ if (taskList)
140
+ return { kind: 'task-list', raw: taskList };
141
+ return undefined;
142
+ }
143
+ function codeBlockNodeView(props) {
144
+ const options = props.extension.options;
145
+ const Renderer = options.renderer;
146
+ const language = typeof props.node.attrs.language === 'string' ? props.node.attrs.language : undefined;
147
+ const isWidget = isVertesiaWidgetLanguage(language);
148
+ return (_jsxs(NodeViewWrapper, { className: "vertesia-rich-text-code-block", "data-language": language || undefined, "data-widget": isWidget || undefined, children: [isWidget && Renderer ? (_jsx("div", { className: "vertesia-rich-text-widget-preview", contentEditable: false, children: _jsx(Renderer, { code: props.node.textContent, language: language, selected: props.selected }) })) : null, _jsx("pre", { className: "vertesia-rich-text-code-source", children: _jsx(NodeViewContent, { as: "code" }) })] }));
149
+ }
150
+ function imageNodeView(props) {
151
+ const options = props.extension.options;
152
+ const Renderer = options.renderer;
153
+ const src = typeof props.node.attrs.src === 'string' ? props.node.attrs.src : '';
154
+ const alt = typeof props.node.attrs.alt === 'string' ? props.node.attrs.alt : undefined;
155
+ const title = typeof props.node.attrs.title === 'string' ? props.node.attrs.title : undefined;
156
+ return (_jsx(NodeViewWrapper, { as: "figure", className: "vertesia-rich-text-image", "data-selected": props.selected || undefined, children: _jsx("div", { contentEditable: false, children: Renderer ? (_jsx(Renderer, { src: src, alt: alt, title: title, selected: props.selected })) : (_jsx("img", { src: src, alt: alt || '', title: title })) }) }));
157
+ }
158
+ function linkMarkView(props) {
159
+ const options = props.extension.options;
160
+ const Renderer = options.renderer;
161
+ const href = typeof props.mark.attrs.href === 'string' ? props.mark.attrs.href : '';
162
+ const title = typeof props.mark.attrs.title === 'string' ? props.mark.attrs.title : undefined;
163
+ const content = _jsx(MarkViewContent, {});
164
+ if (Renderer)
165
+ return (_jsx(Renderer, { href: href, title: title, children: content }));
166
+ return (_jsx("a", { href: href, title: title, target: "_blank", rel: "noopener noreferrer", children: content }));
167
+ }
168
+ function opaqueMarkdownNodeView(props) {
169
+ const options = props.extension.options;
170
+ const Renderer = options.renderer;
171
+ const attrs = props.node.attrs;
172
+ return (_jsxs(NodeViewWrapper, { className: "vertesia-rich-text-opaque-block", "data-kind": attrs.kind, "data-selected": props.selected || undefined, children: [Renderer ? (_jsx("div", { className: "vertesia-rich-text-opaque-preview", contentEditable: false, children: _jsx(Renderer, { raw: attrs.raw, kind: attrs.kind, selected: props.selected }) })) : null, _jsx("pre", { className: "vertesia-rich-text-opaque-source", contentEditable: false, children: attrs.raw })] }));
173
+ }
174
+ const VertesiaCodeBlock = CodeBlock.extend({
175
+ addOptions() {
176
+ return { ...this.parent?.(), renderer: undefined };
177
+ },
178
+ addNodeView() {
179
+ return ReactNodeViewRenderer(codeBlockNodeView, { contentDOMElementTag: 'code' });
180
+ },
181
+ });
182
+ const VertesiaImage = Image.extend({
183
+ addOptions() {
184
+ return { ...this.parent?.(), renderer: undefined };
185
+ },
186
+ renderMarkdown: (node) => {
187
+ const src = markdownDestination(typeof node.attrs?.src === 'string' ? node.attrs.src : '');
188
+ const alt = markdownLabel(typeof node.attrs?.alt === 'string' ? node.attrs.alt : '');
189
+ const title = typeof node.attrs?.title === 'string' ? node.attrs.title : '';
190
+ return title ? `![${alt}](${src} "${markdownTitle(title)}")` : `![${alt}](${src})`;
191
+ },
192
+ addNodeView() {
193
+ return ReactNodeViewRenderer(imageNodeView);
194
+ },
195
+ });
196
+ const VertesiaLink = Link.extend({
197
+ addOptions() {
198
+ return {
199
+ ...this.parent?.(),
200
+ autolink: false,
201
+ linkOnPaste: false,
202
+ openOnClick: false,
203
+ protocols: CUSTOM_PROTOCOLS,
204
+ renderer: undefined,
205
+ };
206
+ },
207
+ renderMarkdown: (node, helpers) => {
208
+ const href = markdownDestination(typeof node.attrs?.href === 'string' ? node.attrs.href : '');
209
+ const title = typeof node.attrs?.title === 'string' ? node.attrs.title : '';
210
+ const text = helpers.renderChildren(node);
211
+ return title ? `[${text}](${href} "${markdownTitle(title)}")` : `[${text}](${href})`;
212
+ },
213
+ addMarkView() {
214
+ return ReactMarkViewRenderer(linkMarkView, { as: 'span' });
215
+ },
216
+ });
217
+ export function createVertesiaMarkdownExtensions(options = {}) {
218
+ const extensions = [
219
+ StarterKit.configure({ codeBlock: false, link: false }),
220
+ VertesiaCodeBlock.configure({ renderer: options.codeBlock }),
221
+ VertesiaImage.configure({ renderer: options.image }),
222
+ VertesiaLink.configure({ renderer: options.link }),
223
+ ];
224
+ if (options.tables !== false)
225
+ extensions.push(TableKit);
226
+ if (options.opaqueBlocks !== false)
227
+ extensions.push(createOpaqueMarkdownExtension(options.opaqueBlock));
228
+ extensions.push(Markdown.configure({ marked: createIsolatedMarked(), markedOptions: { gfm: true } }));
229
+ return extensions;
230
+ }
231
+ function createOpaqueMarkdownExtension(renderer) {
232
+ return Node.create({
233
+ name: 'opaqueMarkdownBlock',
234
+ priority: 1000,
235
+ group: 'block',
236
+ atom: true,
237
+ selectable: true,
238
+ draggable: true,
239
+ addOptions() {
240
+ return { renderer: undefined };
241
+ },
242
+ addAttributes() {
243
+ return {
244
+ kind: { default: 'directive' },
245
+ raw: { default: '' },
246
+ };
247
+ },
248
+ parseHTML() {
249
+ return [{ tag: 'pre[data-opaque-markdown]' }];
250
+ },
251
+ renderHTML({ node }) {
252
+ return ['pre', { 'data-opaque-markdown': node.attrs.kind }, node.attrs.raw];
253
+ },
254
+ markdownTokenName: 'opaqueMarkdownBlock',
255
+ markdownTokenizer: {
256
+ name: 'opaqueMarkdownBlock',
257
+ level: 'block',
258
+ start(src) {
259
+ return src.search(/^ {0,3}(?:---[ \t]*(?:\n|$)|::?::?|\$\$|>[ \t]*\[![A-Z]+\]|[-+*][ \t]+\[[ xX]\][ \t]+)/m);
260
+ },
261
+ tokenize(src, tokens) {
262
+ const match = matchOpaqueMarkdown(src, tokens.length === 0);
263
+ if (!match)
264
+ return undefined;
265
+ return {
266
+ type: 'opaqueMarkdownBlock',
267
+ raw: match.raw,
268
+ opaqueKind: match.kind,
269
+ rawSource: trimConsumedNewline(match.raw),
270
+ };
271
+ },
272
+ },
273
+ parseMarkdown(token, helpers) {
274
+ return helpers.createNode('opaqueMarkdownBlock', {
275
+ kind: token.opaqueKind,
276
+ raw: token.rawSource,
277
+ });
278
+ },
279
+ renderMarkdown(node) {
280
+ return typeof node.attrs?.raw === 'string' ? node.attrs.raw : '';
281
+ },
282
+ addNodeView() {
283
+ return ReactNodeViewRenderer(opaqueMarkdownNodeView);
284
+ },
285
+ }).configure({ renderer });
286
+ }
287
+ export function createMarkdownEditor(options = {}) {
288
+ return new Editor({
289
+ extensions: createVertesiaMarkdownExtensions(options),
290
+ content: options.content ?? '',
291
+ contentType: typeof options.content === 'string' || options.content === undefined ? 'markdown' : 'json',
292
+ editable: options.editable ?? true,
293
+ });
294
+ }
295
+ export function parseMarkdown(markdown, options = {}) {
296
+ const editor = createMarkdownEditor({ ...options, content: markdown, editable: false });
297
+ try {
298
+ return editor.getJSON();
299
+ }
300
+ finally {
301
+ editor.destroy();
302
+ }
303
+ }
304
+ export function serializeMarkdown(content, options = {}) {
305
+ const editor = createMarkdownEditor({ ...options, content, editable: false });
306
+ try {
307
+ return editor.getMarkdown();
308
+ }
309
+ finally {
310
+ editor.destroy();
311
+ }
312
+ }
313
+ export function roundTripMarkdown(markdown, options = {}) {
314
+ return serializeMarkdown(parseMarkdown(markdown, options), options);
315
+ }
316
+ /**
317
+ * Classifies whether rich-text editing preserves the document structure, even when the serializer
318
+ * canonicalizes equivalent Markdown syntax such as Setext headings or table spacing.
319
+ */
320
+ export function getMarkdownCompatibility(markdown, options = {}) {
321
+ try {
322
+ const parsed = parseMarkdown(markdown, options);
323
+ const normalized = serializeMarkdown(parsed, options);
324
+ if (normalized === markdown)
325
+ return 'exact';
326
+ const reparsed = parseMarkdown(normalized, options);
327
+ const isStructurallyEquivalent = JSON.stringify(reparsed) === JSON.stringify(parsed);
328
+ return isStructurallyEquivalent ? 'normalized' : 'lossy';
329
+ }
330
+ catch {
331
+ return 'lossy';
332
+ }
333
+ }
334
+ /**
335
+ * Returns whether opening Markdown in the rich-text editor can preserve its
336
+ * exact source representation. Hosts can use this to warn before entering a
337
+ * full-document editor that normalizes Markdown syntax.
338
+ */
339
+ export function isMarkdownSourcePreserving(markdown, options = {}) {
340
+ try {
341
+ return roundTripMarkdown(markdown, options) === markdown;
342
+ }
343
+ catch {
344
+ return false;
345
+ }
346
+ }
347
+ //# sourceMappingURL=markdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown.js","sourceRoot":"","sources":["../src/markdown.tsx"],"names":[],"mappings":"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"}
package/lib/types.d.ts ADDED
@@ -0,0 +1,30 @@
1
+ import type { ComponentType, ReactNode } from 'react';
2
+ export type OpaqueMarkdownKind = 'directive' | 'display-math' | 'frontmatter' | 'github-alert' | 'task-list';
3
+ export interface RichTextCodeBlockRendererProps {
4
+ code: string;
5
+ language?: string;
6
+ selected: boolean;
7
+ }
8
+ export interface RichTextImageRendererProps {
9
+ src: string;
10
+ alt?: string;
11
+ title?: string;
12
+ selected: boolean;
13
+ }
14
+ export interface RichTextLinkRendererProps {
15
+ href: string;
16
+ title?: string;
17
+ children: ReactNode;
18
+ }
19
+ export interface RichTextOpaqueBlockRendererProps {
20
+ raw: string;
21
+ kind: OpaqueMarkdownKind;
22
+ selected: boolean;
23
+ }
24
+ export interface RichTextRenderers {
25
+ codeBlock?: ComponentType<RichTextCodeBlockRendererProps>;
26
+ image?: ComponentType<RichTextImageRendererProps>;
27
+ link?: ComponentType<RichTextLinkRendererProps>;
28
+ opaqueBlock?: ComponentType<RichTextOpaqueBlockRendererProps>;
29
+ }
30
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEtD,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAAG,cAAc,GAAG,aAAa,GAAG,cAAc,GAAG,WAAW,CAAC;AAE7G,MAAM,WAAW,8BAA8B;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,0BAA0B;IACvC,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,yBAAyB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,SAAS,CAAC;CACvB;AAED,MAAM,WAAW,gCAAgC;IAC7C,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,kBAAkB,CAAC;IACzB,QAAQ,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAC9B,SAAS,CAAC,EAAE,aAAa,CAAC,8BAA8B,CAAC,CAAC;IAC1D,KAAK,CAAC,EAAE,aAAa,CAAC,0BAA0B,CAAC,CAAC;IAClD,IAAI,CAAC,EAAE,aAAa,CAAC,yBAAyB,CAAC,CAAC;IAChD,WAAW,CAAC,EAAE,aAAa,CAAC,gCAAgC,CAAC,CAAC;CACjE"}
package/lib/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}