@graphysdk/react-renderer 1.9.0-beta.1792399585685 → 1.9.0-beta.1792400629887
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.mjs +1 -1
- package/dist/{history-chords-CO5jkrSy.cjs → history-chords-B33b8eJA.cjs} +1 -1
- package/dist/{history-chords-BTlLvL7S.js → history-chords-D7hQLh47.js} +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.mjs +1 -1
- package/package.json +4 -4
|
@@ -22,7 +22,7 @@ import './history-chords.css';var zn = Object.defineProperty, Wl = (e, t) => {
|
|
|
22
22
|
});
|
|
23
23
|
return t || zn(r, Symbol.toStringTag, { value: "Module" }), r;
|
|
24
24
|
};
|
|
25
|
-
typeof window < "u" && (window.__GRAPHY_SDK__ ??= {}, window.__GRAPHY_SDK__.reactRenderer = "1.9.0-beta.
|
|
25
|
+
typeof window < "u" && (window.__GRAPHY_SDK__ ??= {}, window.__GRAPHY_SDK__.reactRenderer = "1.9.0-beta.1792400629887");
|
|
26
26
|
function Gl(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 a=require("./history-chords-CO5jkrSy.cjs");let h=require("@graphysdk/viz-engine"),u=require("react"),o=require("react/jsx-runtime"),F=require("zustand"),B=require("motion/react"),W=require("zustand/vanilla"),Y=require("clsx");Y=a.__toESM(Y,1);var ge="_1a5iqpb0",pe="_1a5iqpb1";var ve="_1a5iqpb3",fe="_1a5iqpb4",Se="_1a5iqpb5";var V=({errors:e})=>{const[t,...r]=e;return(0,o.jsxs)("div",{role:"alert",className:ge,children:[(0,o.jsx)("strong",{className:pe,children:"This chart could not be rendered."}),t&&(0,o.jsx)(X,{diagnostic:t}),r.length>0&&(0,o.jsx)("ul",{className:"_1a5iqpb2",children:r.map((s,n)=>(0,o.jsx)("li",{children:(0,o.jsx)(X,{diagnostic:s})},`${s.code}-${n}`))})]})},X=({diagnostic:e})=>(0,o.jsxs)("div",{className:ve,children:[(0,o.jsx)("span",{className:fe,children:e.code}),(0,o.jsx)("p",{className:Se,children:e.message}),e.suggestion&&(0,o.jsx)("p",{className:"_1a5iqpb6",children:e.suggestion})]});function ye(e=[],t=[]){return e.length===t.length&&e.every((r,s)=>Object.is(r,t[s]))}var te=class extends u.Component{constructor(...e){super(...e),this.state={caughtDiagnostic:null}}static getDerivedStateFromError(e){return{caughtDiagnostic:(0,h.buildDiagnostic)(e)}}componentDidCatch(e,t){const r=(0,h.buildDiagnostic)(e);a.logDiagnostics([r]),this.props.onError?.([r]),console.error("Chart render component stack:",t.componentStack)}componentDidUpdate(e){this.state.caughtDiagnostic&&!ye(e.resetKeys,this.props.resetKeys)&&this.setState({caughtDiagnostic:null})}render(){const{caughtDiagnostic:e}=this.state;if(e)return(0,o.jsx)(V,{errors:[e]});const{forcedErrors:t,children:r}=this.props;return t&&t.length>0?(0,o.jsx)(V,{errors:t}):r}},re={},se=(0,u.createContext)(re),w=({shapes:e=re,children:t})=>(0,o.jsx)(se.Provider,{value:e,children:t}),K=()=>(0,u.useContext)(se),ne=e=>typeof e=="object"&&"geom"in e&&"render"in e,oe=e=>{const t=(0,h.resolveDefinition)(e);return t instanceof h.Geom?t:null},ae=(e,t)=>{const r=e.filter(s=>be(s,t));return r.length===e.length?e:r},be=(e,t)=>e.kind==="annotation"?(0,h.findAnnotation)(t.annotations,e.id)!==null:e.kind==="observations"||e.kind==="layer"&&e.layerId!==void 0?(0,h.findLayerById)(t.layers,e.layerId)!==void 0:!0,Q=[],Ee=()=>(0,W.createStore)(e=>({selection:Q,setSelection:t=>e(r=>Te(r.selection,t)?r:{selection:t}),clearSelection:()=>e(t=>t.selection.length===0?t:{selection:Q})})),Te=(e,t)=>e===t?!0:e.length!==t.length?!1:e.every((r,s)=>{const n=t[s];return n!==void 0&&(0,h.areEditTargetsEqual)(r,n)}),xe=process.env.NODE_ENV!=="production",Ge=5,Re=e=>{if(!xe)return{emit:()=>{},subscribe:()=>je,getLastTrigger:()=>null,getLastCompile:()=>null,getCacheStats:()=>e.getCacheStats()};const t=new Set;let r=null;return{emit:s=>{const n=e.getLastCompile();if(n){r=s;for(const l of t)l(s,n)}},subscribe:s=>(t.add(s),()=>{t.delete(s)}),getLastTrigger:()=>r,getLastCompile:()=>e.getLastCompile(),getCacheStats:()=>e.getCacheStats()}},Ce=()=>(0,W.createStore)(e=>({lastCompile:null,history:[],nextId:1,lastSnapshot:null,recordCompile:(t,r)=>e(s=>{if(s.lastSnapshot===r)return s;const n={id:s.nextId,label:Ne(t),stages:r.stages,stageDurationsMs:r.stageDurationsMs,durationMs:r.durationMs};return{lastCompile:n,history:De(s.history,n,Ge),nextId:s.nextId+1,lastSnapshot:r}})})),je=()=>{},Ne=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}},De=(e,t,r)=>{const s=e.length>=r?e.length-(r-1):0;return[...e.slice(s),t]};function Pe(e,t){let r;return e.layers.flatMap((s,n)=>a.isOverlayHosted(t(s.geom,e.coordSystem.type))?Me(s)?(r??=(0,h.createStyleResolver)().readers(e),He(s,r.geom(s))?[{kind:"user-input",severity:"warning",code:"INVALID_STYLE_RULE",message:`Style 'overlay' is not supported on portal-rendered geom '${s.geom}' (layer '${s.id}'); it is ignored.`,context:{param:"overlay",layerIndex:n,requested:s.geom},suggestion:"Remove the geom overlay or use a renderer that paints inside the panel SVG."}]:[]):[]:[])}function J(e){const t=e.filter(ne),r=new Set([...Object.keys(a.BUILT_IN_GEOM_RENDERERS),...t.map(d=>d.geom)]),s=[],n=new Set;for(const d of e){const m=oe(d);m===null||r.has(m.type)||n.has(m.type)||(n.add(m.type),s.push({kind:"user-input",severity:"error",code:"MISSING_GEOM_RENDERER",message:`Custom geom '${m.type}' is registered but has no renderer.`,context:{requested:m.type,kind:"geom-renderer"},suggestion:`Add a render half for it: \`defineGeomRenderer(${m.type}Geom, { coord, render })\`, then include it in \`plugins\`.`}))}const l=new Map;for(const d of t){if("definition"in d)continue;const m=`${d.geom}|${d.coord}`,f=l.get(m);f?f.count+=1:l.set(m,{geom:d.geom,coord:d.coord,count:1})}const c=[];for(const{geom:d,coord:m,count:f}of l.values())f<2||c.push({kind:"user-input",severity:"warning",code:"DUPLICATE_REGISTERED_TYPE",message:`Multiple render-only overrides register ('${d}', '${m}') (${f} entries); the last in the array wins.`,context:{requested:`${d}@${m}`,kind:"geom-renderer"},suggestion:`Keep a single render-only override for ('${d}', '${m}').`});return c.push(...Ae(e)),{errors:s,warnings:c}}function _e(e,t){const{coordSystem:r,layers:s}=e,n=new Set,l=[];for(const c of s)t(c.geom,r.type)!==null||n.has(c.geom)||(n.add(c.geom),l.push({kind:"user-input",severity:"warning",code:"MISSING_GEOM_RENDERER",message:`No renderer for geom '${c.geom}' under ${r.type} coords; the layer is not painted.`,context:{requested:c.geom,kind:"geom-renderer"},suggestion:`Register a renderer for ('${c.geom}', '${r.type}') via \`defineGeomRenderer\`.`}));return l}function ke(e,t){const{coordSystem:r,layers:s}=e,n=new Set,l=[];for(const c of s){if(c.interactive===!1||c.spatialKind!=="render-hit-test"||n.has(c.geom))continue;const d=t(c.geom,r.type);d===null||d.hitTest||a.isOverlayHosted(d)||(n.add(c.geom),l.push({kind:"user-input",severity:"warning",code:"MISSING_RENDER_HIT_TEST",message:`Geom '${c.geom}' declares spatialKind 'render-hit-test' but its renderer provides no hit-test; the layer has no hover.`,context:{requested:c.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 ('${c.geom}', '${r.type}').`}))}return l}function Ie(e){const t=new Set,r=[];for(const s of e.layers){const n=s.identityKey;s.interactive!==!1&&(s.spatialKind!=="render-hit-test"||typeof n!="object"||t.has(s.geom)||s.data.hasVariable(n.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 '${n.variable}', a column its compile output does not emit; its hover lookup is empty.`,context:{requested:s.geom,kind:"geom-renderer"},suggestion:`Emit the '${n.variable}' column from the geom's \`compile()\`, or point \`identityKey\` at a column it does emit.`})))}return r}function qe(e,t){const{coordSystem:r,layers:s}=e,n=new Set,l=[];for(const c of s){if(c.interactive===!1||c.spatialKind!=="render-hit-test"||n.has(c.geom))continue;const d=t(c.geom,r.type);d===null||!d.hitTest||!a.isOverlayHosted(d)||(n.add(c.geom),l.push({kind:"user-input",severity:"warning",code:"CONFLICTING_RENDER_HIT_TEST",message:`Geom '${c.geom}' declares both a \`hitTest\` factory and an overlay render; these are alternatives, so only the overlay is used.`,context:{requested:c.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 l}function Le(e,t){const r=new Set,s=[];for(const n of e.layers)n.interactive!==!1&&(n.spatialKind!=="render-hit-test"||r.has(n.geom)||t.hasCapability(n.geom)||(r.add(n.geom),s.push({kind:"user-input",severity:"warning",code:"MISSING_ANCHOR_CAPABILITY",message:`Geom '${n.geom}' declares no \`resolveAnchorPosition\`; its observations cannot be annotated, so the editor overlay paints no creation trigger on them.`,context:{requested:n.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 we(e,t){const{coordSystem:r,layers:s}=e,n=new Set,l=[];for(const c of s){if(c.interactive===!1||c.spatialKind==="render-hit-test"||n.has(c.geom))continue;const d=t(c.geom,r.type);d===null||!a.isOverlayHosted(d)||(n.add(c.geom),l.push({kind:"user-input",severity:"warning",code:"OVERLAY_REQUIRES_RENDER_HIT_TEST",message:`Geom '${c.geom}' declares an overlay render but its layer's spatialKind is '${c.spatialKind}', not 'render-hit-test'; the overlay's push-path hover resolves to nothing.`,context:{requested:c.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 l}var Me=e=>[e.styles.defaults,e.styles.overrides].some(t=>t.some(r=>(r.declarations.overlay?.length??0)>0)),He=(e,t)=>{const[r]=e.data;if(r===void 0)return!1;if((t.get("overlay",r)?.length??0)>0)return!0;for(const s of e.data)if((t.get("overlay",s,"hovered")?.length??0)>0)return!0;return!1};function Ae(e){const t=new Set,r=[];for(const s of e){const n=oe(s);n===null||t.has(n.type)||n.dataLabelCoordTypes.length===0||n.getDataLabelPlacements!==void 0||(t.add(n.type),r.push({kind:"user-input",severity:"warning",code:"MISSING_DATA_LABEL_PLACEMENT",message:`Geom '${n.type}' declares \`dataLabelCoordTypes\` but implements no \`getDataLabelPlacements\`; its layers paint no data labels.`,context:{requested:n.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 Oe=e=>(0,W.createStore)(t=>({scene:e,setScene:r=>t(s=>s.scene===r?s:{scene:r})})),$e=({spec:e,data:t,colorScheme:r,plugins:s,theme:n,resolveRenderer:l,anchorResolver:c,onSpecChange:d,onError:m,onWarnings:f})=>{const R=a.useLatestRef(d),C=a.useLatestRef(m),T=a.useLatestRef(f),[{session:v,compileBus:g}]=(0,u.useState)(()=>{const i=(0,h.createCompiler)({plugins:s,theme:n});return{session:new h.GraphCompilationSession(i),compileBus:Re(i)}}),[S]=(0,u.useState)(()=>{const i=J(s??[]),p=J(n?.plugins??[]);return{errors:[...p.errors,...i.errors],warnings:[...p.warnings,...i.warnings]}}),x=(0,u.useRef)(null),[y]=(0,u.useState)(Be),j=(0,u.useRef)(null),P=(0,u.useCallback)(i=>S.errors.length===0?i:[...S.errors,...i??[]],[S]),G=(0,u.useCallback)(i=>{if(!i.ok)return i.errors;if(j.current)j.current.getState().setScene(i.scene);else{const p=Oe(i.scene);p.subscribe(y.notify),j.current=p,y.notify()}return null},[y]),[M,k]=(0,u.useState)(()=>{const i=v.compile({spec:e,data:t,colorScheme:r});return x.current=i,P(G(i))}),E=(0,u.useCallback)(i=>i.ok?[...i.warnings,..._e(i.scene,l),...ke(i.scene,l),...Ie(i.scene),...qe(i.scene,l),...we(i.scene,l),...Pe(i.scene,l),...Le(i.scene,c)]:i.warnings,[l,c]),N=(0,u.useCallback)(i=>{i.length!==0&&(a.logDiagnostics(i),C.current?.(i))},[C]),D=(0,u.useCallback)(i=>{i.length!==0&&(a.logDiagnostics(i),T.current?.(i))},[T]);(0,u.useEffect)(()=>{const i=x.current;i&&(N([...S.errors,...i.ok?[]:i.errors]),D([...S.warnings,...E(i)]),i.ok&&g.emit({kind:"init"}))},[g,N,D,S,E]),(0,u.useEffect)(()=>{const i=v.update({spec:e,data:t,colorScheme:r});if(!i)return;i.committedSpec&&R.current?.(i.committedSpec);const p=G(i.result);k(P(p)),p&&N(p),D(E(i.result)),p||g.emit({kind:i.specChanged?"spec":"data"})},[e,t,r,v,g,G,N,D,P,E,R]);const I=(0,u.useCallback)(i=>{k(p=>p===null?p:P(null)),D(E(i))},[P,D,E]),H=(0,u.useCallback)(i=>{i.scene&&j.current?.getState().setScene(i.scene),i.result&&I(i.result),i.command&&g.emit({kind:"command",command:i.command}),i.spec&&R.current?.(i.spec),i.errors&&N([...i.errors])},[I,g,R,N]),b=(0,u.useCallback)(i=>{for(const p of i)H(p);return i.some(p=>!!p.scene)},[H]),A=(0,u.useCallback)((i,p)=>{b(v.applyCommand(i,p))},[v,b]),_=(0,u.useCallback)(()=>{b(v.commit())},[v,b]),O=(0,u.useCallback)(()=>b(v.undo()),[v,b]),q=(0,u.useCallback)(()=>b(v.redo()),[v,b]),U=(0,u.useMemo)(()=>({stack:v.history,undo:O,redo:q}),[v,O,q]),he=(0,u.useCallback)(()=>j.current?.getState().scene??null,[]);return{store:j.current,dispatch:A,commit:_,history:U,subscribe:y.subscribe,getScene:he,compileBus:g,compileErrors:M}},Be=()=>{const e=new Set;return{subscribe:t=>(e.add(t),()=>{e.delete(t)}),notify:()=>e.forEach(t=>t())}},ie=({data:e,spec:t,plugins:r=[],theme:s,formattingLocale:n,handleRef:l,onSpecChange:c,onError:d,onWarnings:m,colorScheme:f="light",children:R})=>{const[C]=(0,u.useState)(()=>s),T=C?.colorScheme??f,[v]=(0,u.useState)(()=>a.createGeomRendererResolver([...C?.plugins??[],...r].filter(ne))),g=(0,u.useId)(),[S]=(0,u.useState)(()=>(0,h.createAnchorResolver)(r)),[x]=(0,u.useState)(()=>(0,h.createDataLabelPlacementResolver)(r)),[y]=(0,u.useState)(()=>Ee()),[j]=(0,u.useState)(()=>a.createTargetBoundaryStore()),P=(0,u.useMemo)(()=>(0,h.createStyleResolver)({colorScheme:T}),[T]),{store:G,dispatch:M,commit:k,history:E,subscribe:N,getScene:D,compileBus:I,compileErrors:H}=$e({spec:t,data:e,colorScheme:T,plugins:r,theme:C,resolveRenderer:v,anchorResolver:S,onSpecChange:c,onError:d,onWarnings:m});(0,u.useEffect)(()=>{if(G)return G.subscribe((_,O)=>{if(_.scene.spec===O.scene.spec)return;const{selection:q,setSelection:U}=y.getState();q.length!==0&&U(ae(q,_.scene.spec))})},[G,y]);const b=(0,u.useMemo)(()=>({dispatch:M,commit:k}),[M,k]);(0,u.useImperativeHandle)(l,()=>({commands:b,undo:E.undo,redo:E.redo,subscribe:N,getScene:D,getSelection:()=>y.getState().selection,setSelection:_=>y.getState().setSelection(_),subscribeSelection:y.subscribe,canPlaceDataLabels:x.hasCapability,canFormatDataLabelsAsPercentages:x.hasPercentageFormat}),[b,E,N,D,y,x]);const A=(0,u.useMemo)(()=>G?{chartId:g,store:G,selectionStore:y,targetBoundaryStore:j,commands:b,history:E,formattingLocale:n,compileBus:I,colorScheme:T,styleResolver:P,anchorResolver:S}:null,[g,G,y,j,b,E,n,I,T,P,S]);return(0,o.jsx)(te,{forcedErrors:H,onError:d,resetKeys:[t,e],children:A?(0,o.jsx)(a.GraphContext.Provider,{value:A,children:(0,o.jsx)(a.GeomRendererResolverProvider,{value:v,children:(0,o.jsx)(a.DataLabelPlacementResolverProvider,{value:x,children:(0,o.jsx)(w,{shapes:C?.shapes,children:R})})})}):null})};function Ke({theme:e,...t}={}){const r=(0,h.createSpecBuilder)(t);return{...r,GraphProvider:n=>(0,o.jsx)(ie,{...n,plugins:r.plugins,theme:e})}}var ce=({shouldAnimateTransitions:e,cx:t,cy:r,r:s,...n})=>e?(0,o.jsx)(B.motion.circle,{initial:!1,animate:{cx:t,cy:r,r:s},transition:a.DEFAULT_SPRING_TRANSITION,...n}):(0,o.jsx)("circle",{cx:t,cy:r,r:s,...n}),le=({shouldAnimateTransitions:e,x1:t,y1:r,x2:s,y2:n,...l})=>e?(0,o.jsx)(B.motion.line,{initial:!1,animate:{x1:t,y1:r,x2:s,y2:n},transition:a.DEFAULT_SPRING_TRANSITION,...l}):(0,o.jsx)("line",{x1:t,y1:r,x2:s,y2:n,...l}),ue=({shouldAnimateTransitions:e,x:t,y:r,width:s,height:n,...l})=>e?(0,o.jsx)(B.motion.rect,{initial:!1,animate:{attrX:t,attrY:r,width:s,height:n},transition:a.DEFAULT_SPRING_TRANSITION,...l}):(0,o.jsx)("rect",{x:t,y:r,width:s,height:n,...l}),de=({shouldAnimateTransitions:e,d:t,source:r,...s})=>e?(0,o.jsx)(We,{d:t,source:r,...s}):(0,o.jsx)("path",{d:t,...s}),Ue=e=>{const{Circle:t}=K();return t===void 0?ce(e):(0,o.jsx)(w,{children:(0,o.jsx)(t,{...e})})},Fe=e=>{const{Line:t}=K();return t===void 0?le(e):(0,o.jsx)(w,{children:(0,o.jsx)(t,{...e})})},Ye=e=>{const{Rect:t}=K();return t===void 0?ue(e):(0,o.jsx)(w,{children:(0,o.jsx)(t,{...e})})},Ve=e=>{const{Path:t}=K();return t===void 0?de(e):(0,o.jsx)(w,{children:(0,o.jsx)(t,{...e})})},We=({d:e,source:t,...r})=>{const s=a.useSvgPathMorph(e,a.DEFAULT_SPRING_TRANSITION,t);return(0,o.jsx)(B.motion.path,{d:s,...r})},ze=({children:e,...t})=>(0,o.jsx)("svg",{viewBox:"0 0 1 1",preserveAspectRatio:"none",width:"100%",height:"100%",pointerEvents:"none",...t,children:e}),Xe=({box:e,children:t})=>(0,o.jsx)("svg",{x:(0,h.toPercent)(e.x0),y:(0,h.toPercent)(e.y0),width:(0,h.toPercent)(e.x1-e.x0),height:(0,h.toPercent)(e.y1-e.y0),overflow:"hidden",pointerEvents:"none",children:t}),Qe="drqe3u0",Je="drqe3u1",Ze="drqe3u2",et="drqe3u3",L="drqe3u4",tt="drqe3u5",rt="drqe3u6",st="drqe3u7",$="drqe3u8",nt="drqe3u9",ot="drqe3ua";var at="drqe3uc",it="drqe3ud",ct="drqe3ue",lt="drqe3uf";var ut="drqe3uh",dt="drqe3ui",Z={enabled:"drqe3uk drqe3uj",disabled:"drqe3ul drqe3uj"},ee={ran:"drqe3un drqe3um",dim:"drqe3uo drqe3um"},me={ran:"drqe3uq drqe3up",cached:"drqe3ur drqe3up",untouched:"drqe3us drqe3up"},mt=({width:e=440,style:t,className:r}={})=>{const{compileBus:s}=a.useGraphContext(),[n]=(0,u.useState)(()=>Ce()),[l,c]=(0,u.useState)(!1),[d,m]=(0,u.useState)(h.isCompilerCachingEnabled);(0,u.useEffect)(()=>{const{recordCompile:g}=n.getState(),S=s.getLastTrigger(),x=s.getLastCompile();return S&&x&&g(S,x),s.subscribe(g)},[n,s]);const f=(0,F.useStore)(n,g=>g.lastCompile),R=(0,F.useStore)(n,g=>g.history),C=s.getCacheStats(),T=f===null&&R.length===0,v=()=>{m(g=>{const S=!g;return(0,h.setCompilerCachingEnabled)(S),S})};return(0,o.jsxs)("div",{className:(0,Y.default)(ot,r),style:{width:e,...t},children:[(0,o.jsxs)("div",{className:Qe,children:[(0,o.jsxs)("div",{children:[(0,o.jsx)("div",{className:Je,children:"compile cache"}),(0,o.jsx)("div",{className:ct,children:T?"production: stats disabled":f?`last: ${f.label} · ${z(f.durationMs)}`:"awaiting first compile…"})]}),(0,o.jsx)("button",{type:"button",onClick:()=>c(g=>!g),className:lt,children:l?"▾":"▴"})]}),!l&&(0,o.jsxs)("div",{className:"drqe3ub",children:[(0,o.jsxs)("button",{type:"button",onClick:v,className:d?Z.enabled:Z.disabled,"aria-pressed":d,children:["cache ",d?"enabled":"disabled"]}),(0,o.jsx)("span",{className:"drqe3ug",children:"next compile reflects this toggle"})]}),!l&&!T&&(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(ht,{delta:f?.stages,durations:f?.stageDurationsMs,cumulative:C}),(0,o.jsx)(gt,{entries:R})]})]})},ht=({delta:e,durations:t,cumulative:r})=>(0,o.jsxs)("table",{className:Ze,children:[(0,o.jsx)("thead",{children:(0,o.jsxs)("tr",{className:ut,children:[(0,o.jsx)("th",{className:et,children:"stage"}),(0,o.jsx)("th",{className:L,children:"time"}),(0,o.jsx)("th",{className:L,children:"Δ miss"}),(0,o.jsx)("th",{className:L,children:"Δ hit"}),(0,o.jsx)("th",{className:L,children:"total miss"}),(0,o.jsx)("th",{className:L,children:"total hit"})]})}),(0,o.jsx)("tbody",{children:h.COMPILER_STAGE_KEYS.map(s=>{const n=e?.[s],l=pt(n);return(0,o.jsxs)("tr",{className:at,children:[(0,o.jsxs)("td",{className:tt,children:[(0,o.jsx)("span",{className:me[l],"aria-hidden":!0})," ",s]}),(0,o.jsx)("td",{className:$,children:t===void 0||l==="untouched"?"—":z(t[s])}),(0,o.jsx)("td",{className:l==="ran"?ee.ran:ee.dim,children:n?.misses??0}),(0,o.jsx)("td",{className:$,children:n?.hits??0}),(0,o.jsx)("td",{className:$,children:r[s].misses}),(0,o.jsx)("td",{className:$,children:r[s].hits})]},s)})})]}),gt=({entries:e})=>e.length===0?null:(0,o.jsxs)("div",{className:it,children:[(0,o.jsx)("div",{className:dt,children:"recent compiles"}),e.map(t=>{const r=vt(t.stages,l=>l.misses>0),s=h.COMPILER_STAGE_KEYS.length,n=r===0?"cached":"ran";return(0,o.jsxs)("div",{className:rt,children:[(0,o.jsx)("span",{className:me[n],"aria-hidden":!0}),(0,o.jsx)("span",{className:st,title:t.label,children:t.label}),(0,o.jsxs)("span",{className:nt,children:[r,"/",s," ran · ",z(t.durationMs)]})]},t.id)})]}),pt=e=>!e||e.hits===0&&e.misses===0?"untouched":e.misses>0?"ran":"cached",vt=(e,t)=>{let r=0;for(const s of h.COMPILER_STAGE_KEYS)t(e[s])&&(r+=1);return r},z=e=>e<.1?"<0.1ms":e>=10?`${e.toFixed(0)}ms`:`${e.toFixed(2)}ms`,ft=()=>{const{history:e}=a.useGraphContext(),{stack:t,undo:r,redo:s}=e,n=(0,u.useCallback)(d=>t.subscribe(d),[t]),l=(0,u.useCallback)(()=>t.getSnapshot(),[t]),c=(0,u.useSyncExternalStore)(n,l,l);return(0,u.useMemo)(()=>({...c,undo:r,redo:s}),[c,r,s])},St=new Set(["button","checkbox","color","file","hidden","image","radio","range","reset","submit"]),yt=(e,t={})=>{const{target:r,enabled:s=!0}=t;(0,u.useEffect)(()=>{const n=bt(r);if(!s||!n)return;const l=c=>{if(!Et(c)||c.defaultPrevented||Tt(c.target))return;const d=a.resolveHistoryStep(c);if(!d)return;const m=e.current;m&&(d==="undo"?m.undo():m.redo())&&c.preventDefault()};return n.addEventListener("keydown",l),()=>n.removeEventListener("keydown",l)},[e,r,s])},bt=e=>e===void 0?window:e!==null&&"current"in e?e.current:e,Et=e=>"key"in e,Tt=e=>e instanceof HTMLInputElement?!St.has(e.type):e instanceof HTMLElement?e.isContentEditable||e.tagName==="TEXTAREA":!1,xt=()=>{const{targetBoundaryStore:e}=a.useGraphContext();return(0,F.useStore)(e,t=>t.boundary)};exports.BrandMark=a.BrandMark;exports.CanvasTextMeasurer=a.CanvasTextMeasurer;exports.DefaultFooter=a.DefaultFooter;exports.DefaultGeomCircle=ce;exports.DefaultGeomLine=le;exports.DefaultGeomPath=de;exports.DefaultGeomRect=ue;exports.DefaultGrid=a.DefaultGrid;exports.DefaultHeader=a.DefaultHeader;exports.DefaultSwatch=a.DefaultSwatch;exports.DefaultTooltip=a.DefaultTooltip;exports.DevToolsPanel=mt;exports.GRAPH_MODES=a.GRAPH_MODES;exports.GeomCircle=Ue;exports.GeomLine=Fe;exports.GeomPath=Ve;exports.GeomRect=Ye;exports.GraphErrorBoundary=te;exports.GraphErrorPanel=V;exports.GraphProvider=ie;exports.GraphRenderer=a.GraphRenderer;exports.HoverProvider=a.HoverProvider;exports.IntroFade=a.IntroFade;exports.IntroWipeClip=a.IntroWipeClip;exports.TextMeasurerProvider=a.TextMeasurerProvider;exports.ThemeProvider=a.ThemeProvider;exports.UnitBoxSvg=Xe;exports.UnitSpaceSvg=ze;exports.buildDotsEditOutlineShapes=a.buildDotsEditOutlineShapes;exports.createGraphyKit=Ke;exports.darkTheme=a.darkTheme;exports.defineGeomRenderer=a.defineGeomRenderer;exports.lightTheme=a.lightTheme;exports.lightenCss=a.lightenCss;exports.projectPointCartesian=a.projectPointCartesian;exports.pruneSelection=ae;exports.resolveBrandMarkVisual=a.resolveBrandMarkVisual;exports.resolvePathStroke=a.resolvePathStroke;exports.scalePointToPanel=a.scalePointToPanel;exports.stampAxisEditTarget=a.stampAxisEditTarget;exports.stampGridEditTarget=a.stampGridEditTarget;exports.stampLegendEditTarget=a.stampLegendEditTarget;exports.useElementScreenRect=a.useElementScreenRect;exports.useGeomHitTest=a.useGeomHitTest;exports.useGeomHover=a.useGeomHover;exports.useGeomReaderTree=a.useGeomReaderTree;exports.useGeomStyleReader=a.useGeomStyleReader;exports.useGraphCommands=a.useGraphCommands;exports.useGraphHandle=a.useGraphHandle;exports.useGraphHistory=ft;exports.useGraphHistoryShortcuts=yt;exports.useGraphLocale=a.useGraphLocale;exports.useGraphSelection=a.useGraphSelection;exports.useGuidesTakePress=a.useGuidesTakePress;exports.useHandleScene=a.useHandleScene;exports.useHoverState=a.useHoverState;exports.usePaintDefs=a.usePaintDefs;exports.useResolvedStyle=a.useResolvedStyle;exports.useSceneSelector=a.useSceneSelector;exports.useStyleReaderTree=a.useStyleReaderTree;exports.useStyleResolver=a.useStyleResolver;exports.useTargetBoundary=xt;exports.useTextMeasurer=a.useTextMeasurer;exports.vars=a.vars;
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('./index.css');const a=require("./history-chords-B33b8eJA.cjs");let h=require("@graphysdk/viz-engine"),u=require("react"),o=require("react/jsx-runtime"),F=require("zustand"),B=require("motion/react"),W=require("zustand/vanilla"),Y=require("clsx");Y=a.__toESM(Y,1);var ge="_1a5iqpb0",pe="_1a5iqpb1";var ve="_1a5iqpb3",fe="_1a5iqpb4",Se="_1a5iqpb5";var V=({errors:e})=>{const[t,...r]=e;return(0,o.jsxs)("div",{role:"alert",className:ge,children:[(0,o.jsx)("strong",{className:pe,children:"This chart could not be rendered."}),t&&(0,o.jsx)(X,{diagnostic:t}),r.length>0&&(0,o.jsx)("ul",{className:"_1a5iqpb2",children:r.map((s,n)=>(0,o.jsx)("li",{children:(0,o.jsx)(X,{diagnostic:s})},`${s.code}-${n}`))})]})},X=({diagnostic:e})=>(0,o.jsxs)("div",{className:ve,children:[(0,o.jsx)("span",{className:fe,children:e.code}),(0,o.jsx)("p",{className:Se,children:e.message}),e.suggestion&&(0,o.jsx)("p",{className:"_1a5iqpb6",children:e.suggestion})]});function ye(e=[],t=[]){return e.length===t.length&&e.every((r,s)=>Object.is(r,t[s]))}var te=class extends u.Component{constructor(...e){super(...e),this.state={caughtDiagnostic:null}}static getDerivedStateFromError(e){return{caughtDiagnostic:(0,h.buildDiagnostic)(e)}}componentDidCatch(e,t){const r=(0,h.buildDiagnostic)(e);a.logDiagnostics([r]),this.props.onError?.([r]),console.error("Chart render component stack:",t.componentStack)}componentDidUpdate(e){this.state.caughtDiagnostic&&!ye(e.resetKeys,this.props.resetKeys)&&this.setState({caughtDiagnostic:null})}render(){const{caughtDiagnostic:e}=this.state;if(e)return(0,o.jsx)(V,{errors:[e]});const{forcedErrors:t,children:r}=this.props;return t&&t.length>0?(0,o.jsx)(V,{errors:t}):r}},re={},se=(0,u.createContext)(re),w=({shapes:e=re,children:t})=>(0,o.jsx)(se.Provider,{value:e,children:t}),K=()=>(0,u.useContext)(se),ne=e=>typeof e=="object"&&"geom"in e&&"render"in e,oe=e=>{const t=(0,h.resolveDefinition)(e);return t instanceof h.Geom?t:null},ae=(e,t)=>{const r=e.filter(s=>be(s,t));return r.length===e.length?e:r},be=(e,t)=>e.kind==="annotation"?(0,h.findAnnotation)(t.annotations,e.id)!==null:e.kind==="observations"||e.kind==="layer"&&e.layerId!==void 0?(0,h.findLayerById)(t.layers,e.layerId)!==void 0:!0,Q=[],Ee=()=>(0,W.createStore)(e=>({selection:Q,setSelection:t=>e(r=>Te(r.selection,t)?r:{selection:t}),clearSelection:()=>e(t=>t.selection.length===0?t:{selection:Q})})),Te=(e,t)=>e===t?!0:e.length!==t.length?!1:e.every((r,s)=>{const n=t[s];return n!==void 0&&(0,h.areEditTargetsEqual)(r,n)}),xe=process.env.NODE_ENV!=="production",Ge=5,Re=e=>{if(!xe)return{emit:()=>{},subscribe:()=>je,getLastTrigger:()=>null,getLastCompile:()=>null,getCacheStats:()=>e.getCacheStats()};const t=new Set;let r=null;return{emit:s=>{const n=e.getLastCompile();if(n){r=s;for(const l of t)l(s,n)}},subscribe:s=>(t.add(s),()=>{t.delete(s)}),getLastTrigger:()=>r,getLastCompile:()=>e.getLastCompile(),getCacheStats:()=>e.getCacheStats()}},Ce=()=>(0,W.createStore)(e=>({lastCompile:null,history:[],nextId:1,lastSnapshot:null,recordCompile:(t,r)=>e(s=>{if(s.lastSnapshot===r)return s;const n={id:s.nextId,label:Ne(t),stages:r.stages,stageDurationsMs:r.stageDurationsMs,durationMs:r.durationMs};return{lastCompile:n,history:De(s.history,n,Ge),nextId:s.nextId+1,lastSnapshot:r}})})),je=()=>{},Ne=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}},De=(e,t,r)=>{const s=e.length>=r?e.length-(r-1):0;return[...e.slice(s),t]};function Pe(e,t){let r;return e.layers.flatMap((s,n)=>a.isOverlayHosted(t(s.geom,e.coordSystem.type))?Me(s)?(r??=(0,h.createStyleResolver)().readers(e),He(s,r.geom(s))?[{kind:"user-input",severity:"warning",code:"INVALID_STYLE_RULE",message:`Style 'overlay' is not supported on portal-rendered geom '${s.geom}' (layer '${s.id}'); it is ignored.`,context:{param:"overlay",layerIndex:n,requested:s.geom},suggestion:"Remove the geom overlay or use a renderer that paints inside the panel SVG."}]:[]):[]:[])}function J(e){const t=e.filter(ne),r=new Set([...Object.keys(a.BUILT_IN_GEOM_RENDERERS),...t.map(d=>d.geom)]),s=[],n=new Set;for(const d of e){const m=oe(d);m===null||r.has(m.type)||n.has(m.type)||(n.add(m.type),s.push({kind:"user-input",severity:"error",code:"MISSING_GEOM_RENDERER",message:`Custom geom '${m.type}' is registered but has no renderer.`,context:{requested:m.type,kind:"geom-renderer"},suggestion:`Add a render half for it: \`defineGeomRenderer(${m.type}Geom, { coord, render })\`, then include it in \`plugins\`.`}))}const l=new Map;for(const d of t){if("definition"in d)continue;const m=`${d.geom}|${d.coord}`,f=l.get(m);f?f.count+=1:l.set(m,{geom:d.geom,coord:d.coord,count:1})}const c=[];for(const{geom:d,coord:m,count:f}of l.values())f<2||c.push({kind:"user-input",severity:"warning",code:"DUPLICATE_REGISTERED_TYPE",message:`Multiple render-only overrides register ('${d}', '${m}') (${f} entries); the last in the array wins.`,context:{requested:`${d}@${m}`,kind:"geom-renderer"},suggestion:`Keep a single render-only override for ('${d}', '${m}').`});return c.push(...Ae(e)),{errors:s,warnings:c}}function _e(e,t){const{coordSystem:r,layers:s}=e,n=new Set,l=[];for(const c of s)t(c.geom,r.type)!==null||n.has(c.geom)||(n.add(c.geom),l.push({kind:"user-input",severity:"warning",code:"MISSING_GEOM_RENDERER",message:`No renderer for geom '${c.geom}' under ${r.type} coords; the layer is not painted.`,context:{requested:c.geom,kind:"geom-renderer"},suggestion:`Register a renderer for ('${c.geom}', '${r.type}') via \`defineGeomRenderer\`.`}));return l}function ke(e,t){const{coordSystem:r,layers:s}=e,n=new Set,l=[];for(const c of s){if(c.interactive===!1||c.spatialKind!=="render-hit-test"||n.has(c.geom))continue;const d=t(c.geom,r.type);d===null||d.hitTest||a.isOverlayHosted(d)||(n.add(c.geom),l.push({kind:"user-input",severity:"warning",code:"MISSING_RENDER_HIT_TEST",message:`Geom '${c.geom}' declares spatialKind 'render-hit-test' but its renderer provides no hit-test; the layer has no hover.`,context:{requested:c.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 ('${c.geom}', '${r.type}').`}))}return l}function Ie(e){const t=new Set,r=[];for(const s of e.layers){const n=s.identityKey;s.interactive!==!1&&(s.spatialKind!=="render-hit-test"||typeof n!="object"||t.has(s.geom)||s.data.hasVariable(n.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 '${n.variable}', a column its compile output does not emit; its hover lookup is empty.`,context:{requested:s.geom,kind:"geom-renderer"},suggestion:`Emit the '${n.variable}' column from the geom's \`compile()\`, or point \`identityKey\` at a column it does emit.`})))}return r}function qe(e,t){const{coordSystem:r,layers:s}=e,n=new Set,l=[];for(const c of s){if(c.interactive===!1||c.spatialKind!=="render-hit-test"||n.has(c.geom))continue;const d=t(c.geom,r.type);d===null||!d.hitTest||!a.isOverlayHosted(d)||(n.add(c.geom),l.push({kind:"user-input",severity:"warning",code:"CONFLICTING_RENDER_HIT_TEST",message:`Geom '${c.geom}' declares both a \`hitTest\` factory and an overlay render; these are alternatives, so only the overlay is used.`,context:{requested:c.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 l}function Le(e,t){const r=new Set,s=[];for(const n of e.layers)n.interactive!==!1&&(n.spatialKind!=="render-hit-test"||r.has(n.geom)||t.hasCapability(n.geom)||(r.add(n.geom),s.push({kind:"user-input",severity:"warning",code:"MISSING_ANCHOR_CAPABILITY",message:`Geom '${n.geom}' declares no \`resolveAnchorPosition\`; its observations cannot be annotated, so the editor overlay paints no creation trigger on them.`,context:{requested:n.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 we(e,t){const{coordSystem:r,layers:s}=e,n=new Set,l=[];for(const c of s){if(c.interactive===!1||c.spatialKind==="render-hit-test"||n.has(c.geom))continue;const d=t(c.geom,r.type);d===null||!a.isOverlayHosted(d)||(n.add(c.geom),l.push({kind:"user-input",severity:"warning",code:"OVERLAY_REQUIRES_RENDER_HIT_TEST",message:`Geom '${c.geom}' declares an overlay render but its layer's spatialKind is '${c.spatialKind}', not 'render-hit-test'; the overlay's push-path hover resolves to nothing.`,context:{requested:c.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 l}var Me=e=>[e.styles.defaults,e.styles.overrides].some(t=>t.some(r=>(r.declarations.overlay?.length??0)>0)),He=(e,t)=>{const[r]=e.data;if(r===void 0)return!1;if((t.get("overlay",r)?.length??0)>0)return!0;for(const s of e.data)if((t.get("overlay",s,"hovered")?.length??0)>0)return!0;return!1};function Ae(e){const t=new Set,r=[];for(const s of e){const n=oe(s);n===null||t.has(n.type)||n.dataLabelCoordTypes.length===0||n.getDataLabelPlacements!==void 0||(t.add(n.type),r.push({kind:"user-input",severity:"warning",code:"MISSING_DATA_LABEL_PLACEMENT",message:`Geom '${n.type}' declares \`dataLabelCoordTypes\` but implements no \`getDataLabelPlacements\`; its layers paint no data labels.`,context:{requested:n.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 Oe=e=>(0,W.createStore)(t=>({scene:e,setScene:r=>t(s=>s.scene===r?s:{scene:r})})),$e=({spec:e,data:t,colorScheme:r,plugins:s,theme:n,resolveRenderer:l,anchorResolver:c,onSpecChange:d,onError:m,onWarnings:f})=>{const R=a.useLatestRef(d),C=a.useLatestRef(m),T=a.useLatestRef(f),[{session:v,compileBus:g}]=(0,u.useState)(()=>{const i=(0,h.createCompiler)({plugins:s,theme:n});return{session:new h.GraphCompilationSession(i),compileBus:Re(i)}}),[S]=(0,u.useState)(()=>{const i=J(s??[]),p=J(n?.plugins??[]);return{errors:[...p.errors,...i.errors],warnings:[...p.warnings,...i.warnings]}}),x=(0,u.useRef)(null),[y]=(0,u.useState)(Be),j=(0,u.useRef)(null),P=(0,u.useCallback)(i=>S.errors.length===0?i:[...S.errors,...i??[]],[S]),G=(0,u.useCallback)(i=>{if(!i.ok)return i.errors;if(j.current)j.current.getState().setScene(i.scene);else{const p=Oe(i.scene);p.subscribe(y.notify),j.current=p,y.notify()}return null},[y]),[M,k]=(0,u.useState)(()=>{const i=v.compile({spec:e,data:t,colorScheme:r});return x.current=i,P(G(i))}),E=(0,u.useCallback)(i=>i.ok?[...i.warnings,..._e(i.scene,l),...ke(i.scene,l),...Ie(i.scene),...qe(i.scene,l),...we(i.scene,l),...Pe(i.scene,l),...Le(i.scene,c)]:i.warnings,[l,c]),N=(0,u.useCallback)(i=>{i.length!==0&&(a.logDiagnostics(i),C.current?.(i))},[C]),D=(0,u.useCallback)(i=>{i.length!==0&&(a.logDiagnostics(i),T.current?.(i))},[T]);(0,u.useEffect)(()=>{const i=x.current;i&&(N([...S.errors,...i.ok?[]:i.errors]),D([...S.warnings,...E(i)]),i.ok&&g.emit({kind:"init"}))},[g,N,D,S,E]),(0,u.useEffect)(()=>{const i=v.update({spec:e,data:t,colorScheme:r});if(!i)return;i.committedSpec&&R.current?.(i.committedSpec);const p=G(i.result);k(P(p)),p&&N(p),D(E(i.result)),p||g.emit({kind:i.specChanged?"spec":"data"})},[e,t,r,v,g,G,N,D,P,E,R]);const I=(0,u.useCallback)(i=>{k(p=>p===null?p:P(null)),D(E(i))},[P,D,E]),H=(0,u.useCallback)(i=>{i.scene&&j.current?.getState().setScene(i.scene),i.result&&I(i.result),i.command&&g.emit({kind:"command",command:i.command}),i.spec&&R.current?.(i.spec),i.errors&&N([...i.errors])},[I,g,R,N]),b=(0,u.useCallback)(i=>{for(const p of i)H(p);return i.some(p=>!!p.scene)},[H]),A=(0,u.useCallback)((i,p)=>{b(v.applyCommand(i,p))},[v,b]),_=(0,u.useCallback)(()=>{b(v.commit())},[v,b]),O=(0,u.useCallback)(()=>b(v.undo()),[v,b]),q=(0,u.useCallback)(()=>b(v.redo()),[v,b]),U=(0,u.useMemo)(()=>({stack:v.history,undo:O,redo:q}),[v,O,q]),he=(0,u.useCallback)(()=>j.current?.getState().scene??null,[]);return{store:j.current,dispatch:A,commit:_,history:U,subscribe:y.subscribe,getScene:he,compileBus:g,compileErrors:M}},Be=()=>{const e=new Set;return{subscribe:t=>(e.add(t),()=>{e.delete(t)}),notify:()=>e.forEach(t=>t())}},ie=({data:e,spec:t,plugins:r=[],theme:s,formattingLocale:n,handleRef:l,onSpecChange:c,onError:d,onWarnings:m,colorScheme:f="light",children:R})=>{const[C]=(0,u.useState)(()=>s),T=C?.colorScheme??f,[v]=(0,u.useState)(()=>a.createGeomRendererResolver([...C?.plugins??[],...r].filter(ne))),g=(0,u.useId)(),[S]=(0,u.useState)(()=>(0,h.createAnchorResolver)(r)),[x]=(0,u.useState)(()=>(0,h.createDataLabelPlacementResolver)(r)),[y]=(0,u.useState)(()=>Ee()),[j]=(0,u.useState)(()=>a.createTargetBoundaryStore()),P=(0,u.useMemo)(()=>(0,h.createStyleResolver)({colorScheme:T}),[T]),{store:G,dispatch:M,commit:k,history:E,subscribe:N,getScene:D,compileBus:I,compileErrors:H}=$e({spec:t,data:e,colorScheme:T,plugins:r,theme:C,resolveRenderer:v,anchorResolver:S,onSpecChange:c,onError:d,onWarnings:m});(0,u.useEffect)(()=>{if(G)return G.subscribe((_,O)=>{if(_.scene.spec===O.scene.spec)return;const{selection:q,setSelection:U}=y.getState();q.length!==0&&U(ae(q,_.scene.spec))})},[G,y]);const b=(0,u.useMemo)(()=>({dispatch:M,commit:k}),[M,k]);(0,u.useImperativeHandle)(l,()=>({commands:b,undo:E.undo,redo:E.redo,subscribe:N,getScene:D,getSelection:()=>y.getState().selection,setSelection:_=>y.getState().setSelection(_),subscribeSelection:y.subscribe,canPlaceDataLabels:x.hasCapability,canFormatDataLabelsAsPercentages:x.hasPercentageFormat}),[b,E,N,D,y,x]);const A=(0,u.useMemo)(()=>G?{chartId:g,store:G,selectionStore:y,targetBoundaryStore:j,commands:b,history:E,formattingLocale:n,compileBus:I,colorScheme:T,styleResolver:P,anchorResolver:S}:null,[g,G,y,j,b,E,n,I,T,P,S]);return(0,o.jsx)(te,{forcedErrors:H,onError:d,resetKeys:[t,e],children:A?(0,o.jsx)(a.GraphContext.Provider,{value:A,children:(0,o.jsx)(a.GeomRendererResolverProvider,{value:v,children:(0,o.jsx)(a.DataLabelPlacementResolverProvider,{value:x,children:(0,o.jsx)(w,{shapes:C?.shapes,children:R})})})}):null})};function Ke({theme:e,...t}={}){const r=(0,h.createSpecBuilder)(t);return{...r,GraphProvider:n=>(0,o.jsx)(ie,{...n,plugins:r.plugins,theme:e})}}var ce=({shouldAnimateTransitions:e,cx:t,cy:r,r:s,...n})=>e?(0,o.jsx)(B.motion.circle,{initial:!1,animate:{cx:t,cy:r,r:s},transition:a.DEFAULT_SPRING_TRANSITION,...n}):(0,o.jsx)("circle",{cx:t,cy:r,r:s,...n}),le=({shouldAnimateTransitions:e,x1:t,y1:r,x2:s,y2:n,...l})=>e?(0,o.jsx)(B.motion.line,{initial:!1,animate:{x1:t,y1:r,x2:s,y2:n},transition:a.DEFAULT_SPRING_TRANSITION,...l}):(0,o.jsx)("line",{x1:t,y1:r,x2:s,y2:n,...l}),ue=({shouldAnimateTransitions:e,x:t,y:r,width:s,height:n,...l})=>e?(0,o.jsx)(B.motion.rect,{initial:!1,animate:{attrX:t,attrY:r,width:s,height:n},transition:a.DEFAULT_SPRING_TRANSITION,...l}):(0,o.jsx)("rect",{x:t,y:r,width:s,height:n,...l}),de=({shouldAnimateTransitions:e,d:t,source:r,...s})=>e?(0,o.jsx)(We,{d:t,source:r,...s}):(0,o.jsx)("path",{d:t,...s}),Ue=e=>{const{Circle:t}=K();return t===void 0?ce(e):(0,o.jsx)(w,{children:(0,o.jsx)(t,{...e})})},Fe=e=>{const{Line:t}=K();return t===void 0?le(e):(0,o.jsx)(w,{children:(0,o.jsx)(t,{...e})})},Ye=e=>{const{Rect:t}=K();return t===void 0?ue(e):(0,o.jsx)(w,{children:(0,o.jsx)(t,{...e})})},Ve=e=>{const{Path:t}=K();return t===void 0?de(e):(0,o.jsx)(w,{children:(0,o.jsx)(t,{...e})})},We=({d:e,source:t,...r})=>{const s=a.useSvgPathMorph(e,a.DEFAULT_SPRING_TRANSITION,t);return(0,o.jsx)(B.motion.path,{d:s,...r})},ze=({children:e,...t})=>(0,o.jsx)("svg",{viewBox:"0 0 1 1",preserveAspectRatio:"none",width:"100%",height:"100%",pointerEvents:"none",...t,children:e}),Xe=({box:e,children:t})=>(0,o.jsx)("svg",{x:(0,h.toPercent)(e.x0),y:(0,h.toPercent)(e.y0),width:(0,h.toPercent)(e.x1-e.x0),height:(0,h.toPercent)(e.y1-e.y0),overflow:"hidden",pointerEvents:"none",children:t}),Qe="drqe3u0",Je="drqe3u1",Ze="drqe3u2",et="drqe3u3",L="drqe3u4",tt="drqe3u5",rt="drqe3u6",st="drqe3u7",$="drqe3u8",nt="drqe3u9",ot="drqe3ua";var at="drqe3uc",it="drqe3ud",ct="drqe3ue",lt="drqe3uf";var ut="drqe3uh",dt="drqe3ui",Z={enabled:"drqe3uk drqe3uj",disabled:"drqe3ul drqe3uj"},ee={ran:"drqe3un drqe3um",dim:"drqe3uo drqe3um"},me={ran:"drqe3uq drqe3up",cached:"drqe3ur drqe3up",untouched:"drqe3us drqe3up"},mt=({width:e=440,style:t,className:r}={})=>{const{compileBus:s}=a.useGraphContext(),[n]=(0,u.useState)(()=>Ce()),[l,c]=(0,u.useState)(!1),[d,m]=(0,u.useState)(h.isCompilerCachingEnabled);(0,u.useEffect)(()=>{const{recordCompile:g}=n.getState(),S=s.getLastTrigger(),x=s.getLastCompile();return S&&x&&g(S,x),s.subscribe(g)},[n,s]);const f=(0,F.useStore)(n,g=>g.lastCompile),R=(0,F.useStore)(n,g=>g.history),C=s.getCacheStats(),T=f===null&&R.length===0,v=()=>{m(g=>{const S=!g;return(0,h.setCompilerCachingEnabled)(S),S})};return(0,o.jsxs)("div",{className:(0,Y.default)(ot,r),style:{width:e,...t},children:[(0,o.jsxs)("div",{className:Qe,children:[(0,o.jsxs)("div",{children:[(0,o.jsx)("div",{className:Je,children:"compile cache"}),(0,o.jsx)("div",{className:ct,children:T?"production: stats disabled":f?`last: ${f.label} · ${z(f.durationMs)}`:"awaiting first compile…"})]}),(0,o.jsx)("button",{type:"button",onClick:()=>c(g=>!g),className:lt,children:l?"▾":"▴"})]}),!l&&(0,o.jsxs)("div",{className:"drqe3ub",children:[(0,o.jsxs)("button",{type:"button",onClick:v,className:d?Z.enabled:Z.disabled,"aria-pressed":d,children:["cache ",d?"enabled":"disabled"]}),(0,o.jsx)("span",{className:"drqe3ug",children:"next compile reflects this toggle"})]}),!l&&!T&&(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(ht,{delta:f?.stages,durations:f?.stageDurationsMs,cumulative:C}),(0,o.jsx)(gt,{entries:R})]})]})},ht=({delta:e,durations:t,cumulative:r})=>(0,o.jsxs)("table",{className:Ze,children:[(0,o.jsx)("thead",{children:(0,o.jsxs)("tr",{className:ut,children:[(0,o.jsx)("th",{className:et,children:"stage"}),(0,o.jsx)("th",{className:L,children:"time"}),(0,o.jsx)("th",{className:L,children:"Δ miss"}),(0,o.jsx)("th",{className:L,children:"Δ hit"}),(0,o.jsx)("th",{className:L,children:"total miss"}),(0,o.jsx)("th",{className:L,children:"total hit"})]})}),(0,o.jsx)("tbody",{children:h.COMPILER_STAGE_KEYS.map(s=>{const n=e?.[s],l=pt(n);return(0,o.jsxs)("tr",{className:at,children:[(0,o.jsxs)("td",{className:tt,children:[(0,o.jsx)("span",{className:me[l],"aria-hidden":!0})," ",s]}),(0,o.jsx)("td",{className:$,children:t===void 0||l==="untouched"?"—":z(t[s])}),(0,o.jsx)("td",{className:l==="ran"?ee.ran:ee.dim,children:n?.misses??0}),(0,o.jsx)("td",{className:$,children:n?.hits??0}),(0,o.jsx)("td",{className:$,children:r[s].misses}),(0,o.jsx)("td",{className:$,children:r[s].hits})]},s)})})]}),gt=({entries:e})=>e.length===0?null:(0,o.jsxs)("div",{className:it,children:[(0,o.jsx)("div",{className:dt,children:"recent compiles"}),e.map(t=>{const r=vt(t.stages,l=>l.misses>0),s=h.COMPILER_STAGE_KEYS.length,n=r===0?"cached":"ran";return(0,o.jsxs)("div",{className:rt,children:[(0,o.jsx)("span",{className:me[n],"aria-hidden":!0}),(0,o.jsx)("span",{className:st,title:t.label,children:t.label}),(0,o.jsxs)("span",{className:nt,children:[r,"/",s," ran · ",z(t.durationMs)]})]},t.id)})]}),pt=e=>!e||e.hits===0&&e.misses===0?"untouched":e.misses>0?"ran":"cached",vt=(e,t)=>{let r=0;for(const s of h.COMPILER_STAGE_KEYS)t(e[s])&&(r+=1);return r},z=e=>e<.1?"<0.1ms":e>=10?`${e.toFixed(0)}ms`:`${e.toFixed(2)}ms`,ft=()=>{const{history:e}=a.useGraphContext(),{stack:t,undo:r,redo:s}=e,n=(0,u.useCallback)(d=>t.subscribe(d),[t]),l=(0,u.useCallback)(()=>t.getSnapshot(),[t]),c=(0,u.useSyncExternalStore)(n,l,l);return(0,u.useMemo)(()=>({...c,undo:r,redo:s}),[c,r,s])},St=new Set(["button","checkbox","color","file","hidden","image","radio","range","reset","submit"]),yt=(e,t={})=>{const{target:r,enabled:s=!0}=t;(0,u.useEffect)(()=>{const n=bt(r);if(!s||!n)return;const l=c=>{if(!Et(c)||c.defaultPrevented||Tt(c.target))return;const d=a.resolveHistoryStep(c);if(!d)return;const m=e.current;m&&(d==="undo"?m.undo():m.redo())&&c.preventDefault()};return n.addEventListener("keydown",l),()=>n.removeEventListener("keydown",l)},[e,r,s])},bt=e=>e===void 0?window:e!==null&&"current"in e?e.current:e,Et=e=>"key"in e,Tt=e=>e instanceof HTMLInputElement?!St.has(e.type):e instanceof HTMLElement?e.isContentEditable||e.tagName==="TEXTAREA":!1,xt=()=>{const{targetBoundaryStore:e}=a.useGraphContext();return(0,F.useStore)(e,t=>t.boundary)};exports.BrandMark=a.BrandMark;exports.CanvasTextMeasurer=a.CanvasTextMeasurer;exports.DefaultFooter=a.DefaultFooter;exports.DefaultGeomCircle=ce;exports.DefaultGeomLine=le;exports.DefaultGeomPath=de;exports.DefaultGeomRect=ue;exports.DefaultGrid=a.DefaultGrid;exports.DefaultHeader=a.DefaultHeader;exports.DefaultSwatch=a.DefaultSwatch;exports.DefaultTooltip=a.DefaultTooltip;exports.DevToolsPanel=mt;exports.GRAPH_MODES=a.GRAPH_MODES;exports.GeomCircle=Ue;exports.GeomLine=Fe;exports.GeomPath=Ve;exports.GeomRect=Ye;exports.GraphErrorBoundary=te;exports.GraphErrorPanel=V;exports.GraphProvider=ie;exports.GraphRenderer=a.GraphRenderer;exports.HoverProvider=a.HoverProvider;exports.IntroFade=a.IntroFade;exports.IntroWipeClip=a.IntroWipeClip;exports.TextMeasurerProvider=a.TextMeasurerProvider;exports.ThemeProvider=a.ThemeProvider;exports.UnitBoxSvg=Xe;exports.UnitSpaceSvg=ze;exports.buildDotsEditOutlineShapes=a.buildDotsEditOutlineShapes;exports.createGraphyKit=Ke;exports.darkTheme=a.darkTheme;exports.defineGeomRenderer=a.defineGeomRenderer;exports.lightTheme=a.lightTheme;exports.lightenCss=a.lightenCss;exports.projectPointCartesian=a.projectPointCartesian;exports.pruneSelection=ae;exports.resolveBrandMarkVisual=a.resolveBrandMarkVisual;exports.resolvePathStroke=a.resolvePathStroke;exports.scalePointToPanel=a.scalePointToPanel;exports.stampAxisEditTarget=a.stampAxisEditTarget;exports.stampGridEditTarget=a.stampGridEditTarget;exports.stampLegendEditTarget=a.stampLegendEditTarget;exports.useElementScreenRect=a.useElementScreenRect;exports.useGeomHitTest=a.useGeomHitTest;exports.useGeomHover=a.useGeomHover;exports.useGeomReaderTree=a.useGeomReaderTree;exports.useGeomStyleReader=a.useGeomStyleReader;exports.useGraphCommands=a.useGraphCommands;exports.useGraphHandle=a.useGraphHandle;exports.useGraphHistory=ft;exports.useGraphHistoryShortcuts=yt;exports.useGraphLocale=a.useGraphLocale;exports.useGraphSelection=a.useGraphSelection;exports.useGuidesTakePress=a.useGuidesTakePress;exports.useHandleScene=a.useHandleScene;exports.useHoverState=a.useHoverState;exports.usePaintDefs=a.usePaintDefs;exports.useResolvedStyle=a.useResolvedStyle;exports.useSceneSelector=a.useSceneSelector;exports.useStyleReaderTree=a.useStyleReaderTree;exports.useStyleResolver=a.useStyleResolver;exports.useTargetBoundary=xt;exports.useTextMeasurer=a.useTextMeasurer;exports.vars=a.vars;
|
package/dist/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { $t as Zt, A as er, At as tr, B as rr, Bt as nr, Cn as J, Ct as sr, Ft as Se, It as be, Jt as or, Kt as ar, L as ir, Lt as cr, M as lr, Mt as z, R as dr, Rt as Y, Ut as ur, V as mr, Wt as Ee, Yt as hr, _n as gr, a as pr, an as fr, at as vr, bn as Z, cn as j, dn as yr, fn as Sr, ft as br, gn as Er, h as Tr, hn as Rr, ht as Nr, i as Cr, it as Gr, j as Dr, kt as qr, ln as Ir, mn as wr, mt as Pr, n as _r, nn as kr, on as Lr, pn as $r, qt as Mr, r as xr, s as Hr, sn as Te, st as Ar, t as Re, vn as Br, w as Or, wt as Kr, xn as Ne, xt as Fr, yn as Ce, zt as Ge } from "./history-chords-
|
|
1
|
+
import { $t as Zt, A as er, At as tr, B as rr, Bt as nr, Cn as J, Ct as sr, Ft as Se, It as be, Jt as or, Kt as ar, L as ir, Lt as cr, M as lr, Mt as z, R as dr, Rt as Y, Ut as ur, V as mr, Wt as Ee, Yt as hr, _n as gr, a as pr, an as fr, at as vr, bn as Z, cn as j, dn as yr, fn as Sr, ft as br, gn as Er, h as Tr, hn as Rr, ht as Nr, i as Cr, it as Gr, j as Dr, kt as qr, ln as Ir, mn as wr, mt as Pr, n as _r, nn as kr, on as Lr, pn as $r, qt as Mr, r as xr, s as Hr, sn as Te, st as Ar, t as Re, vn as Br, w as Or, wt as Kr, xn as Ne, xt as Fr, yn as Ce, zt as Ge } from "./history-chords-D7hQLh47.js";
|
|
2
2
|
import { COMPILER_STAGE_KEYS as ee, Geom as De, GraphCompilationSession as qe, areEditTargetsEqual as Ie, buildDiagnostic as ne, createAnchorResolver as we, createCompiler as Pe, createDataLabelPlacementResolver as _e, createSpecBuilder as ke, createStyleResolver as me, findAnnotation as Le, findLayerById as se, isCompilerCachingEnabled as $e, resolveDefinition as Me, setCompilerCachingEnabled as xe, toPercent as F } from "@graphysdk/viz-engine";
|
|
3
3
|
import { Component as He, createContext as Ae, useCallback as f, useContext as Be, useEffect as x, useId as Oe, useImperativeHandle as Ke, useMemo as M, useRef as oe, useState as b, useSyncExternalStore as Fe } from "react";
|
|
4
4
|
import { Fragment as Ue, jsx as a, 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.
|
|
14
|
+
"version": "1.9.0-beta.1792400629887",
|
|
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.
|
|
53
|
+
"@graphysdk/viz-engine": "1.9.0-beta.1792400629887"
|
|
54
54
|
},
|
|
55
55
|
"peerDependencies": {
|
|
56
56
|
"@tiptap/core": "^3.0.0",
|
|
@@ -152,8 +152,8 @@
|
|
|
152
152
|
"vitest": "^4.1.11",
|
|
153
153
|
"@graphytools/eslint-plugin-graphy": "1.0.0",
|
|
154
154
|
"@graphytools/typescript-config": "0.0.1",
|
|
155
|
-
"@graphytools/
|
|
156
|
-
"@graphytools/
|
|
155
|
+
"@graphytools/eslint-config": "0.0.1",
|
|
156
|
+
"@graphytools/vitest-config": "1.0.0"
|
|
157
157
|
},
|
|
158
158
|
"publishConfig": {
|
|
159
159
|
"access": "public"
|