@keboola/design 2.1.0 → 3.1.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/README.md +10 -9
- package/dist/icons.cjs +13 -737
- package/dist/icons.cjs.map +1 -1
- package/dist/icons.d.cts +2 -1
- package/dist/icons.d.ts +2 -1
- package/dist/icons.js +8 -2
- package/dist/icons.js.map +1 -1
- package/dist/index.cjs +13517 -12393
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +4717 -4449
- package/dist/index.d.ts +4717 -4449
- package/dist/index.js +13252 -12160
- package/dist/index.js.map +1 -1
- package/dist/markdown-editor.cjs +294 -170
- package/dist/markdown-editor.cjs.map +1 -1
- package/dist/markdown-editor.js +292 -170
- package/dist/markdown-editor.js.map +1 -1
- package/dist/mermaid.cjs +142 -49
- package/dist/mermaid.cjs.map +1 -1
- package/dist/mermaid.js +124 -51
- package/dist/mermaid.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/testing.cjs +89 -0
- package/dist/testing.cjs.map +1 -0
- package/dist/testing.d.cts +19 -0
- package/dist/testing.d.ts +19 -0
- package/dist/testing.js +87 -0
- package/dist/testing.js.map +1 -0
- package/package.json +35 -16
- package/src/styles.css +19 -18
- package/dist/icon-names.cjs +0 -18
- package/dist/icon-names.cjs.map +0 -1
- package/dist/icon-names.d.cts +0 -7
- package/dist/icon-names.d.ts +0 -7
- package/dist/icon-names.js +0 -16
- package/dist/icon-names.js.map +0 -1
package/dist/mermaid.js
CHANGED
|
@@ -1,15 +1,33 @@
|
|
|
1
|
-
import { useId, useState, useRef, useEffect, useCallback } from 'react';
|
|
1
|
+
import { createContext, forwardRef, useId, useState, useRef, useEffect, useMemo, useCallback, use } from 'react';
|
|
2
2
|
import { renderMermaidSVG } from 'beautiful-mermaid';
|
|
3
3
|
import colors from '@keboola/tailwind-config/colors';
|
|
4
4
|
import { clsx } from 'clsx';
|
|
5
5
|
import { extendTailwindMerge } from 'tailwind-merge';
|
|
6
6
|
import { Root as Root$1, Trigger, Portal, Content } from '@radix-ui/react-tooltip';
|
|
7
7
|
import { cva } from 'class-variance-authority';
|
|
8
|
-
import {
|
|
8
|
+
import { keboolaLegacy } from '@keboola/brand-registry';
|
|
9
|
+
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
10
|
+
import DOMPurify from 'dompurify';
|
|
9
11
|
import { Root, Slottable } from '@radix-ui/react-slot';
|
|
10
|
-
import
|
|
12
|
+
import * as lucide_react_star from 'lucide-react';
|
|
11
13
|
|
|
12
|
-
|
|
14
|
+
var __defProp = Object.defineProperty;
|
|
15
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
16
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
17
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
18
|
+
var __export = (target, all) => {
|
|
19
|
+
for (var name in all)
|
|
20
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
21
|
+
};
|
|
22
|
+
var __copyProps = (to, from, except, desc) => {
|
|
23
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
24
|
+
for (let key of __getOwnPropNames(from))
|
|
25
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
26
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
27
|
+
}
|
|
28
|
+
return to;
|
|
29
|
+
};
|
|
30
|
+
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget);
|
|
13
31
|
var twMerge = extendTailwindMerge({
|
|
14
32
|
prefix: "tw-"
|
|
15
33
|
});
|
|
@@ -25,17 +43,49 @@ var keyCodes = {
|
|
|
25
43
|
ENTER: "Enter",
|
|
26
44
|
SPACE: " "
|
|
27
45
|
};
|
|
46
|
+
var ThemeContext = createContext(null);
|
|
47
|
+
|
|
48
|
+
// src/components/internal/useIsLegacyBrand.ts
|
|
49
|
+
var useIsLegacyBrand = () => {
|
|
50
|
+
const context = use(ThemeContext);
|
|
51
|
+
return context === null || context.brand.id === keboolaLegacy.id;
|
|
52
|
+
};
|
|
28
53
|
var tooltipVariants = cva(
|
|
29
54
|
[
|
|
30
55
|
"tailwindcss-preflight",
|
|
31
56
|
"tw-inline-block",
|
|
32
|
-
"tw-rounded",
|
|
33
|
-
"tw-bg-neutral-800",
|
|
34
|
-
"tw-text-white",
|
|
35
57
|
"tw-break-anywhere",
|
|
36
58
|
"tw-max-h-96",
|
|
37
59
|
"tw-overflow-y-auto",
|
|
38
|
-
"tw-z-[1060]"
|
|
60
|
+
"tw-z-[1060]",
|
|
61
|
+
// legacy (dark) chrome — default
|
|
62
|
+
"tw-rounded",
|
|
63
|
+
"tw-bg-neutral-800",
|
|
64
|
+
"tw-text-white",
|
|
65
|
+
// argo chrome overrides — semantic floating-panel tokens
|
|
66
|
+
"data-[argo=true]:tw-rounded-2xl",
|
|
67
|
+
"data-[argo=true]:tw-border",
|
|
68
|
+
"data-[argo=true]:tw-border-solid",
|
|
69
|
+
"data-[argo=true]:tw-border-border",
|
|
70
|
+
"data-[argo=true]:tw-bg-popover",
|
|
71
|
+
"data-[argo=true]:tw-text-popover-foreground",
|
|
72
|
+
"data-[argo=true]:tw-shadow-md",
|
|
73
|
+
// argo open animation
|
|
74
|
+
"data-[argo=true]:data-[state=delayed-open]:tw-animate-in",
|
|
75
|
+
"data-[argo=true]:data-[state=instant-open]:tw-animate-in",
|
|
76
|
+
"data-[argo=true]:data-[state=delayed-open]:tw-fade-in-0",
|
|
77
|
+
"data-[argo=true]:data-[state=instant-open]:tw-fade-in-0",
|
|
78
|
+
"data-[argo=true]:data-[state=delayed-open]:tw-zoom-in-95",
|
|
79
|
+
"data-[argo=true]:data-[state=instant-open]:tw-zoom-in-95",
|
|
80
|
+
// argo closed animation
|
|
81
|
+
"data-[argo=true]:data-[state=closed]:tw-animate-out",
|
|
82
|
+
"data-[argo=true]:data-[state=closed]:tw-fade-out-0",
|
|
83
|
+
"data-[argo=true]:data-[state=closed]:tw-zoom-out-95",
|
|
84
|
+
// argo position animation
|
|
85
|
+
"data-[argo=true]:data-[side=bottom]:tw-slide-in-from-top-2",
|
|
86
|
+
"data-[argo=true]:data-[side=left]:tw-slide-in-from-right-2",
|
|
87
|
+
"data-[argo=true]:data-[side=right]:tw-slide-in-from-left-2",
|
|
88
|
+
"data-[argo=true]:data-[side=top]:tw-slide-in-from-bottom-2"
|
|
39
89
|
],
|
|
40
90
|
{
|
|
41
91
|
defaultVariants: {
|
|
@@ -68,6 +118,7 @@ var tooltipVariants = cva(
|
|
|
68
118
|
var TooltipContent = ({
|
|
69
119
|
className,
|
|
70
120
|
variant,
|
|
121
|
+
argo,
|
|
71
122
|
keepOpenOnPointerDownOutside = false,
|
|
72
123
|
children,
|
|
73
124
|
onPointerDownOutside,
|
|
@@ -77,6 +128,8 @@ var TooltipContent = ({
|
|
|
77
128
|
placement = "right",
|
|
78
129
|
...rest
|
|
79
130
|
}) => {
|
|
131
|
+
const isLegacy = useIsLegacyBrand();
|
|
132
|
+
const renderArgo = !isLegacy || argo === true;
|
|
80
133
|
const handlePointerDownOutside = (event) => {
|
|
81
134
|
if (keepOpenOnPointerDownOutside) event.preventDefault();
|
|
82
135
|
onPointerDownOutside?.(event);
|
|
@@ -85,7 +138,8 @@ var TooltipContent = ({
|
|
|
85
138
|
Content,
|
|
86
139
|
{
|
|
87
140
|
...rest,
|
|
88
|
-
"data-tooltip-content": true,
|
|
141
|
+
"data-tooltip-content": renderArgo ? void 0 : true,
|
|
142
|
+
"data-argo": renderArgo,
|
|
89
143
|
sideOffset,
|
|
90
144
|
collisionPadding,
|
|
91
145
|
onPointerDownOutside: handlePointerDownOutside,
|
|
@@ -144,6 +198,7 @@ var Tooltip = ({
|
|
|
144
198
|
className,
|
|
145
199
|
keepOpenOnTriggerClick = false,
|
|
146
200
|
variant,
|
|
201
|
+
argo,
|
|
147
202
|
placement = "right",
|
|
148
203
|
forceHide = false,
|
|
149
204
|
forceShow = false,
|
|
@@ -182,6 +237,7 @@ var Tooltip = ({
|
|
|
182
237
|
{
|
|
183
238
|
className,
|
|
184
239
|
variant: resolvedVariant,
|
|
240
|
+
argo,
|
|
185
241
|
placement,
|
|
186
242
|
keepOpenOnPointerDownOutside: keepOpenOnTriggerClick,
|
|
187
243
|
children: tooltip
|
|
@@ -208,7 +264,7 @@ var ANIMATION_CLASS_NAME = cn(
|
|
|
208
264
|
"tw-relative",
|
|
209
265
|
"tw-overflow-hidden",
|
|
210
266
|
"tw-pointer-events-none",
|
|
211
|
-
"tw-bg-
|
|
267
|
+
"tw-bg-muted",
|
|
212
268
|
// before
|
|
213
269
|
'before:tw-content-[""]',
|
|
214
270
|
"before:tw-opacity-100",
|
|
@@ -233,6 +289,33 @@ var Skeleton = ({ height = "md", className, count = 1 }) => {
|
|
|
233
289
|
key
|
|
234
290
|
)) });
|
|
235
291
|
};
|
|
292
|
+
|
|
293
|
+
// src/icons/index.ts
|
|
294
|
+
var icons_exports = {};
|
|
295
|
+
__export(icons_exports, {
|
|
296
|
+
Keboola: () => Keboola
|
|
297
|
+
});
|
|
298
|
+
__reExport(icons_exports, lucide_react_star);
|
|
299
|
+
var Keboola = forwardRef(
|
|
300
|
+
({ size = 24, color = "currentColor", className, children, ...rest }, ref) => /* @__PURE__ */ jsxs(
|
|
301
|
+
"svg",
|
|
302
|
+
{
|
|
303
|
+
ref,
|
|
304
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
305
|
+
width: size,
|
|
306
|
+
height: size,
|
|
307
|
+
viewBox: "0 0 300 512",
|
|
308
|
+
fill: color,
|
|
309
|
+
className: cn("lucide", className),
|
|
310
|
+
...rest,
|
|
311
|
+
children: [
|
|
312
|
+
/* @__PURE__ */ jsx("path", { d: "M152 320C79.7 320 24.5 233.9 24.5 124.7C24.5 15.6 70.5 0 152 0s123.6 15.6 123.6 124.7C275.5 233.9 217.7 320 152 320zm-8.7-50.5c0-11.2-9.5-20.3-21.2-20.3s-21.2 9.1-21.2 20.3c0 11.2 9.5 20.3 21.2 20.3s21.2-9.1 21.2-20.3zm55.7 0c0-11.2-9.5-20.3-21.2-20.3s-21.2 9.1-21.2 20.3c0 11.2 9.5 20.3 21.2 20.3s21.2-9.1 21.2-20.3zm68.9 115.1c10.2 9.3 20.2 20.5 29 35c5.9 9.7 2.6 22.1-7.5 27.8c-3.4 1.9-7.1 2.8-10.7 2.8c-7.2 0-14.3-3.6-18.3-10c-6.8-11.1-13.8-18.9-21.7-26.1c-7.3-6.7-15.6-12.7-24.9-19.5c-.7-.5-1.4-1-2.1-1.5c-5-3.6-10-6.8-14.9-9.4c.6 1 1.2 2.1 1.8 3.2c14.4 26.4 29.2 63.1 29.2 104.9c0 11.2-9.5 20.3-21.2 20.3c-11.7 0-21.2-9.1-21.2-20.3c.1-31.8-11.6-62.3-23.8-84.9c-4-7.4-8-13.9-11.6-19.3c-3.4 5.2-7.2 11.3-11 18.3c-12.5 22.7-24.5 53.8-24.4 86c0 11.2-9.5 20.3-21.2 20.3s-21.2-9.1-21.2-20.3c.1-41.8 14.9-78.4 29.2-104.9c.6-1.1 1.2-2.1 1.8-3.2c-5 2.7-9.9 5.8-14.9 9.4c-.6 .5-1.3 .9-1.9 1.4c-9.5 6.9-17.8 12.9-25.1 19.7c-7.9 7.2-14.9 15.1-21.7 26.1c-5.9 9.7-18.9 12.9-29 7.2C.5 441.8-2.9 429.3 3.1 419.7c8.9-14.4 18.8-25.7 29-35c9.2-8.4 18.5-15.1 27.6-21.7c1-.7 2-1.4 3-2.2c4.7-3.5 9.6-6.7 14.6-9.6c-5-2.9-9.8-6.1-14.6-9.6C39.8 325 19.9 302.5 3.1 275.1c-5.9-9.7-2.6-22.1 7.5-27.8c10.1-5.7 23.1-2.5 29 7.2c14.6 23.7 31.1 42 48.7 54.9c18.9 13.7 37.4 20.5 56.5 21.5c1.7-.1 3.5-.1 5.2-.1c1.8 0 3.5 .1 5.2 .1c0 0 0 0 0 0c19.1-1.1 37.6-7.9 56.5-21.5c17.6-12.8 34.2-31.2 48.7-54.9c6-9.7 18.9-12.9 29-7.2c10.1 5.7 13.4 18.1 7.5 27.8c-16.8 27.4-36.7 49.9-59.6 66.6c-4.7 3.5-9.6 6.7-14.5 9.6c4.9 2.9 9.8 6.1 14.5 9.6c.9 .7 1.8 1.3 2.7 2c9.2 6.7 18.5 13.5 27.9 22z" }),
|
|
313
|
+
children
|
|
314
|
+
]
|
|
315
|
+
}
|
|
316
|
+
)
|
|
317
|
+
);
|
|
318
|
+
Keboola.displayName = "Keboola";
|
|
236
319
|
var variants = cva(
|
|
237
320
|
[
|
|
238
321
|
"tailwindcss-preflight",
|
|
@@ -420,6 +503,8 @@ var argoVariants = cva(
|
|
|
420
503
|
"tw-bg-clip-padding",
|
|
421
504
|
// anchor support
|
|
422
505
|
"!tw-no-underline",
|
|
506
|
+
"aria-disabled:tw-cursor-not-allowed",
|
|
507
|
+
"aria-disabled:tw-opacity-50",
|
|
423
508
|
// icon
|
|
424
509
|
"tw-shrink-0",
|
|
425
510
|
"[&_svg]:tw-pointer-events-none",
|
|
@@ -522,14 +607,11 @@ var Button = ({
|
|
|
522
607
|
block = false,
|
|
523
608
|
...buttonProps
|
|
524
609
|
}) => {
|
|
610
|
+
const isLegacy = useIsLegacyBrand();
|
|
611
|
+
const renderArgo = !isLegacy || argo;
|
|
525
612
|
const Comp = asChild ? Root : "button";
|
|
526
613
|
const isIconOnly = String(size).startsWith("icon");
|
|
527
|
-
const classNames =
|
|
528
|
-
size,
|
|
529
|
-
variant,
|
|
530
|
-
block,
|
|
531
|
-
className
|
|
532
|
-
});
|
|
614
|
+
const classNames = renderArgo ? argoVariants({ variant, size, block, className }) : variants({ size, variant, block, className });
|
|
533
615
|
const handleClick = (event) => {
|
|
534
616
|
const isAnchor = event.currentTarget.tagName === "A";
|
|
535
617
|
if (isAnchor && disabled) {
|
|
@@ -551,7 +633,7 @@ var Button = ({
|
|
|
551
633
|
onClick: handleClick,
|
|
552
634
|
className: cn(classNames),
|
|
553
635
|
children: [
|
|
554
|
-
isLoading && /* @__PURE__ */ jsx(Loader2, { className: "tw-size-4 tw-shrink-0 tw-animate-spin" }),
|
|
636
|
+
isLoading && /* @__PURE__ */ jsx(icons_exports.Loader2, { className: "tw-size-4 tw-shrink-0 tw-animate-spin" }),
|
|
555
637
|
/* @__PURE__ */ jsx(Slottable, { children: isLoading && isIconOnly ? null : children })
|
|
556
638
|
]
|
|
557
639
|
}
|
|
@@ -620,7 +702,7 @@ var Clipboard = ({
|
|
|
620
702
|
)
|
|
621
703
|
] });
|
|
622
704
|
};
|
|
623
|
-
var DEFAULT_ICON = /* @__PURE__ */ jsx(Copy, {});
|
|
705
|
+
var DEFAULT_ICON = /* @__PURE__ */ jsx(icons_exports.Copy, {});
|
|
624
706
|
var ClipboardButton = ({
|
|
625
707
|
// clipboard props
|
|
626
708
|
text,
|
|
@@ -650,6 +732,10 @@ var MIN_SCALE = 0.5;
|
|
|
650
732
|
var MAX_SCALE = 3;
|
|
651
733
|
var ZOOM_STEP = 0.1;
|
|
652
734
|
var ZoomableSvg = ({ html, copyText, className }) => {
|
|
735
|
+
const safeHtml = useMemo(
|
|
736
|
+
() => DOMPurify.sanitize(html, { USE_PROFILES: { svg: true, svgFilters: true } }),
|
|
737
|
+
[html]
|
|
738
|
+
);
|
|
653
739
|
const containerRef = useRef(null);
|
|
654
740
|
const [scale, setScale] = useState(1);
|
|
655
741
|
const [translate, setTranslate] = useState({ x: 0, y: 0 });
|
|
@@ -745,7 +831,7 @@ var ZoomableSvg = ({ html, copyText, className }) => {
|
|
|
745
831
|
isFullscreen && "tw-h-full [&>svg]:tw-h-full"
|
|
746
832
|
),
|
|
747
833
|
style: { transform: `translate(${translate.x}px, ${translate.y}px) scale(${scale})` },
|
|
748
|
-
dangerouslySetInnerHTML: { __html:
|
|
834
|
+
dangerouslySetInnerHTML: { __html: safeHtml }
|
|
749
835
|
}
|
|
750
836
|
)
|
|
751
837
|
}
|
|
@@ -782,7 +868,7 @@ var ZoomableSvg = ({ html, copyText, className }) => {
|
|
|
782
868
|
"aria-label": isFullscreen ? "Exit fullscreen" : "Fullscreen",
|
|
783
869
|
onClick: () => setIsFullscreen((f) => !f),
|
|
784
870
|
argo: true,
|
|
785
|
-
children: isFullscreen ? /* @__PURE__ */ jsx(Minimize2, { className: "tw-size-4" }) : /* @__PURE__ */ jsx(Maximize2, { className: "tw-size-4" })
|
|
871
|
+
children: isFullscreen ? /* @__PURE__ */ jsx(icons_exports.Minimize2, { className: "tw-size-4" }) : /* @__PURE__ */ jsx(icons_exports.Maximize2, { className: "tw-size-4" })
|
|
786
872
|
}
|
|
787
873
|
)
|
|
788
874
|
}
|
|
@@ -798,7 +884,7 @@ var ZoomableSvg = ({ html, copyText, className }) => {
|
|
|
798
884
|
"div",
|
|
799
885
|
{
|
|
800
886
|
role: "presentation",
|
|
801
|
-
className: "tw-fixed tw-inset-0 tw-z-[1060] tw-bg-
|
|
887
|
+
className: "tw-fixed tw-inset-0 tw-z-[1060] tw-bg-muted tw-p-4",
|
|
802
888
|
onClick: stopPropagation,
|
|
803
889
|
children: diagramContent
|
|
804
890
|
}
|
|
@@ -808,13 +894,18 @@ var ZoomableSvg = ({ html, copyText, className }) => {
|
|
|
808
894
|
"div",
|
|
809
895
|
{
|
|
810
896
|
className: cn(
|
|
811
|
-
"tw-overflow-hidden tw-rounded-md tw-border tw-border-
|
|
897
|
+
"tw-overflow-hidden tw-rounded-md tw-border tw-border-border tw-bg-muted",
|
|
812
898
|
className
|
|
813
899
|
),
|
|
814
900
|
children: diagramContent
|
|
815
901
|
}
|
|
816
902
|
);
|
|
817
903
|
};
|
|
904
|
+
var PRIMARY_FALLBACK_CHANNELS = "31 143 255";
|
|
905
|
+
var resolvePrimary = () => {
|
|
906
|
+
const channels = typeof document === "undefined" ? PRIMARY_FALLBACK_CHANNELS : getComputedStyle(document.documentElement).getPropertyValue("--color-primary").trim() || PRIMARY_FALLBACK_CHANNELS;
|
|
907
|
+
return `rgb(${channels})`;
|
|
908
|
+
};
|
|
818
909
|
var mermaidPromise = null;
|
|
819
910
|
var getMermaid = () => {
|
|
820
911
|
if (!mermaidPromise) {
|
|
@@ -863,7 +954,7 @@ var getMermaid = () => {
|
|
|
863
954
|
taskTextColor: colors.neutral[800],
|
|
864
955
|
taskTextDarkColor: colors.neutral[800],
|
|
865
956
|
taskTextLightColor: colors.neutral[800],
|
|
866
|
-
activeTaskBorderColor:
|
|
957
|
+
activeTaskBorderColor: resolvePrimary(),
|
|
867
958
|
activeTaskBkgColor: colors.secondary[200],
|
|
868
959
|
doneTaskBorderColor: colors.primary[600],
|
|
869
960
|
doneTaskBkgColor: colors.primary[100],
|
|
@@ -915,46 +1006,28 @@ var makeResponsive = (svgString) => {
|
|
|
915
1006
|
};
|
|
916
1007
|
var RENDER_DEBOUNCE_MS = 300;
|
|
917
1008
|
var svgCache = /* @__PURE__ */ new Map();
|
|
1009
|
+
var resolveSyncSvg = (code) => {
|
|
1010
|
+
const cached = svgCache.get(code);
|
|
1011
|
+
if (cached) return cached;
|
|
1012
|
+
const fast = tryFastRender(code);
|
|
1013
|
+
if (fast) svgCache.set(code, fast);
|
|
1014
|
+
return fast;
|
|
1015
|
+
};
|
|
918
1016
|
var MermaidDiagram = ({ code }) => {
|
|
919
1017
|
const id = useId();
|
|
920
|
-
const [svg, setSvg] = useState(() =>
|
|
921
|
-
const cached = svgCache.get(code);
|
|
922
|
-
if (cached) return cached;
|
|
923
|
-
const fast = tryFastRender(code);
|
|
924
|
-
if (fast) {
|
|
925
|
-
svgCache.set(code, fast);
|
|
926
|
-
return fast;
|
|
927
|
-
}
|
|
928
|
-
return null;
|
|
929
|
-
});
|
|
1018
|
+
const [svg, setSvg] = useState(() => resolveSyncSvg(code));
|
|
930
1019
|
const [renderFailed, setRenderFailed] = useState(false);
|
|
931
1020
|
const debounceRef = useRef(null);
|
|
932
1021
|
const renderIdRef = useRef(0);
|
|
933
1022
|
const [prevCode, setPrevCode] = useState(code);
|
|
934
1023
|
if (code !== prevCode) {
|
|
935
1024
|
setPrevCode(code);
|
|
936
|
-
|
|
937
|
-
const fast = cached ?? tryFastRender(code);
|
|
938
|
-
if (fast && !cached) svgCache.set(code, fast);
|
|
939
|
-
setSvg(fast);
|
|
1025
|
+
setSvg(resolveSyncSvg(code));
|
|
940
1026
|
setRenderFailed(false);
|
|
941
1027
|
}
|
|
942
1028
|
useEffect(() => {
|
|
943
|
-
if (svgCache.has(code))
|
|
944
|
-
setSvg(svgCache.get(code));
|
|
945
|
-
setRenderFailed(false);
|
|
946
|
-
return;
|
|
947
|
-
}
|
|
948
|
-
const fastResult = tryFastRender(code);
|
|
949
|
-
if (fastResult) {
|
|
950
|
-
svgCache.set(code, fastResult);
|
|
951
|
-
setSvg(fastResult);
|
|
952
|
-
setRenderFailed(false);
|
|
953
|
-
return;
|
|
954
|
-
}
|
|
955
|
-
setSvg(null);
|
|
1029
|
+
if (svgCache.has(code)) return;
|
|
956
1030
|
const currentRenderId = ++renderIdRef.current;
|
|
957
|
-
setRenderFailed(false);
|
|
958
1031
|
if (debounceRef.current) {
|
|
959
1032
|
clearTimeout(debounceRef.current);
|
|
960
1033
|
}
|