vantage-md 0.6.2 → 0.7.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/CHANGELOG.md +211 -0
- package/README.md +3 -2
- package/dist/index.cjs +207 -25
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +76 -8
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.ts +76 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +202 -26
- package/dist/index.js.map +1 -1
- package/dist/prose.css +1 -1
- package/dist/react.cjs +156 -27
- package/dist/react.cjs.map +1 -1
- package/dist/react.d.cts +6 -6
- package/dist/react.d.cts.map +1 -1
- package/dist/react.d.ts +6 -6
- package/dist/react.d.ts.map +1 -1
- package/dist/react.js +156 -27
- package/dist/react.js.map +1 -1
- package/package.json +3 -2
package/dist/react.d.cts
CHANGED
|
@@ -75,7 +75,7 @@ type DocStatus = (typeof DOC_STATUSES)[number];
|
|
|
75
75
|
/** Every key this build knows under `vantage:`. Closed. */
|
|
76
76
|
export declare const VANTAGE_FRONTMATTER_KEYS: readonly ["status-chip"];
|
|
77
77
|
/**
|
|
78
|
-
* Which tone each status borrows its
|
|
78
|
+
* Which tone each status borrows its colors from.
|
|
79
79
|
*
|
|
80
80
|
* The chip has no palette of its own: it reuses the tone chips
|
|
81
81
|
* (`.vantage-chip--<tone>` in `styles/directives.css`), which is also what makes
|
|
@@ -1178,7 +1178,7 @@ interface RenderOptions {
|
|
|
1178
1178
|
/** Parse and strip frontmatter (default: true) */
|
|
1179
1179
|
frontmatter?: boolean;
|
|
1180
1180
|
/**
|
|
1181
|
-
* The body's mdast, already parsed — an
|
|
1181
|
+
* The body's mdast, already parsed — an optimization, not a second input.
|
|
1182
1182
|
*
|
|
1183
1183
|
* Parsing is the most expensive step in this function: measured over
|
|
1184
1184
|
* `docs/design/`, `remark-parse` with GFM costs about twice what the whole
|
|
@@ -2111,7 +2111,7 @@ interface PipelineOptions {
|
|
|
2111
2111
|
highlight?: boolean;
|
|
2112
2112
|
/** `data-source-line` attributes for line anchors (default: true) */
|
|
2113
2113
|
sourceLines?: boolean;
|
|
2114
|
-
/** XSS
|
|
2114
|
+
/** XSS sanitization (default: true) */
|
|
2115
2115
|
sanitize?: boolean;
|
|
2116
2116
|
/**
|
|
2117
2117
|
* Lines the frontmatter consumed, added to every emitted line number so
|
|
@@ -2172,7 +2172,7 @@ export declare function scrollToLineAnchor(container: HTMLElement, hash: string)
|
|
|
2172
2172
|
*
|
|
2173
2173
|
* Split out from scrollToLineAnchor.ts so that non-browser consumers — the
|
|
2174
2174
|
* `vantage-check` CLI, which validates `#L42` links against the file on disk —
|
|
2175
|
-
* can share the *same* syntax the viewer
|
|
2175
|
+
* can share the *same* syntax the viewer honors instead of reimplementing it
|
|
2176
2176
|
* and drifting.
|
|
2177
2177
|
*/
|
|
2178
2178
|
/**
|
|
@@ -2196,7 +2196,7 @@ type FrontmatterFormat = "yaml" | "toml" | "none";
|
|
|
2196
2196
|
*
|
|
2197
2197
|
* The parser deliberately never throws: a document whose frontmatter is broken
|
|
2198
2198
|
* still renders, with the block treated as body text. That is the right
|
|
2199
|
-
*
|
|
2199
|
+
* behavior for a viewer and the wrong one for an author, who gets no signal
|
|
2200
2200
|
* at all — so the reason is recorded here for anything that wants to report it
|
|
2201
2201
|
* (`vantage-check` does; see its frontmatter rules).
|
|
2202
2202
|
*
|
|
@@ -2250,7 +2250,7 @@ type Schema = typeof defaultSchema;
|
|
|
2250
2250
|
* `false` — comments are not elements, so `tagNames` has nothing to do with it.
|
|
2251
2251
|
* `rehypeVantageDirectives` relies on that deletion: it consumes a
|
|
2252
2252
|
* `<!-- vantage: … -->` comment into attributes and deliberately leaves the node
|
|
2253
|
-
* for the
|
|
2253
|
+
* for the sanitizer. Turning the switch on readmits every directive comment —
|
|
2254
2254
|
* valid and malformed alike — into the rendered HTML, which breaks the carrier's
|
|
2255
2255
|
* whole premise. `vantageDirectives.test.ts` ("leaves no comment in the rendered
|
|
2256
2256
|
* markup") is the guard.
|
package/dist/react.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react.d.cts","names":[],"sources":["../src/MarkdownViewer.tsx","../src/useLineAnchor.ts","../src/MermaidDiagram.tsx","../src/FrontmatterDisplay.tsx","../src/vantageDirectives.ts","../src/vantageFrontmatter.ts","../src/DocumentStatusChip.tsx","../../../node_modules/@types/unist/index.d.ts","../../../node_modules/@types/mdast/index.d.ts","../src/renderMarkdown.ts","../../../node_modules/@types/hast/index.d.ts","../src/rehypeSourceLines.ts","../src/pipeline.ts","../src/scrollToLineAnchor.ts","../src/lineAnchor.ts","../src/frontmatter.ts","../src/sanitize.ts","../src/renderMermaidBlocks.ts","../src/resolveLinks.ts"],"x_google_ignoreList":[7,8,10],"mappings":";;;;UAkBiB;;EAEf;;EAEA;;EAEA;;EAEA;;EAEA;;EAEA;;EAEA,cAAc;;qBA0MH,gBAAc,MAAA,qBAAA;;;;;;;;;;;;;;wBCzNX,cACd,cAAc,UAAU,qBACxB;;;;;
|
|
1
|
+
{"version":3,"file":"react.d.cts","names":[],"sources":["../src/MarkdownViewer.tsx","../src/useLineAnchor.ts","../src/MermaidDiagram.tsx","../src/FrontmatterDisplay.tsx","../src/vantageDirectives.ts","../src/vantageFrontmatter.ts","../src/DocumentStatusChip.tsx","../../../node_modules/@types/unist/index.d.ts","../../../node_modules/@types/mdast/index.d.ts","../src/renderMarkdown.ts","../../../node_modules/@types/hast/index.d.ts","../src/rehypeSourceLines.ts","../src/pipeline.ts","../src/scrollToLineAnchor.ts","../src/lineAnchor.ts","../src/frontmatter.ts","../src/sanitize.ts","../src/renderMermaidBlocks.ts","../src/resolveLinks.ts"],"x_google_ignoreList":[7,8,10],"mappings":"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A;;EAEA;;EAEA;;;;;;;;;;;;;;;;;;;EAmBA,OAAO;;UAGQ;;EAEf;;EAEA,aAAa;;EAEb;;;;;;;;;;;;;;;;;;wBAmBoB,eACpB,iBACA,UAAS,gBACR,QAAQ;;;;;;;;;;;;;;;;;;;;;;UCtDM,aAAa;;;;UAKb;EACb;EACA,QAAQ;EACR;EACA,SAAS;EACT,gBAAgB;EAChB,YAAY;EACZ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,UAAU;EACV;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,eAAe;EACf;EACA,kBAAkB;EAClB;EACA;EACA,iBAAiB;EACjB;EACA;EACA,aAAa;EACb;EACA;EACA;EACA;EACA;EACA;EACA,iBAAiB;EACjB;EACA;EACA;EACA;EACA;EACA;EACA,WAAW;EACX;EACA;EACA;EACA;EACA;EACA;EACA,sBAAsB;EACtB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,eAAe;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,WAAW;EACX;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,YAAY;EACZ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,eAAe;EACf,SAAS;EACT;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,cAAc;EACd;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,KAAK;EACL,KAAK;EACL,YAAY;EACZ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,UAAU;EACV;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,UAAU;EACV,YAAY;EACZ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,WAAW;EACX,UAAU;EACV;EACA,WAAW;EACX;EACA;EACA;EACA;EACA;EACA,eAAe;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,OAAO;EACP;EACA;EACA;EACA;EACA;EACA;EACA;EACA,OAAO;EACP;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,oBAAoB;EACpB;EACA;EACA;EACA;EACA;EACA;EACA,MAAM;EACN;EACA;EACA;EACA;EACA,qBAAqB;EACrB,mBAAmB;EACnB,gBAAgB;EAChB,kBAAkB;EAClB;EACA;EACA;EACA;EACA,eAAe;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,UAAU;EACV;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,kBAAkB;EAClB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,iBAAiB;EACjB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,SAAS;EACT;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;GACC,sEAAsE;;;;;;;;;KAW/D,iBAAiB,wBAAwB;;;;;;UAOpC;EACb,SAAS;EACT,SAAS;EACT,MAAM;;;;;;;;KASE,cAAc,qBAAqB;;;;;;;;;UAU9B;EACb,SAAS;EACT,SAAS;EACT,SAAS;EACT,MAAM;;;;;;;;;;;;;;;;UAsDO,aAAa;;;;EAI1B,OAAO;;;;;;;;;UAUM,gBAAgB;;;;EAI7B;;;;;;;;;UAUa,eAAe;;;;EAI5B,UAAU;;;;;;UAQG,gBAAgB;;;;EAI7B;;;;EAIA,OAAO;;;;;UAMM,oBAAoB;;;;UAKpB,gBAAgB;;;;EAI7B;;;;EAIA,OAAO;;;;;UAMM,oBAAoB;;;;UAKpB,gBAAgB;;;;EAI7B;;;;EAIA;;;;EAIA,YAAY;;;;EAIZ,UAAU;;;;;EAKV,UAAU;;;;EAIV,OAAO;;;;;UAMM,oBAAoB;;;;;;;;UASpB,aAAa;;;;EAI1B;;;;EAIA,UAAU;;;;EAIV,OAAO;;;;;UAMM,iBAAiB;;;;UAKjB,aAAa;;;;EAI1B;;;;EAIA,OAAO;;;;;UAMM,iBAAiB;;;UCl3BjB;;;;;;;EAOf;;cAkBI,mBAAmB,QAAQ,4BAA4B;;;UCf5C;;EAEf;;EAEA;;EAEA;;EAEA;;EAEA;;;;;;;EAOA;;UAGe;EACf,eAAe;EACf,eAAe;;;;;;;;wBASD,mBACd,UAAS,kBACR;;;;;;;;;;;;;wBA+Ea,cAAc,UAAS,kBAAuB;;;;;;;;;;;;wBCrJ9C,0BAA0B,WAAW;;;;;;;;wBAarC,mBACd,WAAW,aACX;;;;;;;;;;;;;;;;wBCfc,gBACd;EACG;EAAe;;;;;;;;KCRR;;;;;;;;;;;;;;;;UAiBK;EACf;;EAEA;EACA;EACA;EACA;;UAGe;EACf,aAAa;EACb;EACA,QAAQ;;;;;;;;;;EAUR;;;;;;EAMA,UAAU;;;;;;wBAOI,iBAAiB,kBAAkB;;;KC3C9C,gBAAgB;;;;;;;;;;;;;qBAsLR,gBAAgB;;;;;;;;;;;;UC1LZ;;EAEf;;EAEA,WAAW,cAAc,OAAO;;;;;;;;;;;;;;;;;;;wBAoBZ,oBACpB,WAAW,aACX,UAAS,uBACR;;;;;;;;;;UChCc;;EAEf;;;;;;EAMA,YAAY,cAAc;;EAE1B;;;;;;;;;;;;;;;;;;;;;;;;;;wBA2Bc,aACd,cACA,UAAS"}
|
package/dist/react.d.ts
CHANGED
|
@@ -75,7 +75,7 @@ type DocStatus = (typeof DOC_STATUSES)[number];
|
|
|
75
75
|
/** Every key this build knows under `vantage:`. Closed. */
|
|
76
76
|
export declare const VANTAGE_FRONTMATTER_KEYS: readonly ["status-chip"];
|
|
77
77
|
/**
|
|
78
|
-
* Which tone each status borrows its
|
|
78
|
+
* Which tone each status borrows its colors from.
|
|
79
79
|
*
|
|
80
80
|
* The chip has no palette of its own: it reuses the tone chips
|
|
81
81
|
* (`.vantage-chip--<tone>` in `styles/directives.css`), which is also what makes
|
|
@@ -1178,7 +1178,7 @@ interface RenderOptions {
|
|
|
1178
1178
|
/** Parse and strip frontmatter (default: true) */
|
|
1179
1179
|
frontmatter?: boolean;
|
|
1180
1180
|
/**
|
|
1181
|
-
* The body's mdast, already parsed — an
|
|
1181
|
+
* The body's mdast, already parsed — an optimization, not a second input.
|
|
1182
1182
|
*
|
|
1183
1183
|
* Parsing is the most expensive step in this function: measured over
|
|
1184
1184
|
* `docs/design/`, `remark-parse` with GFM costs about twice what the whole
|
|
@@ -2111,7 +2111,7 @@ interface PipelineOptions {
|
|
|
2111
2111
|
highlight?: boolean;
|
|
2112
2112
|
/** `data-source-line` attributes for line anchors (default: true) */
|
|
2113
2113
|
sourceLines?: boolean;
|
|
2114
|
-
/** XSS
|
|
2114
|
+
/** XSS sanitization (default: true) */
|
|
2115
2115
|
sanitize?: boolean;
|
|
2116
2116
|
/**
|
|
2117
2117
|
* Lines the frontmatter consumed, added to every emitted line number so
|
|
@@ -2172,7 +2172,7 @@ export declare function scrollToLineAnchor(container: HTMLElement, hash: string)
|
|
|
2172
2172
|
*
|
|
2173
2173
|
* Split out from scrollToLineAnchor.ts so that non-browser consumers — the
|
|
2174
2174
|
* `vantage-check` CLI, which validates `#L42` links against the file on disk —
|
|
2175
|
-
* can share the *same* syntax the viewer
|
|
2175
|
+
* can share the *same* syntax the viewer honors instead of reimplementing it
|
|
2176
2176
|
* and drifting.
|
|
2177
2177
|
*/
|
|
2178
2178
|
/**
|
|
@@ -2196,7 +2196,7 @@ type FrontmatterFormat = "yaml" | "toml" | "none";
|
|
|
2196
2196
|
*
|
|
2197
2197
|
* The parser deliberately never throws: a document whose frontmatter is broken
|
|
2198
2198
|
* still renders, with the block treated as body text. That is the right
|
|
2199
|
-
*
|
|
2199
|
+
* behavior for a viewer and the wrong one for an author, who gets no signal
|
|
2200
2200
|
* at all — so the reason is recorded here for anything that wants to report it
|
|
2201
2201
|
* (`vantage-check` does; see its frontmatter rules).
|
|
2202
2202
|
*
|
|
@@ -2250,7 +2250,7 @@ type Schema = typeof defaultSchema;
|
|
|
2250
2250
|
* `false` — comments are not elements, so `tagNames` has nothing to do with it.
|
|
2251
2251
|
* `rehypeVantageDirectives` relies on that deletion: it consumes a
|
|
2252
2252
|
* `<!-- vantage: … -->` comment into attributes and deliberately leaves the node
|
|
2253
|
-
* for the
|
|
2253
|
+
* for the sanitizer. Turning the switch on readmits every directive comment —
|
|
2254
2254
|
* valid and malformed alike — into the rendered HTML, which breaks the carrier's
|
|
2255
2255
|
* whole premise. `vantageDirectives.test.ts` ("leaves no comment in the rendered
|
|
2256
2256
|
* markup") is the guard.
|
package/dist/react.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react.d.ts","names":[],"sources":["../src/MarkdownViewer.tsx","../src/useLineAnchor.ts","../src/MermaidDiagram.tsx","../src/FrontmatterDisplay.tsx","../src/vantageDirectives.ts","../src/vantageFrontmatter.ts","../src/DocumentStatusChip.tsx","../../../node_modules/@types/unist/index.d.ts","../../../node_modules/@types/mdast/index.d.ts","../src/renderMarkdown.ts","../../../node_modules/@types/hast/index.d.ts","../src/rehypeSourceLines.ts","../src/pipeline.ts","../src/scrollToLineAnchor.ts","../src/lineAnchor.ts","../src/frontmatter.ts","../src/sanitize.ts","../src/renderMermaidBlocks.ts","../src/resolveLinks.ts"],"x_google_ignoreList":[7,8,10],"mappings":";;;;UAkBiB;;EAEf;;EAEA;;EAEA;;EAEA;;EAEA;;EAEA;;EAEA,cAAc;;qBA0MH,gBAAc,MAAA,qBAAA;;;;;;;;;;;;;;wBCzNX,cACd,cAAc,UAAU,qBACxB;;;;;
|
|
1
|
+
{"version":3,"file":"react.d.ts","names":[],"sources":["../src/MarkdownViewer.tsx","../src/useLineAnchor.ts","../src/MermaidDiagram.tsx","../src/FrontmatterDisplay.tsx","../src/vantageDirectives.ts","../src/vantageFrontmatter.ts","../src/DocumentStatusChip.tsx","../../../node_modules/@types/unist/index.d.ts","../../../node_modules/@types/mdast/index.d.ts","../src/renderMarkdown.ts","../../../node_modules/@types/hast/index.d.ts","../src/rehypeSourceLines.ts","../src/pipeline.ts","../src/scrollToLineAnchor.ts","../src/lineAnchor.ts","../src/frontmatter.ts","../src/sanitize.ts","../src/renderMermaidBlocks.ts","../src/resolveLinks.ts"],"x_google_ignoreList":[7,8,10],"mappings":"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A;;EAEA;;EAEA;;;;;;;;;;;;;;;;;;;EAmBA,OAAO;;UAGQ;;EAEf;;EAEA,aAAa;;EAEb;;;;;;;;;;;;;;;;;;wBAmBoB,eACpB,iBACA,UAAS,gBACR,QAAQ;;;;;;;;;;;;;;;;;;;;;;UCtDM,aAAa;;;;UAKb;EACb;EACA,QAAQ;EACR;EACA,SAAS;EACT,gBAAgB;EAChB,YAAY;EACZ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,UAAU;EACV;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,eAAe;EACf;EACA,kBAAkB;EAClB;EACA;EACA,iBAAiB;EACjB;EACA;EACA,aAAa;EACb;EACA;EACA;EACA;EACA;EACA;EACA,iBAAiB;EACjB;EACA;EACA;EACA;EACA;EACA;EACA,WAAW;EACX;EACA;EACA;EACA;EACA;EACA;EACA,sBAAsB;EACtB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,eAAe;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,WAAW;EACX;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,YAAY;EACZ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,eAAe;EACf,SAAS;EACT;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,cAAc;EACd;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,KAAK;EACL,KAAK;EACL,YAAY;EACZ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,UAAU;EACV;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,UAAU;EACV,YAAY;EACZ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,WAAW;EACX,UAAU;EACV;EACA,WAAW;EACX;EACA;EACA;EACA;EACA;EACA,eAAe;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,OAAO;EACP;EACA;EACA;EACA;EACA;EACA;EACA;EACA,OAAO;EACP;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,oBAAoB;EACpB;EACA;EACA;EACA;EACA;EACA;EACA,MAAM;EACN;EACA;EACA;EACA;EACA,qBAAqB;EACrB,mBAAmB;EACnB,gBAAgB;EAChB,kBAAkB;EAClB;EACA;EACA;EACA;EACA,eAAe;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,UAAU;EACV;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,kBAAkB;EAClB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,iBAAiB;EACjB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,SAAS;EACT;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;GACC,sEAAsE;;;;;;;;;KAW/D,iBAAiB,wBAAwB;;;;;;UAOpC;EACb,SAAS;EACT,SAAS;EACT,MAAM;;;;;;;;KASE,cAAc,qBAAqB;;;;;;;;;UAU9B;EACb,SAAS;EACT,SAAS;EACT,SAAS;EACT,MAAM;;;;;;;;;;;;;;;;UAsDO,aAAa;;;;EAI1B,OAAO;;;;;;;;;UAUM,gBAAgB;;;;EAI7B;;;;;;;;;UAUa,eAAe;;;;EAI5B,UAAU;;;;;;UAQG,gBAAgB;;;;EAI7B;;;;EAIA,OAAO;;;;;UAMM,oBAAoB;;;;UAKpB,gBAAgB;;;;EAI7B;;;;EAIA,OAAO;;;;;UAMM,oBAAoB;;;;UAKpB,gBAAgB;;;;EAI7B;;;;EAIA;;;;EAIA,YAAY;;;;EAIZ,UAAU;;;;;EAKV,UAAU;;;;EAIV,OAAO;;;;;UAMM,oBAAoB;;;;;;;;UASpB,aAAa;;;;EAI1B;;;;EAIA,UAAU;;;;EAIV,OAAO;;;;;UAMM,iBAAiB;;;;UAKjB,aAAa;;;;EAI1B;;;;EAIA,OAAO;;;;;UAMM,iBAAiB;;;UCl3BjB;;;;;;;EAOf;;cAkBI,mBAAmB,QAAQ,4BAA4B;;;UCf5C;;EAEf;;EAEA;;EAEA;;EAEA;;EAEA;;;;;;;EAOA;;UAGe;EACf,eAAe;EACf,eAAe;;;;;;;;wBASD,mBACd,UAAS,kBACR;;;;;;;;;;;;;wBA+Ea,cAAc,UAAS,kBAAuB;;;;;;;;;;;;wBCrJ9C,0BAA0B,WAAW;;;;;;;;wBAarC,mBACd,WAAW,aACX;;;;;;;;;;;;;;;;wBCfc,gBACd;EACG;EAAe;;;;;;;;KCRR;;;;;;;;;;;;;;;;UAiBK;EACf;;EAEA;EACA;EACA;EACA;;UAGe;EACf,aAAa;EACb;EACA,QAAQ;;;;;;;;;;EAUR;;;;;;EAMA,UAAU;;;;;;wBAOI,iBAAiB,kBAAkB;;;KC3C9C,gBAAgB;;;;;;;;;;;;;qBAsLR,gBAAgB;;;;;;;;;;;;UC1LZ;;EAEf;;EAEA,WAAW,cAAc,OAAO;;;;;;;;;;;;;;;;;;;wBAoBZ,oBACpB,WAAW,aACX,UAAS,uBACR;;;;;;;;;;UChCc;;EAEf;;;;;;EAMA,YAAY,cAAc;;EAE1B;;;;;;;;;;;;;;;;;;;;;;;;;;wBA2Bc,aACd,cACA,UAAS"}
|
package/dist/react.js
CHANGED
|
@@ -85,14 +85,14 @@ const rehypeSourceLines = (options) => {
|
|
|
85
85
|
* `remark-gfm` does not implement alerts, so until this plugin existed a
|
|
86
86
|
* `> [!WARNING]` rendered as an ordinary blockquote with the literal marker
|
|
87
87
|
* visible as its first words. Worse than merely unstyled: `@tailwindcss/typography`
|
|
88
|
-
*
|
|
88
|
+
* italicizes blockquotes and draws `open-quote`/`close-quote` around the first
|
|
89
89
|
* paragraph, so a callout came out as an italic *quotation* whose opening words
|
|
90
90
|
* were `"[!WARNING]`. That was the "Known gaps" entry in
|
|
91
91
|
* `docs/reference/inline-markup.md` and OQ-10, filed rather than fixed, while
|
|
92
92
|
* `styleGuide.ts` went on telling every agent to write them.
|
|
93
93
|
*
|
|
94
94
|
* The tokens are deliberately the ones the `tone` vocabulary already resolves —
|
|
95
|
-
* an alert *is* the six-
|
|
95
|
+
* an alert *is* the six-color light/dark treatment `tone` shipped, which is
|
|
96
96
|
* exactly what the gap entry said whoever fixed this should do rather than
|
|
97
97
|
* building a second palette. `[!WARNING]` and `<!-- vantage: block tone=warning -->`
|
|
98
98
|
* therefore agree by construction, and adding a theme still touches one
|
|
@@ -106,7 +106,7 @@ const rehypeSourceLines = (options) => {
|
|
|
106
106
|
*
|
|
107
107
|
* ## What it does not do
|
|
108
108
|
*
|
|
109
|
-
* It does not touch a blockquote that carries no marker, and an
|
|
109
|
+
* It does not touch a blockquote that carries no marker, and an unrecognized
|
|
110
110
|
* marker (`[!HINT]`) is left exactly as it was — visible literal text, which is
|
|
111
111
|
* the honest rendering of something GitHub also would not style. Silently
|
|
112
112
|
* swallowing it would hide a typo that reads as a callout on neither renderer.
|
|
@@ -328,7 +328,7 @@ VANTAGE_ANCHOR_TARGETS.filter((tag) => tag !== "pre" && tag !== "table");
|
|
|
328
328
|
* file, and requiring it everywhere would fire on every single-doc sketch.
|
|
329
329
|
*
|
|
330
330
|
* Three consumers read it from here and none of them may re-spell it: the
|
|
331
|
-
* plugin that stamps the anchor, the
|
|
331
|
+
* plugin that stamps the anchor, the sanitizer that allowlists the value, and
|
|
332
332
|
* the checker's `vantage/oq-id-format`. A fourth copy is how the checker starts
|
|
333
333
|
* calling a working anchor malformed.
|
|
334
334
|
*/
|
|
@@ -486,7 +486,7 @@ const HEADING_DEPTHS = /* @__PURE__ */ new Map([
|
|
|
486
486
|
/**
|
|
487
487
|
* Key → hast property, for the keys that treat a whole run.
|
|
488
488
|
*
|
|
489
|
-
* A camelCase hast property
|
|
489
|
+
* A camelCase hast property serializes to the kebab-case attribute, so
|
|
490
490
|
* `dataVantageTone` is `data-vantage-tone` in every renderer.
|
|
491
491
|
*
|
|
492
492
|
* `tone` and `emphasis` describe what a section *is* and how loud it is, so
|
|
@@ -521,11 +521,11 @@ const LEANING_PROPERTY = "dataVantageLeaning";
|
|
|
521
521
|
* The id, carried as a `data-` attribute rather than written straight to `id`.
|
|
522
522
|
*
|
|
523
523
|
* This plugin runs *before* `rehypeSanitize` — it has to, it reads comments and
|
|
524
|
-
* the
|
|
524
|
+
* the sanitizer deletes them — and the sanitizer's default schema clobbers `id`
|
|
525
525
|
* with the prefix `user-content-`. A bare `id` set here would reach the page as
|
|
526
526
|
* `user-content-OQ-4`, every `#OQ-4` link in every document would land nowhere,
|
|
527
527
|
* and nothing would error. `rehypeVantageAnchors` promotes this to a real `id`
|
|
528
|
-
* on the other side of the
|
|
528
|
+
* on the other side of the sanitizer, which is the same reason `rehypeSlug` is
|
|
529
529
|
* registered there (`pipeline.ts`).
|
|
530
530
|
*/
|
|
531
531
|
const OQ_ID_PROPERTY = "dataVantageOqId";
|
|
@@ -557,7 +557,7 @@ const MAX_LEANING = 500;
|
|
|
557
557
|
* A whitespace-only `text` node always does — measured, with or without a blank
|
|
558
558
|
* line in the source. Comments do too, and an unrelated `<!-- TODO -->` must not
|
|
559
559
|
* break the chain: it is invisible in every renderer and deleted by the
|
|
560
|
-
*
|
|
560
|
+
* sanitizer, so letting it change a directive's meaning would make behavior
|
|
561
561
|
* depend on something no reader can see.
|
|
562
562
|
*/
|
|
563
563
|
function isSkippable(node) {
|
|
@@ -609,7 +609,7 @@ function accepts(name, key, value) {
|
|
|
609
609
|
* two stamped paragraphs — and the section's one continuous vertical rule is
|
|
610
610
|
* drawn per member, so an unstamped member is a hole the height of the block
|
|
611
611
|
* plus its margins. Measured over the real stylesheet: 44px for a one-line
|
|
612
|
-
* `<figure>`, against the 40px a
|
|
612
|
+
* `<figure>`, against the 40px a neighbor can bleed upward, and arbitrarily
|
|
613
613
|
* large for anything taller. `collapsed=true` had the same shape of bug the
|
|
614
614
|
* other way round — it hid the paragraphs and left the figure on the page.
|
|
615
615
|
*
|
|
@@ -791,7 +791,7 @@ function classNames(node) {
|
|
|
791
791
|
* A `<pre>` `rehype-katex` will replace — its own condition, restated.
|
|
792
792
|
*
|
|
793
793
|
* `language-math` is the only class to test: `rehype-katex` keys the
|
|
794
|
-
* pre-as-scope branch on it, and the
|
|
794
|
+
* pre-as-scope branch on it, and the sanitizer strips the `math-display` that
|
|
795
795
|
* `remark-math` also emits (measured — a stamped fence arrives here with
|
|
796
796
|
* `className: ["language-math"]` alone).
|
|
797
797
|
*/
|
|
@@ -945,7 +945,7 @@ const COLLAPSE_GROUP_ID = /^[0-9]+$/;
|
|
|
945
945
|
* `false` — comments are not elements, so `tagNames` has nothing to do with it.
|
|
946
946
|
* `rehypeVantageDirectives` relies on that deletion: it consumes a
|
|
947
947
|
* `<!-- vantage: … -->` comment into attributes and deliberately leaves the node
|
|
948
|
-
* for the
|
|
948
|
+
* for the sanitizer. Turning the switch on readmits every directive comment —
|
|
949
949
|
* valid and malformed alike — into the rendered HTML, which breaks the carrier's
|
|
950
950
|
* whole premise. `vantageDirectives.test.ts` ("leaves no comment in the rendered
|
|
951
951
|
* markup") is the guard.
|
|
@@ -1172,6 +1172,49 @@ function currentMermaidTheme() {
|
|
|
1172
1172
|
return typeof document !== "undefined" && document.documentElement.classList.contains("dark") ? "dark" : "default";
|
|
1173
1173
|
}
|
|
1174
1174
|
/**
|
|
1175
|
+
* The attribute on `<html>` naming the active color theme. Absent means the
|
|
1176
|
+
* built-in look. The app sets it only once the theme's stylesheet has loaded,
|
|
1177
|
+
* so a reader of this attribute can trust the theme's variables are in effect.
|
|
1178
|
+
*/
|
|
1179
|
+
const COLOR_THEME_ATTRIBUTE = "data-vantage-theme";
|
|
1180
|
+
/**
|
|
1181
|
+
* The attribute on `<html>` saying where the active theme came from: `"user"`
|
|
1182
|
+
* for a stylesheet in the reader's themes directory, `"built-in"` for one the
|
|
1183
|
+
* app ships. Set with {@link COLOR_THEME_ATTRIBUTE}, and absent with it.
|
|
1184
|
+
*
|
|
1185
|
+
* It exists because an id alone is not a palette. A user theme may share a
|
|
1186
|
+
* built-in's id — that is how a reader tweaks one — and the app applies the
|
|
1187
|
+
* stored built-in synchronously, then swaps in the same-id user file once
|
|
1188
|
+
* /api/themes answers. Keyed on the id, the diagrams drawn in between kept the
|
|
1189
|
+
* built-in's colors: the key did not change, so neither the cache nor
|
|
1190
|
+
* `useSyncExternalStore` saw a reason to redraw.
|
|
1191
|
+
*/
|
|
1192
|
+
const COLOR_THEME_SOURCE_ATTRIBUTE = "data-vantage-theme-source";
|
|
1193
|
+
/** The active color theme's id, or `""` for the built-in look. */
|
|
1194
|
+
function currentColorTheme() {
|
|
1195
|
+
if (typeof document === "undefined") return "";
|
|
1196
|
+
return document.documentElement.getAttribute("data-vantage-theme") ?? "";
|
|
1197
|
+
}
|
|
1198
|
+
/**
|
|
1199
|
+
* Everything a rendered diagram's colors depend on, as one string: the
|
|
1200
|
+
* light/dark mode, plus the color theme when one is active.
|
|
1201
|
+
*
|
|
1202
|
+
* A diagram is baked at render time, so anything that changes its colors has
|
|
1203
|
+
* to change this key — it is what the SVG cache and the loader's "configured
|
|
1204
|
+
* for" check compare. Under the built-in look it is exactly the mode name,
|
|
1205
|
+
* which is what both keyed on before color themes existed.
|
|
1206
|
+
*/
|
|
1207
|
+
function currentMermaidPalette() {
|
|
1208
|
+
const theme = currentColorTheme();
|
|
1209
|
+
if (!theme) return currentMermaidTheme();
|
|
1210
|
+
const user = document.documentElement.getAttribute(COLOR_THEME_SOURCE_ATTRIBUTE) === "user";
|
|
1211
|
+
return `${currentMermaidTheme()} ${theme}${user ? " user" : ""}`;
|
|
1212
|
+
}
|
|
1213
|
+
/** The mermaid theme name a palette key was built from. */
|
|
1214
|
+
function mermaidThemeOf(palette) {
|
|
1215
|
+
return palette.startsWith("dark") ? "dark" : "default";
|
|
1216
|
+
}
|
|
1217
|
+
/**
|
|
1175
1218
|
* Theme variables per theme. Mermaid derives most of its palette from these, so
|
|
1176
1219
|
* the set is deliberately small: the surfaces, the ink, and the lines.
|
|
1177
1220
|
*/
|
|
@@ -1195,27 +1238,108 @@ const THEME_VARIABLES = {
|
|
|
1195
1238
|
edgeLabelBackground: "#f8fafc"
|
|
1196
1239
|
}
|
|
1197
1240
|
};
|
|
1241
|
+
/**
|
|
1242
|
+
* Where each variable comes from under a color theme: the palette step the
|
|
1243
|
+
* built-in value was chosen from. The hex above IS that step in Tailwind's own
|
|
1244
|
+
* palette, so reading the step back out of the page gives the same diagram
|
|
1245
|
+
* under the built-in look and the theme's colors under any other.
|
|
1246
|
+
*/
|
|
1247
|
+
const THEME_SOURCES = {
|
|
1248
|
+
dark: {
|
|
1249
|
+
background: "--color-slate-800",
|
|
1250
|
+
mainBkg: "--color-slate-700",
|
|
1251
|
+
nodeBorder: "--color-slate-400",
|
|
1252
|
+
nodeTextColor: "--color-slate-100",
|
|
1253
|
+
lineColor: "--color-slate-400",
|
|
1254
|
+
textColor: "--color-slate-200",
|
|
1255
|
+
edgeLabelBackground: "--color-slate-800"
|
|
1256
|
+
},
|
|
1257
|
+
default: {
|
|
1258
|
+
background: "--color-slate-50",
|
|
1259
|
+
mainBkg: "--color-slate-100",
|
|
1260
|
+
nodeBorder: "--color-slate-500",
|
|
1261
|
+
nodeTextColor: "--color-slate-900",
|
|
1262
|
+
lineColor: "--color-slate-500",
|
|
1263
|
+
textColor: "--color-slate-800",
|
|
1264
|
+
edgeLabelBackground: "--color-slate-50"
|
|
1265
|
+
}
|
|
1266
|
+
};
|
|
1198
1267
|
function mermaidThemeVariables(theme) {
|
|
1199
|
-
|
|
1268
|
+
const fixed = THEME_VARIABLES[theme];
|
|
1269
|
+
if (!currentColorTheme()) return fixed;
|
|
1270
|
+
const out = {};
|
|
1271
|
+
for (const [key, hex] of Object.entries(fixed)) out[key] = resolveCssColor(THEME_SOURCES[theme][key]) ?? hex;
|
|
1272
|
+
return out;
|
|
1273
|
+
}
|
|
1274
|
+
/**
|
|
1275
|
+
* A custom property's color as `#rrggbb`, or `null` when it cannot be read.
|
|
1276
|
+
*
|
|
1277
|
+
* Mermaid wants hex at `initialize()` time, and a theme's value can be any CSS
|
|
1278
|
+
* color — `oklch()`, `color-mix()`, a `var()` of another variable. So the
|
|
1279
|
+
* browser does the work: a probe element resolves the property to a computed
|
|
1280
|
+
* color, and a 1×1 canvas turns that into sRGB bytes whatever syntax it came
|
|
1281
|
+
* back in. No canvas (jsdom, a locked-down embed) is `null`, and the caller
|
|
1282
|
+
* falls back to the built-in value.
|
|
1283
|
+
*
|
|
1284
|
+
* A property nobody declared is `null` too, and has to be checked for up
|
|
1285
|
+
* front: `color: var(--unset)` is invalid at computed-value time, so the probe
|
|
1286
|
+
* *inherits* its color instead — the page's text color, which the canvas
|
|
1287
|
+
* would dutifully turn into a plausible hex and mermaid would paint every node
|
|
1288
|
+
* box with.
|
|
1289
|
+
*/
|
|
1290
|
+
function resolveCssColor(property) {
|
|
1291
|
+
if (typeof document === "undefined") return null;
|
|
1292
|
+
if (!getComputedStyle(document.documentElement).getPropertyValue(property).trim()) return null;
|
|
1293
|
+
const probe = document.createElement("span");
|
|
1294
|
+
probe.style.display = "none";
|
|
1295
|
+
probe.style.color = `var(${property})`;
|
|
1296
|
+
document.documentElement.appendChild(probe);
|
|
1297
|
+
const computed = getComputedStyle(probe).color;
|
|
1298
|
+
probe.remove();
|
|
1299
|
+
if (!computed) return null;
|
|
1300
|
+
const ctx = pixelContext();
|
|
1301
|
+
if (!ctx) return null;
|
|
1302
|
+
ctx.fillStyle = computed;
|
|
1303
|
+
ctx.fillRect(0, 0, 1, 1);
|
|
1304
|
+
const [r, g, b] = ctx.getImageData(0, 0, 1, 1).data;
|
|
1305
|
+
return `#${[
|
|
1306
|
+
r,
|
|
1307
|
+
g,
|
|
1308
|
+
b
|
|
1309
|
+
].map((v) => v.toString(16).padStart(2, "0")).join("")}`;
|
|
1310
|
+
}
|
|
1311
|
+
/** A 1×1 2D context to read a color back from, or `null` where there is none. */
|
|
1312
|
+
function pixelContext() {
|
|
1313
|
+
try {
|
|
1314
|
+
const canvas = document.createElement("canvas");
|
|
1315
|
+
canvas.width = canvas.height = 1;
|
|
1316
|
+
return canvas.getContext("2d", { willReadFrequently: true });
|
|
1317
|
+
} catch {
|
|
1318
|
+
return null;
|
|
1319
|
+
}
|
|
1200
1320
|
}
|
|
1201
1321
|
//#endregion
|
|
1202
1322
|
//#region src/mermaidCache.ts
|
|
1203
1323
|
const svgCache = /* @__PURE__ */ new Map();
|
|
1204
|
-
const cacheKey = (code, theme) => `${theme}
|
|
1324
|
+
const cacheKey = (code, theme) => `${theme}\u0000${code}`;
|
|
1205
1325
|
/** The SVG for this fence in the theme the page is currently asking for. */
|
|
1206
|
-
function getCachedSvg(code, theme =
|
|
1326
|
+
function getCachedSvg(code, theme = currentMermaidPalette()) {
|
|
1207
1327
|
return svgCache.get(cacheKey(code, theme));
|
|
1208
1328
|
}
|
|
1209
|
-
function setCachedSvg(code, svg, theme =
|
|
1329
|
+
function setCachedSvg(code, svg, theme = currentMermaidPalette()) {
|
|
1210
1330
|
svgCache.set(cacheKey(code, theme), svg);
|
|
1211
1331
|
}
|
|
1212
1332
|
//#endregion
|
|
1213
1333
|
//#region src/mermaidLoader.ts
|
|
1214
1334
|
let mermaidInstance = null;
|
|
1215
1335
|
let mermaidLoading = null;
|
|
1216
|
-
/**
|
|
1336
|
+
/**
|
|
1337
|
+
* The palette key (`currentMermaidPalette`) the loaded instance was last
|
|
1338
|
+
* configured for, `null` until loaded.
|
|
1339
|
+
*/
|
|
1217
1340
|
let configuredTheme = null;
|
|
1218
|
-
function configure(m,
|
|
1341
|
+
function configure(m, palette) {
|
|
1342
|
+
const theme = mermaidThemeOf(palette);
|
|
1219
1343
|
m.initialize({
|
|
1220
1344
|
startOnLoad: false,
|
|
1221
1345
|
theme,
|
|
@@ -1223,7 +1347,7 @@ function configure(m, theme) {
|
|
|
1223
1347
|
securityLevel: "strict",
|
|
1224
1348
|
suppressErrorRendering: true
|
|
1225
1349
|
});
|
|
1226
|
-
configuredTheme =
|
|
1350
|
+
configuredTheme = palette;
|
|
1227
1351
|
}
|
|
1228
1352
|
/**
|
|
1229
1353
|
* The mermaid module, configured for the theme the page is asking for *now*.
|
|
@@ -1237,19 +1361,19 @@ function configure(m, theme) {
|
|
|
1237
1361
|
* served instead (`mermaidCache.ts`).
|
|
1238
1362
|
*/
|
|
1239
1363
|
async function getMermaid() {
|
|
1240
|
-
const theme =
|
|
1364
|
+
const theme = currentMermaidPalette();
|
|
1241
1365
|
if (mermaidInstance) {
|
|
1242
1366
|
if (configuredTheme !== theme) configure(mermaidInstance, theme);
|
|
1243
1367
|
return mermaidInstance;
|
|
1244
1368
|
}
|
|
1245
1369
|
if (!mermaidLoading) mermaidLoading = import("mermaid").then((mod) => {
|
|
1246
1370
|
const m = mod.default;
|
|
1247
|
-
configure(m,
|
|
1371
|
+
configure(m, currentMermaidPalette());
|
|
1248
1372
|
mermaidInstance = m;
|
|
1249
1373
|
return m;
|
|
1250
1374
|
});
|
|
1251
1375
|
const loaded = await mermaidLoading;
|
|
1252
|
-
const wanted =
|
|
1376
|
+
const wanted = currentMermaidPalette();
|
|
1253
1377
|
if (configuredTheme !== wanted) configure(loaded, wanted);
|
|
1254
1378
|
return loaded;
|
|
1255
1379
|
}
|
|
@@ -1552,7 +1676,7 @@ function DiagramModal({ isOpen, onClose, children }) {
|
|
|
1552
1676
|
}
|
|
1553
1677
|
/**
|
|
1554
1678
|
* The palette the page is asking for, re-read whenever `<html>`'s class list
|
|
1555
|
-
* changes.
|
|
1679
|
+
* or its color-theme attribute changes.
|
|
1556
1680
|
*
|
|
1557
1681
|
* A diagram is an SVG baked at render time, so unlike everything else on the
|
|
1558
1682
|
* page it does not restyle when the theme flips — it has to be drawn again. The
|
|
@@ -1569,14 +1693,19 @@ function subscribeToTheme(onChange) {
|
|
|
1569
1693
|
const observer = new MutationObserver(onChange);
|
|
1570
1694
|
observer.observe(document.documentElement, {
|
|
1571
1695
|
attributes: true,
|
|
1572
|
-
attributeFilter: [
|
|
1696
|
+
attributeFilter: [
|
|
1697
|
+
"class",
|
|
1698
|
+
COLOR_THEME_ATTRIBUTE,
|
|
1699
|
+
COLOR_THEME_SOURCE_ATTRIBUTE
|
|
1700
|
+
]
|
|
1573
1701
|
});
|
|
1574
1702
|
return () => observer.disconnect();
|
|
1575
1703
|
}
|
|
1576
1704
|
/** Server render has no `<html>` to read, and no diagram to draw either. */
|
|
1577
1705
|
const serverTheme = () => "default";
|
|
1706
|
+
/** The palette key the page is asking for (see `currentMermaidPalette`). */
|
|
1578
1707
|
function useMermaidTheme() {
|
|
1579
|
-
return useSyncExternalStore(subscribeToTheme,
|
|
1708
|
+
return useSyncExternalStore(subscribeToTheme, currentMermaidPalette, serverTheme);
|
|
1580
1709
|
}
|
|
1581
1710
|
const MermaidDiagramInner = ({ code }) => {
|
|
1582
1711
|
const theme = useMermaidTheme();
|
|
@@ -1718,7 +1847,7 @@ const DOC_STATUSES = [
|
|
|
1718
1847
|
/** Every key this build knows under `vantage:`. Closed. */
|
|
1719
1848
|
const VANTAGE_FRONTMATTER_KEYS = ["status-chip"];
|
|
1720
1849
|
/**
|
|
1721
|
-
* Which tone each status borrows its
|
|
1850
|
+
* Which tone each status borrows its colors from.
|
|
1722
1851
|
*
|
|
1723
1852
|
* The chip has no palette of its own: it reuses the tone chips
|
|
1724
1853
|
* (`.vantage-chip--<tone>` in `styles/directives.css`), which is also what makes
|
|
@@ -1837,7 +1966,7 @@ function readStatusChip(frontmatter, raw, issues) {
|
|
|
1837
1966
|
*
|
|
1838
1967
|
* Styling comes entirely from `styles/directives.css` — `.vantage-chip` for the
|
|
1839
1968
|
* geometry, shared by selector list with the `badge=` pseudo-element, and
|
|
1840
|
-
* `.vantage-chip--<tone>` for the
|
|
1969
|
+
* `.vantage-chip--<tone>` for the colors. No Tailwind utility appears here, so
|
|
1841
1970
|
* the chip survives in a consumer that does not run Tailwind and no class name
|
|
1842
1971
|
* has to be discovered by a content scan.
|
|
1843
1972
|
*/
|
|
@@ -1952,7 +2081,7 @@ const FrontmatterDisplay = memo(FrontmatterDisplayInner);
|
|
|
1952
2081
|
*
|
|
1953
2082
|
* Split out from scrollToLineAnchor.ts so that non-browser consumers — the
|
|
1954
2083
|
* `vantage-check` CLI, which validates `#L42` links against the file on disk —
|
|
1955
|
-
* can share the *same* syntax the viewer
|
|
2084
|
+
* can share the *same* syntax the viewer honors instead of reimplementing it
|
|
1956
2085
|
* and drifting.
|
|
1957
2086
|
*/
|
|
1958
2087
|
/**
|