@tai42/studio-sdk 0.11.0 → 0.13.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/components/code-block.d.ts.map +1 -1
- package/dist/components/code-block.js +26 -13
- package/dist/components/code-block.js.map +1 -1
- package/dist/components/components.css +20 -0
- package/dist/components/copy-field.d.ts.map +1 -1
- package/dist/components/copy-field.js +8 -73
- package/dist/components/copy-field.js.map +1 -1
- package/dist/components/date-range-picker.d.ts +73 -0
- package/dist/components/date-range-picker.d.ts.map +1 -0
- package/dist/components/date-range-picker.js +146 -0
- package/dist/components/date-range-picker.js.map +1 -0
- package/dist/components/dialog.d.ts +19 -1
- package/dist/components/dialog.d.ts.map +1 -1
- package/dist/components/dialog.js +16 -13
- package/dist/components/dialog.js.map +1 -1
- package/dist/components/dirty-guard.d.ts +28 -0
- package/dist/components/dirty-guard.d.ts.map +1 -0
- package/dist/components/dirty-guard.js +93 -0
- package/dist/components/dirty-guard.js.map +1 -0
- package/dist/components/extension-picker.d.ts.map +1 -1
- package/dist/components/extension-picker.js +7 -0
- package/dist/components/extension-picker.js.map +1 -1
- package/dist/components/form-dialog.d.ts +45 -0
- package/dist/components/form-dialog.d.ts.map +1 -0
- package/dist/components/form-dialog.js +71 -0
- package/dist/components/form-dialog.js.map +1 -0
- package/dist/components/json-tree.d.ts +7 -1
- package/dist/components/json-tree.d.ts.map +1 -1
- package/dist/components/json-tree.js +300 -13
- package/dist/components/json-tree.js.map +1 -1
- package/dist/components/markdown.d.ts +60 -0
- package/dist/components/markdown.d.ts.map +1 -0
- package/dist/components/markdown.js +435 -0
- package/dist/components/markdown.js.map +1 -0
- package/dist/components/tabs.d.ts +3 -1
- package/dist/components/tabs.d.ts.map +1 -1
- package/dist/components/tabs.js +2 -2
- package/dist/components/tabs.js.map +1 -1
- package/dist/hooks/useApi.d.ts +56 -28
- package/dist/hooks/useApi.d.ts.map +1 -1
- package/dist/hooks/useClipboardCopy.d.ts +26 -0
- package/dist/hooks/useClipboardCopy.d.ts.map +1 -0
- package/dist/hooks/useClipboardCopy.js +72 -0
- package/dist/hooks/useClipboardCopy.js.map +1 -0
- package/dist/hooks/useSystemKinds.d.ts +55 -0
- package/dist/hooks/useSystemKinds.d.ts.map +1 -0
- package/dist/hooks/useSystemKinds.js +78 -0
- package/dist/hooks/useSystemKinds.js.map +1 -0
- package/dist/index.d.ts +11 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -1
- package/dist/index.js.map +1 -1
- package/dist/navigation/context.d.ts +13 -1
- package/dist/navigation/context.d.ts.map +1 -1
- package/dist/navigation/context.js +205 -7
- package/dist/navigation/context.js.map +1 -1
- package/dist/navigation/index.d.ts +2 -2
- package/dist/navigation/index.d.ts.map +1 -1
- package/dist/navigation/index.js +1 -1
- package/dist/navigation/index.js.map +1 -1
- package/dist/navigation/types.d.ts +11 -0
- package/dist/navigation/types.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/components/code-block.tsx +72 -9
- package/src/components/components.css +20 -0
- package/src/components/copy-field.tsx +25 -81
- package/src/components/date-range-picker.tsx +256 -0
- package/src/components/dialog.tsx +59 -18
- package/src/components/dirty-guard.tsx +153 -0
- package/src/components/extension-picker.tsx +12 -0
- package/src/components/form-dialog.tsx +133 -0
- package/src/components/json-tree.tsx +477 -42
- package/src/components/markdown.tsx +552 -0
- package/src/components/tabs.tsx +10 -1
- package/src/hooks/useClipboardCopy.ts +105 -0
- package/src/hooks/useSystemKinds.tsx +97 -0
- package/src/index.ts +20 -0
- package/src/navigation/context.tsx +245 -7
- package/src/navigation/index.ts +2 -0
- package/src/navigation/types.ts +12 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json-tree.js","sourceRoot":"","sources":["../../src/components/json-tree.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"json-tree.js","sourceRoot":"","sources":["../../src/components/json-tree.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `Markdown` — a safe renderer for the markdown agents emit, on the design
|
|
3
|
+
* system's prose ground (`tai-prose`). Supports a deliberate subset (headings,
|
|
4
|
+
* emphasis, lists, blockquotes, thematic breaks, links, inline and fenced code),
|
|
5
|
+
* rendered entirely through React elements and text children.
|
|
6
|
+
*
|
|
7
|
+
* SAFETY: never an HTML sink — no `dangerouslySetInnerHTML`, no raw-HTML
|
|
8
|
+
* passthrough, no network. A link is admitted only when `safeHttpUrl` accepts an
|
|
9
|
+
* absolute `http(s)` URL; every other spelling renders as plain link text.
|
|
10
|
+
* `` collapses to its `alt` text, so no source URL is fetched. Fenced
|
|
11
|
+
* code goes to `CodeBlock`, itself text-only.
|
|
12
|
+
*/
|
|
13
|
+
import { type ReactNode } from 'react';
|
|
14
|
+
/** The heading levels ATX syntax can express, `#` through `######`. */
|
|
15
|
+
export type HeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;
|
|
16
|
+
/** A parsed block. Inline markup inside `text` is resolved at render time. */
|
|
17
|
+
export type MarkdownBlock = {
|
|
18
|
+
readonly type: 'heading';
|
|
19
|
+
readonly level: HeadingLevel;
|
|
20
|
+
readonly text: string;
|
|
21
|
+
} | {
|
|
22
|
+
readonly type: 'paragraph';
|
|
23
|
+
readonly text: string;
|
|
24
|
+
} | {
|
|
25
|
+
readonly type: 'code';
|
|
26
|
+
readonly language: string | undefined;
|
|
27
|
+
readonly code: string;
|
|
28
|
+
} | {
|
|
29
|
+
readonly type: 'list';
|
|
30
|
+
readonly ordered: boolean;
|
|
31
|
+
readonly items: readonly string[];
|
|
32
|
+
/** The first item's number on an ordered list, so the render can offset `<ol start>`. */
|
|
33
|
+
readonly start?: number;
|
|
34
|
+
} | {
|
|
35
|
+
readonly type: 'blockquote';
|
|
36
|
+
readonly children: readonly MarkdownBlock[];
|
|
37
|
+
} | {
|
|
38
|
+
readonly type: 'thematicBreak';
|
|
39
|
+
};
|
|
40
|
+
export interface MarkdownProps {
|
|
41
|
+
/** The markdown source. Rendered as an escaped-by-construction React tree. */
|
|
42
|
+
readonly markdown: string;
|
|
43
|
+
/** Appended to `tai-prose` so a caller can position the block without losing its paint. */
|
|
44
|
+
readonly className?: string;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Folds markdown source into an ordered list of blocks. Pure and total: any
|
|
48
|
+
* string parses, and text that matches no block construct becomes a paragraph
|
|
49
|
+
* rather than being discarded.
|
|
50
|
+
*/
|
|
51
|
+
export declare function parseMarkdown(markdown: string): MarkdownBlock[];
|
|
52
|
+
/**
|
|
53
|
+
* Test-only entry point to the inline scanner. Resolves inline markup to React
|
|
54
|
+
* nodes exactly as `renderInline` does, but without mounting or serializing a
|
|
55
|
+
* DOM, so a test can time the scan itself in isolation from render cost. Not part
|
|
56
|
+
* of the public API.
|
|
57
|
+
*/
|
|
58
|
+
export declare function scanInline(text: string): ReactNode[];
|
|
59
|
+
export declare function Markdown({ markdown, className }: MarkdownProps): import("react").JSX.Element;
|
|
60
|
+
//# sourceMappingURL=markdown.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../../src/components/markdown.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAW,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAKhD,uEAAuE;AACvE,MAAM,MAAM,YAAY,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAEjD,8EAA8E;AAC9E,MAAM,MAAM,aAAa,GACrB;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACjF;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACrD;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACvF;IACE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,yFAAyF;IACzF,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB,GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,aAAa,EAAE,CAAA;CAAE,GAC5E;IAAE,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAA;CAAE,CAAC;AAEvC,MAAM,WAAW,aAAa;IAC5B,8EAA8E;IAC9E,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,2FAA2F;IAC3F,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AA6CD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,EAAE,CAG/D;AAyWD;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,CAEpD;AAiFD,wBAAgB,QAAQ,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,aAAa,+BAQ9D"}
|
|
@@ -0,0 +1,435 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* `Markdown` — a safe renderer for the markdown agents emit, on the design
|
|
4
|
+
* system's prose ground (`tai-prose`). Supports a deliberate subset (headings,
|
|
5
|
+
* emphasis, lists, blockquotes, thematic breaks, links, inline and fenced code),
|
|
6
|
+
* rendered entirely through React elements and text children.
|
|
7
|
+
*
|
|
8
|
+
* SAFETY: never an HTML sink — no `dangerouslySetInnerHTML`, no raw-HTML
|
|
9
|
+
* passthrough, no network. A link is admitted only when `safeHttpUrl` accepts an
|
|
10
|
+
* absolute `http(s)` URL; every other spelling renders as plain link text.
|
|
11
|
+
* `` collapses to its `alt` text, so no source URL is fetched. Fenced
|
|
12
|
+
* code goes to `CodeBlock`, itself text-only.
|
|
13
|
+
*/
|
|
14
|
+
import { useMemo } from 'react';
|
|
15
|
+
import { CodeBlock } from './code-block';
|
|
16
|
+
import { safeHttpUrl } from './primitives';
|
|
17
|
+
// -- block grammar -----------------------------------------------------------
|
|
18
|
+
const BLANK = /^[ \t]*$/;
|
|
19
|
+
/** A fence opener: three-or-more backticks or tildes, then an info string. */
|
|
20
|
+
const FENCE_OPEN = /^[ \t]{0,3}(`{3,}|~{3,})[ \t]*(.*)$/;
|
|
21
|
+
/**
|
|
22
|
+
* An ATX heading: 1–6 hashes, a required space, then text. A closing hash run is
|
|
23
|
+
* stripped only when whitespace separates it from the content, so `# C#` keeps
|
|
24
|
+
* its literal `C#`.
|
|
25
|
+
*/
|
|
26
|
+
const HEADING = /^[ \t]{0,3}(#{1,6})[ \t]+(.*?)(?:[ \t]+#+)?[ \t]*$/;
|
|
27
|
+
/** A thematic break: three-or-more `-`, `*` or `_`, spaces allowed between. */
|
|
28
|
+
const THEMATIC_BREAK = /^[ \t]{0,3}([-*_])(?:[ \t]*\1){2,}[ \t]*$/;
|
|
29
|
+
/** A blockquote line: a `>` marker and its (optionally space-prefixed) content. */
|
|
30
|
+
const BLOCKQUOTE = /^[ \t]{0,3}>[ \t]?(.*)$/;
|
|
31
|
+
/** An unordered list item: a `-`, `*` or `+` bullet, a space, then content. */
|
|
32
|
+
const UNORDERED_ITEM = /^[ \t]*[-*+][ \t]+(.*)$/;
|
|
33
|
+
/** An ordered list item: a start number, a `.` or `)` delimiter, a space, then content. */
|
|
34
|
+
const ORDERED_ITEM = /^[ \t]*(\d{1,9})[.)][ \t]+(.*)$/;
|
|
35
|
+
/** True when a line starts a block that interrupts an open paragraph. */
|
|
36
|
+
function startsBlock(line) {
|
|
37
|
+
return (FENCE_OPEN.test(line) ||
|
|
38
|
+
HEADING.test(line) ||
|
|
39
|
+
THEMATIC_BREAK.test(line) ||
|
|
40
|
+
BLOCKQUOTE.test(line) ||
|
|
41
|
+
UNORDERED_ITEM.test(line) ||
|
|
42
|
+
ORDERED_ITEM.test(line));
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* The `closer` for an open fence: the same marker character, at least as long as
|
|
46
|
+
* the opener, alone on its line. A source that never closes its fence takes the
|
|
47
|
+
* rest of the document as code — the same run-to-end rule CommonMark applies —
|
|
48
|
+
* rather than silently dropping the block.
|
|
49
|
+
*/
|
|
50
|
+
function fenceCloser(marker) {
|
|
51
|
+
const char = marker.startsWith('`') ? '`' : '~';
|
|
52
|
+
return new RegExp(`^[ \\t]{0,3}${char}{${String(marker.length)},}[ \\t]*$`);
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Folds markdown source into an ordered list of blocks. Pure and total: any
|
|
56
|
+
* string parses, and text that matches no block construct becomes a paragraph
|
|
57
|
+
* rather than being discarded.
|
|
58
|
+
*/
|
|
59
|
+
export function parseMarkdown(markdown) {
|
|
60
|
+
const lines = markdown.replace(/\r\n?/g, '\n').split('\n');
|
|
61
|
+
return parseBlocks(lines);
|
|
62
|
+
}
|
|
63
|
+
function parseBlocks(lines) {
|
|
64
|
+
const blocks = [];
|
|
65
|
+
let i = 0;
|
|
66
|
+
while (i < lines.length) {
|
|
67
|
+
const line = lines[i] ?? '';
|
|
68
|
+
if (BLANK.test(line)) {
|
|
69
|
+
i += 1;
|
|
70
|
+
continue;
|
|
71
|
+
}
|
|
72
|
+
const fence = FENCE_OPEN.exec(line);
|
|
73
|
+
if (fence !== null) {
|
|
74
|
+
const closer = fenceCloser(fence[1] ?? '');
|
|
75
|
+
const info = (fence[2] ?? '').trim();
|
|
76
|
+
const body = [];
|
|
77
|
+
i += 1;
|
|
78
|
+
for (; i < lines.length; i += 1) {
|
|
79
|
+
const next = lines[i] ?? '';
|
|
80
|
+
if (closer.test(next))
|
|
81
|
+
break;
|
|
82
|
+
body.push(next);
|
|
83
|
+
}
|
|
84
|
+
// Step past the closing fence when one is present; at end-of-document
|
|
85
|
+
// there is nothing to step past.
|
|
86
|
+
if (i < lines.length)
|
|
87
|
+
i += 1;
|
|
88
|
+
blocks.push({
|
|
89
|
+
type: 'code',
|
|
90
|
+
language: info.length > 0 ? info : undefined,
|
|
91
|
+
code: body.join('\n'),
|
|
92
|
+
});
|
|
93
|
+
continue;
|
|
94
|
+
}
|
|
95
|
+
const heading = HEADING.exec(line);
|
|
96
|
+
if (heading !== null) {
|
|
97
|
+
blocks.push({
|
|
98
|
+
type: 'heading',
|
|
99
|
+
level: (heading[1] ?? '').length,
|
|
100
|
+
text: heading[2] ?? '',
|
|
101
|
+
});
|
|
102
|
+
i += 1;
|
|
103
|
+
continue;
|
|
104
|
+
}
|
|
105
|
+
if (THEMATIC_BREAK.test(line)) {
|
|
106
|
+
blocks.push({ type: 'thematicBreak' });
|
|
107
|
+
i += 1;
|
|
108
|
+
continue;
|
|
109
|
+
}
|
|
110
|
+
if (BLOCKQUOTE.test(line)) {
|
|
111
|
+
const inner = [];
|
|
112
|
+
for (; i < lines.length; i += 1) {
|
|
113
|
+
const quoted = BLOCKQUOTE.exec(lines[i] ?? '');
|
|
114
|
+
if (quoted === null)
|
|
115
|
+
break;
|
|
116
|
+
inner.push(quoted[1] ?? '');
|
|
117
|
+
}
|
|
118
|
+
blocks.push({ type: 'blockquote', children: parseBlocks(inner) });
|
|
119
|
+
continue;
|
|
120
|
+
}
|
|
121
|
+
const unordered = UNORDERED_ITEM.exec(line);
|
|
122
|
+
const ordered = unordered === null ? ORDERED_ITEM.exec(line) : null;
|
|
123
|
+
if (unordered !== null || ordered !== null) {
|
|
124
|
+
const pattern = ordered !== null ? ORDERED_ITEM : UNORDERED_ITEM;
|
|
125
|
+
// An ordered item's content is its second group, behind the start number; an
|
|
126
|
+
// unordered item's content is its first.
|
|
127
|
+
const textGroup = ordered !== null ? 2 : 1;
|
|
128
|
+
const items = [];
|
|
129
|
+
for (; i < lines.length; i += 1) {
|
|
130
|
+
const item = pattern.exec(lines[i] ?? '');
|
|
131
|
+
if (item === null)
|
|
132
|
+
break;
|
|
133
|
+
items.push(item[textGroup] ?? '');
|
|
134
|
+
}
|
|
135
|
+
if (ordered !== null) {
|
|
136
|
+
blocks.push({ type: 'list', ordered: true, items, start: Number(ordered[1] ?? '1') });
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
blocks.push({ type: 'list', ordered: false, items });
|
|
140
|
+
}
|
|
141
|
+
continue;
|
|
142
|
+
}
|
|
143
|
+
// A paragraph: this line and the following lines up to a blank line or the
|
|
144
|
+
// start of another block. Soft line breaks are kept as newlines.
|
|
145
|
+
const paragraph = [line];
|
|
146
|
+
i += 1;
|
|
147
|
+
for (; i < lines.length; i += 1) {
|
|
148
|
+
const next = lines[i] ?? '';
|
|
149
|
+
if (BLANK.test(next) || startsBlock(next))
|
|
150
|
+
break;
|
|
151
|
+
paragraph.push(next);
|
|
152
|
+
}
|
|
153
|
+
blocks.push({ type: 'paragraph', text: paragraph.join('\n') });
|
|
154
|
+
}
|
|
155
|
+
return blocks;
|
|
156
|
+
}
|
|
157
|
+
// -- inline grammar ----------------------------------------------------------
|
|
158
|
+
// Single-character predicates, so the `\S` and `\w` classes decide flanking
|
|
159
|
+
// exactly — a non-breaking space is whitespace, an underscore a word character —
|
|
160
|
+
// rather than an open-coded space test getting those edges wrong.
|
|
161
|
+
const NON_SPACE = /\S/;
|
|
162
|
+
const WORD = /\w/;
|
|
163
|
+
/** Inline code: a run of backticks and its literal, unparsed content, on one line. */
|
|
164
|
+
const CODE_SPAN = /`([^`\n]+)`/g;
|
|
165
|
+
/**
|
|
166
|
+
* The earliest run delimited by `marker` (`**`, `__`, `*` or `_`) at or after
|
|
167
|
+
* `from`. Walks once, holding one pending opener per line and closing it at the
|
|
168
|
+
* first marker a non-space away (and, for `_`, not abutting a word character on
|
|
169
|
+
* its outer edges). One pending opener per line reproduces the leftmost lazy
|
|
170
|
+
* match, quirks and all (`***a***` → `***a**`, `**a*` → none); a newline drops the
|
|
171
|
+
* opener. O(1) per character.
|
|
172
|
+
*/
|
|
173
|
+
function findEmphasisSpan(text, from, marker) {
|
|
174
|
+
const m = marker.length;
|
|
175
|
+
const mark = marker[0];
|
|
176
|
+
const underscore = mark === '_';
|
|
177
|
+
let opener = -1;
|
|
178
|
+
for (let j = from; j + m <= text.length; j += 1) {
|
|
179
|
+
const ch = text[j];
|
|
180
|
+
if (ch === '\n') {
|
|
181
|
+
opener = -1;
|
|
182
|
+
continue;
|
|
183
|
+
}
|
|
184
|
+
if (ch !== mark || (m === 2 && text[j + 1] !== mark))
|
|
185
|
+
continue;
|
|
186
|
+
// A closer: first marker >=1 body char away, preceded by a non-space (and,
|
|
187
|
+
// for `_`, not followed by a word character).
|
|
188
|
+
if (opener !== -1 &&
|
|
189
|
+
j >= opener + m + 1 &&
|
|
190
|
+
NON_SPACE.test(text[j - 1] ?? '') &&
|
|
191
|
+
(!underscore || j + m >= text.length || !WORD.test(text[j + m] ?? ''))) {
|
|
192
|
+
return { index: opener, length: j + m - opener, content: text.slice(opener + m, j) };
|
|
193
|
+
}
|
|
194
|
+
// The opener: first marker followed by a non-space (and, for `_`, not abutting
|
|
195
|
+
// a word character on its left); only the first is kept.
|
|
196
|
+
if (opener === -1 &&
|
|
197
|
+
j + m < text.length &&
|
|
198
|
+
NON_SPACE.test(text[j + m] ?? '') &&
|
|
199
|
+
(!underscore || j === 0 || !WORD.test(text[j - 1] ?? ''))) {
|
|
200
|
+
opener = j;
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
return null;
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* The destination run of a bracketed construct: one-or-more non-`)`, non-space
|
|
207
|
+
* characters bounded by `)`. Forward-only cursor. See {@link DestinationScan} for
|
|
208
|
+
* `end`/`stop`.
|
|
209
|
+
*/
|
|
210
|
+
function scanDestination(text, start) {
|
|
211
|
+
let k = start;
|
|
212
|
+
while (k < text.length && text[k] !== ')' && NON_SPACE.test(text[k] ?? ''))
|
|
213
|
+
k += 1;
|
|
214
|
+
if (k > start && text[k] === ')')
|
|
215
|
+
return { end: k, stop: k };
|
|
216
|
+
// A failure halts at `k`: the whitespace that stopped the walk, or `text.length`
|
|
217
|
+
// when the run reached the end. Either way `[start, k)` holds no `)`.
|
|
218
|
+
return { end: -1, stop: k };
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* The earliest `[label](dest)` (or, when `image`, ``) at or after
|
|
222
|
+
* `from`. A label runs from `[` to the first `]`; a link needs a non-empty label,
|
|
223
|
+
* an image admits an empty one. Linear: each `[` candidate reuses a forward-only
|
|
224
|
+
* `]` pointer and a destination memoized on that `]`, and `deadUntil` records a
|
|
225
|
+
* proven no-`)` span so later candidates starting inside it skip the scan.
|
|
226
|
+
*/
|
|
227
|
+
function findBracketed(text, from, image) {
|
|
228
|
+
let close = -1; // first `]` at an index the current candidate can still use
|
|
229
|
+
let destKey = -1; // the `]` the memoized destination belongs to
|
|
230
|
+
let destEnd = -1; // closing `)` for `destKey`, or -1
|
|
231
|
+
// Exclusive index up to which a scan proved no `)` exists; a destination start
|
|
232
|
+
// below it skips the scan. A start at or past it must still scan. Call-local.
|
|
233
|
+
let deadUntil = -1;
|
|
234
|
+
let bracket = text.indexOf('[', from);
|
|
235
|
+
while (bracket !== -1) {
|
|
236
|
+
// An image opens at the `!` immediately before its `[`.
|
|
237
|
+
const start = image ? bracket - 1 : bracket;
|
|
238
|
+
if (!image || (start >= from && text[start] === '!')) {
|
|
239
|
+
if (close < bracket + 1)
|
|
240
|
+
close = text.indexOf(']', bracket + 1);
|
|
241
|
+
if (close === -1)
|
|
242
|
+
return null;
|
|
243
|
+
const labelOk = image || close > bracket + 1;
|
|
244
|
+
if (labelOk && text[close + 1] === '(') {
|
|
245
|
+
if (destKey !== close) {
|
|
246
|
+
destKey = close;
|
|
247
|
+
const destStart = close + 2;
|
|
248
|
+
if (deadUntil !== -1 && destStart < deadUntil) {
|
|
249
|
+
// A destination inside a proven no-`)` span halts where that scan did.
|
|
250
|
+
destEnd = -1;
|
|
251
|
+
}
|
|
252
|
+
else {
|
|
253
|
+
const scan = scanDestination(text, destStart);
|
|
254
|
+
destEnd = scan.end;
|
|
255
|
+
if (scan.end === -1 && scan.stop > destStart)
|
|
256
|
+
deadUntil = scan.stop;
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
if (destEnd !== -1) {
|
|
260
|
+
return {
|
|
261
|
+
index: start,
|
|
262
|
+
length: destEnd + 1 - start,
|
|
263
|
+
content: text.slice(bracket + 1, close),
|
|
264
|
+
extra: text.slice(close + 2, destEnd),
|
|
265
|
+
};
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
bracket = text.indexOf('[', bracket + 1);
|
|
270
|
+
}
|
|
271
|
+
return null;
|
|
272
|
+
}
|
|
273
|
+
/** Inline code at or after `from`; the shared cursor is set immediately before the scan. */
|
|
274
|
+
function findCode(text, from) {
|
|
275
|
+
CODE_SPAN.lastIndex = from;
|
|
276
|
+
const match = CODE_SPAN.exec(text);
|
|
277
|
+
if (match === null)
|
|
278
|
+
return null;
|
|
279
|
+
return { kind: 'code', index: match.index, length: match[0].length, content: match[1] ?? '' };
|
|
280
|
+
}
|
|
281
|
+
/** Tags an emphasis span with its element kind, or passes `null` through. */
|
|
282
|
+
function asFound(kind, span) {
|
|
283
|
+
return span === null
|
|
284
|
+
? null
|
|
285
|
+
: { kind, index: span.index, length: span.length, content: span.content };
|
|
286
|
+
}
|
|
287
|
+
/**
|
|
288
|
+
* Inline constructs in tie-break order at a shared position: code, image, link,
|
|
289
|
+
* strong, emphasis — so `**` reads as one strong span, not two emphasis markers.
|
|
290
|
+
* Strong and emphasis are split per marker (`**`/`__`, `*`/`_`) so each marker
|
|
291
|
+
* caches its own exhaustion and the pass stays linear; star precedes underscore.
|
|
292
|
+
*/
|
|
293
|
+
const INLINE_RULES = [
|
|
294
|
+
{ kind: 'code', find: findCode },
|
|
295
|
+
{
|
|
296
|
+
kind: 'image',
|
|
297
|
+
find: (text, from) => {
|
|
298
|
+
const span = findBracketed(text, from, true);
|
|
299
|
+
return span === null ? null : { kind: 'image', ...span };
|
|
300
|
+
},
|
|
301
|
+
},
|
|
302
|
+
{
|
|
303
|
+
kind: 'link',
|
|
304
|
+
find: (text, from) => {
|
|
305
|
+
const span = findBracketed(text, from, false);
|
|
306
|
+
return span === null ? null : { kind: 'link', ...span };
|
|
307
|
+
},
|
|
308
|
+
},
|
|
309
|
+
{ kind: 'strong', find: (text, from) => asFound('strong', findEmphasisSpan(text, from, '**')) },
|
|
310
|
+
{ kind: 'strong', find: (text, from) => asFound('strong', findEmphasisSpan(text, from, '__')) },
|
|
311
|
+
{
|
|
312
|
+
kind: 'emphasis',
|
|
313
|
+
find: (text, from) => asFound('emphasis', findEmphasisSpan(text, from, '*')),
|
|
314
|
+
},
|
|
315
|
+
{
|
|
316
|
+
kind: 'emphasis',
|
|
317
|
+
find: (text, from) => asFound('emphasis', findEmphasisSpan(text, from, '_')),
|
|
318
|
+
},
|
|
319
|
+
];
|
|
320
|
+
/**
|
|
321
|
+
* Resolves inline markup to React nodes. A cursor walks the text once; each rule
|
|
322
|
+
* caches its earliest match at or after the cursor and is rescanned only when the
|
|
323
|
+
* cursor passes that match, so the rules' rescans cover disjoint forward ranges
|
|
324
|
+
* and the pass is linear. Plain runs are pushed as text children that React
|
|
325
|
+
* escapes; a link is admitted only when `safeHttpUrl` accepts it, and an image
|
|
326
|
+
* contributes its `alt` text alone.
|
|
327
|
+
*/
|
|
328
|
+
function renderInline(text, keyBase) {
|
|
329
|
+
const nodes = [];
|
|
330
|
+
// Per rule: `undefined` not yet scanned, `null` no match through the end
|
|
331
|
+
// (final), otherwise the pending match to reuse until the cursor passes it.
|
|
332
|
+
const cache = INLINE_RULES.map(() => undefined);
|
|
333
|
+
let pos = 0;
|
|
334
|
+
while (pos < text.length) {
|
|
335
|
+
let best = null;
|
|
336
|
+
for (const [r, rule] of INLINE_RULES.entries()) {
|
|
337
|
+
let hit = cache[r];
|
|
338
|
+
if (hit === undefined || (hit !== null && hit.index < pos)) {
|
|
339
|
+
hit = rule.find(text, pos);
|
|
340
|
+
cache[r] = hit;
|
|
341
|
+
}
|
|
342
|
+
if (hit !== null && (best === null || hit.index < best.index)) {
|
|
343
|
+
best = hit;
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
if (best === null) {
|
|
347
|
+
nodes.push(text.slice(pos));
|
|
348
|
+
break;
|
|
349
|
+
}
|
|
350
|
+
if (best.index > pos) {
|
|
351
|
+
nodes.push(text.slice(pos, best.index));
|
|
352
|
+
}
|
|
353
|
+
nodes.push(renderInlineMatch(best, `${keyBase}-${String(best.index)}`));
|
|
354
|
+
pos = best.index + best.length;
|
|
355
|
+
}
|
|
356
|
+
return nodes;
|
|
357
|
+
}
|
|
358
|
+
/**
|
|
359
|
+
* Test-only entry point to the inline scanner. Resolves inline markup to React
|
|
360
|
+
* nodes exactly as `renderInline` does, but without mounting or serializing a
|
|
361
|
+
* DOM, so a test can time the scan itself in isolation from render cost. Not part
|
|
362
|
+
* of the public API.
|
|
363
|
+
*/
|
|
364
|
+
export function scanInline(text) {
|
|
365
|
+
return renderInline(text, 'k');
|
|
366
|
+
}
|
|
367
|
+
function renderInlineMatch(found, key) {
|
|
368
|
+
switch (found.kind) {
|
|
369
|
+
case 'code':
|
|
370
|
+
return _jsx("code", { children: found.content }, key);
|
|
371
|
+
case 'image':
|
|
372
|
+
// Images are not rendered: the alt text is all that survives, and no URL
|
|
373
|
+
// is fetched.
|
|
374
|
+
return found.content;
|
|
375
|
+
case 'link': {
|
|
376
|
+
const url = safeHttpUrl(found.extra ?? '');
|
|
377
|
+
const children = renderInline(found.content, `${key}-t`);
|
|
378
|
+
if (url === undefined) {
|
|
379
|
+
// A destination that is not an absolute http(s) URL never becomes a live
|
|
380
|
+
// anchor: the display text is rendered as plain text.
|
|
381
|
+
return _jsx("span", { children: children }, key);
|
|
382
|
+
}
|
|
383
|
+
return (_jsx("a", { href: url, target: "_blank", rel: "noopener noreferrer external", children: children }, key));
|
|
384
|
+
}
|
|
385
|
+
case 'strong':
|
|
386
|
+
return _jsx("strong", { children: renderInline(found.content, `${key}-t`) }, key);
|
|
387
|
+
case 'emphasis':
|
|
388
|
+
return _jsx("em", { children: renderInline(found.content, `${key}-t`) }, key);
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
// -- block rendering ---------------------------------------------------------
|
|
392
|
+
/** The intrinsic element each heading level renders, keyed for a valid JSX tag. */
|
|
393
|
+
const HEADING_TAG = {
|
|
394
|
+
1: 'h1',
|
|
395
|
+
2: 'h2',
|
|
396
|
+
3: 'h3',
|
|
397
|
+
4: 'h4',
|
|
398
|
+
5: 'h5',
|
|
399
|
+
6: 'h6',
|
|
400
|
+
};
|
|
401
|
+
function renderBlock(block, key) {
|
|
402
|
+
switch (block.type) {
|
|
403
|
+
case 'heading': {
|
|
404
|
+
const Tag = HEADING_TAG[block.level];
|
|
405
|
+
return _jsx(Tag, { children: renderInline(block.text, key) }, key);
|
|
406
|
+
}
|
|
407
|
+
case 'paragraph':
|
|
408
|
+
return _jsx("p", { children: renderInline(block.text, key) }, key);
|
|
409
|
+
case 'code':
|
|
410
|
+
return _jsx(CodeBlock, { code: block.code, language: block.language }, key);
|
|
411
|
+
case 'list': {
|
|
412
|
+
const items = block.items.map((item, index) => {
|
|
413
|
+
const itemKey = `${key}-${String(index)}`;
|
|
414
|
+
return _jsx("li", { children: renderInline(item, itemKey) }, itemKey);
|
|
415
|
+
});
|
|
416
|
+
if (block.ordered) {
|
|
417
|
+
// A list that starts at 1 needs no `start`; any other first number is carried
|
|
418
|
+
// through so the marker sequence matches the source.
|
|
419
|
+
const start = block.start !== undefined && block.start !== 1 ? block.start : undefined;
|
|
420
|
+
return (_jsx("ol", { start: start, children: items }, key));
|
|
421
|
+
}
|
|
422
|
+
return _jsx("ul", { children: items }, key);
|
|
423
|
+
}
|
|
424
|
+
case 'blockquote':
|
|
425
|
+
return (_jsx("blockquote", { children: block.children.map((child, index) => renderBlock(child, `${key}-${String(index)}`)) }, key));
|
|
426
|
+
case 'thematicBreak':
|
|
427
|
+
return _jsx("hr", {}, key);
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
export function Markdown({ markdown, className }) {
|
|
431
|
+
const blocks = useMemo(() => parseMarkdown(markdown), [markdown]);
|
|
432
|
+
const proseClass = className === undefined ? 'tai-prose' : `tai-prose ${className}`;
|
|
433
|
+
return (_jsx("div", { className: proseClass, children: blocks.map((block, index) => renderBlock(block, `b${String(index)}`)) }));
|
|
434
|
+
}
|
|
435
|
+
//# sourceMappingURL=markdown.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../src/components/markdown.tsx"],"names":[],"mappings":"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"}
|
|
@@ -10,6 +10,8 @@ export interface TabsProps {
|
|
|
10
10
|
readonly value?: string;
|
|
11
11
|
readonly defaultValue?: string;
|
|
12
12
|
readonly onValueChange?: (value: string) => void;
|
|
13
|
+
/** `'manual'` commits on Enter/Space/click only — arrows just move focus. */
|
|
14
|
+
readonly activationMode?: 'automatic' | 'manual';
|
|
13
15
|
}
|
|
14
|
-
export declare function Tabs({ items, value, defaultValue, onValueChange }: TabsProps): import("react").JSX.Element;
|
|
16
|
+
export declare function Tabs({ items, value, defaultValue, onValueChange, activationMode, }: TabsProps): import("react").JSX.Element;
|
|
15
17
|
//# sourceMappingURL=tabs.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tabs.d.ts","sourceRoot":"","sources":["../../src/components/tabs.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,KAAK,EAAE,SAAS,OAAO,EAAE,CAAC;IACnC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CAClD;AAED,wBAAgB,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"tabs.d.ts","sourceRoot":"","sources":["../../src/components/tabs.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,KAAK,EAAE,SAAS,OAAO,EAAE,CAAC;IACnC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACjD,6EAA6E;IAC7E,QAAQ,CAAC,cAAc,CAAC,EAAE,WAAW,GAAG,QAAQ,CAAC;CAClD;AAED,wBAAgB,IAAI,CAAC,EACnB,KAAK,EACL,KAAK,EACL,YAAY,EACZ,aAAa,EACb,cAA4B,GAC7B,EAAE,SAAS,+BA4BX"}
|
package/dist/components/tabs.js
CHANGED
|
@@ -6,8 +6,8 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
6
6
|
* in the stylesheet, keyed off the `data-state` Radix stamps on each trigger.
|
|
7
7
|
*/
|
|
8
8
|
import * as RadixTabs from '@radix-ui/react-tabs';
|
|
9
|
-
export function Tabs({ items, value, defaultValue, onValueChange }) {
|
|
9
|
+
export function Tabs({ items, value, defaultValue, onValueChange, activationMode = 'automatic', }) {
|
|
10
10
|
const firstValue = items[0]?.value;
|
|
11
|
-
return (_jsxs(RadixTabs.Root, { value: value, defaultValue: defaultValue ?? firstValue, onValueChange: onValueChange, children: [_jsx(RadixTabs.List, { className: "tai-tablist", children: items.map((item) => (_jsx(RadixTabs.Trigger, { value: item.value, disabled: item.disabled, className: "tai-tab", children: item.label }, item.value))) }), items.map((item) => (_jsx(RadixTabs.Content, { value: item.value, className: "tai-tabpanel", children: item.content }, item.value)))] }));
|
|
11
|
+
return (_jsxs(RadixTabs.Root, { value: value, defaultValue: defaultValue ?? firstValue, onValueChange: onValueChange, activationMode: activationMode, children: [_jsx(RadixTabs.List, { className: "tai-tablist", children: items.map((item) => (_jsx(RadixTabs.Trigger, { value: item.value, disabled: item.disabled, className: "tai-tab", children: item.label }, item.value))) }), items.map((item) => (_jsx(RadixTabs.Content, { value: item.value, className: "tai-tabpanel", children: item.content }, item.value)))] }));
|
|
12
12
|
}
|
|
13
13
|
//# sourceMappingURL=tabs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tabs.js","sourceRoot":"","sources":["../../src/components/tabs.tsx"],"names":[],"mappings":";AAAA;;;;;GAKG;AACH,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"tabs.js","sourceRoot":"","sources":["../../src/components/tabs.tsx"],"names":[],"mappings":";AAAA;;;;;GAKG;AACH,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAC;AAmBlD,MAAM,UAAU,IAAI,CAAC,EACnB,KAAK,EACL,KAAK,EACL,YAAY,EACZ,aAAa,EACb,cAAc,GAAG,WAAW,GAClB;IACV,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;IACnC,OAAO,CACL,MAAC,SAAS,CAAC,IAAI,IACb,KAAK,EAAE,KAAK,EACZ,YAAY,EAAE,YAAY,IAAI,UAAU,EACxC,aAAa,EAAE,aAAa,EAC5B,cAAc,EAAE,cAAc,aAE9B,KAAC,SAAS,CAAC,IAAI,IAAC,SAAS,EAAC,aAAa,YACpC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACnB,KAAC,SAAS,CAAC,OAAO,IAEhB,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,SAAS,EAAC,SAAS,YAElB,IAAI,CAAC,KAAK,IALN,IAAI,CAAC,KAAK,CAMG,CACrB,CAAC,GACa,EAChB,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACnB,KAAC,SAAS,CAAC,OAAO,IAAkB,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,SAAS,EAAC,cAAc,YAC5E,IAAI,CAAC,OAAO,IADS,IAAI,CAAC,KAAK,CAEd,CACrB,CAAC,IACa,CAClB,CAAC;AACJ,CAAC"}
|