@graphysdk/react-renderer 1.9.0-beta.1793700147232 → 1.9.0-beta.1793702966406
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-_OMXH8sB.js → history-chords-DHzCTBn_.js} +3 -3
- package/dist/{history-chords-DAl6BEYR.cjs → history-chords-WlC-7hj0.cjs} +2 -2
- package/dist/index.cjs +1 -1
- package/dist/index.mjs +1 -1
- package/package.json +4 -4
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('./index.css');const o=require("./history-chords-DAl6BEYR.cjs");let h=require("@graphysdk/viz-engine"),d=require("react"),a=require("react/jsx-runtime"),z=require("zustand"),K=require("motion/react"),V=require("zustand/vanilla"),Y=require("clsx");Y=o.__toESM(Y,1);var ge="_1a5iqpb0",pe="_1a5iqpb1";var fe="_1a5iqpb3",ve="_1a5iqpb4",Se="_1a5iqpb5";var W=({errors:e})=>{const[t,...r]=e;return(0,a.jsxs)("div",{role:"alert",className:ge,children:[(0,a.jsx)("strong",{className:pe,children:"This chart could not be rendered."}),t&&(0,a.jsx)(Q,{diagnostic:t}),r.length>0&&(0,a.jsx)("ul",{className:"_1a5iqpb2",children:r.map((n,s)=>(0,a.jsx)("li",{children:(0,a.jsx)(Q,{diagnostic:n})},`${n.code}-${s}`))})]})},Q=({diagnostic:e})=>(0,a.jsxs)("div",{className:fe,children:[(0,a.jsx)("span",{className:ve,children:e.code}),(0,a.jsx)("p",{className:Se,children:e.message}),e.suggestion&&(0,a.jsx)("p",{className:"_1a5iqpb6",children:e.suggestion})]});function ye(e=[],t=[]){return e.length===t.length&&e.every((r,n)=>Object.is(r,t[n]))}var se=class extends d.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);o.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,a.jsx)(W,{errors:[e]});const{forcedErrors:t,children:r}=this.props;return t&&t.length>0?(0,a.jsx)(W,{errors:t}):r}},oe=e=>typeof e=="object"&&"geom"in e&&"render"in e,ae=e=>{const t=(0,h.resolveDefinition)(e);return t instanceof h.Geom?t:null},ie=(e,t)=>{const r=e.filter(n=>be(n,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,J=[],Ge=()=>(0,V.createStore)(e=>({selection:J,setSelection:t=>e(r=>Ee(r.selection,t)?r:{selection:t}),clearSelection:()=>e(t=>t.selection.length===0?t:{selection:J})})),Ee=(e,t)=>e===t?!0:e.length!==t.length?!1:e.every((r,n)=>{const s=t[n];return s!==void 0&&(0,h.areEditTargetsEqual)(r,s)}),Te=process.env.NODE_ENV!=="production",xe=5,Re=e=>{if(!Te)return{emit:()=>{},subscribe:()=>Ce,getLastTrigger:()=>null,getLastCompile:()=>null,getCacheStats:()=>e.getCacheStats()};const t=new Set;let r=null;return{emit:n=>{const s=e.getLastCompile();if(s){r=n;for(const i of t)i(n,s)}},subscribe:n=>(t.add(n),()=>{t.delete(n)}),getLastTrigger:()=>r,getLastCompile:()=>e.getLastCompile(),getCacheStats:()=>e.getCacheStats()}},Pe=()=>(0,V.createStore)(e=>({lastCompile:null,history:[],nextId:1,lastSnapshot:null,recordCompile:(t,r)=>e(n=>{if(n.lastSnapshot===r)return n;const s={id:n.nextId,label:Ie(t),stages:r.stages,stageDurationsMs:r.stageDurationsMs,durationMs:r.durationMs};return{lastCompile:s,history:Ne(n.history,s,xe),nextId:n.nextId+1,lastSnapshot:r}})})),Ce=()=>{},Ie=e=>{switch(e.kind){case"init":return"init";case"spec":return"spec change";case"data":return"data change";case"command":return e.command.metadata.description}},Ne=(e,t,r)=>{const n=e.length>=r?e.length-(r-1):0;return[...e.slice(n),t]};function Z(e){const t=e.filter(oe),r=new Set([...Object.keys(o.BUILT_IN_GEOM_RENDERERS),...t.map(u=>u.geom)]),n=[],s=new Set;for(const u of e){const m=ae(u);m===null||r.has(m.type)||s.has(m.type)||(s.add(m.type),n.push({kind:"userInput",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 i=new Map;for(const u of t){if("definition"in u)continue;const m=`${u.geom}|${u.coord}`,v=i.get(m);v?v.count+=1:i.set(m,{geom:u.geom,coord:u.coord,count:1})}const c=[];for(const{geom:u,coord:m,count:v}of i.values())v<2||c.push({kind:"userInput",severity:"warning",code:"DUPLICATE_REGISTERED_TYPE",message:`Multiple render-only overrides register ('${u}', '${m}') (${v} entries); the last in the array wins.`,context:{requested:`${u}@${m}`,kind:"geom-renderer"},suggestion:`Keep a single render-only override for ('${u}', '${m}').`});return c.push(...Me(e)),{errors:n,warnings:c}}function je(e,t){const{coordSystem:r,layers:n}=e,s=new Set,i=[];for(const c of n)t(c.geom,r.type)!==null||s.has(c.geom)||(s.add(c.geom),i.push({kind:"userInput",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 i}function De(e,t){const{coordSystem:r,layers:n}=e,s=new Set,i=[];for(const c of n){if(c.interactive===!1||c.spatialKind!=="renderHitTest"||s.has(c.geom))continue;const u=t(c.geom,r.type);u===null||u.hitTest||o.isLiveRender(u)||(s.add(c.geom),i.push({kind:"userInput",severity:"warning",code:"MISSING_RENDER_HIT_TEST",message:`Geom '${c.geom}' declares spatialKind 'renderHitTest' 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 a live render (\`{ fn, options: { live: true } }\`, live simulation) to the renderer for ('${c.geom}', '${r.type}').`}))}return i}function Le(e){const t=new Set,r=[];for(const n of e.layers){const s=n.identityKey;n.interactive!==!1&&(n.spatialKind!=="renderHitTest"||typeof s!="object"||t.has(n.geom)||n.data.hasVariable(s.variable)||(t.add(n.geom),r.push({kind:"userInput",severity:"warning",code:"RENDER_HIT_TEST_IDENTITY",message:`Geom '${n.geom}' keys its identity on '${s.variable}', a column its compile output does not emit; its hover lookup is empty.`,context:{requested:n.geom,kind:"geom-renderer"},suggestion:`Emit the '${s.variable}' column from the geom's \`compile()\`, or point \`identityKey\` at a column it does emit.`})))}return r}function _e(e,t){const{coordSystem:r,layers:n}=e,s=new Set,i=[];for(const c of n){if(c.interactive===!1||c.spatialKind!=="renderHitTest"||s.has(c.geom))continue;const u=t(c.geom,r.type);u===null||!u.hitTest||!o.isLiveRender(u)||(s.add(c.geom),i.push({kind:"userInput",severity:"warning",code:"CONFLICTING_RENDER_HIT_TEST",message:`Geom '${c.geom}' declares both a \`hitTest\` factory and a live render; these are alternatives, so only the live render is used.`,context:{requested:c.geom,kind:"geom-renderer"},suggestion:"Keep one: a `hitTest` factory for precomputed geometry, OR a live render (`{ fn, options: { live: true } }`) for a live simulation."}))}return i}function ke(e,t){const r=new Set,n=[];for(const s of e.layers)s.interactive!==!1&&(s.spatialKind!=="renderHitTest"||r.has(s.geom)||t.hasCapability(s.geom)||(r.add(s.geom),n.push({kind:"userInput",severity:"warning",code:"MISSING_ANCHOR_CAPABILITY",message:`Geom '${s.geom}' declares no \`resolveAnchorPosition\`; its observations cannot be annotated, so the editor overlay paints no creation trigger on them.`,context:{requested:s.geom,kind:"geom-renderer"},suggestion:"Implement `resolveAnchorPosition(observation, context)` on the geom, returning the normalised panel position an annotation on that observation belongs at."})));return n}function qe(e,t){const{coordSystem:r,layers:n}=e,s=new Set,i=[];for(const c of n){if(c.interactive===!1||c.spatialKind==="renderHitTest"||s.has(c.geom))continue;const u=t(c.geom,r.type);u===null||!o.isLiveRender(u)||(s.add(c.geom),i.push({kind:"userInput",severity:"warning",code:"LIVE_RENDER_REQUIRES_RENDER_HIT_TEST",message:`Geom '${c.geom}' declares a live render but its layer's spatialKind is '${c.spatialKind}', not 'renderHitTest'; its push-path hover resolves to nothing.`,context:{requested:c.geom,kind:"geom-renderer"},suggestion:"Have the geom's manifest yield spatialKind 'renderHitTest' so the scene layer carries the `byKey` index the live render's `pushHover` resolves against."}))}return i}function we(e,t){let r;return e.layers.flatMap((n,s)=>o.isLiveRender(t(n.geom,e.coordSystem.type))?He(n)?(r??=(0,h.createStyleResolver)().readers(e),(r.geom(n).get("overpaint",void 0,"hovered")?.length??0)===0?[]:[{kind:"userInput",severity:"warning",code:"INVALID_STYLE_RULE",message:`Style 'overpaint' in state 'hovered' is not supported on live geom '${n.geom}' (layer '${n.id}'); it is ignored.`,context:{param:"overpaint",layerIndex:s,requested:n.geom},suggestion:"Remove the hovered overpaint, or paint the hover treatment in the geom's live render."}]):[]:[])}var He=e=>[e.styles.defaults,e.styles.overrides].some(t=>t.some(r=>r.state==="hovered"&&(r.declarations.overpaint?.length??0)>0));function Me(e){const t=new Set,r=[];for(const n of e){const s=ae(n);s===null||t.has(s.type)||s.dataLabelCoordTypes.length===0||s.getDataLabelPlacements!==void 0||(t.add(s.type),r.push({kind:"userInput",severity:"warning",code:"MISSING_DATA_LABEL_PLACEMENT",message:`Geom '${s.type}' declares \`dataLabelCoordTypes\` but implements no \`getDataLabelPlacements\`; its layers paint no data labels.`,context:{requested:s.type,kind:"geom-renderer"},suggestion:"Implement `getDataLabelPlacements(context)` on the geom, or drop `dataLabelCoordTypes` so the compiler warns the author off the flag."}))}return r}var Ae=e=>(0,V.createStore)(t=>({scene:e,setScene:r=>t(n=>n.scene===r?n:{scene:r})})),$e=({spec:e,data:t,colorScheme:r,plugins:n,theme:s,resolveRenderer:i,anchorResolver:c,onSpecChange:u,onError:m,onWarnings:v})=>{const R=o.useLatestRef(u),P=o.useLatestRef(m),E=o.useLatestRef(v),[{session:g,compileBus:p,findGeom:T}]=(0,d.useState)(()=>{const l=(0,h.createCompiler)({plugins:n,theme:s});return{session:new h.GraphCompilationSession(l),compileBus:Re(l),findGeom:f=>l.findGeom(f)}}),[S]=(0,d.useState)(()=>{const l=Z(n??[]),f=Z(s?.plugins??[]);return{errors:[...f.errors,...l.errors],warnings:[...f.warnings,...l.warnings]}}),D=(0,d.useRef)(null),[y]=(0,d.useState)(Oe),C=(0,d.useRef)(null),j=(0,d.useCallback)(l=>S.errors.length===0?l:[...S.errors,...l??[]],[S]),x=(0,d.useCallback)(l=>{if(!l.ok)return l.errors;if(C.current)C.current.getState().setScene(l.scene);else{const f=Ae(l.scene);f.subscribe(y.notify),C.current=f,y.notify()}return null},[y]),[M,q]=(0,d.useState)(()=>{const l=g.compile({spec:e,data:t,colorScheme:r});return D.current=l,j(x(l))}),b=(0,d.useCallback)(l=>l.ok?[...l.warnings,...je(l.scene,i),...De(l.scene,i),...Le(l.scene),..._e(l.scene,i),...qe(l.scene,i),...we(l.scene,i),...ke(l.scene,c)]:l.warnings,[i,c]),I=(0,d.useCallback)(l=>{l.length!==0&&(o.logDiagnostics(l),P.current?.(l))},[P]),N=(0,d.useCallback)(l=>{l.length!==0&&(o.logDiagnostics(l),E.current?.(l))},[E]);(0,d.useEffect)(()=>{const l=D.current;l&&(I([...S.errors,...l.ok?[]:l.errors]),N([...S.warnings,...b(l)]),l.ok&&p.emit({kind:"init"}))},[p,I,N,S,b]),(0,d.useEffect)(()=>{const l=g.update({spec:e,data:t,colorScheme:r});if(!l)return;l.committedSpec&&R.current?.(l.committedSpec);const f=x(l.result);q(j(f)),f&&I(f),N(b(l.result)),f||p.emit({kind:l.hasSpecChange?"spec":"data"})},[e,t,r,g,p,x,I,N,j,b,R]);const w=(0,d.useCallback)(l=>{q(f=>f===null?f:j(null)),N(b(l))},[j,N,b]),A=(0,d.useCallback)(l=>{l.scene&&C.current?.getState().setScene(l.scene),l.result&&w(l.result),l.command&&p.emit({kind:"command",command:l.command}),l.spec&&R.current?.(l.spec),l.errors&&I([...l.errors])},[w,p,R,I]),G=(0,d.useCallback)(l=>{for(const f of l)A(f);return l.some(f=>!!f.scene)},[A]),_=(0,d.useCallback)((l,f)=>{G(g.applyCommand(l,f))},[g,G]),$=(0,d.useCallback)(()=>{G(g.commit())},[g,G]),L=(0,d.useCallback)(()=>G(g.undo()),[g,G]),O=(0,d.useCallback)(()=>G(g.redo()),[g,G]),B=(0,d.useMemo)(()=>({stack:g.history,undo:L,redo:O}),[g,L,O]),U=(0,d.useCallback)(()=>C.current?.getState().scene??null,[]);return{store:C.current,dispatch:_,commit:$,history:B,subscribe:y.subscribe,getScene:U,compileBus:p,compileErrors:M,findGeom:T}},Oe=()=>{const e=new Set;return{subscribe:t=>(e.add(t),()=>{e.delete(t)}),notify:()=>e.forEach(t=>t())}},ce=({data:e,spec:t,plugins:r=[],theme:n,formattingLocale:s,handleRef:i,onSpecChange:c,onError:u,onWarnings:m,colorScheme:v="light",children:R})=>{const P=Be(s,m),[E]=(0,d.useState)(()=>n),g=E?.colorScheme??v,[p]=(0,d.useState)(()=>o.createGeomRendererResolver([...E?.plugins??[],...r].filter(oe))),T=(0,d.useId)(),[S]=(0,d.useState)(()=>(0,h.createAnchorResolver)(r)),[D]=(0,d.useState)(()=>(0,h.createDataLabelPlacementResolver)(r)),[y]=(0,d.useState)(()=>Ge()),[C]=(0,d.useState)(()=>o.createTargetBoundaryStore()),j=(0,d.useMemo)(()=>(0,h.createStyleResolver)({colorScheme:g}),[g]),{store:x,dispatch:M,commit:q,history:b,subscribe:I,getScene:N,compileBus:w,compileErrors:A,findGeom:G}=$e({spec:t,data:e,colorScheme:g,plugins:r,theme:E,resolveRenderer:p,anchorResolver:S,onSpecChange:c,onError:u,onWarnings:m});(0,d.useEffect)(()=>{if(x)return x.subscribe((L,O)=>{if(L.scene.spec===O.scene.spec)return;const{selection:B,setSelection:U}=y.getState();B.length!==0&&U(ie(B,L.scene.spec))})},[x,y]);const _=(0,d.useMemo)(()=>({dispatch:M,commit:q}),[M,q]);(0,d.useImperativeHandle)(i,()=>({commands:_,undo:b.undo,redo:b.redo,subscribe:I,getScene:N,formattingLocale:P,getSelection:()=>y.getState().selection,setSelection:L=>y.getState().setSelection(L),subscribeSelection:y.subscribe,canPlaceDataLabels:D.hasCapability,canFormatDataLabelsAsPercentages:D.hasPercentageFormat}),[_,b,I,N,P,y,D]);const $=(0,d.useMemo)(()=>x?{chartId:T,store:x,selectionStore:y,targetBoundaryStore:C,commands:_,history:b,formattingLocale:P,compileBus:w,colorScheme:g,styleResolver:j,anchorResolver:S,findGeom:G}:null,[T,x,y,C,_,b,P,w,g,j,S,G]);return(0,a.jsx)(se,{forcedErrors:A,onError:u,resetKeys:[t,e],children:$?(0,a.jsx)(o.GraphContext.Provider,{value:$,children:(0,a.jsx)(o.GeomRendererResolverProvider,{value:p,children:(0,a.jsx)(o.DataLabelPlacementResolverProvider,{value:D,children:(0,a.jsx)(o.GeomShapesProvider,{shapes:E?.shapes,children:R})})})}):null})},Be=(e,t)=>{const r=o.useLatestRef(t);return(0,d.useEffect)(()=>{if(e===void 0||(0,h.findIntlLocale)(e)!==void 0)return;const n=[{severity:"warning",kind:"userInput",code:"INVALID_FORMATTING_LOCALE",message:`formattingLocale '${e}' is not a tag Intl can format in, so the chart formats in ${h.DEFAULT_LOCALE}.`}];o.logDiagnostics(n),r.current?.(n)},[e,r]),e===void 0?void 0:(0,h.canonicalizeLocale)(e)};function Fe({theme:e,...t}={}){const r=(0,h.createSpecBuilder)(t);return{...r,GraphProvider:s=>(0,a.jsx)(ce,{...s,plugins:r.plugins,theme:e})}}var k=(e,t)=>{if(typeof e=="number")return Number.isFinite(e)?e:null;if(!e.endsWith("%"))return null;const r=Number.parseFloat(e);return Number.isFinite(r)?r/100*t:null},Ke=({x:e,y:t,width:r,height:n},s)=>{const i=k(e,s.width),c=k(t,s.height),u=k(r,s.width),m=k(n,s.height);return i===null||c===null||u===null||m===null?null:{x:i,y:c,width:u,height:m}},le=({animateTransitions:e,cx:t,cy:r,r:n,effects:s,...i})=>{const c=o.toGeomEffectsStyle(s);return e?(0,a.jsx)(K.motion.circle,{initial:!1,animate:{cx:t,cy:r,r:n},transition:o.DEFAULT_SPRING_TRANSITION,style:c,...i}):(0,a.jsx)("circle",{cx:t,cy:r,r:n,style:c,...i})},ue=({animateTransitions:e,x1:t,y1:r,x2:n,y2:s,effects:i,...c})=>{const u=o.toGeomEffectsStyle(i);return e?(0,a.jsx)(K.motion.line,{initial:!1,animate:{x1:t,y1:r,x2:n,y2:s},transition:o.DEFAULT_SPRING_TRANSITION,style:u,...c}):(0,a.jsx)("line",{x1:t,y1:r,x2:n,y2:s,style:u,...c})},de=({animateTransitions:e,x:t,y:r,width:n,height:s,rx:i,ry:c,effects:u,...m})=>{const v=o.toGeomEffectsStyle(u);return e?(0,a.jsx)(K.motion.rect,{initial:!1,animate:{attrX:t,attrY:r,width:n,height:s,...i!==void 0&&c!==void 0?{rx:i,ry:c}:{}},transition:o.DEFAULT_SPRING_TRANSITION,style:v,...m}):(0,a.jsx)("rect",{x:t,y:r,width:n,height:s,rx:i,ry:c,style:v,...m})},me=({animateTransitions:e,d:t,source:r,effects:n,...s})=>{const i=o.toGeomEffectsStyle(n);return e?(0,a.jsx)(Ve,{d:t,source:r,style:i,...s}):(0,a.jsx)("path",{d:t,style:i,...s})},Ue=e=>{const{Circle:t}=o.useGeomShapes();return t===void 0?le(e):(0,a.jsx)(o.GeomShapesProvider,{children:(0,a.jsx)(t,{...e})})},ze=e=>{const{Line:t}=o.useGeomShapes();return t===void 0?ue(e):(0,a.jsx)(o.GeomShapesProvider,{children:(0,a.jsx)(t,{...e})})},Ye=({cornerRadius:e,...t})=>{const{Rect:r}=o.useGeomShapes(),n=o.useGeomPanelPixelSize(),s=o.useGeomPixelsPerUnit(),i={...t,...Xe(e,t,n,s)};return r===void 0?de(i):(0,a.jsx)(o.GeomShapesProvider,{children:(0,a.jsx)(r,{...i})})},We=e=>{const{Path:t}=o.useGeomShapes();return t===void 0?me(e):(0,a.jsx)(o.GeomShapesProvider,{children:(0,a.jsx)(t,{...e})})},Ve=({d:e,source:t,...r})=>{const n=o.useSvgPathMorph(e,o.DEFAULT_SPRING_TRANSITION,t);return(0,a.jsx)(K.motion.path,{d:n,...r})},Xe=(e,t,r,n)=>{if(e===void 0)return{};const s=(0,h.foldGeomCornerRadii)(e);if(s===void 0)return{};const i=Qe(t,r,n);if(i===null)return s==="full"?{}:te((0,h.resolveGeomCornerRadiusPx)({cornerRadius:s}),n);const c=Math.min((0,h.resolveGeomCornerRadiusPx)({cornerRadius:s,box:i}),Math.min(i.width,i.height)/2);return te(c,n)},Qe=(e,t,r)=>{const n=ee(e.width,t?.width,r.x),s=ee(e.height,t?.height,r.y);return n===null||s===null?null:{width:n,height:s}},ee=(e,t,r)=>{if(typeof e=="number")return Number.isFinite(e)?Math.abs(e)*r:null;if(t===void 0)return null;const n=k(e,t);return n===null?null:Math.abs(n)},te=(e,t)=>t.x<=0||t.y<=0?{rx:0,ry:0}:{rx:e/t.x,ry:e/t.y},Je=({children:e,...t})=>{const r=o.useGeomPanelPixelSize();return(0,a.jsx)("svg",{viewBox:"0 0 1 1",preserveAspectRatio:"none",width:"100%",height:"100%",pointerEvents:"none",...t,children:(0,a.jsx)(o.GeomPanelSizeProvider,{size:r,space:"unit",children:e})})},Ze=({box:e,children:t})=>{const r=o.useGeomPanelSize(),n=r===null?null:r.width*(e.x1-e.x0),s=r===null?null:r.height*(e.y1-e.y0),i=(0,d.useMemo)(()=>n===null||s===null?null:{width:n,height:s},[n,s]);return(0,a.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:(0,a.jsx)(o.GeomPanelSizeProvider,{size:i,children:t})})},et="drqe3u0",tt="drqe3u1",rt="drqe3u2",nt="drqe3u3",H="drqe3u4",st="drqe3u5",ot="drqe3u6",at="drqe3u7",F="drqe3u8",it="drqe3u9",ct="drqe3ua";var lt="drqe3uc",ut="drqe3ud",dt="drqe3ue",mt="drqe3uf";var ht="drqe3uh",gt="drqe3ui",re={enabled:"drqe3uk drqe3uj",disabled:"drqe3ul drqe3uj"},ne={ran:"drqe3un drqe3um",dim:"drqe3uo drqe3um"},he={ran:"drqe3uq drqe3up",cached:"drqe3ur drqe3up",untouched:"drqe3us drqe3up"},pt=({width:e=440,style:t,className:r}={})=>{const{compileBus:n}=o.useGraphContext(),[s]=(0,d.useState)(()=>Pe()),[i,c]=(0,d.useState)(!1),[u,m]=(0,d.useState)(h.isCompilerCachingEnabled);(0,d.useEffect)(()=>{const{recordCompile:p}=s.getState(),T=n.getLastTrigger(),S=n.getLastCompile();return T&&S&&p(T,S),n.subscribe(p)},[s,n]);const v=(0,z.useStore)(s,p=>p.lastCompile),R=(0,z.useStore)(s,p=>p.history),P=n.getCacheStats(),E=v===null&&R.length===0,g=()=>{m(p=>{const T=!p;return(0,h.setCompilerCachingEnabled)(T),T})};return(0,a.jsxs)("div",{className:(0,Y.default)(ct,r),style:{width:e,...t},children:[(0,a.jsxs)("div",{className:et,children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:tt,children:"compile cache"}),(0,a.jsx)("div",{className:dt,children:E?"production: stats disabled":v?`last: ${v.label} · ${X(v.durationMs)}`:"awaiting first compile…"})]}),(0,a.jsx)("button",{type:"button",onClick:()=>c(p=>!p),className:mt,children:i?"▾":"▴"})]}),!i&&(0,a.jsxs)("div",{className:"drqe3ub",children:[(0,a.jsxs)("button",{type:"button",onClick:g,className:u?re.enabled:re.disabled,"aria-pressed":u,children:["cache ",u?"enabled":"disabled"]}),(0,a.jsx)("span",{className:"drqe3ug",children:"next compile reflects this toggle"})]}),!i&&!E&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(ft,{delta:v?.stages,durations:v?.stageDurationsMs,cumulative:P}),(0,a.jsx)(vt,{entries:R})]})]})},ft=({delta:e,durations:t,cumulative:r})=>(0,a.jsxs)("table",{className:rt,children:[(0,a.jsx)("thead",{children:(0,a.jsxs)("tr",{className:ht,children:[(0,a.jsx)("th",{className:nt,children:"stage"}),(0,a.jsx)("th",{className:H,children:"time"}),(0,a.jsx)("th",{className:H,children:"Δ miss"}),(0,a.jsx)("th",{className:H,children:"Δ hit"}),(0,a.jsx)("th",{className:H,children:"total miss"}),(0,a.jsx)("th",{className:H,children:"total hit"})]})}),(0,a.jsx)("tbody",{children:h.COMPILER_STAGE_KEYS.map(n=>{const s=e?.[n],i=St(s);return(0,a.jsxs)("tr",{className:lt,children:[(0,a.jsxs)("td",{className:st,children:[(0,a.jsx)("span",{className:he[i],"aria-hidden":!0})," ",n]}),(0,a.jsx)("td",{className:F,children:t===void 0||i==="untouched"?"—":X(t[n])}),(0,a.jsx)("td",{className:i==="ran"?ne.ran:ne.dim,children:s?.misses??0}),(0,a.jsx)("td",{className:F,children:s?.hits??0}),(0,a.jsx)("td",{className:F,children:r[n].misses}),(0,a.jsx)("td",{className:F,children:r[n].hits})]},n)})})]}),vt=({entries:e})=>e.length===0?null:(0,a.jsxs)("div",{className:ut,children:[(0,a.jsx)("div",{className:gt,children:"recent compiles"}),e.map(t=>{const r=yt(t.stages,i=>i.misses>0),n=h.COMPILER_STAGE_KEYS.length,s=r===0?"cached":"ran";return(0,a.jsxs)("div",{className:ot,children:[(0,a.jsx)("span",{className:he[s],"aria-hidden":!0}),(0,a.jsx)("span",{className:at,title:t.label,children:t.label}),(0,a.jsxs)("span",{className:it,children:[r,"/",n," ran · ",X(t.durationMs)]})]},t.id)})]}),St=e=>!e||e.hits===0&&e.misses===0?"untouched":e.misses>0?"ran":"cached",yt=(e,t)=>{let r=0;for(const n of h.COMPILER_STAGE_KEYS)t(e[n])&&(r+=1);return r},X=e=>e<.1?"<0.1ms":e>=10?`${e.toFixed(0)}ms`:`${e.toFixed(2)}ms`,bt=()=>{const{history:e}=o.useGraphContext(),{stack:t,undo:r,redo:n}=e,s=(0,d.useCallback)(u=>t.subscribe(u),[t]),i=(0,d.useCallback)(()=>t.getSnapshot(),[t]),c=(0,d.useSyncExternalStore)(s,i,i);return(0,d.useMemo)(()=>({...c,undo:r,redo:n}),[c,r,n])},Gt=new Set(["button","checkbox","color","file","hidden","image","radio","range","reset","submit"]),Et=(e,t={})=>{const{target:r,enabled:n=!0}=t;(0,d.useEffect)(()=>{const s=Tt(r);if(!n||!s)return;const i=c=>{if(!xt(c)||c.defaultPrevented||Rt(c.target))return;const u=o.resolveHistoryStep(c);if(!u)return;const m=e.current;m&&(u==="undo"?m.undo():m.redo())&&c.preventDefault()};return s.addEventListener("keydown",i),()=>s.removeEventListener("keydown",i)},[e,r,n])},Tt=e=>e===void 0?window:e!==null&&"current"in e?e.current:e,xt=e=>"key"in e,Rt=e=>e instanceof HTMLInputElement?!Gt.has(e.type):e instanceof HTMLElement?e.isContentEditable||e.tagName==="TEXTAREA":!1,Pt=()=>{const{targetBoundaryStore:e}=o.useGraphContext();return(0,z.useStore)(e,t=>t.boundary)};exports.CanvasTextMeasurer=o.CanvasTextMeasurer;exports.DefaultFooter=o.DefaultFooter;exports.DefaultGeomCircle=le;exports.DefaultGeomLine=ue;exports.DefaultGeomPath=me;exports.DefaultGeomRect=de;exports.DefaultGrid=o.DefaultGrid;exports.DefaultHeader=o.DefaultHeader;exports.DefaultSwatch=o.DefaultSwatch;exports.DefaultTooltip=o.DefaultTooltip;exports.DevToolsPanel=pt;exports.GRAPH_MODES=o.GRAPH_MODES;exports.GeomCircle=Ue;exports.GeomLine=ze;exports.GeomOverpaint=o.GeomOverpaint;exports.GeomPath=We;exports.GeomRect=Ye;exports.GraphErrorBoundary=se;exports.GraphErrorPanel=W;exports.GraphProvider=ce;exports.GraphRenderer=o.GraphRenderer;exports.GraphyBadge=o.GraphyBadge;exports.HoverProvider=o.HoverProvider;exports.IntlProvider=o.ChartIntlProvider;exports.IntroFade=o.IntroFade;exports.IntroWipeClip=o.IntroWipeClip;exports.TextMeasurerProvider=o.TextMeasurerProvider;exports.ThemeProvider=o.ThemeProvider;exports.UnitBoxSvg=Ze;exports.UnitSpaceSvg=Je;exports.buildDotsEditOutlineShapes=o.buildDotsEditOutlineShapes;exports.createGraphyKit=Fe;exports.darkTheme=o.darkTheme;exports.defineGeomRenderer=o.defineGeomRenderer;exports.getBuiltInEditOutlineShapes=o.getBuiltInEditOutlineShapes;exports.lightTheme=o.lightTheme;exports.lightenCss=o.lightenCss;exports.projectPointCartesian=o.projectPointCartesian;exports.pruneSelection=ie;exports.readPositionPixels=k;exports.readRectPixels=Ke;exports.resolveGraphyBadgeVariant=o.resolveGraphyBadgeVariant;exports.resolvePathStroke=o.resolvePathStroke;exports.scalePointToPanel=o.scalePointToPanel;exports.stampAxisEditTarget=o.stampAxisEditTarget;exports.stampGridEditTarget=o.stampGridEditTarget;exports.stampLegendEditTarget=o.stampLegendEditTarget;exports.useElementScreenRect=o.useElementScreenRect;exports.useFormattingLocale=o.useFormattingLocale;exports.useGeomHitTest=o.useGeomHitTest;exports.useGeomHover=o.useGeomHover;exports.useGeomPanelSize=o.useGeomPanelSize;exports.useGeomReaderTree=o.useGeomReaderTree;exports.useGeomStyleReader=o.useGeomStyleReader;exports.useGraphCommands=o.useGraphCommands;exports.useGraphHandle=o.useGraphHandle;exports.useGraphHistory=bt;exports.useGraphHistoryShortcuts=Et;exports.useGraphLocale=o.useGraphLocale;exports.useGraphSelection=o.useGraphSelection;exports.useGuidesTakePress=o.useGuidesTakePress;exports.useHandleScene=o.useHandleScene;exports.useHoverState=o.useHoverState;exports.usePaintDefs=o.usePaintDefs;exports.useResolvedStyle=o.useResolvedStyle;exports.useSceneSelector=o.useSceneSelector;exports.useStyleReaderTree=o.useStyleReaderTree;exports.useStyleResolver=o.useStyleResolver;exports.useTargetBoundary=Pt;exports.useTextMeasurer=o.useTextMeasurer;exports.vars=o.vars;
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('./index.css');const o=require("./history-chords-WlC-7hj0.cjs");let h=require("@graphysdk/viz-engine"),d=require("react"),a=require("react/jsx-runtime"),z=require("zustand"),K=require("motion/react"),V=require("zustand/vanilla"),Y=require("clsx");Y=o.__toESM(Y,1);var ge="_1a5iqpb0",pe="_1a5iqpb1";var fe="_1a5iqpb3",ve="_1a5iqpb4",Se="_1a5iqpb5";var W=({errors:e})=>{const[t,...r]=e;return(0,a.jsxs)("div",{role:"alert",className:ge,children:[(0,a.jsx)("strong",{className:pe,children:"This chart could not be rendered."}),t&&(0,a.jsx)(Q,{diagnostic:t}),r.length>0&&(0,a.jsx)("ul",{className:"_1a5iqpb2",children:r.map((n,s)=>(0,a.jsx)("li",{children:(0,a.jsx)(Q,{diagnostic:n})},`${n.code}-${s}`))})]})},Q=({diagnostic:e})=>(0,a.jsxs)("div",{className:fe,children:[(0,a.jsx)("span",{className:ve,children:e.code}),(0,a.jsx)("p",{className:Se,children:e.message}),e.suggestion&&(0,a.jsx)("p",{className:"_1a5iqpb6",children:e.suggestion})]});function ye(e=[],t=[]){return e.length===t.length&&e.every((r,n)=>Object.is(r,t[n]))}var se=class extends d.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);o.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,a.jsx)(W,{errors:[e]});const{forcedErrors:t,children:r}=this.props;return t&&t.length>0?(0,a.jsx)(W,{errors:t}):r}},oe=e=>typeof e=="object"&&"geom"in e&&"render"in e,ae=e=>{const t=(0,h.resolveDefinition)(e);return t instanceof h.Geom?t:null},ie=(e,t)=>{const r=e.filter(n=>be(n,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,J=[],Ge=()=>(0,V.createStore)(e=>({selection:J,setSelection:t=>e(r=>Ee(r.selection,t)?r:{selection:t}),clearSelection:()=>e(t=>t.selection.length===0?t:{selection:J})})),Ee=(e,t)=>e===t?!0:e.length!==t.length?!1:e.every((r,n)=>{const s=t[n];return s!==void 0&&(0,h.areEditTargetsEqual)(r,s)}),Te=process.env.NODE_ENV!=="production",xe=5,Re=e=>{if(!Te)return{emit:()=>{},subscribe:()=>Ce,getLastTrigger:()=>null,getLastCompile:()=>null,getCacheStats:()=>e.getCacheStats()};const t=new Set;let r=null;return{emit:n=>{const s=e.getLastCompile();if(s){r=n;for(const i of t)i(n,s)}},subscribe:n=>(t.add(n),()=>{t.delete(n)}),getLastTrigger:()=>r,getLastCompile:()=>e.getLastCompile(),getCacheStats:()=>e.getCacheStats()}},Pe=()=>(0,V.createStore)(e=>({lastCompile:null,history:[],nextId:1,lastSnapshot:null,recordCompile:(t,r)=>e(n=>{if(n.lastSnapshot===r)return n;const s={id:n.nextId,label:Ie(t),stages:r.stages,stageDurationsMs:r.stageDurationsMs,durationMs:r.durationMs};return{lastCompile:s,history:Ne(n.history,s,xe),nextId:n.nextId+1,lastSnapshot:r}})})),Ce=()=>{},Ie=e=>{switch(e.kind){case"init":return"init";case"spec":return"spec change";case"data":return"data change";case"command":return e.command.metadata.description}},Ne=(e,t,r)=>{const n=e.length>=r?e.length-(r-1):0;return[...e.slice(n),t]};function Z(e){const t=e.filter(oe),r=new Set([...Object.keys(o.BUILT_IN_GEOM_RENDERERS),...t.map(u=>u.geom)]),n=[],s=new Set;for(const u of e){const m=ae(u);m===null||r.has(m.type)||s.has(m.type)||(s.add(m.type),n.push({kind:"userInput",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 i=new Map;for(const u of t){if("definition"in u)continue;const m=`${u.geom}|${u.coord}`,v=i.get(m);v?v.count+=1:i.set(m,{geom:u.geom,coord:u.coord,count:1})}const c=[];for(const{geom:u,coord:m,count:v}of i.values())v<2||c.push({kind:"userInput",severity:"warning",code:"DUPLICATE_REGISTERED_TYPE",message:`Multiple render-only overrides register ('${u}', '${m}') (${v} entries); the last in the array wins.`,context:{requested:`${u}@${m}`,kind:"geom-renderer"},suggestion:`Keep a single render-only override for ('${u}', '${m}').`});return c.push(...Me(e)),{errors:n,warnings:c}}function je(e,t){const{coordSystem:r,layers:n}=e,s=new Set,i=[];for(const c of n)t(c.geom,r.type)!==null||s.has(c.geom)||(s.add(c.geom),i.push({kind:"userInput",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 i}function De(e,t){const{coordSystem:r,layers:n}=e,s=new Set,i=[];for(const c of n){if(c.interactive===!1||c.spatialKind!=="renderHitTest"||s.has(c.geom))continue;const u=t(c.geom,r.type);u===null||u.hitTest||o.isLiveRender(u)||(s.add(c.geom),i.push({kind:"userInput",severity:"warning",code:"MISSING_RENDER_HIT_TEST",message:`Geom '${c.geom}' declares spatialKind 'renderHitTest' 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 a live render (\`{ fn, options: { live: true } }\`, live simulation) to the renderer for ('${c.geom}', '${r.type}').`}))}return i}function Le(e){const t=new Set,r=[];for(const n of e.layers){const s=n.identityKey;n.interactive!==!1&&(n.spatialKind!=="renderHitTest"||typeof s!="object"||t.has(n.geom)||n.data.hasVariable(s.variable)||(t.add(n.geom),r.push({kind:"userInput",severity:"warning",code:"RENDER_HIT_TEST_IDENTITY",message:`Geom '${n.geom}' keys its identity on '${s.variable}', a column its compile output does not emit; its hover lookup is empty.`,context:{requested:n.geom,kind:"geom-renderer"},suggestion:`Emit the '${s.variable}' column from the geom's \`compile()\`, or point \`identityKey\` at a column it does emit.`})))}return r}function _e(e,t){const{coordSystem:r,layers:n}=e,s=new Set,i=[];for(const c of n){if(c.interactive===!1||c.spatialKind!=="renderHitTest"||s.has(c.geom))continue;const u=t(c.geom,r.type);u===null||!u.hitTest||!o.isLiveRender(u)||(s.add(c.geom),i.push({kind:"userInput",severity:"warning",code:"CONFLICTING_RENDER_HIT_TEST",message:`Geom '${c.geom}' declares both a \`hitTest\` factory and a live render; these are alternatives, so only the live render is used.`,context:{requested:c.geom,kind:"geom-renderer"},suggestion:"Keep one: a `hitTest` factory for precomputed geometry, OR a live render (`{ fn, options: { live: true } }`) for a live simulation."}))}return i}function ke(e,t){const r=new Set,n=[];for(const s of e.layers)s.interactive!==!1&&(s.spatialKind!=="renderHitTest"||r.has(s.geom)||t.hasCapability(s.geom)||(r.add(s.geom),n.push({kind:"userInput",severity:"warning",code:"MISSING_ANCHOR_CAPABILITY",message:`Geom '${s.geom}' declares no \`resolveAnchorPosition\`; its observations cannot be annotated, so the editor overlay paints no creation trigger on them.`,context:{requested:s.geom,kind:"geom-renderer"},suggestion:"Implement `resolveAnchorPosition(observation, context)` on the geom, returning the normalised panel position an annotation on that observation belongs at."})));return n}function qe(e,t){const{coordSystem:r,layers:n}=e,s=new Set,i=[];for(const c of n){if(c.interactive===!1||c.spatialKind==="renderHitTest"||s.has(c.geom))continue;const u=t(c.geom,r.type);u===null||!o.isLiveRender(u)||(s.add(c.geom),i.push({kind:"userInput",severity:"warning",code:"LIVE_RENDER_REQUIRES_RENDER_HIT_TEST",message:`Geom '${c.geom}' declares a live render but its layer's spatialKind is '${c.spatialKind}', not 'renderHitTest'; its push-path hover resolves to nothing.`,context:{requested:c.geom,kind:"geom-renderer"},suggestion:"Have the geom's manifest yield spatialKind 'renderHitTest' so the scene layer carries the `byKey` index the live render's `pushHover` resolves against."}))}return i}function we(e,t){let r;return e.layers.flatMap((n,s)=>o.isLiveRender(t(n.geom,e.coordSystem.type))?He(n)?(r??=(0,h.createStyleResolver)().readers(e),(r.geom(n).get("overpaint",void 0,"hovered")?.length??0)===0?[]:[{kind:"userInput",severity:"warning",code:"INVALID_STYLE_RULE",message:`Style 'overpaint' in state 'hovered' is not supported on live geom '${n.geom}' (layer '${n.id}'); it is ignored.`,context:{param:"overpaint",layerIndex:s,requested:n.geom},suggestion:"Remove the hovered overpaint, or paint the hover treatment in the geom's live render."}]):[]:[])}var He=e=>[e.styles.defaults,e.styles.overrides].some(t=>t.some(r=>r.state==="hovered"&&(r.declarations.overpaint?.length??0)>0));function Me(e){const t=new Set,r=[];for(const n of e){const s=ae(n);s===null||t.has(s.type)||s.dataLabelCoordTypes.length===0||s.getDataLabelPlacements!==void 0||(t.add(s.type),r.push({kind:"userInput",severity:"warning",code:"MISSING_DATA_LABEL_PLACEMENT",message:`Geom '${s.type}' declares \`dataLabelCoordTypes\` but implements no \`getDataLabelPlacements\`; its layers paint no data labels.`,context:{requested:s.type,kind:"geom-renderer"},suggestion:"Implement `getDataLabelPlacements(context)` on the geom, or drop `dataLabelCoordTypes` so the compiler warns the author off the flag."}))}return r}var Ae=e=>(0,V.createStore)(t=>({scene:e,setScene:r=>t(n=>n.scene===r?n:{scene:r})})),$e=({spec:e,data:t,colorScheme:r,plugins:n,theme:s,resolveRenderer:i,anchorResolver:c,onSpecChange:u,onError:m,onWarnings:v})=>{const R=o.useLatestRef(u),P=o.useLatestRef(m),E=o.useLatestRef(v),[{session:g,compileBus:p,findGeom:T}]=(0,d.useState)(()=>{const l=(0,h.createCompiler)({plugins:n,theme:s});return{session:new h.GraphCompilationSession(l),compileBus:Re(l),findGeom:f=>l.findGeom(f)}}),[S]=(0,d.useState)(()=>{const l=Z(n??[]),f=Z(s?.plugins??[]);return{errors:[...f.errors,...l.errors],warnings:[...f.warnings,...l.warnings]}}),D=(0,d.useRef)(null),[y]=(0,d.useState)(Oe),C=(0,d.useRef)(null),j=(0,d.useCallback)(l=>S.errors.length===0?l:[...S.errors,...l??[]],[S]),x=(0,d.useCallback)(l=>{if(!l.ok)return l.errors;if(C.current)C.current.getState().setScene(l.scene);else{const f=Ae(l.scene);f.subscribe(y.notify),C.current=f,y.notify()}return null},[y]),[M,q]=(0,d.useState)(()=>{const l=g.compile({spec:e,data:t,colorScheme:r});return D.current=l,j(x(l))}),b=(0,d.useCallback)(l=>l.ok?[...l.warnings,...je(l.scene,i),...De(l.scene,i),...Le(l.scene),..._e(l.scene,i),...qe(l.scene,i),...we(l.scene,i),...ke(l.scene,c)]:l.warnings,[i,c]),I=(0,d.useCallback)(l=>{l.length!==0&&(o.logDiagnostics(l),P.current?.(l))},[P]),N=(0,d.useCallback)(l=>{l.length!==0&&(o.logDiagnostics(l),E.current?.(l))},[E]);(0,d.useEffect)(()=>{const l=D.current;l&&(I([...S.errors,...l.ok?[]:l.errors]),N([...S.warnings,...b(l)]),l.ok&&p.emit({kind:"init"}))},[p,I,N,S,b]),(0,d.useEffect)(()=>{const l=g.update({spec:e,data:t,colorScheme:r});if(!l)return;l.committedSpec&&R.current?.(l.committedSpec);const f=x(l.result);q(j(f)),f&&I(f),N(b(l.result)),f||p.emit({kind:l.hasSpecChange?"spec":"data"})},[e,t,r,g,p,x,I,N,j,b,R]);const w=(0,d.useCallback)(l=>{q(f=>f===null?f:j(null)),N(b(l))},[j,N,b]),A=(0,d.useCallback)(l=>{l.scene&&C.current?.getState().setScene(l.scene),l.result&&w(l.result),l.command&&p.emit({kind:"command",command:l.command}),l.spec&&R.current?.(l.spec),l.errors&&I([...l.errors])},[w,p,R,I]),G=(0,d.useCallback)(l=>{for(const f of l)A(f);return l.some(f=>!!f.scene)},[A]),_=(0,d.useCallback)((l,f)=>{G(g.applyCommand(l,f))},[g,G]),$=(0,d.useCallback)(()=>{G(g.commit())},[g,G]),L=(0,d.useCallback)(()=>G(g.undo()),[g,G]),O=(0,d.useCallback)(()=>G(g.redo()),[g,G]),B=(0,d.useMemo)(()=>({stack:g.history,undo:L,redo:O}),[g,L,O]),U=(0,d.useCallback)(()=>C.current?.getState().scene??null,[]);return{store:C.current,dispatch:_,commit:$,history:B,subscribe:y.subscribe,getScene:U,compileBus:p,compileErrors:M,findGeom:T}},Oe=()=>{const e=new Set;return{subscribe:t=>(e.add(t),()=>{e.delete(t)}),notify:()=>e.forEach(t=>t())}},ce=({data:e,spec:t,plugins:r=[],theme:n,formattingLocale:s,handleRef:i,onSpecChange:c,onError:u,onWarnings:m,colorScheme:v="light",children:R})=>{const P=Be(s,m),[E]=(0,d.useState)(()=>n),g=E?.colorScheme??v,[p]=(0,d.useState)(()=>o.createGeomRendererResolver([...E?.plugins??[],...r].filter(oe))),T=(0,d.useId)(),[S]=(0,d.useState)(()=>(0,h.createAnchorResolver)(r)),[D]=(0,d.useState)(()=>(0,h.createDataLabelPlacementResolver)(r)),[y]=(0,d.useState)(()=>Ge()),[C]=(0,d.useState)(()=>o.createTargetBoundaryStore()),j=(0,d.useMemo)(()=>(0,h.createStyleResolver)({colorScheme:g}),[g]),{store:x,dispatch:M,commit:q,history:b,subscribe:I,getScene:N,compileBus:w,compileErrors:A,findGeom:G}=$e({spec:t,data:e,colorScheme:g,plugins:r,theme:E,resolveRenderer:p,anchorResolver:S,onSpecChange:c,onError:u,onWarnings:m});(0,d.useEffect)(()=>{if(x)return x.subscribe((L,O)=>{if(L.scene.spec===O.scene.spec)return;const{selection:B,setSelection:U}=y.getState();B.length!==0&&U(ie(B,L.scene.spec))})},[x,y]);const _=(0,d.useMemo)(()=>({dispatch:M,commit:q}),[M,q]);(0,d.useImperativeHandle)(i,()=>({commands:_,undo:b.undo,redo:b.redo,subscribe:I,getScene:N,formattingLocale:P,getSelection:()=>y.getState().selection,setSelection:L=>y.getState().setSelection(L),subscribeSelection:y.subscribe,canPlaceDataLabels:D.hasCapability,canFormatDataLabelsAsPercentages:D.hasPercentageFormat}),[_,b,I,N,P,y,D]);const $=(0,d.useMemo)(()=>x?{chartId:T,store:x,selectionStore:y,targetBoundaryStore:C,commands:_,history:b,formattingLocale:P,compileBus:w,colorScheme:g,styleResolver:j,anchorResolver:S,findGeom:G}:null,[T,x,y,C,_,b,P,w,g,j,S,G]);return(0,a.jsx)(se,{forcedErrors:A,onError:u,resetKeys:[t,e],children:$?(0,a.jsx)(o.GraphContext.Provider,{value:$,children:(0,a.jsx)(o.GeomRendererResolverProvider,{value:p,children:(0,a.jsx)(o.DataLabelPlacementResolverProvider,{value:D,children:(0,a.jsx)(o.GeomShapesProvider,{shapes:E?.shapes,children:R})})})}):null})},Be=(e,t)=>{const r=o.useLatestRef(t);return(0,d.useEffect)(()=>{if(e===void 0||(0,h.findIntlLocale)(e)!==void 0)return;const n=[{severity:"warning",kind:"userInput",code:"INVALID_FORMATTING_LOCALE",message:`formattingLocale '${e}' is not a tag Intl can format in, so the chart formats in ${h.DEFAULT_LOCALE}.`}];o.logDiagnostics(n),r.current?.(n)},[e,r]),e===void 0?void 0:(0,h.canonicalizeLocale)(e)};function Fe({theme:e,...t}={}){const r=(0,h.createSpecBuilder)(t);return{...r,GraphProvider:s=>(0,a.jsx)(ce,{...s,plugins:r.plugins,theme:e})}}var k=(e,t)=>{if(typeof e=="number")return Number.isFinite(e)?e:null;if(!e.endsWith("%"))return null;const r=Number.parseFloat(e);return Number.isFinite(r)?r/100*t:null},Ke=({x:e,y:t,width:r,height:n},s)=>{const i=k(e,s.width),c=k(t,s.height),u=k(r,s.width),m=k(n,s.height);return i===null||c===null||u===null||m===null?null:{x:i,y:c,width:u,height:m}},le=({animateTransitions:e,cx:t,cy:r,r:n,effects:s,...i})=>{const c=o.toGeomEffectsStyle(s);return e?(0,a.jsx)(K.motion.circle,{initial:!1,animate:{cx:t,cy:r,r:n},transition:o.DEFAULT_SPRING_TRANSITION,style:c,...i}):(0,a.jsx)("circle",{cx:t,cy:r,r:n,style:c,...i})},ue=({animateTransitions:e,x1:t,y1:r,x2:n,y2:s,effects:i,...c})=>{const u=o.toGeomEffectsStyle(i);return e?(0,a.jsx)(K.motion.line,{initial:!1,animate:{x1:t,y1:r,x2:n,y2:s},transition:o.DEFAULT_SPRING_TRANSITION,style:u,...c}):(0,a.jsx)("line",{x1:t,y1:r,x2:n,y2:s,style:u,...c})},de=({animateTransitions:e,x:t,y:r,width:n,height:s,rx:i,ry:c,effects:u,...m})=>{const v=o.toGeomEffectsStyle(u);return e?(0,a.jsx)(K.motion.rect,{initial:!1,animate:{attrX:t,attrY:r,width:n,height:s,...i!==void 0&&c!==void 0?{rx:i,ry:c}:{}},transition:o.DEFAULT_SPRING_TRANSITION,style:v,...m}):(0,a.jsx)("rect",{x:t,y:r,width:n,height:s,rx:i,ry:c,style:v,...m})},me=({animateTransitions:e,d:t,source:r,effects:n,...s})=>{const i=o.toGeomEffectsStyle(n);return e?(0,a.jsx)(Ve,{d:t,source:r,style:i,...s}):(0,a.jsx)("path",{d:t,style:i,...s})},Ue=e=>{const{Circle:t}=o.useGeomShapes();return t===void 0?le(e):(0,a.jsx)(o.GeomShapesProvider,{children:(0,a.jsx)(t,{...e})})},ze=e=>{const{Line:t}=o.useGeomShapes();return t===void 0?ue(e):(0,a.jsx)(o.GeomShapesProvider,{children:(0,a.jsx)(t,{...e})})},Ye=({cornerRadius:e,...t})=>{const{Rect:r}=o.useGeomShapes(),n=o.useGeomPanelPixelSize(),s=o.useGeomPixelsPerUnit(),i={...t,...Xe(e,t,n,s)};return r===void 0?de(i):(0,a.jsx)(o.GeomShapesProvider,{children:(0,a.jsx)(r,{...i})})},We=e=>{const{Path:t}=o.useGeomShapes();return t===void 0?me(e):(0,a.jsx)(o.GeomShapesProvider,{children:(0,a.jsx)(t,{...e})})},Ve=({d:e,source:t,...r})=>{const n=o.useSvgPathMorph(e,o.DEFAULT_SPRING_TRANSITION,t);return(0,a.jsx)(K.motion.path,{d:n,...r})},Xe=(e,t,r,n)=>{if(e===void 0)return{};const s=(0,h.foldGeomCornerRadii)(e);if(s===void 0)return{};const i=Qe(t,r,n);if(i===null)return s==="full"?{}:te((0,h.resolveGeomCornerRadiusPx)({cornerRadius:s}),n);const c=Math.min((0,h.resolveGeomCornerRadiusPx)({cornerRadius:s,box:i}),Math.min(i.width,i.height)/2);return te(c,n)},Qe=(e,t,r)=>{const n=ee(e.width,t?.width,r.x),s=ee(e.height,t?.height,r.y);return n===null||s===null?null:{width:n,height:s}},ee=(e,t,r)=>{if(typeof e=="number")return Number.isFinite(e)?Math.abs(e)*r:null;if(t===void 0)return null;const n=k(e,t);return n===null?null:Math.abs(n)},te=(e,t)=>t.x<=0||t.y<=0?{rx:0,ry:0}:{rx:e/t.x,ry:e/t.y},Je=({children:e,...t})=>{const r=o.useGeomPanelPixelSize();return(0,a.jsx)("svg",{viewBox:"0 0 1 1",preserveAspectRatio:"none",width:"100%",height:"100%",pointerEvents:"none",...t,children:(0,a.jsx)(o.GeomPanelSizeProvider,{size:r,space:"unit",children:e})})},Ze=({box:e,children:t})=>{const r=o.useGeomPanelSize(),n=r===null?null:r.width*(e.x1-e.x0),s=r===null?null:r.height*(e.y1-e.y0),i=(0,d.useMemo)(()=>n===null||s===null?null:{width:n,height:s},[n,s]);return(0,a.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:(0,a.jsx)(o.GeomPanelSizeProvider,{size:i,children:t})})},et="drqe3u0",tt="drqe3u1",rt="drqe3u2",nt="drqe3u3",H="drqe3u4",st="drqe3u5",ot="drqe3u6",at="drqe3u7",F="drqe3u8",it="drqe3u9",ct="drqe3ua";var lt="drqe3uc",ut="drqe3ud",dt="drqe3ue",mt="drqe3uf";var ht="drqe3uh",gt="drqe3ui",re={enabled:"drqe3uk drqe3uj",disabled:"drqe3ul drqe3uj"},ne={ran:"drqe3un drqe3um",dim:"drqe3uo drqe3um"},he={ran:"drqe3uq drqe3up",cached:"drqe3ur drqe3up",untouched:"drqe3us drqe3up"},pt=({width:e=440,style:t,className:r}={})=>{const{compileBus:n}=o.useGraphContext(),[s]=(0,d.useState)(()=>Pe()),[i,c]=(0,d.useState)(!1),[u,m]=(0,d.useState)(h.isCompilerCachingEnabled);(0,d.useEffect)(()=>{const{recordCompile:p}=s.getState(),T=n.getLastTrigger(),S=n.getLastCompile();return T&&S&&p(T,S),n.subscribe(p)},[s,n]);const v=(0,z.useStore)(s,p=>p.lastCompile),R=(0,z.useStore)(s,p=>p.history),P=n.getCacheStats(),E=v===null&&R.length===0,g=()=>{m(p=>{const T=!p;return(0,h.setCompilerCachingEnabled)(T),T})};return(0,a.jsxs)("div",{className:(0,Y.default)(ct,r),style:{width:e,...t},children:[(0,a.jsxs)("div",{className:et,children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:tt,children:"compile cache"}),(0,a.jsx)("div",{className:dt,children:E?"production: stats disabled":v?`last: ${v.label} · ${X(v.durationMs)}`:"awaiting first compile…"})]}),(0,a.jsx)("button",{type:"button",onClick:()=>c(p=>!p),className:mt,children:i?"▾":"▴"})]}),!i&&(0,a.jsxs)("div",{className:"drqe3ub",children:[(0,a.jsxs)("button",{type:"button",onClick:g,className:u?re.enabled:re.disabled,"aria-pressed":u,children:["cache ",u?"enabled":"disabled"]}),(0,a.jsx)("span",{className:"drqe3ug",children:"next compile reflects this toggle"})]}),!i&&!E&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(ft,{delta:v?.stages,durations:v?.stageDurationsMs,cumulative:P}),(0,a.jsx)(vt,{entries:R})]})]})},ft=({delta:e,durations:t,cumulative:r})=>(0,a.jsxs)("table",{className:rt,children:[(0,a.jsx)("thead",{children:(0,a.jsxs)("tr",{className:ht,children:[(0,a.jsx)("th",{className:nt,children:"stage"}),(0,a.jsx)("th",{className:H,children:"time"}),(0,a.jsx)("th",{className:H,children:"Δ miss"}),(0,a.jsx)("th",{className:H,children:"Δ hit"}),(0,a.jsx)("th",{className:H,children:"total miss"}),(0,a.jsx)("th",{className:H,children:"total hit"})]})}),(0,a.jsx)("tbody",{children:h.COMPILER_STAGE_KEYS.map(n=>{const s=e?.[n],i=St(s);return(0,a.jsxs)("tr",{className:lt,children:[(0,a.jsxs)("td",{className:st,children:[(0,a.jsx)("span",{className:he[i],"aria-hidden":!0})," ",n]}),(0,a.jsx)("td",{className:F,children:t===void 0||i==="untouched"?"—":X(t[n])}),(0,a.jsx)("td",{className:i==="ran"?ne.ran:ne.dim,children:s?.misses??0}),(0,a.jsx)("td",{className:F,children:s?.hits??0}),(0,a.jsx)("td",{className:F,children:r[n].misses}),(0,a.jsx)("td",{className:F,children:r[n].hits})]},n)})})]}),vt=({entries:e})=>e.length===0?null:(0,a.jsxs)("div",{className:ut,children:[(0,a.jsx)("div",{className:gt,children:"recent compiles"}),e.map(t=>{const r=yt(t.stages,i=>i.misses>0),n=h.COMPILER_STAGE_KEYS.length,s=r===0?"cached":"ran";return(0,a.jsxs)("div",{className:ot,children:[(0,a.jsx)("span",{className:he[s],"aria-hidden":!0}),(0,a.jsx)("span",{className:at,title:t.label,children:t.label}),(0,a.jsxs)("span",{className:it,children:[r,"/",n," ran · ",X(t.durationMs)]})]},t.id)})]}),St=e=>!e||e.hits===0&&e.misses===0?"untouched":e.misses>0?"ran":"cached",yt=(e,t)=>{let r=0;for(const n of h.COMPILER_STAGE_KEYS)t(e[n])&&(r+=1);return r},X=e=>e<.1?"<0.1ms":e>=10?`${e.toFixed(0)}ms`:`${e.toFixed(2)}ms`,bt=()=>{const{history:e}=o.useGraphContext(),{stack:t,undo:r,redo:n}=e,s=(0,d.useCallback)(u=>t.subscribe(u),[t]),i=(0,d.useCallback)(()=>t.getSnapshot(),[t]),c=(0,d.useSyncExternalStore)(s,i,i);return(0,d.useMemo)(()=>({...c,undo:r,redo:n}),[c,r,n])},Gt=new Set(["button","checkbox","color","file","hidden","image","radio","range","reset","submit"]),Et=(e,t={})=>{const{target:r,enabled:n=!0}=t;(0,d.useEffect)(()=>{const s=Tt(r);if(!n||!s)return;const i=c=>{if(!xt(c)||c.defaultPrevented||Rt(c.target))return;const u=o.resolveHistoryStep(c);if(!u)return;const m=e.current;m&&(u==="undo"?m.undo():m.redo())&&c.preventDefault()};return s.addEventListener("keydown",i),()=>s.removeEventListener("keydown",i)},[e,r,n])},Tt=e=>e===void 0?window:e!==null&&"current"in e?e.current:e,xt=e=>"key"in e,Rt=e=>e instanceof HTMLInputElement?!Gt.has(e.type):e instanceof HTMLElement?e.isContentEditable||e.tagName==="TEXTAREA":!1,Pt=()=>{const{targetBoundaryStore:e}=o.useGraphContext();return(0,z.useStore)(e,t=>t.boundary)};exports.CanvasTextMeasurer=o.CanvasTextMeasurer;exports.DefaultFooter=o.DefaultFooter;exports.DefaultGeomCircle=le;exports.DefaultGeomLine=ue;exports.DefaultGeomPath=me;exports.DefaultGeomRect=de;exports.DefaultGrid=o.DefaultGrid;exports.DefaultHeader=o.DefaultHeader;exports.DefaultSwatch=o.DefaultSwatch;exports.DefaultTooltip=o.DefaultTooltip;exports.DevToolsPanel=pt;exports.GRAPH_MODES=o.GRAPH_MODES;exports.GeomCircle=Ue;exports.GeomLine=ze;exports.GeomOverpaint=o.GeomOverpaint;exports.GeomPath=We;exports.GeomRect=Ye;exports.GraphErrorBoundary=se;exports.GraphErrorPanel=W;exports.GraphProvider=ce;exports.GraphRenderer=o.GraphRenderer;exports.GraphyBadge=o.GraphyBadge;exports.HoverProvider=o.HoverProvider;exports.IntlProvider=o.ChartIntlProvider;exports.IntroFade=o.IntroFade;exports.IntroWipeClip=o.IntroWipeClip;exports.TextMeasurerProvider=o.TextMeasurerProvider;exports.ThemeProvider=o.ThemeProvider;exports.UnitBoxSvg=Ze;exports.UnitSpaceSvg=Je;exports.buildDotsEditOutlineShapes=o.buildDotsEditOutlineShapes;exports.createGraphyKit=Fe;exports.darkTheme=o.darkTheme;exports.defineGeomRenderer=o.defineGeomRenderer;exports.getBuiltInEditOutlineShapes=o.getBuiltInEditOutlineShapes;exports.lightTheme=o.lightTheme;exports.lightenCss=o.lightenCss;exports.projectPointCartesian=o.projectPointCartesian;exports.pruneSelection=ie;exports.readPositionPixels=k;exports.readRectPixels=Ke;exports.resolveGraphyBadgeVariant=o.resolveGraphyBadgeVariant;exports.resolvePathStroke=o.resolvePathStroke;exports.scalePointToPanel=o.scalePointToPanel;exports.stampAxisEditTarget=o.stampAxisEditTarget;exports.stampGridEditTarget=o.stampGridEditTarget;exports.stampLegendEditTarget=o.stampLegendEditTarget;exports.useElementScreenRect=o.useElementScreenRect;exports.useFormattingLocale=o.useFormattingLocale;exports.useGeomHitTest=o.useGeomHitTest;exports.useGeomHover=o.useGeomHover;exports.useGeomPanelSize=o.useGeomPanelSize;exports.useGeomReaderTree=o.useGeomReaderTree;exports.useGeomStyleReader=o.useGeomStyleReader;exports.useGraphCommands=o.useGraphCommands;exports.useGraphHandle=o.useGraphHandle;exports.useGraphHistory=bt;exports.useGraphHistoryShortcuts=Et;exports.useGraphLocale=o.useGraphLocale;exports.useGraphSelection=o.useGraphSelection;exports.useGuidesTakePress=o.useGuidesTakePress;exports.useHandleScene=o.useHandleScene;exports.useHoverState=o.useHoverState;exports.usePaintDefs=o.usePaintDefs;exports.useResolvedStyle=o.useResolvedStyle;exports.useSceneSelector=o.useSceneSelector;exports.useStyleReaderTree=o.useStyleReaderTree;exports.useStyleResolver=o.useStyleResolver;exports.useTargetBoundary=Pt;exports.useTextMeasurer=o.useTextMeasurer;exports.vars=o.vars;
|
package/dist/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { $t as ur, An as mr, B as hr, Bt as Ne, Dn as gr, Dt as pr, En as fr, Ft as vr, Gt as Ie, Ht as yr, In as V, Kt as Sr, Lt as z, M as br, Mn as Ce, Mt as Er, N as Tr, Nn as ne, Nt as Rr, On as Gr, Pn as De, Pt as Nr, Qt as Ir, R as Cr, Sn as Dr, Tn as wr, Ut as Lr, V as Pr, Vt as we, Wt as X, Xt as Le, Yt as qr, _n as Q, a as _r, an as kr, at as Hr, bn as J, cn as $r, dn as xr, en as Mr, fn as Se, gn as Pe, h as Ar, hn as qe, ht as Br, i as Or, j as Fr, jn as Kr, kn as Ur, kt as jr, lt as Wr, mn as be, n as Yr, ot as zr, pn as B, r as Vr, s as Xr, st as Qr, t as _e, tn as Jr, vn as Zr, vt as en, w as tn, wn as rn, xn as Z, xt as nn, yn as ke, yt as sn, z as on } from "./history-chords-
|
|
1
|
+
import { $t as ur, An as mr, B as hr, Bt as Ne, Dn as gr, Dt as pr, En as fr, Ft as vr, Gt as Ie, Ht as yr, In as V, Kt as Sr, Lt as z, M as br, Mn as Ce, Mt as Er, N as Tr, Nn as ne, Nt as Rr, On as Gr, Pn as De, Pt as Nr, Qt as Ir, R as Cr, Sn as Dr, Tn as wr, Ut as Lr, V as Pr, Vt as we, Wt as X, Xt as Le, Yt as qr, _n as Q, a as _r, an as kr, at as Hr, bn as J, cn as $r, dn as xr, en as Mr, fn as Se, gn as Pe, h as Ar, hn as qe, ht as Br, i as Or, j as Fr, jn as Kr, kn as Ur, kt as jr, lt as Wr, mn as be, n as Yr, ot as zr, pn as B, r as Vr, s as Xr, st as Qr, t as _e, tn as Jr, vn as Zr, vt as en, w as tn, wn as rn, xn as Z, xt as nn, yn as ke, yt as sn, z as on } from "./history-chords-DHzCTBn_.js";
|
|
2
2
|
import { COMPILER_STAGE_KEYS as se, DEFAULT_LOCALE as He, Geom as $e, GraphCompilationSession as xe, areEditTargetsEqual as Me, buildDiagnostic as ie, canonicalizeLocale as Ae, createAnchorResolver as Be, createCompiler as Oe, createDataLabelPlacementResolver as Fe, createSpecBuilder as Ke, createStyleResolver as Ee, findAnnotation as Ue, findIntlLocale as je, findLayerById as ce, foldGeomCornerRadii as We, isCompilerCachingEnabled as Ye, resolveDefinition as ze, resolveGeomCornerRadiusPx as le, setCompilerCachingEnabled as Ve, toPercent as W } from "@graphysdk/viz-engine";
|
|
3
3
|
import { Component as Xe, useCallback as p, useEffect as H, useId as Qe, useImperativeHandle as Je, useMemo as k, useRef as de, useState as S, useSyncExternalStore as Ze } from "react";
|
|
4
4
|
import { Fragment as et, jsx as c, jsxs as f } 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.1793702966406",
|
|
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.1793702966406"
|
|
54
54
|
},
|
|
55
55
|
"peerDependencies": {
|
|
56
56
|
"@tiptap/core": "^3.0.0",
|
|
@@ -151,9 +151,9 @@
|
|
|
151
151
|
"vite-plugin-lib-inject-css": "^2.2.2",
|
|
152
152
|
"vitest": "^4.1.11",
|
|
153
153
|
"@graphytools/eslint-plugin-graphy": "1.0.0",
|
|
154
|
+
"@graphytools/vitest-config": "1.0.0",
|
|
154
155
|
"@graphytools/typescript-config": "0.0.1",
|
|
155
|
-
"@graphytools/eslint-config": "0.0.1"
|
|
156
|
-
"@graphytools/vitest-config": "1.0.0"
|
|
156
|
+
"@graphytools/eslint-config": "0.0.1"
|
|
157
157
|
},
|
|
158
158
|
"publishConfig": {
|
|
159
159
|
"access": "public"
|