@graphysdk/react-renderer 1.9.0-beta.1791973199869 → 1.9.0-beta.1791976092663
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-aJhtFY5y.cjs → history-chords-BLQtHKbZ.cjs} +1 -1
- package/dist/{history-chords-DJMC5bsR.js → history-chords-CJ46Kdga.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 Vn = Object.defineProperty, Nl = (e, t) => {
|
|
|
22
22
|
});
|
|
23
23
|
return t || Vn(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.1791976092663");
|
|
26
26
|
function Hl(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-aJhtFY5y.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 Ie(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 ke(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,I]=(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),...Ie(i.scene,l),...ke(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);I(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 k=(0,u.useCallback)(i=>{I(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&&k(i.result),i.command&&g.emit({kind:"command",command:i.command}),i.spec&&R.current?.(i.spec),i.errors&&N([...i.errors])},[k,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:I,history:E,subscribe:N,getScene:D,compileBus:k,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:I}),[M,I]);(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:k,colorScheme:T,styleResolver:P,anchorResolver:S}:null,[g,G,y,j,b,E,n,k,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.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-BLQtHKbZ.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 Ie(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 ke(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,I]=(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),...Ie(i.scene,l),...ke(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);I(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 k=(0,u.useCallback)(i=>{I(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&&k(i.result),i.command&&g.emit({kind:"command",command:i.command}),i.spec&&R.current?.(i.spec),i.errors&&N([...i.errors])},[k,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:I,history:E,subscribe:N,getScene:D,compileBus:k,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:I}),[M,I]);(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:k,colorScheme:T,styleResolver:P,anchorResolver:S}:null,[g,G,y,j,b,E,n,k,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.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 { A as Jt, At as Q, B as er, Ct as tr, Dt as rr, Ft as nr, Gt as sr, Ht as Se, It as j, Kt as or, L as ar, Lt as be, M as ir, Nt as Ee, Ot as cr, Pt as Te, R as lr, Rt as dr, St as ur, V as mr, Vt as hr, Wt as gr, Zt as pr, _n as J, a as fr, an as Re, at as vr, bn as Z, bt as yr, cn as Sr, dn as br, en as Er, fn as Tr, ft as Rr, gn as Ne, h as Nr, hn as Cr, ht as Gr, i as Dr, in as qr, it as Ir, j as wr, ln as Pr, mn as _r, mt as kr, n as Lr, on as Y, pn as $r, qt as Mr, r as Hr, rn as xr, s as Ar, st as Br, t as Ce, un as Or, vn as Ge, w as Kr } from "./history-chords-
|
|
1
|
+
import { A as Jt, At as Q, B as er, Ct as tr, Dt as rr, Ft as nr, Gt as sr, Ht as Se, It as j, Kt as or, L as ar, Lt as be, M as ir, Nt as Ee, Ot as cr, Pt as Te, R as lr, Rt as dr, St as ur, V as mr, Vt as hr, Wt as gr, Zt as pr, _n as J, a as fr, an as Re, at as vr, bn as Z, bt as yr, cn as Sr, dn as br, en as Er, fn as Tr, ft as Rr, gn as Ne, h as Nr, hn as Cr, ht as Gr, i as Dr, in as qr, it as Ir, j as wr, ln as Pr, mn as _r, mt as kr, n as Lr, on as Y, pn as $r, qt as Mr, r as Hr, rn as xr, s as Ar, st as Br, t as Ce, un as Or, vn as Ge, w as Kr } from "./history-chords-CJ46Kdga.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 He, toPercent as F } from "@graphysdk/viz-engine";
|
|
3
3
|
import { Component as xe, createContext as Ae, useCallback as f, useContext as Be, useEffect as H, 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.1791976092663",
|
|
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.1791976092663"
|
|
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
|
-
"@graphytools/vitest-config": "1.0.0",
|
|
155
155
|
"@graphytools/typescript-config": "0.0.1",
|
|
156
|
-
"@graphytools/
|
|
156
|
+
"@graphytools/vitest-config": "1.0.0"
|
|
157
157
|
},
|
|
158
158
|
"publishConfig": {
|
|
159
159
|
"access": "public"
|