@graphysdk/react-renderer 1.9.0-beta.1789467548664 → 1.9.0-beta.1789480282040
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/editable.cjs +1 -1
- package/dist/editable.css +1 -1
- package/dist/editable.d.ts +5 -5
- package/dist/editable.mjs +17 -17
- package/dist/graph-config.cjs +1 -1
- package/dist/graph-config.d.ts +11 -11
- package/dist/graph-config.mjs +1 -1
- package/dist/{history-chords-DYyA8P8x.js → history-chords-B2TZO9S_.js} +1035 -1035
- package/dist/{history-chords-PbUU5Ryz.cjs → history-chords-DK83-lsv.cjs} +2 -2
- package/dist/history-chords.css +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +53 -53
- package/dist/index.mjs +116 -116
- package/dist/{theme.contract.css-pudzI2o1.js → theme.contract.css-DaZ5UPN0.js} +11 -11
- package/dist/{theme.contract.css-CEjZ4rbL.cjs → theme.contract.css-Dd-73-Je.cjs} +1 -1
- package/package.json +2 -2
package/dist/history-chords.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
@property --graphy-text-scale{syntax:"<number>";inherits:true;initial-value:1}@property --graphy-font-size-xxs{syntax:"<length>";inherits:true;initial-value:10px}@property --graphy-font-size-xs{syntax:"<length>";inherits:true;initial-value:11px}@property --graphy-font-size-sm{syntax:"<length>";inherits:true;initial-value:12px}@property --graphy-font-size-md{syntax:"<length>";inherits:true;initial-value:14px}@property --graphy-font-size-lg{syntax:"<length>";inherits:true;initial-value:16px}@property --graphy-font-size-xl{syntax:"<length>";inherits:true;initial-value:20px}@property --graphy-font-size-editor-body{syntax:"<length>";inherits:true;initial-value:15px}@property --graphy-font-size-heading-sm{syntax:"<length>";inherits:true;initial-value:18px}@property --graphy-font-size-heading-md{syntax:"<length>";inherits:true;initial-value:22px}@property --graphy-font-size-heading-lg{syntax:"<length>";inherits:true;initial-value:28px}._1d8mpa10{overflow:visible}._324dw20{filter:drop-shadow(0 2px 2px #0e0e3414)drop-shadow(0 0 2px #0f0f181f)}._1suo8ub0{filter:drop-shadow(0 4px 4px #0e0e3414)drop-shadow(0 0 4px #0f0f181f)}._16vokpr0{pointer-events:none;-webkit-user-select:none;user-select:none}._2qyyu60{flex-shrink:0;display:block;overflow:visible}._10igzta0{pointer-events:none;position:fixed;top:0;left:0}.bow4tg0{color:var(--graphy-text-primary);font-size:calc(10px * var(--graphy-text-scale));position:relative;overflow:hidden}.bow4tg1{color:var(--graphy-text-primary);font-size:calc(10px * var(--graphy-text-scale));display:contents}.bow4tg2{background-color:var(--graphy-graph-background);position:absolute;top:0;bottom:0;left:0;right:0}.bow4tg2[data-graph-mode=point-and-edit]{-webkit-user-select:none;user-select:none}.bow4tg3{outline:none}.bow4tg4{background-image:linear-gradient(45deg, color-mix(in srgb, var(--graphy-text-primary) 5%, transparent) 25%, transparent 25%, transparent 75%, color-mix(in srgb, var(--graphy-text-primary) 5%, transparent) 75%, color-mix(in srgb, var(--graphy-text-primary) 5%, transparent)), linear-gradient(45deg, color-mix(in srgb, var(--graphy-text-primary) 5%, transparent) 25%, transparent 25%, transparent 75%, color-mix(in srgb, var(--graphy-text-primary) 5%, transparent) 75%, color-mix(in srgb, var(--graphy-text-primary) 5%, transparent));background-position:0 0,1em 1em;background-size:2em 2em}._1ii3bsb0{--graphy-transparent:transparent;--graphy-white:#fff;--graphy-black:#000;--graphy-grey-100:#fff;--graphy-grey-95:#fcfcfc;--graphy-grey-90:#fafafa;--graphy-grey-85:#f5f5f5;--graphy-grey-80:#f0f0f0;--graphy-grey-75:#e8e8e8;--graphy-grey-70:#e5e5e5;--graphy-grey-60:#ccc;--graphy-grey-50:#c4c4c4;--graphy-grey-0:#1d2129;--graphy-red-60:#e14b49;--graphy-red-50:#f93939;--graphy-amber-70:#ffba8c;--graphy-amber-50:#ffc849;--graphy-amber-40:#feae47;--graphy-amber-30:#e7a816;--graphy-green-60:#06b299;--graphy-green-50:#42cd69;--graphy-blue-80:#2e62ff;--graphy-blue-60:#3d70ff;--graphy-purple-50:#7b56ea;--graphy-purple-30:#e093fe;--graphy-grey-gradient-80:linear-gradient(to top, #f0f0f1, #f9f9ff);--graphy-text-primary:var(--graphy-black);--graphy-text-secondary:color-mix(in srgb, transparent, var(--graphy-text-primary) 60%);--graphy-text-disabled:color-mix(in srgb, transparent, var(--graphy-text-primary) 50%);--graphy-icon-primary:currentColor;--graphy-icon-secondary:color-mix(in srgb, transparent, var(--graphy-text-primary) 60%);--graphy-icon-sticker-background:var(--graphy-grey-100);--graphy-brand:var(--graphy-purple-50);--graphy-success:var(--graphy-green-50);--graphy-warning:var(--graphy-amber-50);--graphy-alert:var(--graphy-red-50);--graphy-border-100:var(--graphy-grey-0);--graphy-border-50:color-mix(in srgb, transparent, var(--graphy-grey-0) 50%);--graphy-border-10:color-mix(in srgb, transparent, var(--graphy-grey-0) 10%);--graphy-sunken-background:var(--graphy-grey-90);--graphy-default-background:var(--graphy-grey-100);--graphy-raised-background:var(--graphy-grey-85);--graphy-overlay-background:var(--graphy-grey-100);--graphy-overlay-border-gradient:var(--graphy-border-10);--graphy-elevation-xs:0 0 2px #0f0f181f, 0 2px 2px #0e0e3414;--graphy-elevation-sm:0 0 4px #0f0f181f, 0 4px 4px #0e0e3414;--graphy-elevation-md:0 0 8px #0f0f181f, 0 8px 8px #0e0e3414;--graphy-elevation-lg:0 0 16px #0f0f181f, 0 16px 16px #0e0e3414;--graphy-radii-xs:4px;--graphy-radii-sm:6px;--graphy-radii-md:8px;--graphy-radii-lg:12px;--graphy-space-xxs:2px;--graphy-space-xs:4px;--graphy-space-sm:6px;--graphy-space-md:8px;--graphy-space-lg:12px;--graphy-space-xl:16px;--graphy-z-index-toolbar:10;--graphy-z-index-toolbar-tooltip:20;--graphy-z-index-toolbar-popover:30;--graphy-z-index-editor-popover:950;--graphy-graph-background:var(--graphy-grey-100);--graphy-legend-focus-outline-color:var(--graphy-border-50);--graphy-toolbar-background-color:var(--graphy-overlay-background);--graphy-toolbar-button-background-color:transparent;--graphy-toolbar-button-background-color-hovered:var(--graphy-grey-80);--graphy-toolbar-button-background-color-selected:var(--graphy-grey-60);--graphy-toolbar-separator-color:var(--graphy-grey-60);--graphy-annotation-frame-border-color:var(--graphy-blue-60);--graphy-edit-menu-trigger-icon-color:#3d414c;--graphy-canvas-default:#000;--graphy-canvas-blue:#3b82f6;--graphy-canvas-cyan:#06b6d4;--graphy-canvas-green:#10b981;--graphy-canvas-yellow:#e5b400;--graphy-canvas-orange:#f97316;--graphy-canvas-red:#ef4444;--graphy-canvas-pink:#e845bf;--graphy-canvas-purple:#8b5cf6;--graphy-canvas-gray:#78716c;--graphy-canvas-inverse:#fff;--graphy-tooltip-row-gap:4px;--graphy-editor-control-height:32px;--graphy-legend-swatch-gap:8px;--graphy-headline-row-gap:2px;--graphy-text-scale:1;--graphy-font-family:"Stack Sans Text", "Inter", -apple-system, BlinkMacSystemFont, "Open Sans", "Segoe UI", "Roboto", "Oxygen-Sans", "Ubuntu", "Cantarell", "Helvetica Neue", "NotoSansArabic", "NotoSansJP", "NotoSansSC", "NotoSansKR", "NotoSerifKR", sans-serif, "Apple Color Emoji", "NotoColorEmoji";--graphy-font-family-heading:"Stack Sans Text", "Inter", -apple-system, BlinkMacSystemFont, "Open Sans", "Segoe UI", "Roboto", "Oxygen-Sans", "Ubuntu", "Cantarell", "Helvetica Neue", "NotoSansArabic", "NotoSansJP", "NotoSansSC", "NotoSansKR", "NotoSerifKR", sans-serif, "Apple Color Emoji", "NotoColorEmoji";--graphy-font-weight-regular:400;--graphy-font-weight-medium:500;--graphy-font-weight-semibold:600;--graphy-font-weight-bold:700;--graphy-font-weight-extra-bold:800;--graphy-font-size-xxs:1em;--graphy-font-size-xs:1.1em;--graphy-font-size-sm:1.2em;--graphy-font-size-md:1.4em;--graphy-font-size-lg:1.6em;--graphy-font-size-xl:2em;--graphy-font-line-height-xxs:1;--graphy-font-line-height-xs:1;--graphy-font-line-height-sm:1.3;--graphy-font-line-height-md:1.43;--graphy-font-line-height-lg:1;--graphy-font-line-height-xl:1;--graphy-font-size-editor-body:1.5em;--graphy-font-size-heading-sm:1.8em;--graphy-font-size-heading-md:2.2em;--graphy-font-size-heading-lg:2.8em;--graphy-font-line-height-editor-body:1.47;--graphy-font-line-height-heading-sm:1.25;--graphy-font-line-height-heading-md:1.41;--graphy-font-line-height-heading-lg:1.29;--graphy-font-uitooltip:var(--graphy-font-weight-medium) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--graphy-font-family);--graphy-font-uitooltip-secondary:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--graphy-font-family);--graphy-font-button:var(--graphy-font-weight-medium) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--graphy-font-family);--graphy-font-input:var(--graphy-font-weight-medium) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--graphy-font-family);--graphy-font-input-label:var(--graphy-font-weight-medium) var(--graphy-font-size-xxs)/var(--graphy-font-line-height-xxs) var(--graphy-font-family);--graphy-font-select-label:var(--graphy-font-weight-medium) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--graphy-font-family);--graphy-font-select-description:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--graphy-font-family);--graphy-font-color-select-label:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--graphy-font-family);--graphy-font-menu-title:var(--graphy-font-weight-semibold) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--graphy-font-family);--graphy-font-menu-group-title:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--graphy-font-family);--graphy-font-menu-item-label:var(--graphy-font-weight-medium) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--graphy-font-family);--graphy-font-menu-item-label-secondary:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--graphy-font-family);--graphy-font-error-boundary-title:var(--graphy-font-weight-semibold) var(--graphy-font-size-heading-sm)/var(--graphy-font-line-height-heading-sm) var(--graphy-font-family);--graphy-font-error-boundary-message:var(--graphy-font-weight-medium) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--graphy-font-family);--graphy-font-table-cell:var(--graphy-font-weight-medium) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--graphy-font-family);--graphy-font-table-header-cell:var(--graphy-font-weight-semibold) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--graphy-font-family);--graphy-font-source-label:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--graphy-font-family);--graphy-font-source-link:var(--graphy-font-weight-regular) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--graphy-font-family);--graphy-font-text-editor-h1:var(--graphy-font-weight-bold) var(--graphy-font-size-heading-lg)/var(--graphy-font-line-height-heading-lg) var(--graphy-font-family-heading);--graphy-font-text-editor-h2:var(--graphy-font-weight-bold) var(--graphy-font-size-heading-md)/var(--graphy-font-line-height-heading-md) var(--graphy-font-family-heading);--graphy-font-text-editor-h3:var(--graphy-font-weight-semibold) var(--graphy-font-size-heading-sm)/var(--graphy-font-line-height-heading-sm) var(--graphy-font-family-heading);--graphy-font-text-editor-h6:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--graphy-font-family);--graphy-font-text-editor-body:var(--graphy-font-weight-medium) var(--graphy-font-size-editor-body)/var(--graphy-font-line-height-editor-body) var(--graphy-font-family);--graphy-font-text-editor-link:var(--graphy-font-weight-regular) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--graphy-font-family);--graphy-font-highlight-mode-title:var(--graphy-font-weight-bold) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--graphy-font-family);--graphy-font-highlight-mode-subtitle:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--graphy-font-family);--graphy-font-editor-control-label:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--graphy-font-family);--graphy-font-editor-control-value:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--graphy-font-family);--graphy-font-editor-section-title:var(--graphy-font-weight-semibold) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--graphy-font-family);--graphy-font-editor-caption:var(--graphy-font-weight-medium) var(--graphy-font-size-xxs)/var(--graphy-font-line-height-xxs) var(--graphy-font-family)}._1ii3bsb1{--graphy-transparent:transparent;--graphy-white:#fff;--graphy-black:#000;--graphy-grey-100:#000;--graphy-grey-95:#0d0d0d;--graphy-grey-90:#1a1a1a;--graphy-grey-85:#1f1f1f;--graphy-grey-80:#2a2a2a;--graphy-grey-75:#2e2e2e;--graphy-grey-70:#353535;--graphy-grey-60:#494949;--graphy-grey-50:#6f6f6f;--graphy-grey-0:#fff;--graphy-red-60:#cb3333;--graphy-red-50:#f93939;--graphy-amber-70:#f48135;--graphy-amber-50:#feae47;--graphy-amber-40:#ffc849;--graphy-amber-30:#ffd061;--graphy-green-60:#0ac600;--graphy-green-50:#42cd69;--graphy-blue-80:#2e62ff;--graphy-blue-60:#3d70ff;--graphy-purple-50:#7b56ea;--graphy-purple-30:#e093fe;--graphy-grey-gradient-80:linear-gradient(to top, #222429, #31353f);--graphy-text-primary:var(--graphy-grey-0);--graphy-text-secondary:color-mix(in srgb, transparent, var(--graphy-text-primary) 80%);--graphy-text-disabled:color-mix(in srgb, transparent, var(--graphy-text-primary) 50%);--graphy-icon-primary:currentColor;--graphy-icon-secondary:color-mix(in srgb, transparent, var(--graphy-text-primary) 60%);--graphy-icon-sticker-background:var(--graphy-grey-70);--graphy-border-100:var(--graphy-grey-0);--graphy-border-50:color-mix(in srgb, transparent, var(--graphy-grey-0) 50%);--graphy-border-10:color-mix(in srgb, transparent, var(--graphy-grey-0) 10%);--graphy-brand:var(--graphy-purple-50);--graphy-success:var(--graphy-green-50);--graphy-warning:var(--graphy-amber-50);--graphy-alert:var(--graphy-red-50);--graphy-sunken-background:var(--graphy-grey-100);--graphy-default-background:var(--graphy-grey-90);--graphy-raised-background:var(--graphy-grey-80);--graphy-overlay-background:var(--graphy-grey-90);--graphy-overlay-border-gradient:var(--graphy-grey-gradient-80);--graphy-elevation-xs:0 0 2px #0f0f181f, 0 2px 2px #0e0e3414;--graphy-elevation-sm:0 0 4px #0f0f181f, 0 4px 4px #0e0e3414;--graphy-elevation-md:0 0 8px #0f0f181f, 0 8px 8px #0e0e3414;--graphy-elevation-lg:0 0 16px #0f0f181f, 0 16px 16px #0e0e3414;--graphy-radii-xs:4px;--graphy-radii-sm:6px;--graphy-radii-md:8px;--graphy-radii-lg:12px;--graphy-space-xxs:2px;--graphy-space-xs:4px;--graphy-space-sm:6px;--graphy-space-md:8px;--graphy-space-lg:12px;--graphy-space-xl:16px;--graphy-z-index-toolbar:10;--graphy-z-index-toolbar-tooltip:20;--graphy-z-index-toolbar-popover:30;--graphy-z-index-editor-popover:950;--graphy-graph-background:var(--graphy-grey-90);--graphy-legend-focus-outline-color:var(--graphy-border-50);--graphy-toolbar-background-color:var(--graphy-overlay-background);--graphy-toolbar-button-background-color:transparent;--graphy-toolbar-button-background-color-hovered:var(--graphy-grey-80);--graphy-toolbar-button-background-color-selected:var(--graphy-grey-60);--graphy-toolbar-separator-color:var(--graphy-grey-60);--graphy-annotation-frame-border-color:var(--graphy-blue-60);--graphy-edit-menu-trigger-icon-color:var(--graphy-white);--graphy-canvas-default:#fff;--graphy-canvas-blue:#60a5fa;--graphy-canvas-cyan:#22d3ee;--graphy-canvas-green:#34d399;--graphy-canvas-yellow:#ffc800;--graphy-canvas-orange:#fb923c;--graphy-canvas-red:#f87171;--graphy-canvas-pink:#f979d9;--graphy-canvas-purple:#a78bfa;--graphy-canvas-gray:#a8a29e;--graphy-canvas-inverse:#000;--graphy-tooltip-row-gap:4px;--graphy-editor-control-height:32px;--graphy-legend-swatch-gap:8px;--graphy-headline-row-gap:2px;--graphy-text-scale:1;--graphy-font-family:"Stack Sans Text", "Inter", -apple-system, BlinkMacSystemFont, "Open Sans", "Segoe UI", "Roboto", "Oxygen-Sans", "Ubuntu", "Cantarell", "Helvetica Neue", "NotoSansArabic", "NotoSansJP", "NotoSansSC", "NotoSansKR", "NotoSerifKR", sans-serif, "Apple Color Emoji", "NotoColorEmoji";--graphy-font-family-heading:"Stack Sans Text", "Inter", -apple-system, BlinkMacSystemFont, "Open Sans", "Segoe UI", "Roboto", "Oxygen-Sans", "Ubuntu", "Cantarell", "Helvetica Neue", "NotoSansArabic", "NotoSansJP", "NotoSansSC", "NotoSansKR", "NotoSerifKR", sans-serif, "Apple Color Emoji", "NotoColorEmoji";--graphy-font-weight-regular:400;--graphy-font-weight-medium:500;--graphy-font-weight-semibold:600;--graphy-font-weight-bold:700;--graphy-font-weight-extra-bold:800;--graphy-font-size-xxs:1em;--graphy-font-size-xs:1.1em;--graphy-font-size-sm:1.2em;--graphy-font-size-md:1.4em;--graphy-font-size-lg:1.6em;--graphy-font-size-xl:2em;--graphy-font-line-height-xxs:1;--graphy-font-line-height-xs:1;--graphy-font-line-height-sm:1.3;--graphy-font-line-height-md:1.43;--graphy-font-line-height-lg:1;--graphy-font-line-height-xl:1;--graphy-font-size-editor-body:1.5em;--graphy-font-size-heading-sm:1.8em;--graphy-font-size-heading-md:2.2em;--graphy-font-size-heading-lg:2.8em;--graphy-font-line-height-editor-body:1.47;--graphy-font-line-height-heading-sm:1.25;--graphy-font-line-height-heading-md:1.41;--graphy-font-line-height-heading-lg:1.29;--graphy-font-uitooltip:var(--graphy-font-weight-medium) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--graphy-font-family);--graphy-font-uitooltip-secondary:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--graphy-font-family);--graphy-font-button:var(--graphy-font-weight-medium) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--graphy-font-family);--graphy-font-input:var(--graphy-font-weight-medium) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--graphy-font-family);--graphy-font-input-label:var(--graphy-font-weight-medium) var(--graphy-font-size-xxs)/var(--graphy-font-line-height-xxs) var(--graphy-font-family);--graphy-font-select-label:var(--graphy-font-weight-medium) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--graphy-font-family);--graphy-font-select-description:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--graphy-font-family);--graphy-font-color-select-label:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--graphy-font-family);--graphy-font-menu-title:var(--graphy-font-weight-semibold) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--graphy-font-family);--graphy-font-menu-group-title:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--graphy-font-family);--graphy-font-menu-item-label:var(--graphy-font-weight-medium) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--graphy-font-family);--graphy-font-menu-item-label-secondary:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--graphy-font-family);--graphy-font-error-boundary-title:var(--graphy-font-weight-semibold) var(--graphy-font-size-heading-sm)/var(--graphy-font-line-height-heading-sm) var(--graphy-font-family);--graphy-font-error-boundary-message:var(--graphy-font-weight-medium) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--graphy-font-family);--graphy-font-table-cell:var(--graphy-font-weight-medium) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--graphy-font-family);--graphy-font-table-header-cell:var(--graphy-font-weight-semibold) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--graphy-font-family);--graphy-font-source-label:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--graphy-font-family);--graphy-font-source-link:var(--graphy-font-weight-regular) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--graphy-font-family);--graphy-font-text-editor-h1:var(--graphy-font-weight-bold) var(--graphy-font-size-heading-lg)/var(--graphy-font-line-height-heading-lg) var(--graphy-font-family-heading);--graphy-font-text-editor-h2:var(--graphy-font-weight-bold) var(--graphy-font-size-heading-md)/var(--graphy-font-line-height-heading-md) var(--graphy-font-family-heading);--graphy-font-text-editor-h3:var(--graphy-font-weight-semibold) var(--graphy-font-size-heading-sm)/var(--graphy-font-line-height-heading-sm) var(--graphy-font-family-heading);--graphy-font-text-editor-h6:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--graphy-font-family);--graphy-font-text-editor-body:var(--graphy-font-weight-medium) var(--graphy-font-size-editor-body)/var(--graphy-font-line-height-editor-body) var(--graphy-font-family);--graphy-font-text-editor-link:var(--graphy-font-weight-regular) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--graphy-font-family);--graphy-font-highlight-mode-title:var(--graphy-font-weight-bold) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--graphy-font-family);--graphy-font-highlight-mode-subtitle:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--graphy-font-family);--graphy-font-editor-control-label:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--graphy-font-family);--graphy-font-editor-control-value:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--graphy-font-family);--graphy-font-editor-section-title:var(--graphy-font-weight-semibold) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--graphy-font-family);--graphy-font-editor-caption:var(--graphy-font-weight-medium) var(--graphy-font-size-xxs)/var(--graphy-font-line-height-xxs) var(--graphy-font-family)}._1cocly40{color:inherit;text-underline-offset:.15em;text-decoration:underline}._19519k80{flex-direction:column;gap:4px;min-width:120px;max-width:280px;display:flex}._19519k81{white-space:normal;overflow-wrap:anywhere}._19519k82{flex-direction:column;display:flex}._19519k83{padding-block:var(--graphy-tooltip-row-gap);flex-direction:row;align-items:center;gap:8px;display:flex}._19519k84{flex-shrink:0;display:block;overflow:visible}._19519k85{width:12px;height:12px}._19519k86{white-space:nowrap;text-overflow:ellipsis;min-width:0;overflow:hidden}._19519k87{font-variant-numeric:tabular-nums;white-space:nowrap;text-align:right}._19519k88{pointer-events:none;-webkit-user-select:none;user-select:none;z-index:1000;position:fixed;top:0;left:0}.vultop0{box-sizing:border-box;white-space:nowrap;color:#2a2a28;opacity:.62;background-color:#ffffff8c;border-radius:999px;flex-shrink:0;align-items:center;gap:10px;height:22px;padding-inline-start:9px;padding-inline-end:11px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,Roboto,Noto Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:11.5px;line-height:1;text-decoration:none;transition:opacity .12s,max-width .25s,padding .25s,gap .25s;display:inline-flex;box-shadow:0 1px 4px #00000017}.vultop0:hover{opacity:1}.vultop0:focus-visible{opacity:1}.vultop0:focus-visible{outline-offset:2px;outline:2px solid #2a2a28}.vultop0[data-zone=mid]{opacity:.8;background-color:#ffffffbf}.vultop0[data-zone=dark]{opacity:.85;color:#fff;box-shadow:none;background-color:#ffffff14}.vultop0[data-zone=dark]:focus-visible{outline:2px solid #fff}.vultop0[data-visual=mini]{justify-content:center;gap:0;width:22px;padding-inline-start:0;padding-inline-end:0}.vultop0[data-visual=mini]:hover{gap:10px;width:auto;padding-inline-start:9px;padding-inline-end:11px}.vultop0[data-visual=mini]:focus-visible{gap:10px;width:auto;padding-inline-start:9px;padding-inline-end:11px}.vultop1{flex-direction:row-reverse}.vultop2{flex-shrink:0;justify-content:center;align-items:center;width:9px;height:12px;display:inline-flex}.vultop3{object-fit:contain;width:9px;height:12px;display:block}.vultop0[data-zone=dark] .vultop3{filter:invert()}.vultop4{align-items:baseline;gap:.3em;max-width:120px;transition:max-width .25s,opacity .25s;display:inline-flex;overflow:hidden}.vultop0[data-visual=mini] .vultop4{opacity:0;max-width:0}.vultop0[data-visual=mini]:hover .vultop4{opacity:1;max-width:120px}.vultop0[data-visual=mini]:focus-visible .vultop4{opacity:1;max-width:120px}.vultop5{font-weight:550}.vultop6{place-self:end}.vultop7{position:absolute;top:50%;right:0;transform:translateY(-50%)}@media (prefers-reduced-motion:reduce){.vultop0,.vultop4{transition:none}}._4dlrid0{margin:0}._4dlrid0 :-webkit-any(h1,h2,h3,p){font:inherit;color:inherit;margin:0}._4dlrid0 :is(h1,h2,h3,p){font:inherit;color:inherit;margin:0}.xfz7dq0{position:absolute}.xfz7dq1{align-items:end;column-gap:var(--graphy-space-xs);color:var(--graphy-text-secondary);grid-template-columns:minmax(0,1fr) auto;display:grid}.xfz7dq2{min-width:0}.xfz7dq3{overflow-wrap:anywhere;text-decoration:underline}.xfz7dq3:hover{color:var(--graphy-text-primary)}.xfz7dq4{margin-right:var(--graphy-space-xs)}.xfz7dq5{overflow-wrap:anywhere}._1k4qtbg0{position:absolute}._1k4qtbg1{padding-right:110px}._1u9qprb0{pointer-events:none;justify-content:start;align-items:start;display:flex;position:absolute}._1u9qprb1{pointer-events:none;justify-content:center;align-items:center;display:flex;position:absolute}._9aen060{align-items:baseline;gap:4px;display:flex}._9aen061,._9aen062{align-items:center;gap:4px;display:flex}._9aen063{align-items:start;gap:var(--graphy-headline-row-gap);flex-direction:column;display:flex}.asohov0{flex-shrink:0}.asohov1{color:var(--graphy-icon-primary)}.asohov2{color:var(--graphy-icon-secondary)}.n7clvo0{white-space:nowrap}.n7clvo1{color:var(--graphy-text-secondary)}.n7clvo2{white-space:nowrap}.n7clvo3{border-radius:50%;justify-content:center;align-items:center;width:12px;height:12px;display:flex}.n7clvo4{transform:rotate(180deg)}._1oj6yix0{pointer-events:none;height:100%;position:relative}._1oj6yix1{pointer-events:none;position:absolute;top:0;left:0;overflow:visible}._1oj6yix2{white-space:nowrap;position:absolute;transform:translateY(-50%)}._6a636s0{pointer-events:none;position:absolute}._1kjk02r0{flex-shrink:0;align-items:center;display:inline-flex;position:relative}._1kjk02r1{padding-inline-start:4px}._1kjk02r2{padding-inline-start:8px}._1kjk02r3{padding-block-start:4px}._1kjk02r4{padding-block-start:8px}._1kjk02r5{pointer-events:none;opacity:.6;position:absolute}._1kjk02r6{top:0;bottom:0}._1kjk02r6:not(:-webkit-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){left:4px;right:0}._1kjk02r6:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){left:4px;right:0}._1kjk02r6:-webkit-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){left:0;right:4px}._1kjk02r6:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){left:0;right:4px}._1kjk02r7{top:0;bottom:0}._1kjk02r7:not(:-webkit-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){left:8px;right:0}._1kjk02r7:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){left:8px;right:0}._1kjk02r7:-webkit-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){left:0;right:8px}._1kjk02r7:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){left:0;right:8px}._1kjk02r8{top:4px;bottom:0;left:0;right:0}._1kjk02r9{top:8px;bottom:0;left:0;right:0}._1kjk02ra{white-space:nowrap;cursor:pointer;pointer-events:auto;-webkit-appearance:none;appearance:none;background:0 0;border:none;align-items:center;padding:0;display:inline-flex;position:relative}._1kjk02ra:focus-visible{outline:1px solid var(--graphy-legend-focus-outline-color)}._1kjk02rb{font-variant-numeric:tabular-nums}._1kjk02rc{pointer-events:auto;z-index:40;max-width:320px;max-height:240px;overflow-y:auto}._1kjk02rd{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}._1kjk02re{align-items:center;gap:var(--graphy-legend-swatch-gap);white-space:nowrap;display:flex}._1dw9dgx0{opacity:.7;border-radius:50%}._1cecisi0{pointer-events:none;flex-wrap:nowrap;align-items:center;block-size:100%;inline-size:100%;display:flex}._1cecisi1{flex-direction:row}._1cecisi2{flex-direction:column}._1cecisi3{justify-content:flex-start}._1cecisi4{justify-content:center}._1cecisi5{justify-content:flex-end}._1cecisi6{align-items:flex-start}._1cecisi7{align-items:flex-end}._1cecisi8{align-items:center;gap:var(--graphy-legend-swatch-gap);white-space:nowrap;flex-shrink:0;display:flex}._1i8rg6j0{cursor:pointer}._1aj6s5s0{pointer-events:auto;font-family:var(--graphy-font-family);word-wrap:break-word;white-space:break-spaces;text-align:center;box-sizing:border-box;width:100%}._1aj6s5s0 p,._1aj6s5s0 h1,._1aj6s5s0 h2,._1aj6s5s0 h3{margin:0}._1aj6s5s1 .ProseMirror{outline:none;min-height:1em}._1aj6s5s1 .ProseMirror .is-empty:before{content:attr(data-placeholder);color:currentColor;opacity:.4;float:left;pointer-events:none;height:0}.ph8bdc0{pointer-events:none}.ph8bdc1{flex-shrink:0;align-items:center;display:flex}.ph8bdc2{font-family:var(--graphy-font-family)}.ph8bdc3{box-sizing:border-box;white-space:nowrap;-webkit-user-select:none;user-select:none;flex-direction:row;align-items:center;gap:5px;width:100%;height:100%;display:flex}.ph8bdc4{pointer-events:auto}.ph8bdc5,._1agclyl0,._1agclyl1{pointer-events:none}._1agclyl2{pointer-events:none;font-variant-numeric:tabular-nums}.to1jkx2{stroke-linecap:round;overflow:visible}.to1jkx3{transition:opacity .15s ease-out,filter .15s ease-out}[data-hover-active=true] .to1jkx3{opacity:var(--to1jkx0,.4);filter:var(--to1jkx1,none)}._17uhij30{position:absolute;top:0;left:0;overflow:visible}
|
|
1
|
+
@property --graphy-text-scale{syntax:"<number>";inherits:true;initial-value:1}@property --graphy-font-size-xxs{syntax:"<length>";inherits:true;initial-value:10px}@property --graphy-font-size-xs{syntax:"<length>";inherits:true;initial-value:11px}@property --graphy-font-size-sm{syntax:"<length>";inherits:true;initial-value:12px}@property --graphy-font-size-md{syntax:"<length>";inherits:true;initial-value:14px}@property --graphy-font-size-lg{syntax:"<length>";inherits:true;initial-value:16px}@property --graphy-font-size-xl{syntax:"<length>";inherits:true;initial-value:20px}@property --graphy-font-size-editor-body{syntax:"<length>";inherits:true;initial-value:15px}@property --graphy-font-size-heading-sm{syntax:"<length>";inherits:true;initial-value:18px}@property --graphy-font-size-heading-md{syntax:"<length>";inherits:true;initial-value:22px}@property --graphy-font-size-heading-lg{syntax:"<length>";inherits:true;initial-value:28px}._1d8mpa10{overflow:visible}._324dw20{filter:drop-shadow(0 2px 2px #0e0e3414)drop-shadow(0 0 2px #0f0f181f)}._1suo8ub0{filter:drop-shadow(0 4px 4px #0e0e3414)drop-shadow(0 0 4px #0f0f181f)}._16vokpr0{pointer-events:none;-webkit-user-select:none;user-select:none}._2qyyu60{flex-shrink:0;display:block;overflow:visible}._10igzta0{pointer-events:none;position:fixed;top:0;left:0}.bow4tg0{color:var(--graphy-text-primary);font-size:calc(10px * var(--graphy-text-scale));position:relative;overflow:hidden}.bow4tg1{color:var(--graphy-text-primary);font-size:calc(10px * var(--graphy-text-scale));display:contents}.bow4tg2{background-color:var(--graphy-graph-background);position:absolute;top:0;bottom:0;left:0;right:0}.bow4tg2[data-graph-mode=point-and-edit]{-webkit-user-select:none;user-select:none}.bow4tg3{outline:none}.bow4tg4{background-image:linear-gradient(45deg, color-mix(in srgb, var(--graphy-text-primary) 5%, transparent) 25%, transparent 25%, transparent 75%, color-mix(in srgb, var(--graphy-text-primary) 5%, transparent) 75%, color-mix(in srgb, var(--graphy-text-primary) 5%, transparent)), linear-gradient(45deg, color-mix(in srgb, var(--graphy-text-primary) 5%, transparent) 25%, transparent 25%, transparent 75%, color-mix(in srgb, var(--graphy-text-primary) 5%, transparent) 75%, color-mix(in srgb, var(--graphy-text-primary) 5%, transparent));background-position:0 0,1em 1em;background-size:2em 2em}._1ii3bsb0{--graphy-transparent:transparent;--graphy-white:#fff;--graphy-black:#000;--graphy-gray-100:#fff;--graphy-gray-95:#fcfcfc;--graphy-gray-90:#fafafa;--graphy-gray-85:#f5f5f5;--graphy-gray-80:#f0f0f0;--graphy-gray-75:#e8e8e8;--graphy-gray-70:#e5e5e5;--graphy-gray-60:#ccc;--graphy-gray-50:#c4c4c4;--graphy-gray-0:#1d2129;--graphy-red-60:#e14b49;--graphy-red-50:#f93939;--graphy-amber-70:#ffba8c;--graphy-amber-50:#ffc849;--graphy-amber-40:#feae47;--graphy-amber-30:#e7a816;--graphy-green-60:#06b299;--graphy-green-50:#42cd69;--graphy-blue-80:#2e62ff;--graphy-blue-60:#3d70ff;--graphy-purple-50:#7b56ea;--graphy-purple-30:#e093fe;--graphy-gray-gradient-80:linear-gradient(to top, #f0f0f1, #f9f9ff);--graphy-text-primary:var(--graphy-black);--graphy-text-secondary:color-mix(in srgb, transparent, var(--graphy-text-primary) 60%);--graphy-text-disabled:color-mix(in srgb, transparent, var(--graphy-text-primary) 50%);--graphy-icon-primary:currentColor;--graphy-icon-secondary:color-mix(in srgb, transparent, var(--graphy-text-primary) 60%);--graphy-icon-sticker-background:var(--graphy-gray-100);--graphy-brand:var(--graphy-purple-50);--graphy-success:var(--graphy-green-50);--graphy-warning:var(--graphy-amber-50);--graphy-alert:var(--graphy-red-50);--graphy-border-100:var(--graphy-gray-0);--graphy-border-50:color-mix(in srgb, transparent, var(--graphy-gray-0) 50%);--graphy-border-10:color-mix(in srgb, transparent, var(--graphy-gray-0) 10%);--graphy-sunken-background:var(--graphy-gray-90);--graphy-default-background:var(--graphy-gray-100);--graphy-raised-background:var(--graphy-gray-85);--graphy-overlay-background:var(--graphy-gray-100);--graphy-overlay-border-gradient:var(--graphy-border-10);--graphy-elevation-xs:0 0 2px #0f0f181f, 0 2px 2px #0e0e3414;--graphy-elevation-sm:0 0 4px #0f0f181f, 0 4px 4px #0e0e3414;--graphy-elevation-md:0 0 8px #0f0f181f, 0 8px 8px #0e0e3414;--graphy-elevation-lg:0 0 16px #0f0f181f, 0 16px 16px #0e0e3414;--graphy-radii-xs:4px;--graphy-radii-sm:6px;--graphy-radii-md:8px;--graphy-radii-lg:12px;--graphy-space-xxs:2px;--graphy-space-xs:4px;--graphy-space-sm:6px;--graphy-space-md:8px;--graphy-space-lg:12px;--graphy-space-xl:16px;--graphy-z-index-toolbar:10;--graphy-z-index-toolbar-tooltip:20;--graphy-z-index-toolbar-popover:30;--graphy-z-index-editor-popover:950;--graphy-graph-background:var(--graphy-gray-100);--graphy-legend-focus-outline-color:var(--graphy-border-50);--graphy-toolbar-background-color:var(--graphy-overlay-background);--graphy-toolbar-button-background-color:transparent;--graphy-toolbar-button-background-color-hovered:var(--graphy-gray-80);--graphy-toolbar-button-background-color-selected:var(--graphy-gray-60);--graphy-toolbar-separator-color:var(--graphy-gray-60);--graphy-annotation-frame-border-color:var(--graphy-blue-60);--graphy-edit-menu-trigger-icon-color:#3d414c;--graphy-canvas-default:#000;--graphy-canvas-blue:#3b82f6;--graphy-canvas-cyan:#06b6d4;--graphy-canvas-green:#10b981;--graphy-canvas-yellow:#e5b400;--graphy-canvas-orange:#f97316;--graphy-canvas-red:#ef4444;--graphy-canvas-pink:#e845bf;--graphy-canvas-purple:#8b5cf6;--graphy-canvas-gray:#78716c;--graphy-canvas-inverse:#fff;--graphy-tooltip-row-gap:4px;--graphy-editor-control-height:32px;--graphy-legend-swatch-gap:8px;--graphy-headline-row-gap:2px;--graphy-text-scale:1;--graphy-font-family:"Stack Sans Text", "Inter", -apple-system, BlinkMacSystemFont, "Open Sans", "Segoe UI", "Roboto", "Oxygen-Sans", "Ubuntu", "Cantarell", "Helvetica Neue", "NotoSansArabic", "NotoSansJP", "NotoSansSC", "NotoSansKR", "NotoSerifKR", sans-serif, "Apple Color Emoji", "NotoColorEmoji";--graphy-font-family-heading:"Stack Sans Text", "Inter", -apple-system, BlinkMacSystemFont, "Open Sans", "Segoe UI", "Roboto", "Oxygen-Sans", "Ubuntu", "Cantarell", "Helvetica Neue", "NotoSansArabic", "NotoSansJP", "NotoSansSC", "NotoSansKR", "NotoSerifKR", sans-serif, "Apple Color Emoji", "NotoColorEmoji";--graphy-font-weight-regular:400;--graphy-font-weight-medium:500;--graphy-font-weight-semibold:600;--graphy-font-weight-bold:700;--graphy-font-weight-extra-bold:800;--graphy-font-size-xxs:1em;--graphy-font-size-xs:1.1em;--graphy-font-size-sm:1.2em;--graphy-font-size-md:1.4em;--graphy-font-size-lg:1.6em;--graphy-font-size-xl:2em;--graphy-font-line-height-xxs:1;--graphy-font-line-height-xs:1;--graphy-font-line-height-sm:1.3;--graphy-font-line-height-md:1.43;--graphy-font-line-height-lg:1;--graphy-font-line-height-xl:1;--graphy-font-size-editor-body:1.5em;--graphy-font-size-heading-sm:1.8em;--graphy-font-size-heading-md:2.2em;--graphy-font-size-heading-lg:2.8em;--graphy-font-line-height-editor-body:1.47;--graphy-font-line-height-heading-sm:1.25;--graphy-font-line-height-heading-md:1.41;--graphy-font-line-height-heading-lg:1.29;--graphy-font-uitooltip:var(--graphy-font-weight-medium) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--graphy-font-family);--graphy-font-uitooltip-secondary:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--graphy-font-family);--graphy-font-button:var(--graphy-font-weight-medium) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--graphy-font-family);--graphy-font-input:var(--graphy-font-weight-medium) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--graphy-font-family);--graphy-font-input-label:var(--graphy-font-weight-medium) var(--graphy-font-size-xxs)/var(--graphy-font-line-height-xxs) var(--graphy-font-family);--graphy-font-select-label:var(--graphy-font-weight-medium) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--graphy-font-family);--graphy-font-select-description:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--graphy-font-family);--graphy-font-color-select-label:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--graphy-font-family);--graphy-font-menu-title:var(--graphy-font-weight-semibold) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--graphy-font-family);--graphy-font-menu-group-title:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--graphy-font-family);--graphy-font-menu-item-label:var(--graphy-font-weight-medium) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--graphy-font-family);--graphy-font-menu-item-label-secondary:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--graphy-font-family);--graphy-font-error-boundary-title:var(--graphy-font-weight-semibold) var(--graphy-font-size-heading-sm)/var(--graphy-font-line-height-heading-sm) var(--graphy-font-family);--graphy-font-error-boundary-message:var(--graphy-font-weight-medium) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--graphy-font-family);--graphy-font-table-cell:var(--graphy-font-weight-medium) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--graphy-font-family);--graphy-font-table-header-cell:var(--graphy-font-weight-semibold) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--graphy-font-family);--graphy-font-source-label:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--graphy-font-family);--graphy-font-source-link:var(--graphy-font-weight-regular) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--graphy-font-family);--graphy-font-text-editor-h1:var(--graphy-font-weight-bold) var(--graphy-font-size-heading-lg)/var(--graphy-font-line-height-heading-lg) var(--graphy-font-family-heading);--graphy-font-text-editor-h2:var(--graphy-font-weight-bold) var(--graphy-font-size-heading-md)/var(--graphy-font-line-height-heading-md) var(--graphy-font-family-heading);--graphy-font-text-editor-h3:var(--graphy-font-weight-semibold) var(--graphy-font-size-heading-sm)/var(--graphy-font-line-height-heading-sm) var(--graphy-font-family-heading);--graphy-font-text-editor-h6:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--graphy-font-family);--graphy-font-text-editor-body:var(--graphy-font-weight-medium) var(--graphy-font-size-editor-body)/var(--graphy-font-line-height-editor-body) var(--graphy-font-family);--graphy-font-text-editor-link:var(--graphy-font-weight-regular) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--graphy-font-family);--graphy-font-highlight-mode-title:var(--graphy-font-weight-bold) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--graphy-font-family);--graphy-font-highlight-mode-subtitle:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--graphy-font-family);--graphy-font-editor-control-label:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--graphy-font-family);--graphy-font-editor-control-value:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--graphy-font-family);--graphy-font-editor-section-title:var(--graphy-font-weight-semibold) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--graphy-font-family);--graphy-font-editor-caption:var(--graphy-font-weight-medium) var(--graphy-font-size-xxs)/var(--graphy-font-line-height-xxs) var(--graphy-font-family)}._1ii3bsb1{--graphy-transparent:transparent;--graphy-white:#fff;--graphy-black:#000;--graphy-gray-100:#000;--graphy-gray-95:#0d0d0d;--graphy-gray-90:#1a1a1a;--graphy-gray-85:#1f1f1f;--graphy-gray-80:#2a2a2a;--graphy-gray-75:#2e2e2e;--graphy-gray-70:#353535;--graphy-gray-60:#494949;--graphy-gray-50:#6f6f6f;--graphy-gray-0:#fff;--graphy-red-60:#cb3333;--graphy-red-50:#f93939;--graphy-amber-70:#f48135;--graphy-amber-50:#feae47;--graphy-amber-40:#ffc849;--graphy-amber-30:#ffd061;--graphy-green-60:#0ac600;--graphy-green-50:#42cd69;--graphy-blue-80:#2e62ff;--graphy-blue-60:#3d70ff;--graphy-purple-50:#7b56ea;--graphy-purple-30:#e093fe;--graphy-gray-gradient-80:linear-gradient(to top, #222429, #31353f);--graphy-text-primary:var(--graphy-gray-0);--graphy-text-secondary:color-mix(in srgb, transparent, var(--graphy-text-primary) 80%);--graphy-text-disabled:color-mix(in srgb, transparent, var(--graphy-text-primary) 50%);--graphy-icon-primary:currentColor;--graphy-icon-secondary:color-mix(in srgb, transparent, var(--graphy-text-primary) 60%);--graphy-icon-sticker-background:var(--graphy-gray-70);--graphy-border-100:var(--graphy-gray-0);--graphy-border-50:color-mix(in srgb, transparent, var(--graphy-gray-0) 50%);--graphy-border-10:color-mix(in srgb, transparent, var(--graphy-gray-0) 10%);--graphy-brand:var(--graphy-purple-50);--graphy-success:var(--graphy-green-50);--graphy-warning:var(--graphy-amber-50);--graphy-alert:var(--graphy-red-50);--graphy-sunken-background:var(--graphy-gray-100);--graphy-default-background:var(--graphy-gray-90);--graphy-raised-background:var(--graphy-gray-80);--graphy-overlay-background:var(--graphy-gray-90);--graphy-overlay-border-gradient:var(--graphy-gray-gradient-80);--graphy-elevation-xs:0 0 2px #0f0f181f, 0 2px 2px #0e0e3414;--graphy-elevation-sm:0 0 4px #0f0f181f, 0 4px 4px #0e0e3414;--graphy-elevation-md:0 0 8px #0f0f181f, 0 8px 8px #0e0e3414;--graphy-elevation-lg:0 0 16px #0f0f181f, 0 16px 16px #0e0e3414;--graphy-radii-xs:4px;--graphy-radii-sm:6px;--graphy-radii-md:8px;--graphy-radii-lg:12px;--graphy-space-xxs:2px;--graphy-space-xs:4px;--graphy-space-sm:6px;--graphy-space-md:8px;--graphy-space-lg:12px;--graphy-space-xl:16px;--graphy-z-index-toolbar:10;--graphy-z-index-toolbar-tooltip:20;--graphy-z-index-toolbar-popover:30;--graphy-z-index-editor-popover:950;--graphy-graph-background:var(--graphy-gray-90);--graphy-legend-focus-outline-color:var(--graphy-border-50);--graphy-toolbar-background-color:var(--graphy-overlay-background);--graphy-toolbar-button-background-color:transparent;--graphy-toolbar-button-background-color-hovered:var(--graphy-gray-80);--graphy-toolbar-button-background-color-selected:var(--graphy-gray-60);--graphy-toolbar-separator-color:var(--graphy-gray-60);--graphy-annotation-frame-border-color:var(--graphy-blue-60);--graphy-edit-menu-trigger-icon-color:var(--graphy-white);--graphy-canvas-default:#fff;--graphy-canvas-blue:#60a5fa;--graphy-canvas-cyan:#22d3ee;--graphy-canvas-green:#34d399;--graphy-canvas-yellow:#ffc800;--graphy-canvas-orange:#fb923c;--graphy-canvas-red:#f87171;--graphy-canvas-pink:#f979d9;--graphy-canvas-purple:#a78bfa;--graphy-canvas-gray:#a8a29e;--graphy-canvas-inverse:#000;--graphy-tooltip-row-gap:4px;--graphy-editor-control-height:32px;--graphy-legend-swatch-gap:8px;--graphy-headline-row-gap:2px;--graphy-text-scale:1;--graphy-font-family:"Stack Sans Text", "Inter", -apple-system, BlinkMacSystemFont, "Open Sans", "Segoe UI", "Roboto", "Oxygen-Sans", "Ubuntu", "Cantarell", "Helvetica Neue", "NotoSansArabic", "NotoSansJP", "NotoSansSC", "NotoSansKR", "NotoSerifKR", sans-serif, "Apple Color Emoji", "NotoColorEmoji";--graphy-font-family-heading:"Stack Sans Text", "Inter", -apple-system, BlinkMacSystemFont, "Open Sans", "Segoe UI", "Roboto", "Oxygen-Sans", "Ubuntu", "Cantarell", "Helvetica Neue", "NotoSansArabic", "NotoSansJP", "NotoSansSC", "NotoSansKR", "NotoSerifKR", sans-serif, "Apple Color Emoji", "NotoColorEmoji";--graphy-font-weight-regular:400;--graphy-font-weight-medium:500;--graphy-font-weight-semibold:600;--graphy-font-weight-bold:700;--graphy-font-weight-extra-bold:800;--graphy-font-size-xxs:1em;--graphy-font-size-xs:1.1em;--graphy-font-size-sm:1.2em;--graphy-font-size-md:1.4em;--graphy-font-size-lg:1.6em;--graphy-font-size-xl:2em;--graphy-font-line-height-xxs:1;--graphy-font-line-height-xs:1;--graphy-font-line-height-sm:1.3;--graphy-font-line-height-md:1.43;--graphy-font-line-height-lg:1;--graphy-font-line-height-xl:1;--graphy-font-size-editor-body:1.5em;--graphy-font-size-heading-sm:1.8em;--graphy-font-size-heading-md:2.2em;--graphy-font-size-heading-lg:2.8em;--graphy-font-line-height-editor-body:1.47;--graphy-font-line-height-heading-sm:1.25;--graphy-font-line-height-heading-md:1.41;--graphy-font-line-height-heading-lg:1.29;--graphy-font-uitooltip:var(--graphy-font-weight-medium) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--graphy-font-family);--graphy-font-uitooltip-secondary:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--graphy-font-family);--graphy-font-button:var(--graphy-font-weight-medium) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--graphy-font-family);--graphy-font-input:var(--graphy-font-weight-medium) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--graphy-font-family);--graphy-font-input-label:var(--graphy-font-weight-medium) var(--graphy-font-size-xxs)/var(--graphy-font-line-height-xxs) var(--graphy-font-family);--graphy-font-select-label:var(--graphy-font-weight-medium) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--graphy-font-family);--graphy-font-select-description:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--graphy-font-family);--graphy-font-color-select-label:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--graphy-font-family);--graphy-font-menu-title:var(--graphy-font-weight-semibold) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--graphy-font-family);--graphy-font-menu-group-title:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--graphy-font-family);--graphy-font-menu-item-label:var(--graphy-font-weight-medium) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--graphy-font-family);--graphy-font-menu-item-label-secondary:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--graphy-font-family);--graphy-font-error-boundary-title:var(--graphy-font-weight-semibold) var(--graphy-font-size-heading-sm)/var(--graphy-font-line-height-heading-sm) var(--graphy-font-family);--graphy-font-error-boundary-message:var(--graphy-font-weight-medium) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--graphy-font-family);--graphy-font-table-cell:var(--graphy-font-weight-medium) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--graphy-font-family);--graphy-font-table-header-cell:var(--graphy-font-weight-semibold) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--graphy-font-family);--graphy-font-source-label:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--graphy-font-family);--graphy-font-source-link:var(--graphy-font-weight-regular) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--graphy-font-family);--graphy-font-text-editor-h1:var(--graphy-font-weight-bold) var(--graphy-font-size-heading-lg)/var(--graphy-font-line-height-heading-lg) var(--graphy-font-family-heading);--graphy-font-text-editor-h2:var(--graphy-font-weight-bold) var(--graphy-font-size-heading-md)/var(--graphy-font-line-height-heading-md) var(--graphy-font-family-heading);--graphy-font-text-editor-h3:var(--graphy-font-weight-semibold) var(--graphy-font-size-heading-sm)/var(--graphy-font-line-height-heading-sm) var(--graphy-font-family-heading);--graphy-font-text-editor-h6:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--graphy-font-family);--graphy-font-text-editor-body:var(--graphy-font-weight-medium) var(--graphy-font-size-editor-body)/var(--graphy-font-line-height-editor-body) var(--graphy-font-family);--graphy-font-text-editor-link:var(--graphy-font-weight-regular) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--graphy-font-family);--graphy-font-highlight-mode-title:var(--graphy-font-weight-bold) var(--graphy-font-size-md)/var(--graphy-font-line-height-md) var(--graphy-font-family);--graphy-font-highlight-mode-subtitle:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--graphy-font-family);--graphy-font-editor-control-label:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--graphy-font-family);--graphy-font-editor-control-value:var(--graphy-font-weight-medium) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--graphy-font-family);--graphy-font-editor-section-title:var(--graphy-font-weight-semibold) var(--graphy-font-size-sm)/var(--graphy-font-line-height-sm) var(--graphy-font-family);--graphy-font-editor-caption:var(--graphy-font-weight-medium) var(--graphy-font-size-xxs)/var(--graphy-font-line-height-xxs) var(--graphy-font-family)}._1cocly40{color:inherit;text-underline-offset:.15em;text-decoration:underline}._19519k80{flex-direction:column;gap:4px;min-width:120px;max-width:280px;display:flex}._19519k81{white-space:normal;overflow-wrap:anywhere}._19519k82{flex-direction:column;display:flex}._19519k83{padding-block:var(--graphy-tooltip-row-gap);flex-direction:row;align-items:center;gap:8px;display:flex}._19519k84{flex-shrink:0;display:block;overflow:visible}._19519k85{width:12px;height:12px}._19519k86{white-space:nowrap;text-overflow:ellipsis;min-width:0;overflow:hidden}._19519k87{font-variant-numeric:tabular-nums;white-space:nowrap;text-align:right}._19519k88{pointer-events:none;-webkit-user-select:none;user-select:none;z-index:1000;position:fixed;top:0;left:0}.vultop0{box-sizing:border-box;white-space:nowrap;color:#2a2a28;opacity:.62;background-color:#ffffff8c;border-radius:999px;flex-shrink:0;align-items:center;gap:10px;height:22px;padding-inline-start:9px;padding-inline-end:11px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,Roboto,Noto Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:11.5px;line-height:1;text-decoration:none;transition:opacity .12s,max-width .25s,padding .25s,gap .25s;display:inline-flex;box-shadow:0 1px 4px #00000017}.vultop0:hover{opacity:1}.vultop0:focus-visible{opacity:1}.vultop0:focus-visible{outline-offset:2px;outline:2px solid #2a2a28}.vultop0[data-zone=mid]{opacity:.8;background-color:#ffffffbf}.vultop0[data-zone=dark]{opacity:.85;color:#fff;box-shadow:none;background-color:#ffffff14}.vultop0[data-zone=dark]:focus-visible{outline:2px solid #fff}.vultop0[data-visual=mini]{justify-content:center;gap:0;width:22px;padding-inline-start:0;padding-inline-end:0}.vultop0[data-visual=mini]:hover{gap:10px;width:auto;padding-inline-start:9px;padding-inline-end:11px}.vultop0[data-visual=mini]:focus-visible{gap:10px;width:auto;padding-inline-start:9px;padding-inline-end:11px}.vultop1{flex-direction:row-reverse}.vultop2{flex-shrink:0;justify-content:center;align-items:center;width:9px;height:12px;display:inline-flex}.vultop3{object-fit:contain;width:9px;height:12px;display:block}.vultop0[data-zone=dark] .vultop3{filter:invert()}.vultop4{align-items:baseline;gap:.3em;max-width:120px;transition:max-width .25s,opacity .25s;display:inline-flex;overflow:hidden}.vultop0[data-visual=mini] .vultop4{opacity:0;max-width:0}.vultop0[data-visual=mini]:hover .vultop4{opacity:1;max-width:120px}.vultop0[data-visual=mini]:focus-visible .vultop4{opacity:1;max-width:120px}.vultop5{font-weight:550}.vultop6{place-self:end}.vultop7{position:absolute;top:50%;right:0;transform:translateY(-50%)}@media (prefers-reduced-motion:reduce){.vultop0,.vultop4{transition:none}}._4dlrid0{margin:0}._4dlrid0 :-webkit-any(h1,h2,h3,p){font:inherit;color:inherit;margin:0}._4dlrid0 :is(h1,h2,h3,p){font:inherit;color:inherit;margin:0}.xfz7dq0{position:absolute}.xfz7dq1{align-items:end;column-gap:var(--graphy-space-xs);color:var(--graphy-text-secondary);grid-template-columns:minmax(0,1fr) auto;display:grid}.xfz7dq2{min-width:0}.xfz7dq3{overflow-wrap:anywhere;text-decoration:underline}.xfz7dq3:hover{color:var(--graphy-text-primary)}.xfz7dq4{margin-right:var(--graphy-space-xs)}.xfz7dq5{overflow-wrap:anywhere}._1k4qtbg0{position:absolute}._1k4qtbg1{padding-right:110px}._1u9qprb0{pointer-events:none;justify-content:start;align-items:start;display:flex;position:absolute}._1u9qprb1{pointer-events:none;justify-content:center;align-items:center;display:flex;position:absolute}._9aen060{align-items:baseline;gap:4px;display:flex}._9aen061,._9aen062{align-items:center;gap:4px;display:flex}._9aen063{align-items:start;gap:var(--graphy-headline-row-gap);flex-direction:column;display:flex}.asohov0{flex-shrink:0}.asohov1{color:var(--graphy-icon-primary)}.asohov2{color:var(--graphy-icon-secondary)}.n7clvo0{white-space:nowrap}.n7clvo1{color:var(--graphy-text-secondary)}.n7clvo2{white-space:nowrap}.n7clvo3{border-radius:50%;justify-content:center;align-items:center;width:12px;height:12px;display:flex}.n7clvo4{transform:rotate(180deg)}._1oj6yix0{pointer-events:none;height:100%;position:relative}._1oj6yix1{pointer-events:none;position:absolute;top:0;left:0;overflow:visible}._1oj6yix2{white-space:nowrap;position:absolute;transform:translateY(-50%)}._6a636s0{pointer-events:none;position:absolute}._1kjk02r0{flex-shrink:0;align-items:center;display:inline-flex;position:relative}._1kjk02r1{padding-inline-start:4px}._1kjk02r2{padding-inline-start:8px}._1kjk02r3{padding-block-start:4px}._1kjk02r4{padding-block-start:8px}._1kjk02r5{pointer-events:none;opacity:.6;position:absolute}._1kjk02r6{top:0;bottom:0}._1kjk02r6:not(:-webkit-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){left:4px;right:0}._1kjk02r6:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){left:4px;right:0}._1kjk02r6:-webkit-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){left:0;right:4px}._1kjk02r6:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){left:0;right:4px}._1kjk02r7{top:0;bottom:0}._1kjk02r7:not(:-webkit-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){left:8px;right:0}._1kjk02r7:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){left:8px;right:0}._1kjk02r7:-webkit-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){left:0;right:8px}._1kjk02r7:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){left:0;right:8px}._1kjk02r8{top:4px;bottom:0;left:0;right:0}._1kjk02r9{top:8px;bottom:0;left:0;right:0}._1kjk02ra{white-space:nowrap;cursor:pointer;pointer-events:auto;-webkit-appearance:none;appearance:none;background:0 0;border:none;align-items:center;padding:0;display:inline-flex;position:relative}._1kjk02ra:focus-visible{outline:1px solid var(--graphy-legend-focus-outline-color)}._1kjk02rb{font-variant-numeric:tabular-nums}._1kjk02rc{pointer-events:auto;z-index:40;max-width:320px;max-height:240px;overflow-y:auto}._1kjk02rd{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}._1kjk02re{align-items:center;gap:var(--graphy-legend-swatch-gap);white-space:nowrap;display:flex}._1dw9dgx0{opacity:.7;border-radius:50%}._1cecisi0{pointer-events:none;flex-wrap:nowrap;align-items:center;block-size:100%;inline-size:100%;display:flex}._1cecisi1{flex-direction:row}._1cecisi2{flex-direction:column}._1cecisi3{justify-content:flex-start}._1cecisi4{justify-content:center}._1cecisi5{justify-content:flex-end}._1cecisi6{align-items:flex-start}._1cecisi7{align-items:flex-end}._1cecisi8{align-items:center;gap:var(--graphy-legend-swatch-gap);white-space:nowrap;flex-shrink:0;display:flex}._1i8rg6j0{cursor:pointer}._1aj6s5s0{pointer-events:auto;font-family:var(--graphy-font-family);word-wrap:break-word;white-space:break-spaces;text-align:center;box-sizing:border-box;width:100%}._1aj6s5s0 p,._1aj6s5s0 h1,._1aj6s5s0 h2,._1aj6s5s0 h3{margin:0}._1aj6s5s1 .ProseMirror{outline:none;min-height:1em}._1aj6s5s1 .ProseMirror .is-empty:before{content:attr(data-placeholder);color:currentColor;opacity:.4;float:left;pointer-events:none;height:0}.ph8bdc0{pointer-events:none}.ph8bdc1{flex-shrink:0;align-items:center;display:flex}.ph8bdc2{font-family:var(--graphy-font-family)}.ph8bdc3{box-sizing:border-box;white-space:nowrap;-webkit-user-select:none;user-select:none;flex-direction:row;align-items:center;gap:5px;width:100%;height:100%;display:flex}.ph8bdc4{pointer-events:auto}.ph8bdc5,._1agclyl0,._1agclyl1{pointer-events:none}._1agclyl2{pointer-events:none;font-variant-numeric:tabular-nums}.to1jkx2{stroke-linecap:round;overflow:visible}.to1jkx3{transition:opacity .15s ease-out,filter .15s ease-out}[data-hover-active=true] .to1jkx3{opacity:var(--to1jkx0,.4);filter:var(--to1jkx1,none)}._17uhij30{position:absolute;top:0;left:0;overflow:visible}
|
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('./index.css');const l=require("./history-chords-PbUU5Ryz.cjs"),se=require("./theme.contract.css-CEjZ4rbL.cjs");let g=require("@graphysdk/viz-engine"),c=require("react"),i=require("react/jsx-runtime"),A=require("zustand"),B=require("zustand/vanilla"),$=require("clsx");$=l.__toESM($,1);var ne="_1a5iqpb0",oe="_1a5iqpb1";var ie="_1a5iqpb3",ae="_1a5iqpb4",le="_1a5iqpb5";var L=({errors:e})=>{const[t,...r]=e;return(0,i.jsxs)("div",{role:"alert",className:ne,children:[(0,i.jsx)("strong",{className:oe,children:"This chart could not be rendered."}),t&&(0,i.jsx)(U,{diagnostic:t}),r.length>0&&(0,i.jsx)("ul",{className:"_1a5iqpb2",children:r.map((s,o)=>(0,i.jsx)("li",{children:(0,i.jsx)(U,{diagnostic:s})},`${s.code}-${o}`))})]})},U=({diagnostic:e})=>(0,i.jsxs)("div",{className:ie,children:[(0,i.jsx)("span",{className:ae,children:e.code}),(0,i.jsx)("p",{className:le,children:e.message}),e.suggestion&&(0,i.jsx)("p",{className:"_1a5iqpb6",children:e.suggestion})]});function ce(e=[],t=[]){return e.length===t.length&&e.every((r,s)=>Object.is(r,t[s]))}var W=class extends c.Component{constructor(...e){super(...e),this.state={caughtDiagnostic:null}}static getDerivedStateFromError(e){return{caughtDiagnostic:(0,g.buildDiagnostic)(e)}}componentDidCatch(e,t){const r=(0,g.buildDiagnostic)(e);l.logDiagnostics([r]),this.props.onError?.([r]),console.error("Chart render component stack:",t.componentStack)}componentDidUpdate(e){this.state.caughtDiagnostic&&!ce(e.resetKeys,this.props.resetKeys)&&this.setState({caughtDiagnostic:null})}render(){const{caughtDiagnostic:e}=this.state;if(e)return(0,i.jsx)(L,{errors:[e]});const{forcedErrors:t,children:r}=this.props;return t&&t.length>0?(0,i.jsx)(L,{errors:t}):r}},z=e=>typeof e=="object"&&"geom"in e&&"render"in e,de=e=>{const t=(0,g.resolveDefinition)(e);return t instanceof g.Geom?t:null},X=(e,t)=>{const r=e.filter(s=>ue(s,t));return r.length===e.length?e:r},ue=(e,t)=>e.kind==="annotation"?(0,g.findAnnotation)(t.annotations,e.id)!==null:e.kind==="observations"||e.kind==="layer"&&e.layerId!==void 0?(0,g.findLayerById)(t.layers,e.layerId)!==void 0:!0,Y=[],me=()=>(0,B.createStore)(e=>({selection:Y,setSelection:t=>e(r=>he(r.selection,t)?r:{selection:t}),clearSelection:()=>e(t=>t.selection.length===0?t:{selection:Y})})),he=(e,t)=>e===t?!0:e.length!==t.length?!1:e.every((r,s)=>{const o=t[s];return o!==void 0&&(0,g.areEditTargetsEqual)(r,o)}),ge=process.env.NODE_ENV!=="production",pe=5,fe=e=>{if(!ge)return{emit:()=>{},subscribe:()=>ye,getLastTrigger:()=>null,getLastCompile:()=>null,getCacheStats:()=>e.getCacheStats()};const t=new Set;let r=null;return{emit:s=>{const o=e.getLastCompile();if(o){r=s;for(const d of t)d(s,o)}},subscribe:s=>(t.add(s),()=>{t.delete(s)}),getLastTrigger:()=>r,getLastCompile:()=>e.getLastCompile(),getCacheStats:()=>e.getCacheStats()}},ve=()=>(0,B.createStore)(e=>({lastCompile:null,history:[],nextId:1,lastSnapshot:null,recordCompile:(t,r)=>e(s=>{if(s.lastSnapshot===r)return s;const o={id:s.nextId,label:Se(t),stages:r.stages,durationMs:r.durationMs};return{lastCompile:o,history:be(s.history,o,pe),nextId:s.nextId+1,lastSnapshot:r}})})),ye=()=>{},Se=e=>{switch(e.kind){case"init":return"init";case"input":return"input change";case"data":return"data change";case"command":return e.command.metadata.description}},be=(e,t,r)=>{const s=e.length>=r?e.length-(r-1):0;return[...e.slice(s),t]};function Ee(e){const t=e.filter(z),r=new Set([...Object.keys(l.BUILT_IN_GEOM_RENDERERS),...t.map(u=>u.geom)]),s=[],o=new Set;for(const u of e){const h=de(u);h===null||r.has(h.type)||o.has(h.type)||(o.add(h.type),s.push({kind:"user-input",severity:"error",code:"MISSING_GEOM_RENDERER",message:`Custom geom '${h.type}' is registered but has no renderer.`,context:{requested:h.type,kind:"geom-renderer"},suggestion:`Add a render half for it: \`defineGeomRenderer(${h.type}Geom, { coord, render })\`, then include it in \`plugins\`.`}))}const d=new Map;for(const u of t){if("definition"in u)continue;const h=`${u.geom}|${u.coord}`,p=d.get(h);p?p.count+=1:d.set(h,{geom:u.geom,coord:u.coord,count:1})}const a=[];for(const{geom:u,coord:h,count:p}of d.values())p<2||a.push({kind:"user-input",severity:"warning",code:"DUPLICATE_REGISTERED_TYPE",message:`Multiple render-only overrides register ('${u}', '${h}') (${p} entries); the last in the array wins.`,context:{requested:`${u}@${h}`,kind:"geom-renderer"},suggestion:`Keep a single render-only override for ('${u}', '${h}').`});return{errors:s,warnings:a}}function Ce(e,t){const{coordSystem:r,layers:s}=e,o=new Set,d=[];for(const a of s)t(a.geom,r.type)!==null||o.has(a.geom)||(o.add(a.geom),d.push({kind:"user-input",severity:"warning",code:"MISSING_GEOM_RENDERER",message:`No renderer for geom '${a.geom}' under ${r.type} coords; the layer is not painted.`,context:{requested:a.geom,kind:"geom-renderer"},suggestion:`Register a renderer for ('${a.geom}', '${r.type}') via \`defineGeomRenderer\`.`}));return d}function xe(e,t){const{coordSystem:r,layers:s}=e,o=new Set,d=[];for(const a of s){if(a.interactive===!1||a.spatialKind!=="render-hit-test"||o.has(a.geom))continue;const u=t(a.geom,r.type);u===null||u.hitTest||l.isOverlayHosted(u)||(o.add(a.geom),d.push({kind:"user-input",severity:"warning",code:"MISSING_RENDER_HIT_TEST",message:`Geom '${a.geom}' declares spatialKind 'render-hit-test' but its renderer provides no hit-test; the layer has no hover.`,context:{requested:a.geom,kind:"geom-renderer"},suggestion:`Add a \`hitTest\` factory (precomputed geometry) or an overlay render (\`{ fn, options: { overlay: true } }\`, live simulation) to the renderer for ('${a.geom}', '${r.type}').`}))}return d}function Te(e){const t=new Set,r=[];for(const s of e.layers){const o=s.identityKey;s.interactive!==!1&&(s.spatialKind!=="render-hit-test"||typeof o!="object"||t.has(s.geom)||s.data.hasVariable(o.variable)||(t.add(s.geom),r.push({kind:"user-input",severity:"warning",code:"RENDER_HIT_TEST_IDENTITY",message:`Geom '${s.geom}' keys its identity on '${o.variable}', a column its compile output does not emit; its hover lookup is empty.`,context:{requested:s.geom,kind:"geom-renderer"},suggestion:`Emit the '${o.variable}' column from the geom's \`compile()\`, or point \`identityKey\` at a column it does emit.`})))}return r}function Re(e,t){const{coordSystem:r,layers:s}=e,o=new Set,d=[];for(const a of s){if(a.interactive===!1||a.spatialKind!=="render-hit-test"||o.has(a.geom))continue;const u=t(a.geom,r.type);u===null||!u.hitTest||!l.isOverlayHosted(u)||(o.add(a.geom),d.push({kind:"user-input",severity:"warning",code:"CONFLICTING_RENDER_HIT_TEST",message:`Geom '${a.geom}' declares both a \`hitTest\` factory and an overlay render; these are alternatives, so only the overlay is used.`,context:{requested:a.geom,kind:"geom-renderer"},suggestion:"Keep one: a `hitTest` factory for precomputed geometry, OR an overlay render (`{ fn, options: { overlay: true } }`) for a live simulation."}))}return d}function qe(e,t){const r=new Set,s=[];for(const o of e.layers)o.interactive!==!1&&(o.spatialKind!=="render-hit-test"||r.has(o.geom)||t.hasCapability(o.geom)||(r.add(o.geom),s.push({kind:"user-input",severity:"warning",code:"MISSING_ANCHOR_CAPABILITY",message:`Geom '${o.geom}' declares no \`resolveAnchorPosition\`; its observations cannot be annotated, so the editor overlay paints no creation trigger on them.`,context:{requested:o.geom,kind:"geom-renderer"},suggestion:"Implement `resolveAnchorPosition(observation, context)` on the geom, returning the normalised panel position an annotation on that observation belongs at."})));return s}function Ge(e,t){const{coordSystem:r,layers:s}=e,o=new Set,d=[];for(const a of s){if(a.interactive===!1||a.spatialKind==="render-hit-test"||o.has(a.geom))continue;const u=t(a.geom,r.type);u===null||!l.isOverlayHosted(u)||(o.add(a.geom),d.push({kind:"user-input",severity:"warning",code:"OVERLAY_REQUIRES_RENDER_HIT_TEST",message:`Geom '${a.geom}' declares an overlay render but its layer's spatialKind is '${a.spatialKind}', not 'render-hit-test'; the overlay's push-path hover resolves to nothing.`,context:{requested:a.geom,kind:"geom-renderer"},suggestion:"Have the geom's manifest yield spatialKind 'render-hit-test' so the compiled layer carries the `byKey` index the overlay's `pushHover` resolves against."}))}return d}var ke=e=>(0,B.createStore)(t=>({compiled:e,setCompiled:r=>t(s=>s.compiled===r?s:{compiled:r})})),Ne=({input:e,data:t,customPalettes:r,colorScheme:s,plugins:o,resolveRenderer:d,anchorResolver:a,onChange:u,onError:h,onWarnings:p})=>{const x=l.useLatestRef(u),k=l.useLatestRef(h),q=l.useLatestRef(p),[{session:f,compileBus:m}]=(0,c.useState)(()=>{const n=(0,g.createCompiler)({plugins:o});return{session:new g.GraphCompilationSession(n),compileBus:fe(n)}}),[y]=(0,c.useState)(()=>Ee(o??[])),S=(0,c.useRef)(null),[N]=(0,c.useState)(_e),T=(0,c.useRef)(null),b=(0,c.useCallback)(n=>y.errors.length===0?n:[...y.errors,...n??[]],[y]),j=(0,c.useCallback)(n=>{if(!n.ok)return n.errors;if(T.current)T.current.getState().setCompiled(n.compiled);else{const v=ke(n.compiled);v.subscribe(N.notify),T.current=v,N.notify()}return null},[N]),[I,D]=(0,c.useState)(()=>{const n=f.compile({input:e,data:t,customPalettes:r,colorScheme:s});return S.current=n,b(j(n))}),G=(0,c.useCallback)(n=>n.ok?[...n.warnings,...Ce(n.compiled,d),...xe(n.compiled,d),...Te(n.compiled),...Re(n.compiled,d),...Ge(n.compiled,d),...qe(n.compiled,a)]:n.warnings,[d,a]),E=(0,c.useCallback)(n=>{n.length!==0&&(l.logDiagnostics(n),k.current?.(n))},[k]),R=(0,c.useCallback)(n=>{n.length!==0&&(l.logDiagnostics(n),q.current?.(n))},[q]);(0,c.useEffect)(()=>{const n=S.current;n&&(E([...y.errors,...n.ok?[]:n.errors]),R([...y.warnings,...G(n)]),n.ok&&m.emit({kind:"init"}))},[m,E,R,y,G]),(0,c.useEffect)(()=>{const n=f.update({input:e,data:t,customPalettes:r,colorScheme:s});if(!n)return;n.sealedInput&&x.current?.(n.sealedInput);const v=j(n.result);D(b(v)),v&&E(v),R(G(n.result)),v||m.emit({kind:n.inputChanged?"input":"data"})},[e,t,r,s,f,m,j,E,R,b,G,x]);const _=(0,c.useCallback)(n=>{D(v=>v===null?v:b(null)),R(G(n))},[b,R,G]),w=(0,c.useCallback)(n=>{n.compiled&&T.current?.getState().setCompiled(n.compiled),n.result&&_(n.result),n.command&&m.emit({kind:"command",command:n.command}),n.input&&x.current?.(n.input),n.errors&&E([...n.errors])},[_,m,x,E]),C=(0,c.useCallback)(n=>{for(const v of n)w(v);return n.some(v=>!!v.compiled)},[w]),M=(0,c.useCallback)((n,v)=>{C(f.applyCommand(n,v))},[f,C]),ee=(0,c.useCallback)(()=>{C(f.seal())},[f,C]),O=(0,c.useCallback)(()=>C(f.undo()),[f,C]),K=(0,c.useCallback)(()=>C(f.redo()),[f,C]),te=(0,c.useMemo)(()=>({stack:f.history,undo:O,redo:K}),[f,O,K]),re=(0,c.useCallback)(()=>T.current?.getState().compiled??null,[]);return{store:T.current,dispatch:M,seal:ee,history:te,subscribe:N.subscribe,getCompiled:re,compileBus:m,compileErrors:I}},_e=()=>{const e=new Set;return{subscribe:t=>(e.add(t),()=>{e.delete(t)}),notify:()=>e.forEach(t=>t())}},Q=({data:e,input:t,plugins:r=[],formattingLocale:s,handleRef:o,onChange:d,onError:a,onWarnings:u,customPalettes:h,colorScheme:p="light",children:x})=>{const[k]=(0,c.useState)(()=>l.createGeomRendererResolver(r.filter(z))),q=(0,c.useId)(),[f]=(0,c.useState)(()=>(0,g.createAnchorResolver)(r)),[m]=(0,c.useState)(()=>me()),y=(0,c.useMemo)(()=>(0,g.createStyleResolver)({colorScheme:p}),[p]),{store:S,dispatch:N,seal:T,history:b,subscribe:j,getCompiled:I,compileBus:D,compileErrors:G}=Ne({input:t,data:e,customPalettes:h,colorScheme:p,plugins:r,resolveRenderer:k,anchorResolver:f,onChange:d,onError:a,onWarnings:u});(0,c.useEffect)(()=>{if(S)return S.subscribe((_,w)=>{if(_.compiled.spec===w.compiled.spec)return;const{selection:C,setSelection:M}=m.getState();C.length!==0&&M(X(C,_.compiled.spec))})},[S,m]);const E=(0,c.useMemo)(()=>({dispatch:N,seal:T}),[N,T]);(0,c.useImperativeHandle)(o,()=>({commands:E,undo:b.undo,redo:b.redo,subscribe:j,getCompiled:I,getSelection:()=>m.getState().selection,setSelection:_=>m.getState().setSelection(_),subscribeSelection:m.subscribe}),[E,b,j,I,m]);const R=(0,c.useMemo)(()=>S?{chartId:q,store:S,selectionStore:m,commands:E,history:b,formattingLocale:s,compileBus:D,colorScheme:p,styleResolver:y,anchorResolver:f}:null,[q,S,m,E,b,s,D,p,y,f]);return(0,i.jsx)(W,{forcedErrors:G,onError:a,resetKeys:[t,e],children:R?(0,i.jsx)(l.GraphContext.Provider,{value:R,children:(0,i.jsx)(l.GeomRendererResolverProvider,{value:k,children:x})}):null})};function je(e){const t=(0,g.createGraphyBuilder)(e);return{...t,GraphProvider:s=>(0,i.jsx)(Q,{...s,plugins:t.plugins})}}var De=({children:e,...t})=>(0,i.jsx)("svg",{viewBox:"0 0 1 1",preserveAspectRatio:"none",width:"100%",height:"100%",pointerEvents:"none",...t,children:e}),Ie=({box:e,children:t})=>(0,i.jsx)("svg",{x:(0,g.toPercent)(e.x0),y:(0,g.toPercent)(e.y0),width:(0,g.toPercent)(e.x1-e.x0),height:(0,g.toPercent)(e.y1-e.y0),overflow:"hidden",pointerEvents:"none",children:t}),we="drqe3u0",He="drqe3u1",Me="drqe3u2",Pe="drqe3u3",H="drqe3u4",$e="drqe3u5",Le="drqe3u6",Be="drqe3u7",P="drqe3u8",Oe="drqe3u9",Ke="drqe3ua";var Ae="drqe3uc",Ue="drqe3ud",Ye="drqe3ue",Fe="drqe3uf";var Ve="drqe3uh",We="drqe3ui",F={enabled:"drqe3uk drqe3uj",disabled:"drqe3ul drqe3uj"},V={ran:"drqe3un drqe3um",dim:"drqe3uo drqe3um"},J={ran:"drqe3uq drqe3up",cached:"drqe3ur drqe3up",untouched:"drqe3us drqe3up"},ze=({width:e=380,style:t,className:r}={})=>{const{compileBus:s}=l.useGraphContext(),[o]=(0,c.useState)(()=>ve()),[d,a]=(0,c.useState)(!1),[u,h]=(0,c.useState)(g.isCompilerCachingEnabled);(0,c.useEffect)(()=>{const{recordCompile:m}=o.getState(),y=s.getLastTrigger(),S=s.getLastCompile();return y&&S&&m(y,S),s.subscribe(m)},[o,s]);const p=(0,A.useStore)(o,m=>m.lastCompile),x=(0,A.useStore)(o,m=>m.history),k=s.getCacheStats(),q=p===null&&x.length===0,f=()=>{h(m=>{const y=!m;return(0,g.setCompilerCachingEnabled)(y),y})};return(0,i.jsxs)("div",{className:(0,$.default)(Ke,r),style:{width:e,...t},children:[(0,i.jsxs)("div",{className:we,children:[(0,i.jsxs)("div",{children:[(0,i.jsx)("div",{className:He,children:"compile cache"}),(0,i.jsx)("div",{className:Ye,children:q?"production: stats disabled":p?`last: ${p.label} · ${Z(p.durationMs)}`:"awaiting first compile…"})]}),(0,i.jsx)("button",{type:"button",onClick:()=>a(m=>!m),className:Fe,children:d?"▾":"▴"})]}),!d&&(0,i.jsxs)("div",{className:"drqe3ub",children:[(0,i.jsxs)("button",{type:"button",onClick:f,className:u?F.enabled:F.disabled,"aria-pressed":u,children:["cache ",u?"enabled":"disabled"]}),(0,i.jsx)("span",{className:"drqe3ug",children:"next compile reflects this toggle"})]}),!d&&!q&&(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(Xe,{delta:p?.stages,cumulative:k}),(0,i.jsx)(Qe,{entries:x})]})]})},Xe=({delta:e,cumulative:t})=>(0,i.jsxs)("table",{className:Me,children:[(0,i.jsx)("thead",{children:(0,i.jsxs)("tr",{className:Ve,children:[(0,i.jsx)("th",{className:Pe,children:"stage"}),(0,i.jsx)("th",{className:H,children:"Δ miss"}),(0,i.jsx)("th",{className:H,children:"Δ hit"}),(0,i.jsx)("th",{className:H,children:"total miss"}),(0,i.jsx)("th",{className:H,children:"total hit"})]})}),(0,i.jsx)("tbody",{children:g.COMPILER_STAGE_KEYS.map(r=>{const s=e?.[r],o=Je(s);return(0,i.jsxs)("tr",{className:Ae,children:[(0,i.jsxs)("td",{className:$e,children:[(0,i.jsx)("span",{className:J[o],"aria-hidden":!0})," ",r]}),(0,i.jsx)("td",{className:o==="ran"?V.ran:V.dim,children:s?.misses??0}),(0,i.jsx)("td",{className:P,children:s?.hits??0}),(0,i.jsx)("td",{className:P,children:t[r].misses}),(0,i.jsx)("td",{className:P,children:t[r].hits})]},r)})})]}),Qe=({entries:e})=>e.length===0?null:(0,i.jsxs)("div",{className:Ue,children:[(0,i.jsx)("div",{className:We,children:"recent compiles"}),e.map(t=>{const r=Ze(t.stages,d=>d.misses>0),s=g.COMPILER_STAGE_KEYS.length,o=r===0?"cached":"ran";return(0,i.jsxs)("div",{className:Le,children:[(0,i.jsx)("span",{className:J[o],"aria-hidden":!0}),(0,i.jsx)("span",{className:Be,title:t.label,children:t.label}),(0,i.jsxs)("span",{className:Oe,children:[r,"/",s," ran · ",Z(t.durationMs)]})]},t.id)})]}),Je=e=>!e||e.hits===0&&e.misses===0?"untouched":e.misses>0?"ran":"cached",Ze=(e,t)=>{let r=0;for(const s of g.COMPILER_STAGE_KEYS)t(e[s])&&(r+=1);return r},Z=e=>e>=10?`${e.toFixed(0)}ms`:`${e.toFixed(2)}ms`,et=()=>{const{history:e}=l.useGraphContext(),{stack:t,undo:r,redo:s}=e,o=(0,c.useCallback)(u=>t.subscribe(u),[t]),d=(0,c.useCallback)(()=>t.getSnapshot(),[t]),a=(0,c.useSyncExternalStore)(o,d,d);return(0,c.useMemo)(()=>({...a,undo:r,redo:s}),[a,r,s])},tt=new Set(["button","checkbox","color","file","hidden","image","radio","range","reset","submit"]),rt=(e,t={})=>{const{target:r,enabled:s=!0}=t;(0,c.useEffect)(()=>{const o=st(r);if(!s||!o)return;const d=a=>{if(!nt(a)||a.defaultPrevented||ot(a.target))return;const u=l.resolveHistoryStep(a);if(!u)return;const h=e.current;h&&(u==="undo"?h.undo():h.redo())&&a.preventDefault()};return o.addEventListener("keydown",d),()=>o.removeEventListener("keydown",d)},[e,r,s])},st=e=>e===void 0?window:e!==null&&"current"in e?e.current:e,nt=e=>"key"in e,ot=e=>e instanceof HTMLInputElement?!tt.has(e.type):e instanceof HTMLElement?e.isContentEditable||e.tagName==="TEXTAREA":!1;exports.BrandMark=l.BrandMark;exports.CanvasTextMeasurer=l.CanvasTextMeasurer;exports.DefaultFooter=l.DefaultFooter;exports.DefaultGrid=l.DefaultGrid;exports.DefaultHeader=l.DefaultHeader;exports.DefaultSwatch=l.DefaultSwatch;exports.DefaultTooltip=l.DefaultTooltip;exports.DevToolsPanel=ze;exports.GRAPH_MODES=l.GRAPH_MODES;exports.GraphErrorBoundary=W;exports.GraphErrorPanel=L;exports.GraphProvider=Q;exports.GraphRenderer=l.GraphRenderer;exports.HoverProvider=l.HoverProvider;exports.TextMeasurerProvider=l.TextMeasurerProvider;exports.ThemeProvider=l.ThemeProvider;exports.UnitBoxSvg=Ie;exports.UnitSpaceSvg=De;exports.createGraphyKit=je;exports.darkTheme=l.darkTheme;exports.defineGeomRenderer=l.defineGeomRenderer;exports.lightTheme=l.lightTheme;exports.lightenCss=l.lightenCss;exports.pruneSelection=X;exports.resolveBrandMarkVisual=l.resolveBrandMarkVisual;exports.useCompiledSelector=l.useCompiledSelector;exports.useElementScreenRect=l.useElementScreenRect;exports.useGeomHitTest=l.useGeomHitTest;exports.useGeomHover=l.useGeomHover;exports.useGraphCommands=l.useGraphCommands;exports.useGraphHandle=l.useGraphHandle;exports.useGraphHistory=et;exports.useGraphHistoryShortcuts=rt;exports.useGraphSelection=l.useGraphSelection;exports.useHandleCompiled=l.useHandleCompiled;exports.useHoverState=l.useHoverState;exports.useStyleReaders=l.useStyleReaders;exports.useStyleResolver=l.useStyleResolver;exports.useTextMeasurer=l.useTextMeasurer;exports.vars=se.vars;
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('./index.css');const c=require("./history-chords-DK83-lsv.cjs"),se=require("./theme.contract.css-Dd-73-Je.cjs");let m=require("@graphysdk/viz-engine"),l=require("react"),a=require("react/jsx-runtime"),A=require("zustand"),B=require("zustand/vanilla"),$=require("clsx");$=c.__toESM($,1);var ne="_1a5iqpb0",oe="_1a5iqpb1";var ae="_1a5iqpb3",ie="_1a5iqpb4",ce="_1a5iqpb5";var L=({errors:e})=>{const[t,...r]=e;return(0,a.jsxs)("div",{role:"alert",className:ne,children:[(0,a.jsx)("strong",{className:oe,children:"This chart could not be rendered."}),t&&(0,a.jsx)(U,{diagnostic:t}),r.length>0&&(0,a.jsx)("ul",{className:"_1a5iqpb2",children:r.map((s,o)=>(0,a.jsx)("li",{children:(0,a.jsx)(U,{diagnostic:s})},`${s.code}-${o}`))})]})},U=({diagnostic:e})=>(0,a.jsxs)("div",{className:ae,children:[(0,a.jsx)("span",{className:ie,children:e.code}),(0,a.jsx)("p",{className:ce,children:e.message}),e.suggestion&&(0,a.jsx)("p",{className:"_1a5iqpb6",children:e.suggestion})]});function le(e=[],t=[]){return e.length===t.length&&e.every((r,s)=>Object.is(r,t[s]))}var W=class extends l.Component{constructor(...e){super(...e),this.state={caughtDiagnostic:null}}static getDerivedStateFromError(e){return{caughtDiagnostic:(0,m.buildDiagnostic)(e)}}componentDidCatch(e,t){const r=(0,m.buildDiagnostic)(e);c.logDiagnostics([r]),this.props.onError?.([r]),console.error("Chart render component stack:",t.componentStack)}componentDidUpdate(e){this.state.caughtDiagnostic&&!le(e.resetKeys,this.props.resetKeys)&&this.setState({caughtDiagnostic:null})}render(){const{caughtDiagnostic:e}=this.state;if(e)return(0,a.jsx)(L,{errors:[e]});const{forcedErrors:t,children:r}=this.props;return t&&t.length>0?(0,a.jsx)(L,{errors:t}):r}},z=e=>typeof e=="object"&&"geom"in e&&"render"in e,de=e=>{const t=(0,m.resolveDefinition)(e);return t instanceof m.Geom?t:null},X=(e,t)=>{const r=e.filter(s=>ue(s,t));return r.length===e.length?e:r},ue=(e,t)=>e.kind==="annotation"?(0,m.findAnnotation)(t.annotations,e.id)!==null:e.kind==="observations"||e.kind==="layer"&&e.layerId!==void 0?(0,m.findLayerById)(t.layers,e.layerId)!==void 0:!0,Y=[],he=()=>(0,B.createStore)(e=>({selection:Y,setSelection:t=>e(r=>ge(r.selection,t)?r:{selection:t}),clearSelection:()=>e(t=>t.selection.length===0?t:{selection:Y})})),ge=(e,t)=>e===t?!0:e.length!==t.length?!1:e.every((r,s)=>{const o=t[s];return o!==void 0&&(0,m.areEditTargetsEqual)(r,o)}),me=process.env.NODE_ENV!=="production",pe=5,fe=e=>{if(!me)return{emit:()=>{},subscribe:()=>ye,getLastTrigger:()=>null,getLastCompile:()=>null,getCacheStats:()=>e.getCacheStats()};const t=new Set;let r=null;return{emit:s=>{const o=e.getLastCompile();if(o){r=s;for(const d of t)d(s,o)}},subscribe:s=>(t.add(s),()=>{t.delete(s)}),getLastTrigger:()=>r,getLastCompile:()=>e.getLastCompile(),getCacheStats:()=>e.getCacheStats()}},ve=()=>(0,B.createStore)(e=>({lastCompile:null,history:[],nextId:1,lastSnapshot:null,recordCompile:(t,r)=>e(s=>{if(s.lastSnapshot===r)return s;const o={id:s.nextId,label:Se(t),stages:r.stages,durationMs:r.durationMs};return{lastCompile:o,history:be(s.history,o,pe),nextId:s.nextId+1,lastSnapshot:r}})})),ye=()=>{},Se=e=>{switch(e.kind){case"init":return"init";case"input":return"input change";case"data":return"data change";case"command":return e.command.metadata.description}},be=(e,t,r)=>{const s=e.length>=r?e.length-(r-1):0;return[...e.slice(s),t]};function Ee(e){const t=e.filter(z),r=new Set([...Object.keys(c.BUILT_IN_GEOM_RENDERERS),...t.map(u=>u.geom)]),s=[],o=new Set;for(const u of e){const g=de(u);g===null||r.has(g.type)||o.has(g.type)||(o.add(g.type),s.push({kind:"user-input",severity:"error",code:"MISSING_GEOM_RENDERER",message:`Custom geom '${g.type}' is registered but has no renderer.`,context:{requested:g.type,kind:"geom-renderer"},suggestion:`Add a render half for it: \`defineGeomRenderer(${g.type}Geom, { coord, render })\`, then include it in \`plugins\`.`}))}const d=new Map;for(const u of t){if("definition"in u)continue;const g=`${u.geom}|${u.coord}`,p=d.get(g);p?p.count+=1:d.set(g,{geom:u.geom,coord:u.coord,count:1})}const i=[];for(const{geom:u,coord:g,count:p}of d.values())p<2||i.push({kind:"user-input",severity:"warning",code:"DUPLICATE_REGISTERED_TYPE",message:`Multiple render-only overrides register ('${u}', '${g}') (${p} entries); the last in the array wins.`,context:{requested:`${u}@${g}`,kind:"geom-renderer"},suggestion:`Keep a single render-only override for ('${u}', '${g}').`});return{errors:s,warnings:i}}function xe(e,t){const{coordSystem:r,layers:s}=e,o=new Set,d=[];for(const i of s)t(i.geom,r.type)!==null||o.has(i.geom)||(o.add(i.geom),d.push({kind:"user-input",severity:"warning",code:"MISSING_GEOM_RENDERER",message:`No renderer for geom '${i.geom}' under ${r.type} coords; the layer is not painted.`,context:{requested:i.geom,kind:"geom-renderer"},suggestion:`Register a renderer for ('${i.geom}', '${r.type}') via \`defineGeomRenderer\`.`}));return d}function Ce(e,t){const{coordSystem:r,layers:s}=e,o=new Set,d=[];for(const i of s){if(i.interactive===!1||i.spatialKind!=="render-hit-test"||o.has(i.geom))continue;const u=t(i.geom,r.type);u===null||u.hitTest||c.isOverlayHosted(u)||(o.add(i.geom),d.push({kind:"user-input",severity:"warning",code:"MISSING_RENDER_HIT_TEST",message:`Geom '${i.geom}' declares spatialKind 'render-hit-test' but its renderer provides no hit-test; the layer has no hover.`,context:{requested:i.geom,kind:"geom-renderer"},suggestion:`Add a \`hitTest\` factory (precomputed geometry) or an overlay render (\`{ fn, options: { overlay: true } }\`, live simulation) to the renderer for ('${i.geom}', '${r.type}').`}))}return d}function Te(e){const t=new Set,r=[];for(const s of e.layers){const o=s.identityKey;s.interactive!==!1&&(s.spatialKind!=="render-hit-test"||typeof o!="object"||t.has(s.geom)||s.data.hasVariable(o.variable)||(t.add(s.geom),r.push({kind:"user-input",severity:"warning",code:"RENDER_HIT_TEST_IDENTITY",message:`Geom '${s.geom}' keys its identity on '${o.variable}', a column its compile output does not emit; its hover lookup is empty.`,context:{requested:s.geom,kind:"geom-renderer"},suggestion:`Emit the '${o.variable}' column from the geom's \`compile()\`, or point \`identityKey\` at a column it does emit.`})))}return r}function Re(e,t){const{coordSystem:r,layers:s}=e,o=new Set,d=[];for(const i of s){if(i.interactive===!1||i.spatialKind!=="render-hit-test"||o.has(i.geom))continue;const u=t(i.geom,r.type);u===null||!u.hitTest||!c.isOverlayHosted(u)||(o.add(i.geom),d.push({kind:"user-input",severity:"warning",code:"CONFLICTING_RENDER_HIT_TEST",message:`Geom '${i.geom}' declares both a \`hitTest\` factory and an overlay render; these are alternatives, so only the overlay is used.`,context:{requested:i.geom,kind:"geom-renderer"},suggestion:"Keep one: a `hitTest` factory for precomputed geometry, OR an overlay render (`{ fn, options: { overlay: true } }`) for a live simulation."}))}return d}function qe(e,t){const r=new Set,s=[];for(const o of e.layers)o.interactive!==!1&&(o.spatialKind!=="render-hit-test"||r.has(o.geom)||t.hasCapability(o.geom)||(r.add(o.geom),s.push({kind:"user-input",severity:"warning",code:"MISSING_ANCHOR_CAPABILITY",message:`Geom '${o.geom}' declares no \`resolveAnchorPosition\`; its observations cannot be annotated, so the editor overlay paints no creation trigger on them.`,context:{requested:o.geom,kind:"geom-renderer"},suggestion:"Implement `resolveAnchorPosition(observation, context)` on the geom, returning the normalised panel position an annotation on that observation belongs at."})));return s}function Ge(e,t){const{coordSystem:r,layers:s}=e,o=new Set,d=[];for(const i of s){if(i.interactive===!1||i.spatialKind==="render-hit-test"||o.has(i.geom))continue;const u=t(i.geom,r.type);u===null||!c.isOverlayHosted(u)||(o.add(i.geom),d.push({kind:"user-input",severity:"warning",code:"OVERLAY_REQUIRES_RENDER_HIT_TEST",message:`Geom '${i.geom}' declares an overlay render but its layer's spatialKind is '${i.spatialKind}', not 'render-hit-test'; the overlay's push-path hover resolves to nothing.`,context:{requested:i.geom,kind:"geom-renderer"},suggestion:"Have the geom's manifest yield spatialKind 'render-hit-test' so the scene layer carries the `byKey` index the overlay's `pushHover` resolves against."}))}return d}var ke=e=>(0,B.createStore)(t=>({scene:e,setScene:r=>t(s=>s.scene===r?s:{scene:r})})),Ne=({input:e,data:t,customPalettes:r,colorScheme:s,plugins:o,resolveRenderer:d,anchorResolver:i,onChange:u,onError:g,onWarnings:p})=>{const C=c.useLatestRef(u),k=c.useLatestRef(g),q=c.useLatestRef(p),[{session:f,compileBus:h}]=(0,l.useState)(()=>{const n=(0,m.createCompiler)({plugins:o});return{session:new m.GraphCompilationSession(n),compileBus:fe(n)}}),[y]=(0,l.useState)(()=>Ee(o??[])),S=(0,l.useRef)(null),[N]=(0,l.useState)(_e),T=(0,l.useRef)(null),b=(0,l.useCallback)(n=>y.errors.length===0?n:[...y.errors,...n??[]],[y]),j=(0,l.useCallback)(n=>{if(!n.ok)return n.errors;if(T.current)T.current.getState().setScene(n.scene);else{const v=ke(n.scene);v.subscribe(N.notify),T.current=v,N.notify()}return null},[N]),[I,D]=(0,l.useState)(()=>{const n=f.compile({input:e,data:t,customPalettes:r,colorScheme:s});return S.current=n,b(j(n))}),G=(0,l.useCallback)(n=>n.ok?[...n.warnings,...xe(n.scene,d),...Ce(n.scene,d),...Te(n.scene),...Re(n.scene,d),...Ge(n.scene,d),...qe(n.scene,i)]:n.warnings,[d,i]),E=(0,l.useCallback)(n=>{n.length!==0&&(c.logDiagnostics(n),k.current?.(n))},[k]),R=(0,l.useCallback)(n=>{n.length!==0&&(c.logDiagnostics(n),q.current?.(n))},[q]);(0,l.useEffect)(()=>{const n=S.current;n&&(E([...y.errors,...n.ok?[]:n.errors]),R([...y.warnings,...G(n)]),n.ok&&h.emit({kind:"init"}))},[h,E,R,y,G]),(0,l.useEffect)(()=>{const n=f.update({input:e,data:t,customPalettes:r,colorScheme:s});if(!n)return;n.sealedInput&&C.current?.(n.sealedInput);const v=j(n.result);D(b(v)),v&&E(v),R(G(n.result)),v||h.emit({kind:n.inputChanged?"input":"data"})},[e,t,r,s,f,h,j,E,R,b,G,C]);const _=(0,l.useCallback)(n=>{D(v=>v===null?v:b(null)),R(G(n))},[b,R,G]),w=(0,l.useCallback)(n=>{n.scene&&T.current?.getState().setScene(n.scene),n.result&&_(n.result),n.command&&h.emit({kind:"command",command:n.command}),n.input&&C.current?.(n.input),n.errors&&E([...n.errors])},[_,h,C,E]),x=(0,l.useCallback)(n=>{for(const v of n)w(v);return n.some(v=>!!v.scene)},[w]),M=(0,l.useCallback)((n,v)=>{x(f.applyCommand(n,v))},[f,x]),ee=(0,l.useCallback)(()=>{x(f.seal())},[f,x]),O=(0,l.useCallback)(()=>x(f.undo()),[f,x]),K=(0,l.useCallback)(()=>x(f.redo()),[f,x]),te=(0,l.useMemo)(()=>({stack:f.history,undo:O,redo:K}),[f,O,K]),re=(0,l.useCallback)(()=>T.current?.getState().scene??null,[]);return{store:T.current,dispatch:M,seal:ee,history:te,subscribe:N.subscribe,getScene:re,compileBus:h,compileErrors:I}},_e=()=>{const e=new Set;return{subscribe:t=>(e.add(t),()=>{e.delete(t)}),notify:()=>e.forEach(t=>t())}},Q=({data:e,input:t,plugins:r=[],formattingLocale:s,handleRef:o,onChange:d,onError:i,onWarnings:u,customPalettes:g,colorScheme:p="light",children:C})=>{const[k]=(0,l.useState)(()=>c.createGeomRendererResolver(r.filter(z))),q=(0,l.useId)(),[f]=(0,l.useState)(()=>(0,m.createAnchorResolver)(r)),[h]=(0,l.useState)(()=>he()),y=(0,l.useMemo)(()=>(0,m.createStyleResolver)({colorScheme:p}),[p]),{store:S,dispatch:N,seal:T,history:b,subscribe:j,getScene:I,compileBus:D,compileErrors:G}=Ne({input:t,data:e,customPalettes:g,colorScheme:p,plugins:r,resolveRenderer:k,anchorResolver:f,onChange:d,onError:i,onWarnings:u});(0,l.useEffect)(()=>{if(S)return S.subscribe((_,w)=>{if(_.scene.spec===w.scene.spec)return;const{selection:x,setSelection:M}=h.getState();x.length!==0&&M(X(x,_.scene.spec))})},[S,h]);const E=(0,l.useMemo)(()=>({dispatch:N,seal:T}),[N,T]);(0,l.useImperativeHandle)(o,()=>({commands:E,undo:b.undo,redo:b.redo,subscribe:j,getScene:I,getSelection:()=>h.getState().selection,setSelection:_=>h.getState().setSelection(_),subscribeSelection:h.subscribe}),[E,b,j,I,h]);const R=(0,l.useMemo)(()=>S?{chartId:q,store:S,selectionStore:h,commands:E,history:b,formattingLocale:s,compileBus:D,colorScheme:p,styleResolver:y,anchorResolver:f}:null,[q,S,h,E,b,s,D,p,y,f]);return(0,a.jsx)(W,{forcedErrors:G,onError:i,resetKeys:[t,e],children:R?(0,a.jsx)(c.GraphContext.Provider,{value:R,children:(0,a.jsx)(c.GeomRendererResolverProvider,{value:k,children:C})}):null})};function je(e){const t=(0,m.createGraphyBuilder)(e);return{...t,GraphProvider:s=>(0,a.jsx)(Q,{...s,plugins:t.plugins})}}var De=({children:e,...t})=>(0,a.jsx)("svg",{viewBox:"0 0 1 1",preserveAspectRatio:"none",width:"100%",height:"100%",pointerEvents:"none",...t,children:e}),Ie=({box:e,children:t})=>(0,a.jsx)("svg",{x:(0,m.toPercent)(e.x0),y:(0,m.toPercent)(e.y0),width:(0,m.toPercent)(e.x1-e.x0),height:(0,m.toPercent)(e.y1-e.y0),overflow:"hidden",pointerEvents:"none",children:t}),we="drqe3u0",He="drqe3u1",Me="drqe3u2",Pe="drqe3u3",H="drqe3u4",$e="drqe3u5",Le="drqe3u6",Be="drqe3u7",P="drqe3u8",Oe="drqe3u9",Ke="drqe3ua";var Ae="drqe3uc",Ue="drqe3ud",Ye="drqe3ue",Fe="drqe3uf";var Ve="drqe3uh",We="drqe3ui",F={enabled:"drqe3uk drqe3uj",disabled:"drqe3ul drqe3uj"},V={ran:"drqe3un drqe3um",dim:"drqe3uo drqe3um"},J={ran:"drqe3uq drqe3up",cached:"drqe3ur drqe3up",untouched:"drqe3us drqe3up"},ze=({width:e=380,style:t,className:r}={})=>{const{compileBus:s}=c.useGraphContext(),[o]=(0,l.useState)(()=>ve()),[d,i]=(0,l.useState)(!1),[u,g]=(0,l.useState)(m.isCompilerCachingEnabled);(0,l.useEffect)(()=>{const{recordCompile:h}=o.getState(),y=s.getLastTrigger(),S=s.getLastCompile();return y&&S&&h(y,S),s.subscribe(h)},[o,s]);const p=(0,A.useStore)(o,h=>h.lastCompile),C=(0,A.useStore)(o,h=>h.history),k=s.getCacheStats(),q=p===null&&C.length===0,f=()=>{g(h=>{const y=!h;return(0,m.setCompilerCachingEnabled)(y),y})};return(0,a.jsxs)("div",{className:(0,$.default)(Ke,r),style:{width:e,...t},children:[(0,a.jsxs)("div",{className:we,children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:He,children:"compile cache"}),(0,a.jsx)("div",{className:Ye,children:q?"production: stats disabled":p?`last: ${p.label} · ${Z(p.durationMs)}`:"awaiting first compile…"})]}),(0,a.jsx)("button",{type:"button",onClick:()=>i(h=>!h),className:Fe,children:d?"▾":"▴"})]}),!d&&(0,a.jsxs)("div",{className:"drqe3ub",children:[(0,a.jsxs)("button",{type:"button",onClick:f,className:u?F.enabled:F.disabled,"aria-pressed":u,children:["cache ",u?"enabled":"disabled"]}),(0,a.jsx)("span",{className:"drqe3ug",children:"next compile reflects this toggle"})]}),!d&&!q&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(Xe,{delta:p?.stages,cumulative:k}),(0,a.jsx)(Qe,{entries:C})]})]})},Xe=({delta:e,cumulative:t})=>(0,a.jsxs)("table",{className:Me,children:[(0,a.jsx)("thead",{children:(0,a.jsxs)("tr",{className:Ve,children:[(0,a.jsx)("th",{className:Pe,children:"stage"}),(0,a.jsx)("th",{className:H,children:"Δ miss"}),(0,a.jsx)("th",{className:H,children:"Δ hit"}),(0,a.jsx)("th",{className:H,children:"total miss"}),(0,a.jsx)("th",{className:H,children:"total hit"})]})}),(0,a.jsx)("tbody",{children:m.COMPILER_STAGE_KEYS.map(r=>{const s=e?.[r],o=Je(s);return(0,a.jsxs)("tr",{className:Ae,children:[(0,a.jsxs)("td",{className:$e,children:[(0,a.jsx)("span",{className:J[o],"aria-hidden":!0})," ",r]}),(0,a.jsx)("td",{className:o==="ran"?V.ran:V.dim,children:s?.misses??0}),(0,a.jsx)("td",{className:P,children:s?.hits??0}),(0,a.jsx)("td",{className:P,children:t[r].misses}),(0,a.jsx)("td",{className:P,children:t[r].hits})]},r)})})]}),Qe=({entries:e})=>e.length===0?null:(0,a.jsxs)("div",{className:Ue,children:[(0,a.jsx)("div",{className:We,children:"recent compiles"}),e.map(t=>{const r=Ze(t.stages,d=>d.misses>0),s=m.COMPILER_STAGE_KEYS.length,o=r===0?"cached":"ran";return(0,a.jsxs)("div",{className:Le,children:[(0,a.jsx)("span",{className:J[o],"aria-hidden":!0}),(0,a.jsx)("span",{className:Be,title:t.label,children:t.label}),(0,a.jsxs)("span",{className:Oe,children:[r,"/",s," ran · ",Z(t.durationMs)]})]},t.id)})]}),Je=e=>!e||e.hits===0&&e.misses===0?"untouched":e.misses>0?"ran":"cached",Ze=(e,t)=>{let r=0;for(const s of m.COMPILER_STAGE_KEYS)t(e[s])&&(r+=1);return r},Z=e=>e>=10?`${e.toFixed(0)}ms`:`${e.toFixed(2)}ms`,et=()=>{const{history:e}=c.useGraphContext(),{stack:t,undo:r,redo:s}=e,o=(0,l.useCallback)(u=>t.subscribe(u),[t]),d=(0,l.useCallback)(()=>t.getSnapshot(),[t]),i=(0,l.useSyncExternalStore)(o,d,d);return(0,l.useMemo)(()=>({...i,undo:r,redo:s}),[i,r,s])},tt=new Set(["button","checkbox","color","file","hidden","image","radio","range","reset","submit"]),rt=(e,t={})=>{const{target:r,enabled:s=!0}=t;(0,l.useEffect)(()=>{const o=st(r);if(!s||!o)return;const d=i=>{if(!nt(i)||i.defaultPrevented||ot(i.target))return;const u=c.resolveHistoryStep(i);if(!u)return;const g=e.current;g&&(u==="undo"?g.undo():g.redo())&&i.preventDefault()};return o.addEventListener("keydown",d),()=>o.removeEventListener("keydown",d)},[e,r,s])},st=e=>e===void 0?window:e!==null&&"current"in e?e.current:e,nt=e=>"key"in e,ot=e=>e instanceof HTMLInputElement?!tt.has(e.type):e instanceof HTMLElement?e.isContentEditable||e.tagName==="TEXTAREA":!1;exports.BrandMark=c.BrandMark;exports.CanvasTextMeasurer=c.CanvasTextMeasurer;exports.DefaultFooter=c.DefaultFooter;exports.DefaultGrid=c.DefaultGrid;exports.DefaultHeader=c.DefaultHeader;exports.DefaultSwatch=c.DefaultSwatch;exports.DefaultTooltip=c.DefaultTooltip;exports.DevToolsPanel=ze;exports.GRAPH_MODES=c.GRAPH_MODES;exports.GraphErrorBoundary=W;exports.GraphErrorPanel=L;exports.GraphProvider=Q;exports.GraphRenderer=c.GraphRenderer;exports.HoverProvider=c.HoverProvider;exports.TextMeasurerProvider=c.TextMeasurerProvider;exports.ThemeProvider=c.ThemeProvider;exports.UnitBoxSvg=Ie;exports.UnitSpaceSvg=De;exports.createGraphyKit=je;exports.darkTheme=c.darkTheme;exports.defineGeomRenderer=c.defineGeomRenderer;exports.lightTheme=c.lightTheme;exports.lightenCss=c.lightenCss;exports.pruneSelection=X;exports.resolveBrandMarkVisual=c.resolveBrandMarkVisual;exports.useElementScreenRect=c.useElementScreenRect;exports.useGeomHitTest=c.useGeomHitTest;exports.useGeomHover=c.useGeomHover;exports.useGraphCommands=c.useGraphCommands;exports.useGraphHandle=c.useGraphHandle;exports.useGraphHistory=et;exports.useGraphHistoryShortcuts=rt;exports.useGraphSelection=c.useGraphSelection;exports.useHandleScene=c.useHandleScene;exports.useHoverState=c.useHoverState;exports.useSceneSelector=c.useSceneSelector;exports.useStyleReaders=c.useStyleReaders;exports.useStyleResolver=c.useStyleResolver;exports.useTextMeasurer=c.useTextMeasurer;exports.vars=se.vars;
|
package/dist/index.d.ts
CHANGED
|
@@ -4,9 +4,6 @@ import { CartesianCoordSystem } from '@graphysdk/viz-engine';
|
|
|
4
4
|
import { ColorScheme } from '@graphysdk/viz-engine';
|
|
5
5
|
import { Command } from '@graphysdk/viz-engine';
|
|
6
6
|
import { CommandStackSnapshot } from '@graphysdk/viz-engine';
|
|
7
|
-
import { CompiledLayer } from '@graphysdk/viz-engine';
|
|
8
|
-
import { CompiledLayerFor } from '@graphysdk/viz-engine';
|
|
9
|
-
import { CompiledSpec } from '@graphysdk/viz-engine';
|
|
10
7
|
import { Component } from 'react';
|
|
11
8
|
import { ComponentType } from 'react';
|
|
12
9
|
import { CoordSystem } from '@graphysdk/viz-engine';
|
|
@@ -50,6 +47,9 @@ import { RenderHitTester } from '@graphysdk/viz-engine';
|
|
|
50
47
|
import { ResolvedHeadlineSize } from '@graphysdk/viz-engine';
|
|
51
48
|
import { ResolvedSourceStyle } from '@graphysdk/viz-engine';
|
|
52
49
|
import { ResolvedTextStyle } from '@graphysdk/viz-engine';
|
|
50
|
+
import { Scene } from '@graphysdk/viz-engine';
|
|
51
|
+
import { SceneLayer } from '@graphysdk/viz-engine';
|
|
52
|
+
import { SceneLayerFor } from '@graphysdk/viz-engine';
|
|
53
53
|
import { SourceContent } from '@graphysdk/viz-engine';
|
|
54
54
|
import { Spec } from '@graphysdk/viz-engine';
|
|
55
55
|
import { SpecInput } from '@graphysdk/viz-engine';
|
|
@@ -152,13 +152,6 @@ export declare class CanvasTextMeasurer implements TextMeasurer {
|
|
|
152
152
|
private getEmojiCorrection;
|
|
153
153
|
}
|
|
154
154
|
|
|
155
|
-
/**
|
|
156
|
-
* The compiled layer a renderer's handlers receive. A built-in renderer keyed to a `GeomName` gets
|
|
157
|
-
* its param-narrowed `CompiledLayerFor<G>`; a custom renderer (`G = string`) is downstream of
|
|
158
|
-
* serialisation, never sees the plugins array, and reads the base {@link CompiledLayer} dynamically.
|
|
159
|
-
*/
|
|
160
|
-
declare type CompiledLayerOf<G extends GeomName | string> = G extends GeomName ? CompiledLayerFor<G> : CompiledLayer;
|
|
161
|
-
|
|
162
155
|
declare type CoordKind = CoordSystem['type'];
|
|
163
156
|
|
|
164
157
|
/** Maps a coord-kind discriminator to the corresponding `CoordSystem` member. */
|
|
@@ -338,7 +331,7 @@ export declare type GeomRender<G extends GeomName | string = string, C extends C
|
|
|
338
331
|
/**
|
|
339
332
|
* The render side of a geom: everything a single `(geom, coord)` composition needs to render and
|
|
340
333
|
* respond to hover. Generic over the geom name and coord kind, so a built-in renderer parameterised
|
|
341
|
-
* as `GeomRenderContract<'bar', 'cartesian'>` receives param-narrowed inputs (`
|
|
334
|
+
* as `GeomRenderContract<'bar', 'cartesian'>` receives param-narrowed inputs (`SceneLayerFor<'bar'>`,
|
|
342
335
|
* `CartesianCoordSystem`), while the default `<string, CoordKind>` instantiation is the base/custom
|
|
343
336
|
* contract a plugin author writes against. The geom's name, highlight strategy, and `params` type are
|
|
344
337
|
* NOT restated here — they are read off the compile definition this contract is bound to (see
|
|
@@ -375,7 +368,7 @@ export declare interface GeomRenderContract<G extends GeomName | string = string
|
|
|
375
368
|
renderHoverCompanions: (input: HoverCompanionsRenderInput<G>) => ReactNode;
|
|
376
369
|
/**
|
|
377
370
|
* Render-side spatial query for a `'render-hit-test'` layer whose geometry is precomputed into the
|
|
378
|
-
*
|
|
371
|
+
* scene (sankey ribbons, treemap tiles, voronoi cells). A
|
|
379
372
|
* **factory**: given the render input it returns the per-cursor {@link RenderHitTester};
|
|
380
373
|
* the renderer memoizes the factory on `layer.data` and the panel pixel frame, so the read runs once
|
|
381
374
|
* per data or panel-size change and the per-move query allocates nothing. The author writes no hook;
|
|
@@ -406,7 +399,7 @@ export declare type GeomRendererInput = GeomRenderInput;
|
|
|
406
399
|
export declare type GeomRenderFn<G extends GeomName | string = string, C extends CoordKind = CoordKind> = (input: GeomRenderInput<G, C>) => ReactNode;
|
|
407
400
|
|
|
408
401
|
declare interface GeomRenderInput<G extends GeomName | string = string, C extends CoordKind = CoordKind> extends GeomPaintInput {
|
|
409
|
-
layer:
|
|
402
|
+
layer: SceneLayerOf<G>;
|
|
410
403
|
coordSystem: CoordSystemFor<C>;
|
|
411
404
|
shouldAnimateTransitions: boolean;
|
|
412
405
|
formattingLocale: Locale;
|
|
@@ -533,12 +526,12 @@ export declare interface GraphHandle {
|
|
|
533
526
|
commands: GraphCommands;
|
|
534
527
|
/**
|
|
535
528
|
* Registers a listener fired on every change to the graph; returns the unsubscribe. With
|
|
536
|
-
* {@link GraphHandle.
|
|
529
|
+
* {@link GraphHandle.getScene} it is what `useSyncExternalStore` needs, so a surface outside the
|
|
537
530
|
* graph's tree stays in step with it. Subscribing before the graph compiles is valid.
|
|
538
531
|
*/
|
|
539
532
|
subscribe: (onGraphChange: () => void) => () => void;
|
|
540
|
-
/** The graph's
|
|
541
|
-
|
|
533
|
+
/** The graph's scene as of now, or `null` before its first successful compile. */
|
|
534
|
+
getScene: () => Scene | null;
|
|
542
535
|
/**
|
|
543
536
|
* Reverse the most recent command. Returns whether the chart took the step, so a caller driving
|
|
544
537
|
* this from a keystroke can leave the key to the app when the chart has nothing to undo or the
|
|
@@ -577,7 +570,7 @@ export declare interface GraphHistoryShortcutsOptions {
|
|
|
577
570
|
export declare type GraphMode = (typeof GRAPH_MODES)[keyof typeof GRAPH_MODES];
|
|
578
571
|
|
|
579
572
|
/**
|
|
580
|
-
* Owns the
|
|
573
|
+
* Owns the scene for a graph and exposes it via {@link useSceneSelector}, plus a
|
|
581
574
|
* `dispatch` for applying {@link Command}s. Both failure modes — a non-throwing compile failure and a
|
|
582
575
|
* render-throw from a renderer component — converge on a single {@link GraphErrorBoundary} that shows
|
|
583
576
|
* the error in place, so a broken chart never blanks the page.
|
|
@@ -612,8 +605,8 @@ export declare interface GraphProviderProps {
|
|
|
612
605
|
}
|
|
613
606
|
|
|
614
607
|
/**
|
|
615
|
-
* Renders the
|
|
616
|
-
* layout + DOM — the provider owns the spec and derives the
|
|
608
|
+
* Renders the scene held by the surrounding `<GraphProvider>`. The renderer owns
|
|
609
|
+
* layout + DOM — the provider owns the spec and derives the scene output from it. There's
|
|
617
610
|
* no `config` prop: every consumer must wrap with `<GraphProvider>` so commands can operate
|
|
618
611
|
* on the live spec.
|
|
619
612
|
*/
|
|
@@ -756,11 +749,11 @@ export declare interface HeadlineSlotProps {
|
|
|
756
749
|
*/
|
|
757
750
|
declare interface HighlightRenderInput<G extends GeomName | string = string, C extends CoordKind = CoordKind> extends GeomRenderInput<G, C> {
|
|
758
751
|
/** The full layer `layer` was filtered from — for context the subset can't see, like a stack's silhouette. */
|
|
759
|
-
sourceLayer:
|
|
752
|
+
sourceLayer: SceneLayerOf<G>;
|
|
760
753
|
}
|
|
761
754
|
|
|
762
755
|
declare interface HoverCompanionsRenderInput<G extends GeomName | string = string> extends GeomPaintInput {
|
|
763
|
-
layer:
|
|
756
|
+
layer: SceneLayerOf<G>;
|
|
764
757
|
primary: HoverHit;
|
|
765
758
|
related: HoverHit[];
|
|
766
759
|
}
|
|
@@ -782,8 +775,8 @@ declare type HoverGuideMode = 'crosshair' | 'band';
|
|
|
782
775
|
|
|
783
776
|
/**
|
|
784
777
|
* Hosts the hover store + engine for the surrounding `<GraphProvider>`. Subscribes only to the
|
|
785
|
-
* `layers` and `coordSystem` slices of the
|
|
786
|
-
* so unrelated stage outputs (scales, guides,
|
|
778
|
+
* `layers` and `coordSystem` slices of the scene — the engine never reads anything else,
|
|
779
|
+
* so unrelated stage outputs (scales, guides, summarize, visual mapper) cannot trigger a rebuild.
|
|
787
780
|
*/
|
|
788
781
|
export declare const HoverProvider: ({ children }: HoverProviderProps) => JSX.Element;
|
|
789
782
|
|
|
@@ -792,7 +785,7 @@ declare interface HoverProviderProps {
|
|
|
792
785
|
}
|
|
793
786
|
|
|
794
787
|
declare interface HoverRenderInput<G extends GeomName | string = string, C extends CoordKind = CoordKind> extends GeomPaintInput {
|
|
795
|
-
layer:
|
|
788
|
+
layer: SceneLayerOf<G>;
|
|
796
789
|
coordSystem: CoordSystemFor<C>;
|
|
797
790
|
primary: HoverHit;
|
|
798
791
|
group: HoverHit[];
|
|
@@ -880,7 +873,7 @@ export declare interface OverlayAnchor {
|
|
|
880
873
|
}
|
|
881
874
|
|
|
882
875
|
declare interface OverlayAnchorInput<G extends GeomName | string = string, C extends CoordKind = CoordKind> {
|
|
883
|
-
layer:
|
|
876
|
+
layer: SceneLayerOf<G>;
|
|
884
877
|
coordSystem: CoordSystemFor<C>;
|
|
885
878
|
observation: Observation;
|
|
886
879
|
}
|
|
@@ -924,6 +917,13 @@ export declare interface ResolvedGeomRenderer extends GeomRenderContract {
|
|
|
924
917
|
geom: string;
|
|
925
918
|
}
|
|
926
919
|
|
|
920
|
+
/**
|
|
921
|
+
* The compiled layer a renderer's handlers receive. A built-in renderer keyed to a `GeomName` gets
|
|
922
|
+
* its param-narrowed `SceneLayerFor<G>`; a custom renderer (`G = string`) is downstream of
|
|
923
|
+
* serialisation, never sees the plugins array, and reads the base {@link SceneLayer} dynamically.
|
|
924
|
+
*/
|
|
925
|
+
declare type SceneLayerOf<G extends GeomName | string> = G extends GeomName ? SceneLayerFor<G> : SceneLayer;
|
|
926
|
+
|
|
927
927
|
/** An element's on-screen rect in client coordinates — what a fixed-position overlay aligns to. */
|
|
928
928
|
export declare interface ScreenRect {
|
|
929
929
|
left: number;
|
|
@@ -1129,19 +1129,6 @@ declare interface UnitSpaceSvgProps extends Omit<SVGProps<SVGSVGElement>, 'viewB
|
|
|
1129
1129
|
children: ReactNode;
|
|
1130
1130
|
}
|
|
1131
1131
|
|
|
1132
|
-
/**
|
|
1133
|
-
* Subscribes to a derived slice of the compiled spec. The subscription only fires when the
|
|
1134
|
-
* selector's result changes by reference, so combined with the compiler's per-stage memoization
|
|
1135
|
-
* this skips re-renders whenever the selected slice is unchanged.
|
|
1136
|
-
*
|
|
1137
|
-
* @example
|
|
1138
|
-
* ```ts
|
|
1139
|
-
* const layers = useCompiledSelector((compiled) => compiled.layers);
|
|
1140
|
-
* const xAxis = useCompiledSelector((compiled) => compiled.guides.axes[0]);
|
|
1141
|
-
* ```
|
|
1142
|
-
*/
|
|
1143
|
-
export declare const useCompiledSelector: <Selected>(selector: (compiled: CompiledSpec) => Selected) => Selected;
|
|
1144
|
-
|
|
1145
1132
|
/**
|
|
1146
1133
|
* Tracks an element's on-screen rect, so that a fixed-position overlay can sit exactly over it in pixel
|
|
1147
1134
|
* space. `screenRect` is `null` until the first measurement lands, and drops back to `null` whenever the
|
|
@@ -1264,19 +1251,32 @@ export declare const useGraphHistoryShortcuts: (handleRef: RefObject<GraphHandle
|
|
|
1264
1251
|
export declare const useGraphSelection: () => readonly EditTarget[];
|
|
1265
1252
|
|
|
1266
1253
|
/**
|
|
1267
|
-
* The graph's
|
|
1254
|
+
* The graph's scene, re-read whenever the graph changes, or `null` before its first
|
|
1268
1255
|
* successful compile.
|
|
1269
1256
|
*
|
|
1270
|
-
* Returns the whole
|
|
1257
|
+
* Returns the whole scene: `useSyncExternalStore` compares snapshots by reference, so a selector
|
|
1271
1258
|
* building a fresh object per call would re-render forever. Derive slices at the call site.
|
|
1272
1259
|
*/
|
|
1273
|
-
export declare const
|
|
1260
|
+
export declare const useHandleScene: (handle: GraphHandle) => Scene | null;
|
|
1274
1261
|
|
|
1275
1262
|
/**
|
|
1276
1263
|
* Subscribe to a slice of the hover state from inside a `HoverProvider`.
|
|
1277
1264
|
*/
|
|
1278
1265
|
export declare function useHoverState<T>(selector: (state: HoverStoreState) => T): T;
|
|
1279
1266
|
|
|
1267
|
+
/**
|
|
1268
|
+
* Subscribes to a derived slice of the scene. The subscription only fires when the
|
|
1269
|
+
* selector's result changes by reference, so combined with the compiler's per-stage memoization
|
|
1270
|
+
* this skips re-renders whenever the selected slice is unchanged.
|
|
1271
|
+
*
|
|
1272
|
+
* @example
|
|
1273
|
+
* ```ts
|
|
1274
|
+
* const layers = useSceneSelector((scene) => scene.layers);
|
|
1275
|
+
* const xAxis = useSceneSelector((scene) => scene.guides.axes[0]);
|
|
1276
|
+
* ```
|
|
1277
|
+
*/
|
|
1278
|
+
export declare const useSceneSelector: <Selected>(selector: (scene: Scene) => Selected) => Selected;
|
|
1279
|
+
|
|
1280
1280
|
/**
|
|
1281
1281
|
* Style readers for a layer, resolving paint through the stylesheet cascade. Takes either a base layer
|
|
1282
1282
|
* or a highlight's filtered sub-layer. A known geom kind gets back its own readers, whose
|
|
@@ -1284,7 +1284,7 @@ export declare function useHoverState<T>(selector: (state: HoverStoreState) => T
|
|
|
1284
1284
|
*
|
|
1285
1285
|
* Plugin paint can also read the same cascade from `input.styleReaders` on the geom render contract.
|
|
1286
1286
|
*/
|
|
1287
|
-
export declare const useStyleReaders: <L extends
|
|
1287
|
+
export declare const useStyleReaders: <L extends SceneLayer>(layer: L) => StyleReadersForLayer<L>;
|
|
1288
1288
|
|
|
1289
1289
|
/** The chart's stylesheet resolver. One instance per provider, rebuilt when the colour scheme flips. */
|
|
1290
1290
|
export declare const useStyleResolver: () => StyleResolver;
|
|
@@ -1297,17 +1297,17 @@ export declare const vars: {
|
|
|
1297
1297
|
white: `var(--${string})`;
|
|
1298
1298
|
black: `var(--${string})`;
|
|
1299
1299
|
transparent: `var(--${string})`;
|
|
1300
|
-
|
|
1301
|
-
|
|
1302
|
-
|
|
1303
|
-
|
|
1304
|
-
|
|
1305
|
-
|
|
1306
|
-
|
|
1307
|
-
|
|
1308
|
-
|
|
1309
|
-
|
|
1310
|
-
|
|
1300
|
+
gray100: `var(--${string})`;
|
|
1301
|
+
gray95: `var(--${string})`;
|
|
1302
|
+
gray90: `var(--${string})`;
|
|
1303
|
+
gray85: `var(--${string})`;
|
|
1304
|
+
gray80: `var(--${string})`;
|
|
1305
|
+
gray75: `var(--${string})`;
|
|
1306
|
+
gray70: `var(--${string})`;
|
|
1307
|
+
gray60: `var(--${string})`;
|
|
1308
|
+
gray50: `var(--${string})`;
|
|
1309
|
+
gray0: `var(--${string})`;
|
|
1310
|
+
grayGradient80: `var(--${string})`;
|
|
1311
1311
|
green60: `var(--${string})`;
|
|
1312
1312
|
green50: `var(--${string})`;
|
|
1313
1313
|
red60: `var(--${string})`;
|