@graphysdk/react-renderer 1.9.0-beta.1793880532798 → 1.9.0-beta.1793882432228

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.
@@ -22,7 +22,7 @@ import './history-chords.css';var Bo = Object.defineProperty, Yc = (e, t) => {
22
22
  });
23
23
  return t || Bo(r, Symbol.toStringTag, { value: "Module" }), r;
24
24
  };
25
- typeof window < "u" && (window.__GRAPHY_SDK__ ??= {}, window.__GRAPHY_SDK__.reactRenderer = "1.9.0-beta.1793880532798");
25
+ typeof window < "u" && (window.__GRAPHY_SDK__ ??= {}, window.__GRAPHY_SDK__.reactRenderer = "1.9.0-beta.1793882432228");
26
26
  function jc(e) {
27
27
  for (const t of e) (t.severity === "error" ? console.error : console.warn)(`[graphy] ${t.code}: ${t.message}`, t);
28
28
  }
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('./index.css');const s=require("./history-chords-gOcNirNA.cjs");let m=require("@graphysdk/viz-engine"),d=require("react"),i=require("react/jsx-runtime"),U=require("zustand"),F=require("motion/react"),Y=require("zustand/vanilla"),V=require("clsx");V=s.__toESM(V,1);var fe="_1a5iqpb0",pe="_1a5iqpb1";var ve="_1a5iqpb3",Se="_1a5iqpb4",ye="_1a5iqpb5";var W=({errors:e})=>{const[t,...r]=e;return(0,i.jsxs)("div",{role:"alert",className:fe,children:[(0,i.jsx)("strong",{className:pe,children:"This chart could not be rendered."}),t&&(0,i.jsx)(Q,{diagnostic:t}),r.length>0&&(0,i.jsx)("ul",{className:"_1a5iqpb2",children:r.map((n,o)=>(0,i.jsx)("li",{children:(0,i.jsx)(Q,{diagnostic:n})},`${n.code}-${o}`))})]})},Q=({diagnostic:e})=>(0,i.jsxs)("div",{className:ve,children:[(0,i.jsx)("span",{className:Se,children:e.code}),(0,i.jsx)("p",{className:ye,children:e.message}),e.suggestion&&(0,i.jsx)("p",{className:"_1a5iqpb6",children:e.suggestion})]});function be(e=[],t=[]){return e.length===t.length&&e.every((r,n)=>Object.is(r,t[n]))}var oe=class extends d.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);s.logDiagnostics([r]),this.props.onError?.([r]),console.error("Chart render component stack:",t.componentStack)}componentDidUpdate(e){this.state.caughtDiagnostic&&!be(e.resetKeys,this.props.resetKeys)&&this.setState({caughtDiagnostic:null})}render(){const{caughtDiagnostic:e}=this.state;if(e)return(0,i.jsx)(W,{errors:[e]});const{forcedErrors:t,children:r}=this.props;return t&&t.length>0?(0,i.jsx)(W,{errors:t}):r}},ie=e=>typeof e=="object"&&"geom"in e&&"render"in e,ae=e=>{const t=(0,m.resolveDefinition)(e);return t instanceof m.Geom?t:null},le=(e,t)=>{const r=e.filter(n=>Ge(n,t));return r.length===e.length?e:r},Ge=(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,J=[],Te=()=>(0,Y.createStore)(e=>({selection:J,setSelection:t=>e(r=>xe(r.selection,t)?r:{selection:t}),clearSelection:()=>e(t=>t.selection.length===0?t:{selection:J})})),xe=(e,t)=>e===t?!0:e.length!==t.length?!1:e.every((r,n)=>{const o=t[n];return o!==void 0&&(0,m.areEditTargetsEqual)(r,o)}),Ee=5,Re=e=>{if(!s.IS_DEV)return{emit:()=>{},subscribe:()=>Ce,getLastTrigger:()=>null,getLastCompile:()=>null,getCacheStats:()=>e.getCacheStats()};const t=new Set;let r=null;return{emit:n=>{const o=e.getLastCompile();if(o){r=n;for(const a of t)a(n,o)}},subscribe:n=>(t.add(n),()=>{t.delete(n)}),getLastTrigger:()=>r,getLastCompile:()=>e.getLastCompile(),getCacheStats:()=>e.getCacheStats()}},Pe=()=>(0,Y.createStore)(e=>({lastCompile:null,history:[],nextId:1,lastSnapshot:null,recordCompile:(t,r)=>e(n=>{if(n.lastSnapshot===r)return n;const o={id:n.nextId,label:Ie(t),stages:r.stages,stageDurationsMs:r.stageDurationsMs,durationMs:r.durationMs};return{lastCompile:o,history:je(n.history,o,Ee),nextId:n.nextId+1,lastSnapshot:r}})})),Ce=()=>{},Ie=e=>{switch(e.kind){case"init":return"init";case"spec":return"spec change";case"data":return"data change";case"command":return e.command.metadata.description}},je=(e,t,r)=>{const n=e.length>=r?e.length-(r-1):0;return[...e.slice(n),t]};function Z(e){const t=e.filter(ie),r=new Set([...Object.keys(s.BUILT_IN_GEOM_RENDERERS),...t.map(u=>u.geom)]),n=[],o=new Set;for(const u of e){const h=ae(u);h===null||r.has(h.type)||o.has(h.type)||(o.add(h.type),n.push({kind:"userInput",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 a=new Map;for(const u of t){if("definition"in u)continue;const h=`${u.geom}|${u.coord}`,p=a.get(h);p?p.count+=1:a.set(h,{geom:u.geom,coord:u.coord,count:1})}const l=[];for(const{geom:u,coord:h,count:p}of a.values())p<2||l.push({kind:"userInput",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 l.push(...Me(e)),{errors:n,warnings:l}}function Ne(e,t){const{coordSystem:r,layers:n}=e,o=new Set,a=[];for(const l of n)t(l.geom,r.type)!==null||o.has(l.geom)||(o.add(l.geom),a.push({kind:"userInput",severity:"warning",code:"MISSING_GEOM_RENDERER",message:`No renderer for geom '${l.geom}' under ${r.type} coords; the layer is not painted.`,context:{requested:l.geom,kind:"geom-renderer"},suggestion:`Register a renderer for ('${l.geom}', '${r.type}') via \`defineGeomRenderer\`.`}));return a}function De(e,t){const{coordSystem:r,layers:n}=e,o=new Set,a=[];for(const l of n){if(l.interactive===!1||l.spatialKind!=="renderHitTest"||o.has(l.geom))continue;const u=t(l.geom,r.type);u===null||u.hitTest||s.isLiveRender(u)||(o.add(l.geom),a.push({kind:"userInput",severity:"warning",code:"MISSING_RENDER_HIT_TEST",message:`Geom '${l.geom}' declares spatialKind 'renderHitTest' but its renderer provides no hit-test; the layer has no hover.`,context:{requested:l.geom,kind:"geom-renderer"},suggestion:`Add a \`hitTest\` factory (precomputed geometry) or a live render (\`{ fn, options: { live: true } }\`, live simulation) to the renderer for ('${l.geom}', '${r.type}').`}))}return a}function Le(e){const t=new Set,r=[];for(const n of e.layers){const o=n.identityKey;n.interactive!==!1&&(n.spatialKind!=="renderHitTest"||typeof o!="object"||t.has(n.geom)||n.data.hasVariable(o.variable)||(t.add(n.geom),r.push({kind:"userInput",severity:"warning",code:"RENDER_HIT_TEST_IDENTITY",message:`Geom '${n.geom}' keys its identity on '${o.variable}', a column its compile output does not emit; its hover lookup is empty.`,context:{requested:n.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 _e(e,t){const{coordSystem:r,layers:n}=e,o=new Set,a=[];for(const l of n){if(l.interactive===!1||l.spatialKind!=="renderHitTest"||o.has(l.geom))continue;const u=t(l.geom,r.type);u===null||!u.hitTest||!s.isLiveRender(u)||(o.add(l.geom),a.push({kind:"userInput",severity:"warning",code:"CONFLICTING_RENDER_HIT_TEST",message:`Geom '${l.geom}' declares both a \`hitTest\` factory and a live render; these are alternatives, so only the live render is used.`,context:{requested:l.geom,kind:"geom-renderer"},suggestion:"Keep one: a `hitTest` factory for precomputed geometry, OR a live render (`{ fn, options: { live: true } }`) for a live simulation."}))}return a}function we(e,t){const r=new Set,n=[];for(const o of e.layers)o.interactive!==!1&&(o.spatialKind!=="renderHitTest"||r.has(o.geom)||t.hasCapability(o.geom)||(r.add(o.geom),n.push({kind:"userInput",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 n}function ke(e,t){const{coordSystem:r,layers:n}=e,o=new Set,a=[];for(const l of n){if(l.interactive===!1||l.spatialKind==="renderHitTest"||o.has(l.geom))continue;const u=t(l.geom,r.type);u===null||!s.isLiveRender(u)||(o.add(l.geom),a.push({kind:"userInput",severity:"warning",code:"LIVE_RENDER_REQUIRES_RENDER_HIT_TEST",message:`Geom '${l.geom}' declares a live render but its layer's spatialKind is '${l.spatialKind}', not 'renderHitTest'; its push-path hover resolves to nothing.`,context:{requested:l.geom,kind:"geom-renderer"},suggestion:"Have the geom's manifest yield spatialKind 'renderHitTest' so the scene layer carries the `byKey` index the live render's `pushHover` resolves against."}))}return a}function qe(e,t){let r;return e.layers.flatMap((n,o)=>s.isLiveRender(t(n.geom,e.coordSystem.type))?He(n)?(r??=(0,m.createStyleResolver)().readers(e),(r.geom(n).get("overpaint",void 0,"hovered")?.length??0)===0?[]:[{kind:"userInput",severity:"warning",code:"INVALID_STYLE_RULE",message:`Style 'overpaint' in state 'hovered' is not supported on live geom '${n.geom}' (layer '${n.id}'); it is ignored.`,context:{param:"overpaint",layerIndex:o,requested:n.geom},suggestion:"Remove the hovered overpaint, or paint the hover treatment in the geom's live render."}]):[]:[])}var He=e=>[e.styles.defaults,e.styles.overrides].some(t=>t.some(r=>r.state==="hovered"&&(r.declarations.overpaint?.length??0)>0));function Me(e){const t=new Set,r=[];for(const n of e){const o=ae(n);o===null||t.has(o.type)||o.dataLabelCoordTypes.length===0||o.getDataLabelPlacements!==void 0||(t.add(o.type),r.push({kind:"userInput",severity:"warning",code:"MISSING_DATA_LABEL_PLACEMENT",message:`Geom '${o.type}' declares \`dataLabelCoordTypes\` but implements no \`getDataLabelPlacements\`; its layers paint no data labels.`,context:{requested:o.type,kind:"geom-renderer"},suggestion:"Implement `getDataLabelPlacements(context)` on the geom, or drop `dataLabelCoordTypes` so the compiler warns the author off the flag."}))}return r}var Ae=e=>(0,Y.createStore)(t=>({scene:e,setScene:r=>t(n=>n.scene===r?n:{scene:r})})),$e=({spec:e,data:t,colorScheme:r,plugins:n,theme:o,resolveRenderer:a,anchorResolver:l,onSpecChange:u,onError:h,onWarnings:p})=>{const b=s.useLatestRef(u),j=s.useLatestRef(h),T=s.useLatestRef(p),[{session:v,compileBus:g,findGeom:G}]=(0,d.useState)(()=>{const c=(0,m.createCompiler)({plugins:n,theme:o});return{session:new m.GraphCompilationSession(c),compileBus:Re(c),findGeom:f=>c.findGeom(f)}}),[S]=(0,d.useState)(()=>{const c=Z(n??[]),f=Z(o?.plugins??[]);return{errors:[...f.errors,...c.errors],warnings:[...f.warnings,...c.warnings]}}),k=(0,d.useRef)(null),[N]=(0,d.useState)(Oe),E=(0,d.useRef)(null),y=(0,d.useCallback)(c=>S.errors.length===0?c:[...S.errors,...c??[]],[S]),_=(0,d.useCallback)(c=>{if(!c.ok)return c.errors;if(E.current)E.current.getState().setScene(c.scene);else{const f=Ae(c.scene);f.subscribe(N.notify),E.current=f,N.notify()}return null},[N]),[$,P]=(0,d.useState)(()=>{const c=v.compile({spec:e,data:t,colorScheme:r});return k.current=c,y(_(c))}),C=(0,d.useCallback)(c=>c.ok?[...c.warnings,...Ne(c.scene,a),...De(c.scene,a),...Le(c.scene),..._e(c.scene,a),...ke(c.scene,a),...qe(c.scene,a),...we(c.scene,l)]:c.warnings,[a,l]),I=(0,d.useCallback)(c=>{c.length!==0&&(s.logDiagnostics(c),j.current?.(c))},[j]),x=(0,d.useCallback)(c=>{c.length!==0&&(s.logDiagnostics(c),T.current?.(c))},[T]);(0,d.useEffect)(()=>{const c=k.current;c&&(I([...S.errors,...c.ok?[]:c.errors]),x([...S.warnings,...C(c)]),c.ok&&g.emit({kind:"init"}))},[g,I,x,S,C]),(0,d.useEffect)(()=>{const c=v.update({spec:e,data:t,colorScheme:r});if(!c)return;c.committedSpec&&b.current?.(c.committedSpec);const f=_(c.result);P(y(f)),f&&I(f),x(C(c.result)),f||g.emit({kind:c.hasSpecChange?"spec":"data"})},[e,t,r,v,g,_,I,x,y,C,b]);const q=(0,d.useCallback)(c=>{P(f=>f===null?f:y(null)),x(C(c))},[y,x,C]),H=(0,d.useCallback)(c=>{c.scene&&E.current?.getState().setScene(c.scene),c.result&&q(c.result),c.command&&g.emit({kind:"command",command:c.command}),c.spec&&b.current?.(c.spec),c.errors&&I([...c.errors])},[q,g,b,I]),R=(0,d.useCallback)(c=>{for(const f of c)H(f);return c.some(f=>!!f.scene)},[H]),K=(0,d.useCallback)((c,f)=>{R(v.applyCommand(c,f))},[v,R]),O=(0,d.useCallback)(()=>{R(v.commit())},[v,R]),L=(0,d.useCallback)(()=>R(v.undo()),[v,R]),M=(0,d.useCallback)(()=>R(v.redo()),[v,R]),D=(0,d.useMemo)(()=>({stack:v.history,undo:L,redo:M}),[v,L,M]),z=(0,d.useCallback)(()=>E.current?.getState().scene??null,[]);return{store:E.current,dispatch:K,commit:O,history:D,subscribe:N.subscribe,getScene:z,compileBus:g,compileErrors:$,findGeom:G}},Oe=()=>{const e=new Set;return{subscribe:t=>(e.add(t),()=>{e.delete(t)}),notify:()=>e.forEach(t=>t())}},Be=["cartesian","polar"],ce=({data:e,spec:t,plugins:r=[],theme:n,glyphs:o,formattingLocale:a,handleRef:l,onSpecChange:u,onError:h,onWarnings:p,colorScheme:b="light",children:j})=>{const T=ze(a,p),[v]=(0,d.useState)(()=>n),[g]=(0,d.useState)(()=>s.mergeGlyphs(n?.glyphs,o)),G=v?.colorScheme??b,[S]=(0,d.useState)(()=>s.createGeomRendererResolver([...v?.plugins??[],...r].filter(ie)));Ke(S,g);const k=(0,d.useId)(),[N]=(0,d.useState)(()=>(0,m.createAnchorResolver)(r)),[E]=(0,d.useState)(()=>(0,m.createDataLabelPlacementResolver)(r)),[y]=(0,d.useState)(()=>Te()),[_]=(0,d.useState)(()=>s.createTargetBoundaryStore()),$=(0,d.useMemo)(()=>(0,m.createStyleResolver)({colorScheme:G}),[G]),{store:P,dispatch:C,commit:I,history:x,subscribe:q,getScene:H,compileBus:R,compileErrors:K,findGeom:O}=$e({spec:t,data:e,colorScheme:G,plugins:r,theme:v,resolveRenderer:S,anchorResolver:N,onSpecChange:u,onError:h,onWarnings:p});(0,d.useEffect)(()=>{if(P)return P.subscribe((D,z)=>{if(D.scene.spec===z.scene.spec)return;const{selection:c,setSelection:f}=y.getState();c.length!==0&&f(le(c,D.scene.spec))})},[P,y]);const L=(0,d.useMemo)(()=>({dispatch:C,commit:I}),[C,I]);(0,d.useImperativeHandle)(l,()=>({commands:L,undo:x.undo,redo:x.redo,subscribe:q,getScene:H,formattingLocale:T,getSelection:()=>y.getState().selection,setSelection:D=>y.getState().setSelection(D),subscribeSelection:y.subscribe,canPlaceDataLabels:E.hasCapability,canFormatDataLabelsAsPercentages:E.hasPercentageFormat,getGlyphs:()=>g,getPointSymbols:D=>S("point",D)?.symbols}),[L,x,q,H,T,y,E,g,S]);const M=(0,d.useMemo)(()=>P?{chartId:k,store:P,selectionStore:y,targetBoundaryStore:_,commands:L,history:x,formattingLocale:T,compileBus:R,colorScheme:G,styleResolver:$,anchorResolver:N,findGeom:O}:null,[k,P,y,_,L,x,T,R,G,$,N,O]);return(0,i.jsx)(oe,{forcedErrors:K,onError:h,resetKeys:[t,e],children:M?(0,i.jsx)(s.GraphContext.Provider,{value:M,children:(0,i.jsx)(s.GeomRendererResolverProvider,{value:S,children:(0,i.jsx)(s.DataLabelPlacementResolverProvider,{value:E,children:(0,i.jsx)(s.GeomShapesProvider,{shapes:v?.shapes,children:(0,i.jsx)(s.GlyphRegistryProvider,{glyphs:g,children:j})})})})}):null})},Fe=(e,t)=>(e??[]).filter(r=>!(0,m.isGeometricSymbol)(r)&&!t.has(r)),Ke=(e,t)=>{(0,d.useEffect)(()=>{if(!s.IS_DEV)return;const r=new Set(t.map(({name:n})=>n));for(const n of Be)for(const o of Fe(e("point",n)?.symbols,r))console.warn(`[graphy] The ${n} point renderer lists "${o}", but no glyph has that name. The shape menu offers it, and SymbolFigure draws the first listed symbol in its place.`)},[e,t])},ze=(e,t)=>{const r=s.useLatestRef(t);return(0,d.useEffect)(()=>{if(e===void 0||(0,m.findIntlLocale)(e)!==void 0)return;const n=[{severity:"warning",kind:"userInput",code:"INVALID_FORMATTING_LOCALE",message:`formattingLocale '${e}' is not a tag Intl can format in, so the chart formats in ${m.DEFAULT_LOCALE}.`}];s.logDiagnostics(n),r.current?.(n)},[e,r]),e===void 0?void 0:(0,m.canonicalizeLocale)(e)};function Ue({theme:e,glyphs:t,...r}={}){const n=(0,m.createSpecBuilder)(r);return{...n,GraphProvider:a=>(0,i.jsx)(ce,{...a,plugins:n.plugins,theme:e,glyphs:t})}}var w=(e,t)=>{if(typeof e=="number")return Number.isFinite(e)?e:null;if(!e.endsWith("%"))return null;const r=Number.parseFloat(e);return Number.isFinite(r)?r/100*t:null},Ve=({x:e,y:t,width:r,height:n},o)=>{const a=w(e,o.width),l=w(t,o.height),u=w(r,o.width),h=w(n,o.height);return a===null||l===null||u===null||h===null?null:{x:a,y:l,width:u,height:h}},ue=({animateTransitions:e,cx:t,cy:r,r:n,effects:o,...a})=>{const l=s.toGeomEffectsStyle(o);return e?(0,i.jsx)(F.motion.circle,{initial:!1,animate:{cx:t,cy:r,r:n},transition:s.DEFAULT_SPRING_TRANSITION,style:l,...a}):(0,i.jsx)("circle",{cx:t,cy:r,r:n,style:l,...a})},de=({animateTransitions:e,x1:t,y1:r,x2:n,y2:o,effects:a,...l})=>{const u=s.toGeomEffectsStyle(a);return e?(0,i.jsx)(F.motion.line,{initial:!1,animate:{x1:t,y1:r,x2:n,y2:o},transition:s.DEFAULT_SPRING_TRANSITION,style:u,...l}):(0,i.jsx)("line",{x1:t,y1:r,x2:n,y2:o,style:u,...l})},me=({animateTransitions:e,x:t,y:r,width:n,height:o,rx:a,ry:l,effects:u,...h})=>{const p=s.toGeomEffectsStyle(u);return e?(0,i.jsx)(F.motion.rect,{initial:!1,animate:{attrX:t,attrY:r,width:n,height:o,...a!==void 0&&l!==void 0?{rx:a,ry:l}:{}},transition:s.DEFAULT_SPRING_TRANSITION,style:p,...h}):(0,i.jsx)("rect",{x:t,y:r,width:n,height:o,rx:a,ry:l,style:p,...h})},he=({animateTransitions:e,d:t,source:r,effects:n,...o})=>{const a=s.toGeomEffectsStyle(n);return e?(0,i.jsx)(Je,{d:t,source:r,style:a,...o}):(0,i.jsx)("path",{d:t,style:a,...o})},We=e=>{const{Circle:t}=s.useGeomShapes(),{symbol:r,...n}=e;return r!==void 0&&r!=="circle"?(0,i.jsx)("g",{style:s.toGeomEffectsStyle(e.effects),"data-testid":e["data-testid"],children:(0,i.jsx)(s.PointSymbol,{symbol:r,cx:ee(e.cx),cy:ee(e.cy),size:e.r*2,fill:e.fill??"currentColor",fillOpacity:e.fillOpacity,opacity:e.opacity,stroke:e.stroke,strokeOpacity:e.strokeOpacity,strokeWidth:e.strokeWidth,motion:e.animateTransitions?{transition:s.DEFAULT_SPRING_TRANSITION,intro:!1,fadesIn:!1}:null})}):t===void 0?ue(n):(0,i.jsx)(s.GeomShapesProvider,{children:(0,i.jsx)(t,{...n})})},Ye=e=>{const{Line:t}=s.useGeomShapes();return t===void 0?de(e):(0,i.jsx)(s.GeomShapesProvider,{children:(0,i.jsx)(t,{...e})})},Xe=({cornerRadius:e,...t})=>{const{Rect:r}=s.useGeomShapes(),n=s.useGeomViewport()?.size??null,o=s.useGeomPixelsPerUnit(),a={...t,...Ze(e,t,n,o)};return r===void 0?me(a):(0,i.jsx)(s.GeomShapesProvider,{children:(0,i.jsx)(r,{...a})})},Qe=e=>{const{Path:t}=s.useGeomShapes();return t===void 0?he(e):(0,i.jsx)(s.GeomShapesProvider,{children:(0,i.jsx)(t,{...e})})},ee=e=>typeof e=="number"?`${e}px`:e,Je=({d:e,source:t,...r})=>{const n=s.useSvgPathMorph(e,s.DEFAULT_SPRING_TRANSITION,t);return(0,i.jsx)(F.motion.path,{d:n,...r})},Ze=(e,t,r,n)=>{if(e===void 0)return{};const o=(0,m.foldGeomCornerRadii)(e);if(o===void 0)return{};const a=et(t,r,n);if(a===null)return o==="full"?{}:re((0,m.resolveGeomCornerRadiusPx)({cornerRadius:o}),n);const l=Math.min((0,m.resolveGeomCornerRadiusPx)({cornerRadius:o,box:a}),Math.min(a.width,a.height)/2);return re(l,n)},et=(e,t,r)=>{const n=te(e.width,t?.width,r.x),o=te(e.height,t?.height,r.y);return n===null||o===null?null:{width:n,height:o}},te=(e,t,r)=>{if(typeof e=="number")return Number.isFinite(e)?Math.abs(e)*r:null;if(t===void 0)return null;const n=w(e,t);return n===null?null:Math.abs(n)},re=(e,t)=>t.x<=0||t.y<=0?{rx:0,ry:0}:{rx:e/t.x,ry:e/t.y},tt=({symbol:e,size:t,fill:r,fillOpacity:n,stroke:o,strokeOpacity:a,strokeWidth:l})=>{const u=s.useGlyphRegistry(),h=s.useGeomRendererResolver(),p=s.useSceneSelector(T=>T.coordSystem.type),b=rt(e,h("point",p)?.symbols??[],u),j={size:t,fill:r,fillOpacity:n,stroke:o,strokeOpacity:a,strokeWidth:l};return(0,m.isGeometricSymbol)(b)?(0,i.jsx)("path",{d:(0,m.buildPointSymbolPath)(b,t),fill:r,fillOpacity:n,stroke:o,strokeOpacity:a,strokeWidth:l,strokeLinejoin:"round"}):(0,i.jsx)(s.GlyphMark,{symbol:b,glyphs:u,...j})},rt=(e,t,r)=>(0,m.isImageSymbol)(e)||t.includes(e)||!(0,m.isGeometricSymbol)(e)&&r.has(e)?e:t[0]??"circle",nt=({children:e,...t})=>{const r=s.useGeomViewport()?.size??null;return(0,i.jsx)("svg",{viewBox:"0 0 1 1",preserveAspectRatio:"none",width:"100%",height:"100%",pointerEvents:"none",...t,children:(0,i.jsx)(s.GeomViewportProvider,{size:r,space:"unit",children:e})})},st=({box:e,children:t})=>{const r=s.useGeomViewportSize(),n=r===null?null:r.width*(e.x1-e.x0),o=r===null?null:r.height*(e.y1-e.y0),a=(0,d.useMemo)(()=>n===null||o===null?null:{width:n,height:o},[n,o]);return(0,i.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:(0,i.jsx)(s.GeomViewportProvider,{size:a,children:t})})},ot="drqe3u0",it="drqe3u1",at="drqe3u2",lt="drqe3u3",A="drqe3u4",ct="drqe3u5",ut="drqe3u6",dt="drqe3u7",B="drqe3u8",mt="drqe3u9",ht="drqe3ua";var gt="drqe3uc",ft="drqe3ud",pt="drqe3ue",vt="drqe3uf";var St="drqe3uh",yt="drqe3ui",ne={enabled:"drqe3uk drqe3uj",disabled:"drqe3ul drqe3uj"},se={ran:"drqe3un drqe3um",dim:"drqe3uo drqe3um"},ge={ran:"drqe3uq drqe3up",cached:"drqe3ur drqe3up",untouched:"drqe3us drqe3up"},bt=({width:e=440,style:t,className:r}={})=>{const{compileBus:n}=s.useGraphContext(),[o]=(0,d.useState)(()=>Pe()),[a,l]=(0,d.useState)(!1),[u,h]=(0,d.useState)(m.isCompilerCachingEnabled);(0,d.useEffect)(()=>{const{recordCompile:g}=o.getState(),G=n.getLastTrigger(),S=n.getLastCompile();return G&&S&&g(G,S),n.subscribe(g)},[o,n]);const p=(0,U.useStore)(o,g=>g.lastCompile),b=(0,U.useStore)(o,g=>g.history),j=n.getCacheStats(),T=p===null&&b.length===0,v=()=>{h(g=>{const G=!g;return(0,m.setCompilerCachingEnabled)(G),G})};return(0,i.jsxs)("div",{className:(0,V.default)(ht,r),style:{width:e,...t},children:[(0,i.jsxs)("div",{className:ot,children:[(0,i.jsxs)("div",{children:[(0,i.jsx)("div",{className:it,children:"compile cache"}),(0,i.jsx)("div",{className:pt,children:T?"production: stats disabled":p?`last: ${p.label} · ${X(p.durationMs)}`:"awaiting first compile…"})]}),(0,i.jsx)("button",{type:"button",onClick:()=>l(g=>!g),className:vt,children:a?"▾":"▴"})]}),!a&&(0,i.jsxs)("div",{className:"drqe3ub",children:[(0,i.jsxs)("button",{type:"button",onClick:v,className:u?ne.enabled:ne.disabled,"aria-pressed":u,children:["cache ",u?"enabled":"disabled"]}),(0,i.jsx)("span",{className:"drqe3ug",children:"next compile reflects this toggle"})]}),!a&&!T&&(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(Gt,{delta:p?.stages,durations:p?.stageDurationsMs,cumulative:j}),(0,i.jsx)(Tt,{entries:b})]})]})},Gt=({delta:e,durations:t,cumulative:r})=>(0,i.jsxs)("table",{className:at,children:[(0,i.jsx)("thead",{children:(0,i.jsxs)("tr",{className:St,children:[(0,i.jsx)("th",{className:lt,children:"stage"}),(0,i.jsx)("th",{className:A,children:"time"}),(0,i.jsx)("th",{className:A,children:"Δ miss"}),(0,i.jsx)("th",{className:A,children:"Δ hit"}),(0,i.jsx)("th",{className:A,children:"total miss"}),(0,i.jsx)("th",{className:A,children:"total hit"})]})}),(0,i.jsx)("tbody",{children:m.COMPILER_STAGE_KEYS.map(n=>{const o=e?.[n],a=xt(o);return(0,i.jsxs)("tr",{className:gt,children:[(0,i.jsxs)("td",{className:ct,children:[(0,i.jsx)("span",{className:ge[a],"aria-hidden":!0})," ",n]}),(0,i.jsx)("td",{className:B,children:t===void 0||a==="untouched"?"—":X(t[n])}),(0,i.jsx)("td",{className:a==="ran"?se.ran:se.dim,children:o?.misses??0}),(0,i.jsx)("td",{className:B,children:o?.hits??0}),(0,i.jsx)("td",{className:B,children:r[n].misses}),(0,i.jsx)("td",{className:B,children:r[n].hits})]},n)})})]}),Tt=({entries:e})=>e.length===0?null:(0,i.jsxs)("div",{className:ft,children:[(0,i.jsx)("div",{className:yt,children:"recent compiles"}),e.map(t=>{const r=Et(t.stages,a=>a.misses>0),n=m.COMPILER_STAGE_KEYS.length,o=r===0?"cached":"ran";return(0,i.jsxs)("div",{className:ut,children:[(0,i.jsx)("span",{className:ge[o],"aria-hidden":!0}),(0,i.jsx)("span",{className:dt,title:t.label,children:t.label}),(0,i.jsxs)("span",{className:mt,children:[r,"/",n," ran · ",X(t.durationMs)]})]},t.id)})]}),xt=e=>!e||e.hits===0&&e.misses===0?"untouched":e.misses>0?"ran":"cached",Et=(e,t)=>{let r=0;for(const n of m.COMPILER_STAGE_KEYS)t(e[n])&&(r+=1);return r},X=e=>e<.1?"<0.1ms":e>=10?`${e.toFixed(0)}ms`:`${e.toFixed(2)}ms`,Rt=()=>{const{history:e}=s.useGraphContext(),{stack:t,undo:r,redo:n}=e,o=(0,d.useCallback)(u=>t.subscribe(u),[t]),a=(0,d.useCallback)(()=>t.getSnapshot(),[t]),l=(0,d.useSyncExternalStore)(o,a,a);return(0,d.useMemo)(()=>({...l,undo:r,redo:n}),[l,r,n])},Pt=new Set(["button","checkbox","color","file","hidden","image","radio","range","reset","submit"]),Ct=(e,t={})=>{const{target:r,enabled:n=!0}=t;(0,d.useEffect)(()=>{const o=It(r);if(!n||!o)return;const a=l=>{if(!jt(l)||l.defaultPrevented||Nt(l.target))return;const u=s.resolveHistoryStep(l);if(!u)return;const h=e.current;h&&(u==="undo"?h.undo():h.redo())&&l.preventDefault()};return o.addEventListener("keydown",a),()=>o.removeEventListener("keydown",a)},[e,r,n])},It=e=>e===void 0?window:e!==null&&"current"in e?e.current:e,jt=e=>"key"in e,Nt=e=>e instanceof HTMLInputElement?!Pt.has(e.type):e instanceof HTMLElement?e.isContentEditable||e.tagName==="TEXTAREA":!1,Dt=()=>{const{targetBoundaryStore:e}=s.useGraphContext();return(0,U.useStore)(e,t=>t.boundary)};exports.CanvasTextMeasurer=s.CanvasTextMeasurer;exports.DefaultFooter=s.DefaultFooter;exports.DefaultGeomCircle=ue;exports.DefaultGeomLine=de;exports.DefaultGeomPath=he;exports.DefaultGeomRect=me;exports.DefaultGrid=s.DefaultGrid;exports.DefaultHeader=s.DefaultHeader;exports.DefaultSwatch=s.DefaultSwatch;exports.DefaultTooltip=s.DefaultTooltip;exports.DevToolsPanel=bt;exports.GRAPH_MODES=s.GRAPH_MODES;exports.GeomCircle=We;exports.GeomLine=Ye;exports.GeomOverpaint=s.GeomOverpaint;exports.GeomPanelSizeProvider=s.GeomPanelSizeProvider;exports.GeomPath=Qe;exports.GeomRect=Xe;exports.GraphErrorBoundary=oe;exports.GraphErrorPanel=W;exports.GraphProvider=ce;exports.GraphRenderer=s.GraphRenderer;exports.GraphyBadge=s.GraphyBadge;exports.HoverProvider=s.HoverProvider;exports.IntlProvider=s.ChartIntlProvider;exports.IntroFade=s.IntroFade;exports.IntroWipeClip=s.IntroWipeClip;exports.SymbolFigure=tt;exports.TextMeasurerProvider=s.TextMeasurerProvider;exports.ThemeProvider=s.ThemeProvider;exports.UnitBoxSvg=st;exports.UnitSpaceSvg=nt;exports.buildDotsEditOutlineShapes=s.buildDotsEditOutlineShapes;exports.createGraphyKit=Ue;exports.darkTheme=s.darkTheme;exports.defineGeomRenderer=s.defineGeomRenderer;exports.defineGlyph=s.defineGlyph;exports.getBuiltInEditOutlineShapes=s.getBuiltInEditOutlineShapes;exports.lightTheme=s.lightTheme;exports.lightenCss=s.lightenCss;exports.projectPointCartesian=s.projectPointCartesian;exports.pruneSelection=le;exports.readPositionPixels=w;exports.readRectPixels=Ve;exports.resolveGraphyBadgeVariant=s.resolveGraphyBadgeVariant;exports.resolvePathStroke=s.resolvePathStroke;exports.scalePointToPanel=s.scalePointToPanel;exports.stampAxisEditTarget=s.stampAxisEditTarget;exports.stampGridEditTarget=s.stampGridEditTarget;exports.stampLegendEditTarget=s.stampLegendEditTarget;exports.useElementScreenRect=s.useElementScreenRect;exports.useFormattingLocale=s.useFormattingLocale;exports.useGeomHitTest=s.useGeomHitTest;exports.useGeomHover=s.useGeomHover;exports.useGeomPanelSize=s.useGeomPanelSize;exports.useGeomReaderTree=s.useGeomReaderTree;exports.useGeomStyleReader=s.useGeomStyleReader;exports.useGeomViewportSize=s.useGeomViewportSize;exports.useGraphCommands=s.useGraphCommands;exports.useGraphHandle=s.useGraphHandle;exports.useGraphHistory=Rt;exports.useGraphHistoryShortcuts=Ct;exports.useGraphLocale=s.useGraphLocale;exports.useGraphSelection=s.useGraphSelection;exports.useGuidesTakePress=s.useGuidesTakePress;exports.useHandleScene=s.useHandleScene;exports.useHoverState=s.useHoverState;exports.usePaintDefs=s.usePaintDefs;exports.useResolvedStyle=s.useResolvedStyle;exports.useSceneSelector=s.useSceneSelector;exports.useStyleReaderTree=s.useStyleReaderTree;exports.useStyleResolver=s.useStyleResolver;exports.useTargetBoundary=Dt;exports.useTextMeasurer=s.useTextMeasurer;exports.vars=s.vars;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('./index.css');const s=require("./history-chords-BorFTpAl.cjs");let m=require("@graphysdk/viz-engine"),d=require("react"),i=require("react/jsx-runtime"),U=require("zustand"),F=require("motion/react"),Y=require("zustand/vanilla"),V=require("clsx");V=s.__toESM(V,1);var fe="_1a5iqpb0",pe="_1a5iqpb1";var ve="_1a5iqpb3",Se="_1a5iqpb4",ye="_1a5iqpb5";var W=({errors:e})=>{const[t,...r]=e;return(0,i.jsxs)("div",{role:"alert",className:fe,children:[(0,i.jsx)("strong",{className:pe,children:"This chart could not be rendered."}),t&&(0,i.jsx)(Q,{diagnostic:t}),r.length>0&&(0,i.jsx)("ul",{className:"_1a5iqpb2",children:r.map((n,o)=>(0,i.jsx)("li",{children:(0,i.jsx)(Q,{diagnostic:n})},`${n.code}-${o}`))})]})},Q=({diagnostic:e})=>(0,i.jsxs)("div",{className:ve,children:[(0,i.jsx)("span",{className:Se,children:e.code}),(0,i.jsx)("p",{className:ye,children:e.message}),e.suggestion&&(0,i.jsx)("p",{className:"_1a5iqpb6",children:e.suggestion})]});function be(e=[],t=[]){return e.length===t.length&&e.every((r,n)=>Object.is(r,t[n]))}var oe=class extends d.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);s.logDiagnostics([r]),this.props.onError?.([r]),console.error("Chart render component stack:",t.componentStack)}componentDidUpdate(e){this.state.caughtDiagnostic&&!be(e.resetKeys,this.props.resetKeys)&&this.setState({caughtDiagnostic:null})}render(){const{caughtDiagnostic:e}=this.state;if(e)return(0,i.jsx)(W,{errors:[e]});const{forcedErrors:t,children:r}=this.props;return t&&t.length>0?(0,i.jsx)(W,{errors:t}):r}},ie=e=>typeof e=="object"&&"geom"in e&&"render"in e,ae=e=>{const t=(0,m.resolveDefinition)(e);return t instanceof m.Geom?t:null},le=(e,t)=>{const r=e.filter(n=>Ge(n,t));return r.length===e.length?e:r},Ge=(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,J=[],Te=()=>(0,Y.createStore)(e=>({selection:J,setSelection:t=>e(r=>xe(r.selection,t)?r:{selection:t}),clearSelection:()=>e(t=>t.selection.length===0?t:{selection:J})})),xe=(e,t)=>e===t?!0:e.length!==t.length?!1:e.every((r,n)=>{const o=t[n];return o!==void 0&&(0,m.areEditTargetsEqual)(r,o)}),Ee=5,Re=e=>{if(!s.IS_DEV)return{emit:()=>{},subscribe:()=>Ce,getLastTrigger:()=>null,getLastCompile:()=>null,getCacheStats:()=>e.getCacheStats()};const t=new Set;let r=null;return{emit:n=>{const o=e.getLastCompile();if(o){r=n;for(const a of t)a(n,o)}},subscribe:n=>(t.add(n),()=>{t.delete(n)}),getLastTrigger:()=>r,getLastCompile:()=>e.getLastCompile(),getCacheStats:()=>e.getCacheStats()}},Pe=()=>(0,Y.createStore)(e=>({lastCompile:null,history:[],nextId:1,lastSnapshot:null,recordCompile:(t,r)=>e(n=>{if(n.lastSnapshot===r)return n;const o={id:n.nextId,label:Ie(t),stages:r.stages,stageDurationsMs:r.stageDurationsMs,durationMs:r.durationMs};return{lastCompile:o,history:je(n.history,o,Ee),nextId:n.nextId+1,lastSnapshot:r}})})),Ce=()=>{},Ie=e=>{switch(e.kind){case"init":return"init";case"spec":return"spec change";case"data":return"data change";case"command":return e.command.metadata.description}},je=(e,t,r)=>{const n=e.length>=r?e.length-(r-1):0;return[...e.slice(n),t]};function Z(e){const t=e.filter(ie),r=new Set([...Object.keys(s.BUILT_IN_GEOM_RENDERERS),...t.map(u=>u.geom)]),n=[],o=new Set;for(const u of e){const h=ae(u);h===null||r.has(h.type)||o.has(h.type)||(o.add(h.type),n.push({kind:"userInput",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 a=new Map;for(const u of t){if("definition"in u)continue;const h=`${u.geom}|${u.coord}`,p=a.get(h);p?p.count+=1:a.set(h,{geom:u.geom,coord:u.coord,count:1})}const l=[];for(const{geom:u,coord:h,count:p}of a.values())p<2||l.push({kind:"userInput",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 l.push(...Me(e)),{errors:n,warnings:l}}function Ne(e,t){const{coordSystem:r,layers:n}=e,o=new Set,a=[];for(const l of n)t(l.geom,r.type)!==null||o.has(l.geom)||(o.add(l.geom),a.push({kind:"userInput",severity:"warning",code:"MISSING_GEOM_RENDERER",message:`No renderer for geom '${l.geom}' under ${r.type} coords; the layer is not painted.`,context:{requested:l.geom,kind:"geom-renderer"},suggestion:`Register a renderer for ('${l.geom}', '${r.type}') via \`defineGeomRenderer\`.`}));return a}function De(e,t){const{coordSystem:r,layers:n}=e,o=new Set,a=[];for(const l of n){if(l.interactive===!1||l.spatialKind!=="renderHitTest"||o.has(l.geom))continue;const u=t(l.geom,r.type);u===null||u.hitTest||s.isLiveRender(u)||(o.add(l.geom),a.push({kind:"userInput",severity:"warning",code:"MISSING_RENDER_HIT_TEST",message:`Geom '${l.geom}' declares spatialKind 'renderHitTest' but its renderer provides no hit-test; the layer has no hover.`,context:{requested:l.geom,kind:"geom-renderer"},suggestion:`Add a \`hitTest\` factory (precomputed geometry) or a live render (\`{ fn, options: { live: true } }\`, live simulation) to the renderer for ('${l.geom}', '${r.type}').`}))}return a}function Le(e){const t=new Set,r=[];for(const n of e.layers){const o=n.identityKey;n.interactive!==!1&&(n.spatialKind!=="renderHitTest"||typeof o!="object"||t.has(n.geom)||n.data.hasVariable(o.variable)||(t.add(n.geom),r.push({kind:"userInput",severity:"warning",code:"RENDER_HIT_TEST_IDENTITY",message:`Geom '${n.geom}' keys its identity on '${o.variable}', a column its compile output does not emit; its hover lookup is empty.`,context:{requested:n.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 _e(e,t){const{coordSystem:r,layers:n}=e,o=new Set,a=[];for(const l of n){if(l.interactive===!1||l.spatialKind!=="renderHitTest"||o.has(l.geom))continue;const u=t(l.geom,r.type);u===null||!u.hitTest||!s.isLiveRender(u)||(o.add(l.geom),a.push({kind:"userInput",severity:"warning",code:"CONFLICTING_RENDER_HIT_TEST",message:`Geom '${l.geom}' declares both a \`hitTest\` factory and a live render; these are alternatives, so only the live render is used.`,context:{requested:l.geom,kind:"geom-renderer"},suggestion:"Keep one: a `hitTest` factory for precomputed geometry, OR a live render (`{ fn, options: { live: true } }`) for a live simulation."}))}return a}function we(e,t){const r=new Set,n=[];for(const o of e.layers)o.interactive!==!1&&(o.spatialKind!=="renderHitTest"||r.has(o.geom)||t.hasCapability(o.geom)||(r.add(o.geom),n.push({kind:"userInput",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 n}function ke(e,t){const{coordSystem:r,layers:n}=e,o=new Set,a=[];for(const l of n){if(l.interactive===!1||l.spatialKind==="renderHitTest"||o.has(l.geom))continue;const u=t(l.geom,r.type);u===null||!s.isLiveRender(u)||(o.add(l.geom),a.push({kind:"userInput",severity:"warning",code:"LIVE_RENDER_REQUIRES_RENDER_HIT_TEST",message:`Geom '${l.geom}' declares a live render but its layer's spatialKind is '${l.spatialKind}', not 'renderHitTest'; its push-path hover resolves to nothing.`,context:{requested:l.geom,kind:"geom-renderer"},suggestion:"Have the geom's manifest yield spatialKind 'renderHitTest' so the scene layer carries the `byKey` index the live render's `pushHover` resolves against."}))}return a}function qe(e,t){let r;return e.layers.flatMap((n,o)=>s.isLiveRender(t(n.geom,e.coordSystem.type))?He(n)?(r??=(0,m.createStyleResolver)().readers(e),(r.geom(n).get("overpaint",void 0,"hovered")?.length??0)===0?[]:[{kind:"userInput",severity:"warning",code:"INVALID_STYLE_RULE",message:`Style 'overpaint' in state 'hovered' is not supported on live geom '${n.geom}' (layer '${n.id}'); it is ignored.`,context:{param:"overpaint",layerIndex:o,requested:n.geom},suggestion:"Remove the hovered overpaint, or paint the hover treatment in the geom's live render."}]):[]:[])}var He=e=>[e.styles.defaults,e.styles.overrides].some(t=>t.some(r=>r.state==="hovered"&&(r.declarations.overpaint?.length??0)>0));function Me(e){const t=new Set,r=[];for(const n of e){const o=ae(n);o===null||t.has(o.type)||o.dataLabelCoordTypes.length===0||o.getDataLabelPlacements!==void 0||(t.add(o.type),r.push({kind:"userInput",severity:"warning",code:"MISSING_DATA_LABEL_PLACEMENT",message:`Geom '${o.type}' declares \`dataLabelCoordTypes\` but implements no \`getDataLabelPlacements\`; its layers paint no data labels.`,context:{requested:o.type,kind:"geom-renderer"},suggestion:"Implement `getDataLabelPlacements(context)` on the geom, or drop `dataLabelCoordTypes` so the compiler warns the author off the flag."}))}return r}var Ae=e=>(0,Y.createStore)(t=>({scene:e,setScene:r=>t(n=>n.scene===r?n:{scene:r})})),$e=({spec:e,data:t,colorScheme:r,plugins:n,theme:o,resolveRenderer:a,anchorResolver:l,onSpecChange:u,onError:h,onWarnings:p})=>{const b=s.useLatestRef(u),j=s.useLatestRef(h),T=s.useLatestRef(p),[{session:v,compileBus:g,findGeom:G}]=(0,d.useState)(()=>{const c=(0,m.createCompiler)({plugins:n,theme:o});return{session:new m.GraphCompilationSession(c),compileBus:Re(c),findGeom:f=>c.findGeom(f)}}),[S]=(0,d.useState)(()=>{const c=Z(n??[]),f=Z(o?.plugins??[]);return{errors:[...f.errors,...c.errors],warnings:[...f.warnings,...c.warnings]}}),k=(0,d.useRef)(null),[N]=(0,d.useState)(Oe),E=(0,d.useRef)(null),y=(0,d.useCallback)(c=>S.errors.length===0?c:[...S.errors,...c??[]],[S]),_=(0,d.useCallback)(c=>{if(!c.ok)return c.errors;if(E.current)E.current.getState().setScene(c.scene);else{const f=Ae(c.scene);f.subscribe(N.notify),E.current=f,N.notify()}return null},[N]),[$,P]=(0,d.useState)(()=>{const c=v.compile({spec:e,data:t,colorScheme:r});return k.current=c,y(_(c))}),C=(0,d.useCallback)(c=>c.ok?[...c.warnings,...Ne(c.scene,a),...De(c.scene,a),...Le(c.scene),..._e(c.scene,a),...ke(c.scene,a),...qe(c.scene,a),...we(c.scene,l)]:c.warnings,[a,l]),I=(0,d.useCallback)(c=>{c.length!==0&&(s.logDiagnostics(c),j.current?.(c))},[j]),x=(0,d.useCallback)(c=>{c.length!==0&&(s.logDiagnostics(c),T.current?.(c))},[T]);(0,d.useEffect)(()=>{const c=k.current;c&&(I([...S.errors,...c.ok?[]:c.errors]),x([...S.warnings,...C(c)]),c.ok&&g.emit({kind:"init"}))},[g,I,x,S,C]),(0,d.useEffect)(()=>{const c=v.update({spec:e,data:t,colorScheme:r});if(!c)return;c.committedSpec&&b.current?.(c.committedSpec);const f=_(c.result);P(y(f)),f&&I(f),x(C(c.result)),f||g.emit({kind:c.hasSpecChange?"spec":"data"})},[e,t,r,v,g,_,I,x,y,C,b]);const q=(0,d.useCallback)(c=>{P(f=>f===null?f:y(null)),x(C(c))},[y,x,C]),H=(0,d.useCallback)(c=>{c.scene&&E.current?.getState().setScene(c.scene),c.result&&q(c.result),c.command&&g.emit({kind:"command",command:c.command}),c.spec&&b.current?.(c.spec),c.errors&&I([...c.errors])},[q,g,b,I]),R=(0,d.useCallback)(c=>{for(const f of c)H(f);return c.some(f=>!!f.scene)},[H]),K=(0,d.useCallback)((c,f)=>{R(v.applyCommand(c,f))},[v,R]),O=(0,d.useCallback)(()=>{R(v.commit())},[v,R]),L=(0,d.useCallback)(()=>R(v.undo()),[v,R]),M=(0,d.useCallback)(()=>R(v.redo()),[v,R]),D=(0,d.useMemo)(()=>({stack:v.history,undo:L,redo:M}),[v,L,M]),z=(0,d.useCallback)(()=>E.current?.getState().scene??null,[]);return{store:E.current,dispatch:K,commit:O,history:D,subscribe:N.subscribe,getScene:z,compileBus:g,compileErrors:$,findGeom:G}},Oe=()=>{const e=new Set;return{subscribe:t=>(e.add(t),()=>{e.delete(t)}),notify:()=>e.forEach(t=>t())}},Be=["cartesian","polar"],ce=({data:e,spec:t,plugins:r=[],theme:n,glyphs:o,formattingLocale:a,handleRef:l,onSpecChange:u,onError:h,onWarnings:p,colorScheme:b="light",children:j})=>{const T=ze(a,p),[v]=(0,d.useState)(()=>n),[g]=(0,d.useState)(()=>s.mergeGlyphs(n?.glyphs,o)),G=v?.colorScheme??b,[S]=(0,d.useState)(()=>s.createGeomRendererResolver([...v?.plugins??[],...r].filter(ie)));Ke(S,g);const k=(0,d.useId)(),[N]=(0,d.useState)(()=>(0,m.createAnchorResolver)(r)),[E]=(0,d.useState)(()=>(0,m.createDataLabelPlacementResolver)(r)),[y]=(0,d.useState)(()=>Te()),[_]=(0,d.useState)(()=>s.createTargetBoundaryStore()),$=(0,d.useMemo)(()=>(0,m.createStyleResolver)({colorScheme:G}),[G]),{store:P,dispatch:C,commit:I,history:x,subscribe:q,getScene:H,compileBus:R,compileErrors:K,findGeom:O}=$e({spec:t,data:e,colorScheme:G,plugins:r,theme:v,resolveRenderer:S,anchorResolver:N,onSpecChange:u,onError:h,onWarnings:p});(0,d.useEffect)(()=>{if(P)return P.subscribe((D,z)=>{if(D.scene.spec===z.scene.spec)return;const{selection:c,setSelection:f}=y.getState();c.length!==0&&f(le(c,D.scene.spec))})},[P,y]);const L=(0,d.useMemo)(()=>({dispatch:C,commit:I}),[C,I]);(0,d.useImperativeHandle)(l,()=>({commands:L,undo:x.undo,redo:x.redo,subscribe:q,getScene:H,formattingLocale:T,getSelection:()=>y.getState().selection,setSelection:D=>y.getState().setSelection(D),subscribeSelection:y.subscribe,canPlaceDataLabels:E.hasCapability,canFormatDataLabelsAsPercentages:E.hasPercentageFormat,getGlyphs:()=>g,getPointSymbols:D=>S("point",D)?.symbols}),[L,x,q,H,T,y,E,g,S]);const M=(0,d.useMemo)(()=>P?{chartId:k,store:P,selectionStore:y,targetBoundaryStore:_,commands:L,history:x,formattingLocale:T,compileBus:R,colorScheme:G,styleResolver:$,anchorResolver:N,findGeom:O}:null,[k,P,y,_,L,x,T,R,G,$,N,O]);return(0,i.jsx)(oe,{forcedErrors:K,onError:h,resetKeys:[t,e],children:M?(0,i.jsx)(s.GraphContext.Provider,{value:M,children:(0,i.jsx)(s.GeomRendererResolverProvider,{value:S,children:(0,i.jsx)(s.DataLabelPlacementResolverProvider,{value:E,children:(0,i.jsx)(s.GeomShapesProvider,{shapes:v?.shapes,children:(0,i.jsx)(s.GlyphRegistryProvider,{glyphs:g,children:j})})})})}):null})},Fe=(e,t)=>(e??[]).filter(r=>!(0,m.isGeometricSymbol)(r)&&!t.has(r)),Ke=(e,t)=>{(0,d.useEffect)(()=>{if(!s.IS_DEV)return;const r=new Set(t.map(({name:n})=>n));for(const n of Be)for(const o of Fe(e("point",n)?.symbols,r))console.warn(`[graphy] The ${n} point renderer lists "${o}", but no glyph has that name. The shape menu offers it, and SymbolFigure draws the first listed symbol in its place.`)},[e,t])},ze=(e,t)=>{const r=s.useLatestRef(t);return(0,d.useEffect)(()=>{if(e===void 0||(0,m.findIntlLocale)(e)!==void 0)return;const n=[{severity:"warning",kind:"userInput",code:"INVALID_FORMATTING_LOCALE",message:`formattingLocale '${e}' is not a tag Intl can format in, so the chart formats in ${m.DEFAULT_LOCALE}.`}];s.logDiagnostics(n),r.current?.(n)},[e,r]),e===void 0?void 0:(0,m.canonicalizeLocale)(e)};function Ue({theme:e,glyphs:t,...r}={}){const n=(0,m.createSpecBuilder)(r);return{...n,GraphProvider:a=>(0,i.jsx)(ce,{...a,plugins:n.plugins,theme:e,glyphs:t})}}var w=(e,t)=>{if(typeof e=="number")return Number.isFinite(e)?e:null;if(!e.endsWith("%"))return null;const r=Number.parseFloat(e);return Number.isFinite(r)?r/100*t:null},Ve=({x:e,y:t,width:r,height:n},o)=>{const a=w(e,o.width),l=w(t,o.height),u=w(r,o.width),h=w(n,o.height);return a===null||l===null||u===null||h===null?null:{x:a,y:l,width:u,height:h}},ue=({animateTransitions:e,cx:t,cy:r,r:n,effects:o,...a})=>{const l=s.toGeomEffectsStyle(o);return e?(0,i.jsx)(F.motion.circle,{initial:!1,animate:{cx:t,cy:r,r:n},transition:s.DEFAULT_SPRING_TRANSITION,style:l,...a}):(0,i.jsx)("circle",{cx:t,cy:r,r:n,style:l,...a})},de=({animateTransitions:e,x1:t,y1:r,x2:n,y2:o,effects:a,...l})=>{const u=s.toGeomEffectsStyle(a);return e?(0,i.jsx)(F.motion.line,{initial:!1,animate:{x1:t,y1:r,x2:n,y2:o},transition:s.DEFAULT_SPRING_TRANSITION,style:u,...l}):(0,i.jsx)("line",{x1:t,y1:r,x2:n,y2:o,style:u,...l})},me=({animateTransitions:e,x:t,y:r,width:n,height:o,rx:a,ry:l,effects:u,...h})=>{const p=s.toGeomEffectsStyle(u);return e?(0,i.jsx)(F.motion.rect,{initial:!1,animate:{attrX:t,attrY:r,width:n,height:o,...a!==void 0&&l!==void 0?{rx:a,ry:l}:{}},transition:s.DEFAULT_SPRING_TRANSITION,style:p,...h}):(0,i.jsx)("rect",{x:t,y:r,width:n,height:o,rx:a,ry:l,style:p,...h})},he=({animateTransitions:e,d:t,source:r,effects:n,...o})=>{const a=s.toGeomEffectsStyle(n);return e?(0,i.jsx)(Je,{d:t,source:r,style:a,...o}):(0,i.jsx)("path",{d:t,style:a,...o})},We=e=>{const{Circle:t}=s.useGeomShapes(),{symbol:r,...n}=e;return r!==void 0&&r!=="circle"?(0,i.jsx)("g",{style:s.toGeomEffectsStyle(e.effects),"data-testid":e["data-testid"],children:(0,i.jsx)(s.PointSymbol,{symbol:r,cx:ee(e.cx),cy:ee(e.cy),size:e.r*2,fill:e.fill??"currentColor",fillOpacity:e.fillOpacity,opacity:e.opacity,stroke:e.stroke,strokeOpacity:e.strokeOpacity,strokeWidth:e.strokeWidth,motion:e.animateTransitions?{transition:s.DEFAULT_SPRING_TRANSITION,intro:!1,fadesIn:!1}:null})}):t===void 0?ue(n):(0,i.jsx)(s.GeomShapesProvider,{children:(0,i.jsx)(t,{...n})})},Ye=e=>{const{Line:t}=s.useGeomShapes();return t===void 0?de(e):(0,i.jsx)(s.GeomShapesProvider,{children:(0,i.jsx)(t,{...e})})},Xe=({cornerRadius:e,...t})=>{const{Rect:r}=s.useGeomShapes(),n=s.useGeomViewport()?.size??null,o=s.useGeomPixelsPerUnit(),a={...t,...Ze(e,t,n,o)};return r===void 0?me(a):(0,i.jsx)(s.GeomShapesProvider,{children:(0,i.jsx)(r,{...a})})},Qe=e=>{const{Path:t}=s.useGeomShapes();return t===void 0?he(e):(0,i.jsx)(s.GeomShapesProvider,{children:(0,i.jsx)(t,{...e})})},ee=e=>typeof e=="number"?`${e}px`:e,Je=({d:e,source:t,...r})=>{const n=s.useSvgPathMorph(e,s.DEFAULT_SPRING_TRANSITION,t);return(0,i.jsx)(F.motion.path,{d:n,...r})},Ze=(e,t,r,n)=>{if(e===void 0)return{};const o=(0,m.foldGeomCornerRadii)(e);if(o===void 0)return{};const a=et(t,r,n);if(a===null)return o==="full"?{}:re((0,m.resolveGeomCornerRadiusPx)({cornerRadius:o}),n);const l=Math.min((0,m.resolveGeomCornerRadiusPx)({cornerRadius:o,box:a}),Math.min(a.width,a.height)/2);return re(l,n)},et=(e,t,r)=>{const n=te(e.width,t?.width,r.x),o=te(e.height,t?.height,r.y);return n===null||o===null?null:{width:n,height:o}},te=(e,t,r)=>{if(typeof e=="number")return Number.isFinite(e)?Math.abs(e)*r:null;if(t===void 0)return null;const n=w(e,t);return n===null?null:Math.abs(n)},re=(e,t)=>t.x<=0||t.y<=0?{rx:0,ry:0}:{rx:e/t.x,ry:e/t.y},tt=({symbol:e,size:t,fill:r,fillOpacity:n,stroke:o,strokeOpacity:a,strokeWidth:l})=>{const u=s.useGlyphRegistry(),h=s.useGeomRendererResolver(),p=s.useSceneSelector(T=>T.coordSystem.type),b=rt(e,h("point",p)?.symbols??[],u),j={size:t,fill:r,fillOpacity:n,stroke:o,strokeOpacity:a,strokeWidth:l};return(0,m.isGeometricSymbol)(b)?(0,i.jsx)("path",{d:(0,m.buildPointSymbolPath)(b,t),fill:r,fillOpacity:n,stroke:o,strokeOpacity:a,strokeWidth:l,strokeLinejoin:"round"}):(0,i.jsx)(s.GlyphMark,{symbol:b,glyphs:u,...j})},rt=(e,t,r)=>(0,m.isImageSymbol)(e)||t.includes(e)||!(0,m.isGeometricSymbol)(e)&&r.has(e)?e:t[0]??"circle",nt=({children:e,...t})=>{const r=s.useGeomViewport()?.size??null;return(0,i.jsx)("svg",{viewBox:"0 0 1 1",preserveAspectRatio:"none",width:"100%",height:"100%",pointerEvents:"none",...t,children:(0,i.jsx)(s.GeomViewportProvider,{size:r,space:"unit",children:e})})},st=({box:e,children:t})=>{const r=s.useGeomViewportSize(),n=r===null?null:r.width*(e.x1-e.x0),o=r===null?null:r.height*(e.y1-e.y0),a=(0,d.useMemo)(()=>n===null||o===null?null:{width:n,height:o},[n,o]);return(0,i.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:(0,i.jsx)(s.GeomViewportProvider,{size:a,children:t})})},ot="drqe3u0",it="drqe3u1",at="drqe3u2",lt="drqe3u3",A="drqe3u4",ct="drqe3u5",ut="drqe3u6",dt="drqe3u7",B="drqe3u8",mt="drqe3u9",ht="drqe3ua";var gt="drqe3uc",ft="drqe3ud",pt="drqe3ue",vt="drqe3uf";var St="drqe3uh",yt="drqe3ui",ne={enabled:"drqe3uk drqe3uj",disabled:"drqe3ul drqe3uj"},se={ran:"drqe3un drqe3um",dim:"drqe3uo drqe3um"},ge={ran:"drqe3uq drqe3up",cached:"drqe3ur drqe3up",untouched:"drqe3us drqe3up"},bt=({width:e=440,style:t,className:r}={})=>{const{compileBus:n}=s.useGraphContext(),[o]=(0,d.useState)(()=>Pe()),[a,l]=(0,d.useState)(!1),[u,h]=(0,d.useState)(m.isCompilerCachingEnabled);(0,d.useEffect)(()=>{const{recordCompile:g}=o.getState(),G=n.getLastTrigger(),S=n.getLastCompile();return G&&S&&g(G,S),n.subscribe(g)},[o,n]);const p=(0,U.useStore)(o,g=>g.lastCompile),b=(0,U.useStore)(o,g=>g.history),j=n.getCacheStats(),T=p===null&&b.length===0,v=()=>{h(g=>{const G=!g;return(0,m.setCompilerCachingEnabled)(G),G})};return(0,i.jsxs)("div",{className:(0,V.default)(ht,r),style:{width:e,...t},children:[(0,i.jsxs)("div",{className:ot,children:[(0,i.jsxs)("div",{children:[(0,i.jsx)("div",{className:it,children:"compile cache"}),(0,i.jsx)("div",{className:pt,children:T?"production: stats disabled":p?`last: ${p.label} · ${X(p.durationMs)}`:"awaiting first compile…"})]}),(0,i.jsx)("button",{type:"button",onClick:()=>l(g=>!g),className:vt,children:a?"▾":"▴"})]}),!a&&(0,i.jsxs)("div",{className:"drqe3ub",children:[(0,i.jsxs)("button",{type:"button",onClick:v,className:u?ne.enabled:ne.disabled,"aria-pressed":u,children:["cache ",u?"enabled":"disabled"]}),(0,i.jsx)("span",{className:"drqe3ug",children:"next compile reflects this toggle"})]}),!a&&!T&&(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(Gt,{delta:p?.stages,durations:p?.stageDurationsMs,cumulative:j}),(0,i.jsx)(Tt,{entries:b})]})]})},Gt=({delta:e,durations:t,cumulative:r})=>(0,i.jsxs)("table",{className:at,children:[(0,i.jsx)("thead",{children:(0,i.jsxs)("tr",{className:St,children:[(0,i.jsx)("th",{className:lt,children:"stage"}),(0,i.jsx)("th",{className:A,children:"time"}),(0,i.jsx)("th",{className:A,children:"Δ miss"}),(0,i.jsx)("th",{className:A,children:"Δ hit"}),(0,i.jsx)("th",{className:A,children:"total miss"}),(0,i.jsx)("th",{className:A,children:"total hit"})]})}),(0,i.jsx)("tbody",{children:m.COMPILER_STAGE_KEYS.map(n=>{const o=e?.[n],a=xt(o);return(0,i.jsxs)("tr",{className:gt,children:[(0,i.jsxs)("td",{className:ct,children:[(0,i.jsx)("span",{className:ge[a],"aria-hidden":!0})," ",n]}),(0,i.jsx)("td",{className:B,children:t===void 0||a==="untouched"?"—":X(t[n])}),(0,i.jsx)("td",{className:a==="ran"?se.ran:se.dim,children:o?.misses??0}),(0,i.jsx)("td",{className:B,children:o?.hits??0}),(0,i.jsx)("td",{className:B,children:r[n].misses}),(0,i.jsx)("td",{className:B,children:r[n].hits})]},n)})})]}),Tt=({entries:e})=>e.length===0?null:(0,i.jsxs)("div",{className:ft,children:[(0,i.jsx)("div",{className:yt,children:"recent compiles"}),e.map(t=>{const r=Et(t.stages,a=>a.misses>0),n=m.COMPILER_STAGE_KEYS.length,o=r===0?"cached":"ran";return(0,i.jsxs)("div",{className:ut,children:[(0,i.jsx)("span",{className:ge[o],"aria-hidden":!0}),(0,i.jsx)("span",{className:dt,title:t.label,children:t.label}),(0,i.jsxs)("span",{className:mt,children:[r,"/",n," ran · ",X(t.durationMs)]})]},t.id)})]}),xt=e=>!e||e.hits===0&&e.misses===0?"untouched":e.misses>0?"ran":"cached",Et=(e,t)=>{let r=0;for(const n of m.COMPILER_STAGE_KEYS)t(e[n])&&(r+=1);return r},X=e=>e<.1?"<0.1ms":e>=10?`${e.toFixed(0)}ms`:`${e.toFixed(2)}ms`,Rt=()=>{const{history:e}=s.useGraphContext(),{stack:t,undo:r,redo:n}=e,o=(0,d.useCallback)(u=>t.subscribe(u),[t]),a=(0,d.useCallback)(()=>t.getSnapshot(),[t]),l=(0,d.useSyncExternalStore)(o,a,a);return(0,d.useMemo)(()=>({...l,undo:r,redo:n}),[l,r,n])},Pt=new Set(["button","checkbox","color","file","hidden","image","radio","range","reset","submit"]),Ct=(e,t={})=>{const{target:r,enabled:n=!0}=t;(0,d.useEffect)(()=>{const o=It(r);if(!n||!o)return;const a=l=>{if(!jt(l)||l.defaultPrevented||Nt(l.target))return;const u=s.resolveHistoryStep(l);if(!u)return;const h=e.current;h&&(u==="undo"?h.undo():h.redo())&&l.preventDefault()};return o.addEventListener("keydown",a),()=>o.removeEventListener("keydown",a)},[e,r,n])},It=e=>e===void 0?window:e!==null&&"current"in e?e.current:e,jt=e=>"key"in e,Nt=e=>e instanceof HTMLInputElement?!Pt.has(e.type):e instanceof HTMLElement?e.isContentEditable||e.tagName==="TEXTAREA":!1,Dt=()=>{const{targetBoundaryStore:e}=s.useGraphContext();return(0,U.useStore)(e,t=>t.boundary)};exports.CanvasTextMeasurer=s.CanvasTextMeasurer;exports.DefaultFooter=s.DefaultFooter;exports.DefaultGeomCircle=ue;exports.DefaultGeomLine=de;exports.DefaultGeomPath=he;exports.DefaultGeomRect=me;exports.DefaultGrid=s.DefaultGrid;exports.DefaultHeader=s.DefaultHeader;exports.DefaultSwatch=s.DefaultSwatch;exports.DefaultTooltip=s.DefaultTooltip;exports.DevToolsPanel=bt;exports.GRAPH_MODES=s.GRAPH_MODES;exports.GeomCircle=We;exports.GeomLine=Ye;exports.GeomOverpaint=s.GeomOverpaint;exports.GeomPanelSizeProvider=s.GeomPanelSizeProvider;exports.GeomPath=Qe;exports.GeomRect=Xe;exports.GraphErrorBoundary=oe;exports.GraphErrorPanel=W;exports.GraphProvider=ce;exports.GraphRenderer=s.GraphRenderer;exports.GraphyBadge=s.GraphyBadge;exports.HoverProvider=s.HoverProvider;exports.IntlProvider=s.ChartIntlProvider;exports.IntroFade=s.IntroFade;exports.IntroWipeClip=s.IntroWipeClip;exports.SymbolFigure=tt;exports.TextMeasurerProvider=s.TextMeasurerProvider;exports.ThemeProvider=s.ThemeProvider;exports.UnitBoxSvg=st;exports.UnitSpaceSvg=nt;exports.buildDotsEditOutlineShapes=s.buildDotsEditOutlineShapes;exports.createGraphyKit=Ue;exports.darkTheme=s.darkTheme;exports.defineGeomRenderer=s.defineGeomRenderer;exports.defineGlyph=s.defineGlyph;exports.getBuiltInEditOutlineShapes=s.getBuiltInEditOutlineShapes;exports.lightTheme=s.lightTheme;exports.lightenCss=s.lightenCss;exports.projectPointCartesian=s.projectPointCartesian;exports.pruneSelection=le;exports.readPositionPixels=w;exports.readRectPixels=Ve;exports.resolveGraphyBadgeVariant=s.resolveGraphyBadgeVariant;exports.resolvePathStroke=s.resolvePathStroke;exports.scalePointToPanel=s.scalePointToPanel;exports.stampAxisEditTarget=s.stampAxisEditTarget;exports.stampGridEditTarget=s.stampGridEditTarget;exports.stampLegendEditTarget=s.stampLegendEditTarget;exports.useElementScreenRect=s.useElementScreenRect;exports.useFormattingLocale=s.useFormattingLocale;exports.useGeomHitTest=s.useGeomHitTest;exports.useGeomHover=s.useGeomHover;exports.useGeomPanelSize=s.useGeomPanelSize;exports.useGeomReaderTree=s.useGeomReaderTree;exports.useGeomStyleReader=s.useGeomStyleReader;exports.useGeomViewportSize=s.useGeomViewportSize;exports.useGraphCommands=s.useGraphCommands;exports.useGraphHandle=s.useGraphHandle;exports.useGraphHistory=Rt;exports.useGraphHistoryShortcuts=Ct;exports.useGraphLocale=s.useGraphLocale;exports.useGraphSelection=s.useGraphSelection;exports.useGuidesTakePress=s.useGuidesTakePress;exports.useHandleScene=s.useHandleScene;exports.useHoverState=s.useHoverState;exports.usePaintDefs=s.usePaintDefs;exports.useResolvedStyle=s.useResolvedStyle;exports.useSceneSelector=s.useSceneSelector;exports.useStyleReaderTree=s.useStyleReaderTree;exports.useStyleResolver=s.useStyleResolver;exports.useTargetBoundary=Dt;exports.useTextMeasurer=s.useTextMeasurer;exports.vars=s.vars;
package/dist/index.d.ts CHANGED
@@ -1424,8 +1424,8 @@ export declare interface GraphProviderProps {
1424
1424
  */
1425
1425
  glyphs?: readonly GlyphDefinition[];
1426
1426
  /**
1427
- * Formats numbers and dates for display: any BCP-47 tag (`it-IT`). A tag `Intl` cannot read formats as `en-GB` and
1428
- * reports `INVALID_FORMATTING_LOCALE`. Graphy's own texts use the built-in dictionary for its language, else `en-GB`.
1427
+ * Formats numbers and dates for display: any BCP-47 tag (`it-IT`). A tag `Intl` cannot read formats as `en-US` and
1428
+ * reports `INVALID_FORMATTING_LOCALE`. Graphy's own texts use the built-in dictionary for its language, else `en-US`.
1429
1429
  */
1430
1430
  formattingLocale?: FormattingLocale;
1431
1431
  /**
package/dist/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { $t as Nr, A as Cr, An as we, B as wr, Bn as Pr, Bt as Pe, Cn as F, Dn as Lr, En as Dr, Et as qr, Fn as Te, Ft as _r, Gt as Le, Hn as De, Ht as kr, In as $r, Kn as X, Kt as Hr, L as xr, Ln as Mr, Lt as Y, M as Ar, Mn as qe, Nt as Or, On as _e, Pn as ke, Pt as Br, Qt as Fr, R as Kr, Rn as zr, Sn as K, Un as ne, Ut as Ur, Vn as $e, Vt as He, Wn as xe, Wt as Q, Xt as Me, Yt as jr, Zt as Ae, _n as Z, _t as Wr, a as Vr, an as Yr, at as Xr, bn as Qr, bt as Zr, cn as Jr, ct as en, dn as tn, en as rn, fn as nn, gn as Oe, h as sn, hn as on, i as an, it as cn, j as ln, jn as dn, jt as un, kn as Be, kt as mn, mn as Ee, mt as hn, n as gn, ot as fn, pn as z, r as pn, s as vn, t as Fe, tn as yn, vn as Re, vt as Sn, w as bn, wn as Tn, xn as Ke, yn as ze, z as En, zn as Rn } from "./history-chords-DYuoHkgy.js";
1
+ import { $t as Nr, A as Cr, An as we, B as wr, Bn as Pr, Bt as Pe, Cn as F, Dn as Lr, En as Dr, Et as qr, Fn as Te, Ft as _r, Gt as Le, Hn as De, Ht as kr, In as $r, Kn as X, Kt as Hr, L as xr, Ln as Mr, Lt as Y, M as Ar, Mn as qe, Nt as Or, On as _e, Pn as ke, Pt as Br, Qt as Fr, R as Kr, Rn as zr, Sn as K, Un as ne, Ut as Ur, Vn as $e, Vt as He, Wn as xe, Wt as Q, Xt as Me, Yt as jr, Zt as Ae, _n as Z, _t as Wr, a as Vr, an as Yr, at as Xr, bn as Qr, bt as Zr, cn as Jr, ct as en, dn as tn, en as rn, fn as nn, gn as Oe, h as sn, hn as on, i as an, it as cn, j as ln, jn as dn, jt as un, kn as Be, kt as mn, mn as Ee, mt as hn, n as gn, ot as fn, pn as z, r as pn, s as vn, t as Fe, tn as yn, vn as Re, vt as Sn, w as bn, wn as Tn, xn as Ke, yn as ze, z as En, zn as Rn } from "./history-chords-CimEnXtI.js";
2
2
  import { COMPILER_STAGE_KEYS as se, DEFAULT_LOCALE as Ue, Geom as je, GraphCompilationSession as We, areEditTargetsEqual as Ve, buildDiagnostic as ce, buildPointSymbolPath as Ye, canonicalizeLocale as Xe, createAnchorResolver as Qe, createCompiler as Ze, createDataLabelPlacementResolver as Je, createSpecBuilder as et, createStyleResolver as Ge, findAnnotation as tt, findIntlLocale as rt, findLayerById as le, foldGeomCornerRadii as nt, isCompilerCachingEnabled as st, isGeometricSymbol as oe, isImageSymbol as ot, resolveDefinition as it, resolveGeomCornerRadiusPx as de, setCompilerCachingEnabled as at, toPercent as W } from "@graphysdk/viz-engine";
3
3
  import { Component as ct, useCallback as p, useEffect as _, useId as lt, useImperativeHandle as dt, useMemo as $, useRef as ue, useState as S, useSyncExternalStore as ut } from "react";
4
4
  import { Fragment as mt, jsx as c, jsxs as v } from "react/jsx-runtime";
package/package.json CHANGED
@@ -11,7 +11,7 @@
11
11
  "visualization",
12
12
  "renderer"
13
13
  ],
14
- "version": "1.9.0-beta.1793880532798",
14
+ "version": "1.9.0-beta.1793882432228",
15
15
  "type": "module",
16
16
  "sideEffects": [
17
17
  "**/*.css.ts",
@@ -50,7 +50,7 @@
50
50
  "react-colorful": "^5.6.1",
51
51
  "react-intl": "^8.1.3",
52
52
  "zustand": "^5.0.12",
53
- "@graphysdk/viz-engine": "1.9.0-beta.1793880532798"
53
+ "@graphysdk/viz-engine": "1.9.0-beta.1793882432228"
54
54
  },
55
55
  "peerDependencies": {
56
56
  "@tiptap/core": "^3.0.0",
@@ -150,10 +150,10 @@
150
150
  "vite-plugin-dts": "^4.5.4",
151
151
  "vite-plugin-lib-inject-css": "^2.2.2",
152
152
  "vitest": "^4.1.11",
153
+ "@graphytools/eslint-config": "0.0.1",
153
154
  "@graphytools/eslint-plugin-graphy": "1.0.0",
154
155
  "@graphytools/typescript-config": "0.0.1",
155
- "@graphytools/vitest-config": "1.0.0",
156
- "@graphytools/eslint-config": "0.0.1"
156
+ "@graphytools/vitest-config": "1.0.0"
157
157
  },
158
158
  "publishConfig": {
159
159
  "access": "public"