@curvenote/renderers 1.0.1 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/articles.d.ts.map +1 -1
- package/dist/articles.js +8 -2
- package/dist/components/admonition.d.ts.map +1 -1
- package/dist/components/admonition.js +24 -4
- package/dist/components/anywidget-host.d.ts +7 -0
- package/dist/components/anywidget-host.d.ts.map +1 -0
- package/dist/components/anywidget-host.js +11 -0
- package/dist/components/bluesky.d.ts +6 -0
- package/dist/components/bluesky.d.ts.map +1 -0
- package/dist/components/bluesky.js +113 -0
- package/dist/components/cite-figurebar.d.ts +2 -1
- package/dist/components/cite-figurebar.d.ts.map +1 -1
- package/dist/components/cite-figurebar.js +73 -27
- package/dist/components/cite.d.ts +11 -0
- package/dist/components/cite.d.ts.map +1 -1
- package/dist/components/cite.js +130 -8
- package/dist/components/copy-icon.d.ts +11 -0
- package/dist/components/copy-icon.d.ts.map +1 -0
- package/dist/components/copy-icon.js +32 -0
- package/dist/components/definition-list.d.ts.map +1 -1
- package/dist/components/definition-list.js +3 -2
- package/dist/components/faq.js +1 -1
- package/dist/components/hash-link.d.ts +3 -0
- package/dist/components/hash-link.d.ts.map +1 -0
- package/dist/components/hash-link.js +3 -0
- package/dist/components/hero.d.ts +1 -1
- package/dist/components/hero.d.ts.map +1 -1
- package/dist/components/hero.js +14 -2
- package/dist/components/hover-popover.d.ts +26 -0
- package/dist/components/hover-popover.d.ts.map +1 -0
- package/dist/components/hover-popover.js +26 -0
- package/dist/components/images.d.ts.map +1 -1
- package/dist/components/images.js +7 -2
- package/dist/components/index.d.ts +3 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +3 -0
- package/dist/components/pdb.d.ts.map +1 -1
- package/dist/components/pdb.js +42 -6
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -3
- package/dist/myst/abbreviation.d.ts +6 -0
- package/dist/myst/abbreviation.d.ts.map +1 -0
- package/dist/myst/abbreviation.js +13 -0
- package/dist/myst/anywidget.d.ts +5 -0
- package/dist/myst/anywidget.d.ts.map +1 -0
- package/dist/myst/anywidget.js +12 -0
- package/dist/myst/code.d.ts +6 -0
- package/dist/myst/code.d.ts.map +1 -0
- package/dist/myst/code.js +103 -0
- package/dist/myst/container.d.ts +7 -0
- package/dist/myst/container.d.ts.map +1 -0
- package/dist/myst/container.js +57 -0
- package/dist/myst/cross-reference.d.ts +23 -0
- package/dist/myst/cross-reference.d.ts.map +1 -0
- package/dist/myst/cross-reference.js +140 -0
- package/dist/myst/footnotes.d.ts +7 -0
- package/dist/myst/footnotes.d.ts.map +1 -0
- package/dist/myst/footnotes.js +32 -0
- package/dist/myst/index.d.ts +14 -0
- package/dist/myst/index.d.ts.map +1 -0
- package/dist/myst/index.js +17 -0
- package/dist/myst/inline-expression.d.ts +6 -0
- package/dist/myst/inline-expression.d.ts.map +1 -0
- package/dist/myst/inline-expression.js +20 -0
- package/dist/myst/links/figshare.d.ts +8 -0
- package/dist/myst/links/figshare.d.ts.map +1 -0
- package/dist/myst/links/figshare.js +45 -0
- package/dist/myst/links/geo.d.ts +8 -0
- package/dist/myst/links/geo.d.ts.map +1 -0
- package/dist/myst/links/geo.js +116 -0
- package/dist/myst/links/github.d.ts +15 -0
- package/dist/myst/links/github.d.ts.map +1 -0
- package/dist/myst/links/github.js +156 -0
- package/dist/myst/links/huggingface.d.ts +10 -0
- package/dist/myst/links/huggingface.d.ts.map +1 -0
- package/dist/myst/links/huggingface.js +73 -0
- package/dist/myst/links/index.d.ts +12 -0
- package/dist/myst/links/index.d.ts.map +1 -0
- package/dist/myst/links/index.js +95 -0
- package/dist/myst/links/ror.d.ts +7 -0
- package/dist/myst/links/ror.d.ts.map +1 -0
- package/dist/myst/links/ror.js +34 -0
- package/dist/myst/links/rrid.d.ts +5 -0
- package/dist/myst/links/rrid.d.ts.map +1 -0
- package/dist/myst/links/rrid.js +31 -0
- package/dist/myst/links/wiki.d.ts +9 -0
- package/dist/myst/links/wiki.d.ts.map +1 -0
- package/dist/myst/links/wiki.js +41 -0
- package/dist/myst/math.d.ts +15 -0
- package/dist/myst/math.d.ts.map +1 -0
- package/dist/myst/math.js +53 -0
- package/dist/transforms/articles.d.ts +2 -1
- package/dist/transforms/articles.d.ts.map +1 -1
- package/dist/transforms/articles.js +2 -2
- package/dist/transforms/index.d.ts +5 -2
- package/dist/transforms/index.d.ts.map +1 -1
- package/dist/transforms/index.js +1 -0
- package/dist/utils/anywidget-analytics.d.ts +13 -0
- package/dist/utils/anywidget-analytics.d.ts.map +1 -0
- package/dist/utils/anywidget-analytics.js +15 -0
- package/dist/utils/content-analytics.d.ts +44 -0
- package/dist/utils/content-analytics.d.ts.map +1 -0
- package/dist/utils/content-analytics.js +59 -0
- package/package.json +22 -13
|
@@ -7,7 +7,7 @@ import pLimit from 'p-limit';
|
|
|
7
7
|
* @param node
|
|
8
8
|
* @returns
|
|
9
9
|
*/
|
|
10
|
-
export async function transformArticles(node, { apiUrl, venue }) {
|
|
10
|
+
export async function transformArticles(node, { apiUrl, venue, fetchHeaders, }) {
|
|
11
11
|
const articlesDirectives = selectAll('curvenoteArticles', node);
|
|
12
12
|
const applyLimit = pLimit(5);
|
|
13
13
|
return Promise.all(articlesDirectives.map(async (n) => applyLimit(async () => {
|
|
@@ -30,7 +30,7 @@ export async function transformArticles(node, { apiUrl, venue }) {
|
|
|
30
30
|
if (n.limit)
|
|
31
31
|
url.searchParams.set('limit', n.limit.toString());
|
|
32
32
|
try {
|
|
33
|
-
const res = await fetch(url.toString());
|
|
33
|
+
const res = await fetch(url.toString(), { headers: fetchHeaders });
|
|
34
34
|
if (!res.ok)
|
|
35
35
|
throw new Error(`${res.status} ${res.statusText}`);
|
|
36
36
|
const data = (await res.json());
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import type { PageLoader } from '@myst-theme/common';
|
|
2
|
-
export
|
|
2
|
+
export type CustomPageTransformOptions = {
|
|
3
3
|
apiUrl?: string;
|
|
4
4
|
venue?: string;
|
|
5
|
-
|
|
5
|
+
/** Headers for SCMS API requests (e.g. from getScmsFetchHeaders). */
|
|
6
|
+
fetchHeaders?: Record<string, string>;
|
|
7
|
+
};
|
|
8
|
+
export declare function applyCustomPageTransformsInPlace(page: PageLoader, opts?: CustomPageTransformOptions): Promise<void>;
|
|
6
9
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/transforms/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAKrD,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/transforms/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAKrD,MAAM,MAAM,0BAA0B,GAAG;IACvC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qEAAqE;IACrE,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACvC,CAAC;AAEF,wBAAsB,gCAAgC,CACpD,IAAI,EAAE,UAAU,EAChB,IAAI,CAAC,EAAE,0BAA0B,iBAUlC"}
|
package/dist/transforms/index.js
CHANGED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { AnalyticsCaptureFn } from '@curvenote/theme-ui';
|
|
2
|
+
export type AnywidgetKind = 'myst_anywidget' | 'any_widget' | 'any_bundle';
|
|
3
|
+
export type AnywidgetIdentity = {
|
|
4
|
+
moduleUrl?: string;
|
|
5
|
+
nodeKey?: string;
|
|
6
|
+
widgetKind: AnywidgetKind;
|
|
7
|
+
};
|
|
8
|
+
export declare function captureAnywidgetClicked(capture: AnalyticsCaptureFn, identity: AnywidgetIdentity): void;
|
|
9
|
+
export declare function getMystAnywidgetIdentity(node: {
|
|
10
|
+
esm?: string;
|
|
11
|
+
key?: string;
|
|
12
|
+
}): AnywidgetIdentity;
|
|
13
|
+
//# sourceMappingURL=anywidget-analytics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anywidget-analytics.d.ts","sourceRoot":"","sources":["../../src/utils/anywidget-analytics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAE9D,MAAM,MAAM,aAAa,GAAG,gBAAgB,GAAG,YAAY,GAAG,YAAY,CAAC;AAE3E,MAAM,MAAM,iBAAiB,GAAG;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,aAAa,CAAC;CAC3B,CAAC;AAEF,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,iBAAiB,QAO/F;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,iBAAiB,CAMhG"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export function captureAnywidgetClicked(capture, identity) {
|
|
2
|
+
capture('content_anywidget_clicked', {
|
|
3
|
+
surface: 'content',
|
|
4
|
+
moduleUrl: identity.moduleUrl,
|
|
5
|
+
nodeKey: identity.nodeKey,
|
|
6
|
+
widgetKind: identity.widgetKind,
|
|
7
|
+
});
|
|
8
|
+
}
|
|
9
|
+
export function getMystAnywidgetIdentity(node) {
|
|
10
|
+
return {
|
|
11
|
+
moduleUrl: node.esm,
|
|
12
|
+
nodeKey: node.key,
|
|
13
|
+
widgetKind: 'myst_anywidget',
|
|
14
|
+
};
|
|
15
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { AnalyticsCaptureFn } from '@curvenote/theme-ui';
|
|
2
|
+
export type ContentEngagementSurface = 'trigger' | 'hover_card' | 'inline_block';
|
|
3
|
+
export type ContentLinkClickedPayload = {
|
|
4
|
+
linkKind: string;
|
|
5
|
+
destinationUrl?: string;
|
|
6
|
+
engagementSurface: ContentEngagementSurface;
|
|
7
|
+
cardKind?: string;
|
|
8
|
+
properties?: Record<string, unknown>;
|
|
9
|
+
};
|
|
10
|
+
export type ContentEnrichmentOutcome = 'loading' | 'success' | 'error' | 'empty' | 'fallback';
|
|
11
|
+
export declare function captureContentLinkClicked(capture: AnalyticsCaptureFn, payload: ContentLinkClickedPayload): void;
|
|
12
|
+
export declare function captureContentCiteClicked(capture: AnalyticsCaptureFn, payload: {
|
|
13
|
+
citeLabel: string;
|
|
14
|
+
doi?: string;
|
|
15
|
+
hasUrl: boolean;
|
|
16
|
+
engagementSurface: ContentEngagementSurface;
|
|
17
|
+
}): void;
|
|
18
|
+
export declare function captureContentEnrichmentDisplayed(capture: AnalyticsCaptureFn, payload: {
|
|
19
|
+
enrichmentSource: string;
|
|
20
|
+
outcome: ContentEnrichmentOutcome;
|
|
21
|
+
cardKind?: string;
|
|
22
|
+
engagementSurface?: ContentEngagementSurface;
|
|
23
|
+
properties?: Record<string, unknown>;
|
|
24
|
+
}): void;
|
|
25
|
+
/**
|
|
26
|
+
* Emits `content_enrichment_displayed` when async enrichment for a hover card or inline
|
|
27
|
+
* block moves to a new outcome (`loading`, `success`, `error`, `empty`, or `fallback`).
|
|
28
|
+
*
|
|
29
|
+
* Enrichment cards derive outcome from SWR or similar hooks, so the value changes after
|
|
30
|
+
* mount. A plain render-time capture would fire on every re-render; this hook records
|
|
31
|
+
* each outcome at most once per mount. `enabled` gates mutually exclusive paths (for
|
|
32
|
+
* example OpenAlex vs HTML cite fallback). `properties` is read from a ref so late
|
|
33
|
+
* metadata does not widen the effect deps or duplicate events when only fields change.
|
|
34
|
+
*/
|
|
35
|
+
export declare function useContentEnrichmentDisplay({ capture, enrichmentSource, outcome, cardKind, engagementSurface, properties, enabled, }: {
|
|
36
|
+
capture: AnalyticsCaptureFn;
|
|
37
|
+
enrichmentSource: string;
|
|
38
|
+
outcome: ContentEnrichmentOutcome;
|
|
39
|
+
cardKind?: string;
|
|
40
|
+
engagementSurface?: ContentEngagementSurface;
|
|
41
|
+
properties?: Record<string, unknown>;
|
|
42
|
+
enabled?: boolean;
|
|
43
|
+
}): void;
|
|
44
|
+
//# sourceMappingURL=content-analytics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content-analytics.d.ts","sourceRoot":"","sources":["../../src/utils/content-analytics.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAE9D,MAAM,MAAM,wBAAwB,GAAG,SAAS,GAAG,YAAY,GAAG,cAAc,CAAC;AAEjF,MAAM,MAAM,yBAAyB,GAAG;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,wBAAwB,CAAC;IAC5C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,UAAU,CAAC;AAE9F,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,kBAAkB,EAC3B,OAAO,EAAE,yBAAyB,QAUnC;AAED,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,kBAAkB,EAC3B,OAAO,EAAE;IACP,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,iBAAiB,EAAE,wBAAwB,CAAC;CAC7C,QASF;AAED,wBAAgB,iCAAiC,CAC/C,OAAO,EAAE,kBAAkB,EAC3B,OAAO,EAAE;IACP,gBAAgB,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,wBAAwB,CAAC;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,wBAAwB,CAAC;IAC7C,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC,QAUF;AAED;;;;;;;;;GASG;AACH,wBAAgB,2BAA2B,CAAC,EAC1C,OAAO,EACP,gBAAgB,EAChB,OAAO,EACP,QAAQ,EACR,iBAAiB,EACjB,UAAU,EACV,OAAc,GACf,EAAE;IACD,OAAO,EAAE,kBAAkB,CAAC;IAC5B,gBAAgB,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,wBAAwB,CAAC;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,wBAAwB,CAAC;IAC7C,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,QAiBA"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { useEffect, useRef } from 'react';
|
|
2
|
+
export function captureContentLinkClicked(capture, payload) {
|
|
3
|
+
capture('content_link_clicked', {
|
|
4
|
+
surface: 'content',
|
|
5
|
+
linkKind: payload.linkKind,
|
|
6
|
+
destinationUrl: payload.destinationUrl,
|
|
7
|
+
engagementSurface: payload.engagementSurface,
|
|
8
|
+
cardKind: payload.cardKind,
|
|
9
|
+
...payload.properties,
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
export function captureContentCiteClicked(capture, payload) {
|
|
13
|
+
capture('content_cite_clicked', {
|
|
14
|
+
surface: 'content',
|
|
15
|
+
citeLabel: payload.citeLabel,
|
|
16
|
+
doi: payload.doi,
|
|
17
|
+
hasUrl: payload.hasUrl,
|
|
18
|
+
engagementSurface: payload.engagementSurface,
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
export function captureContentEnrichmentDisplayed(capture, payload) {
|
|
22
|
+
capture('content_enrichment_displayed', {
|
|
23
|
+
surface: 'content',
|
|
24
|
+
enrichmentSource: payload.enrichmentSource,
|
|
25
|
+
outcome: payload.outcome,
|
|
26
|
+
cardKind: payload.cardKind,
|
|
27
|
+
engagementSurface: payload.engagementSurface,
|
|
28
|
+
...payload.properties,
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Emits `content_enrichment_displayed` when async enrichment for a hover card or inline
|
|
33
|
+
* block moves to a new outcome (`loading`, `success`, `error`, `empty`, or `fallback`).
|
|
34
|
+
*
|
|
35
|
+
* Enrichment cards derive outcome from SWR or similar hooks, so the value changes after
|
|
36
|
+
* mount. A plain render-time capture would fire on every re-render; this hook records
|
|
37
|
+
* each outcome at most once per mount. `enabled` gates mutually exclusive paths (for
|
|
38
|
+
* example OpenAlex vs HTML cite fallback). `properties` is read from a ref so late
|
|
39
|
+
* metadata does not widen the effect deps or duplicate events when only fields change.
|
|
40
|
+
*/
|
|
41
|
+
export function useContentEnrichmentDisplay({ capture, enrichmentSource, outcome, cardKind, engagementSurface, properties, enabled = true, }) {
|
|
42
|
+
const lastOutcomeRef = useRef(null);
|
|
43
|
+
const propertiesRef = useRef(properties);
|
|
44
|
+
propertiesRef.current = properties;
|
|
45
|
+
useEffect(() => {
|
|
46
|
+
if (!enabled)
|
|
47
|
+
return;
|
|
48
|
+
if (lastOutcomeRef.current === outcome)
|
|
49
|
+
return;
|
|
50
|
+
lastOutcomeRef.current = outcome;
|
|
51
|
+
captureContentEnrichmentDisplayed(capture, {
|
|
52
|
+
enrichmentSource,
|
|
53
|
+
outcome,
|
|
54
|
+
cardKind,
|
|
55
|
+
engagementSurface,
|
|
56
|
+
properties: propertiesRef.current,
|
|
57
|
+
});
|
|
58
|
+
}, [capture, cardKind, enabled, engagementSurface, enrichmentSource, outcome]);
|
|
59
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@curvenote/renderers",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"type": "module",
|
|
@@ -16,31 +16,39 @@
|
|
|
16
16
|
"dist"
|
|
17
17
|
],
|
|
18
18
|
"scripts": {
|
|
19
|
-
"build": "tsc &&
|
|
19
|
+
"build": "tsc && bun run copy-css",
|
|
20
20
|
"copy-css": "mkdir -p dist/components && cp src/components/*.css dist/components/ 2>/dev/null || true && cp src/*.css dist/ 2>/dev/null || true",
|
|
21
21
|
"dev": "tsc --watch",
|
|
22
22
|
"typecheck": "tsc --noEmit",
|
|
23
|
-
"compile": "
|
|
23
|
+
"compile": "bun run typecheck",
|
|
24
24
|
"lint": "eslint \"src/**/*.ts*\" -c ./.eslintrc.cjs",
|
|
25
25
|
"lint:format": "prettier --check \"src/**/*.{ts,tsx,md}\"",
|
|
26
26
|
"test": "vitest run",
|
|
27
27
|
"clean": "rm -rf dist",
|
|
28
|
-
"prepublishOnly": "
|
|
28
|
+
"prepublishOnly": "bun run build"
|
|
29
29
|
},
|
|
30
30
|
"dependencies": {
|
|
31
|
-
"@curvenote/
|
|
32
|
-
"@curvenote/
|
|
33
|
-
"@curvenote/
|
|
34
|
-
"@curvenote/ext-
|
|
35
|
-
"@curvenote/
|
|
36
|
-
"@curvenote/
|
|
37
|
-
"@
|
|
31
|
+
"@curvenote/any-widget": "^0.2.3",
|
|
32
|
+
"@curvenote/common": "^0.4.0",
|
|
33
|
+
"@curvenote/ext-blog": "^2.0.0",
|
|
34
|
+
"@curvenote/ext-person": "^2.0.0",
|
|
35
|
+
"@curvenote/react-utils": "^2.0.0",
|
|
36
|
+
"@curvenote/theme-ui": "^2.0.0",
|
|
37
|
+
"@heroicons/react": "^2.0.18",
|
|
38
|
+
"@myst-theme/anywidget": "^1.3.0",
|
|
39
|
+
"@myst-theme/common": "^1.3.0",
|
|
40
|
+
"@myst-theme/providers": "^1.3.0",
|
|
41
|
+
"@radix-ui/react-hover-card": "^1.0.6",
|
|
42
|
+
"@scienceicons/react": "^0.0.14",
|
|
38
43
|
"class-variance-authority": "^0.7.1",
|
|
39
44
|
"hast-util-from-html": "^2.0.3",
|
|
40
|
-
"hast-util-to-mdast": "^
|
|
45
|
+
"hast-util-to-mdast": "^8.4.1",
|
|
41
46
|
"lucide-react": "^0.525.0",
|
|
42
47
|
"mermaid": "^11.12.1",
|
|
43
|
-
"myst-common": "^1.9.
|
|
48
|
+
"myst-common": "^1.9.5",
|
|
49
|
+
"myst-migrate": "^1.9.0",
|
|
50
|
+
"myst-to-react": "^1.3.0",
|
|
51
|
+
"react-syntax-highlighter": "15.5.0",
|
|
44
52
|
"p-limit": "^3.1.0",
|
|
45
53
|
"react-router": "^7.1.1",
|
|
46
54
|
"sonner": "^2.0.6",
|
|
@@ -53,6 +61,7 @@
|
|
|
53
61
|
"react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0"
|
|
54
62
|
},
|
|
55
63
|
"devDependencies": {
|
|
64
|
+
"@types/react-syntax-highlighter": "^15.5.13",
|
|
56
65
|
"vitest": "^4.0.16"
|
|
57
66
|
},
|
|
58
67
|
"publishConfig": {
|