@graview/react 0.1.61 → 0.1.63

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.
@@ -0,0 +1,63 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { pluralOf, SCENE_LAYERS } from "@graview/core";
3
+ import { lastRunWords, toIso, workflowSpots, workflowsOnTheMap } from "@graview/core/scene";
4
+ import { useMemo } from "react";
5
+ import "./provider.js"; // A door: tied to what the page drew first (TIED DOORS, packages/primitives/src/frame.ts).
6
+ const CSS = `.graview-workflows{position:absolute;left:0;top:0;pointer-events:none;z-index:${SCENE_LAYERS.plots};opacity:var(--graview-altitude);transition:opacity 640ms cubic-bezier(.33,0,.2,1)}
7
+ .graview-workflow-wire{fill:none;stroke:var(--graview-accent);stroke-width:1.5;stroke-opacity:.7;stroke-linecap:round}
8
+ .graview-workflow-wire[data-wire=reads]{stroke-dasharray:3 4;stroke-opacity:.55}
9
+ .graview-workflow-spot{fill:var(--graview-accent);stroke:var(--graview-panel);stroke-width:1.5}
10
+ .graview-workflow{position:absolute;transform:translate(10px,-50%);max-width:16rem;padding:.25rem .5rem;border-radius:.375rem;background:var(--graview-panel);color:var(--graview-ink);border:1px solid color-mix(in oklab,var(--graview-accent) 45%,transparent);font-size:.75rem;line-height:1.25;box-shadow:0 1px 2px color-mix(in oklab,var(--graview-ink) 12%,transparent)}
11
+ .graview-workflow-title{display:block;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
12
+ .graview-workflow-last{display:block;color:var(--graview-ink-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
13
+ .graview-workflows [data-graview-workflow-status=paused]{opacity:.45}`;
14
+ /** The kinds a workflow touches, said by what each is called: "reads routines; writes events". */
15
+ const touchWords = (workflow, schema) => {
16
+ const said = (kinds) => kinds.map((kind) => pluralOf(schema, kind).toLowerCase()).join(", ");
17
+ return [workflow.reads.length > 0 ? `reads ${said(workflow.reads)}` : "", workflow.writes.length > 0 ? `writes ${said(workflow.writes)}` : ""].filter(Boolean).join("; ");
18
+ };
19
+ export function WorkflowsLayer({ frame, width, height, pan, app, workflows: declared, acts, runs, graphVersion, hiddenKinds }) {
20
+ const workflows = useMemo(() => workflowsOnTheMap(app, declared, acts), [app, declared, acts]);
21
+ const city = frame.city;
22
+ const plots = new Map();
23
+ for (const node of frame.nodes) {
24
+ if (node.plot && Math.round(node.plane) === 2 && !hiddenKinds.has(node.kind))
25
+ plots.set(node.kind, node.plot);
26
+ }
27
+ const spots = workflowSpots(workflows, plots);
28
+ // Read again whenever the graph changes: a run's ops are what move it.
29
+ // eslint-disable-next-line react-hooks/exhaustive-deps
30
+ const said = useMemo(() => new Map(workflows.map((workflow) => [workflow.name, runs ? lastRunWords(runs.last(workflow.name)) : undefined])), [workflows, runs, graphVersion]);
31
+ if (!city || spots.length === 0)
32
+ return null;
33
+ const cell = city.cell;
34
+ const tilt = city.tilt ?? 0.5;
35
+ const x0 = city.originX + pan.x;
36
+ const y0 = city.originY + pan.y;
37
+ const at = (col, row) => {
38
+ const iso = toIso(col, row, cell, tilt);
39
+ return { x: x0 + iso.x, y: y0 + iso.y };
40
+ };
41
+ const byName = new Map(workflows.map((workflow) => [workflow.name, workflow]));
42
+ return (_jsxs(_Fragment, { children: [_jsx("style", { children: CSS }), _jsxs("div", { className: "graview-workflows", "data-graview-workflows": spots.length, style: { width, height }, children: [_jsx("svg", { "aria-hidden": "true", width: width, height: height, style: { position: "absolute", left: 0, top: 0, overflow: "visible" }, children: spots.map((spot) => {
43
+ const workflow = byName.get(spot.name);
44
+ const from = at(spot.col, spot.row);
45
+ const wires = [...workflow.writes.map((kind) => [kind, "writes"]), ...workflow.reads.filter((kind) => !workflow.writes.includes(kind)).map((kind) => [kind, "reads"])];
46
+ return (_jsxs("g", { "data-graview-workflow-status": workflow.status, children: [wires.map(([kind, way]) => {
47
+ const plot = plots.get(kind);
48
+ if (!plot)
49
+ return null;
50
+ const to = at(plot.col + plot.side / 2, plot.row + plot.side / 2);
51
+ return _jsx("path", { className: "graview-workflow-wire", "data-wire": way, "data-graview-workflow-wire": `${spot.name}:${kind}`, d: `M${from.x.toFixed(1)} ${from.y.toFixed(1)}L${to.x.toFixed(1)} ${to.y.toFixed(1)}` }, kind);
52
+ }), _jsx("circle", { className: "graview-workflow-spot", cx: from.x.toFixed(1), cy: from.y.toFixed(1), r: 4 })] }, spot.name));
53
+ }) }), spots.map((spot) => {
54
+ const workflow = byName.get(spot.name);
55
+ const from = at(spot.col, spot.row);
56
+ const paused = workflow.status === "paused";
57
+ const last = said.get(spot.name);
58
+ const line = [paused ? "Paused" : "", last ?? ""].filter(Boolean).join(" · ");
59
+ const touches = touchWords(workflow, app.schema);
60
+ return (_jsxs("div", { className: "graview-workflow", role: "group", "aria-label": `Workflow: ${workflow.title}${paused ? ", paused" : ""}. ${touches ? `${touches.replace(/^./, (first) => first.toUpperCase())}.` : ""}${last ? ` ${last}.` : ""}`, "data-graview-workflow": spot.name, "data-graview-workflow-status": workflow.status, "data-graview-workflow-beside": spot.beside, style: { left: from.x, top: from.y }, children: [_jsx("span", { className: "graview-workflow-title", children: workflow.title }), line ? _jsx("span", { className: "graview-workflow-last", children: line }) : null] }, spot.name));
61
+ })] })] }));
62
+ }
63
+ //# sourceMappingURL=workflows-layer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflows-layer.js","sourceRoot":"","sources":["../src/workflows-layer.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAmC,MAAM,eAAe,CAAC;AAExF,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAgD,MAAM,qBAAqB,CAAC;AAE1I,OAAO,EAAE,OAAO,EAAqB,MAAM,OAAO,CAAC;AAEnD,OAAO,eAAe,CAAC,CAAC,2FAA2F;AAoCnH,MAAM,GAAG,GAAG,iFAAiF,YAAY,CAAC,KAAK;;;;;;;sEAOzC,CAAC;AAEvE,kGAAkG;AAClG,MAAM,UAAU,GAAG,CAAC,QAAqB,EAAE,MAAiB,EAAU,EAAE;IACtE,MAAM,IAAI,GAAG,CAAC,KAAwB,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChH,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5K,CAAC,CAAC;AAEF,MAAM,UAAU,cAAc,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAuB;IAChJ,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,iBAAiB,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;IAC/F,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IACxB,MAAM,KAAK,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC1C,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAC/B,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAChH,CAAC;IACD,MAAM,KAAK,GAAG,aAAa,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC9C,uEAAuE;IACvE,uDAAuD;IACvD,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC;IAC9K,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACvB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC;IAC9B,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC;IAChC,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC;IAChC,MAAM,EAAE,GAAG,CAAC,GAAW,EAAE,GAAW,EAAE,EAAE;QACtC,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACxC,OAAO,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC;IAC1C,CAAC,CAAC;IACF,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC/E,OAAO,CACL,8BACE,0BAAQ,GAAG,GAAS,EACpB,eAAK,SAAS,EAAC,mBAAmB,4BAAyB,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,aAC/F,6BAAiB,MAAM,EAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,YACxH,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;4BAClB,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAE,CAAC;4BACxC,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;4BACpC,MAAM,KAAK,GAAG,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAU,CAAC,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,CAAU,CAAC,CAAC,CAAC;4BACzL,OAAO,CACL,6CAAiD,QAAQ,CAAC,MAAM,aAC7D,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE;wCACzB,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;wCAC7B,IAAI,CAAC,IAAI;4CAAE,OAAO,IAAI,CAAC;wCACvB,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;wCAClE,OAAO,eAAiB,SAAS,EAAC,uBAAuB,eAAY,GAAG,gCAA8B,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE,EAAE,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAjM,IAAI,CAAiM,CAAC;oCAC1N,CAAC,CAAC,EACF,iBAAQ,SAAS,EAAC,uBAAuB,EAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAI,KAP1F,IAAI,CAAC,IAAI,CAQb,CACL,CAAC;wBACJ,CAAC,CAAC,GACE,EACL,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;wBAClB,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAE,CAAC;wBACxC,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;wBACpC,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC;wBAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBACjC,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;wBAC9E,MAAM,OAAO,GAAG,UAAU,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;wBACjD,OAAO,CACL,eAEE,SAAS,EAAC,kBAAkB,EAC5B,IAAI,EAAC,OAAO,gBACA,aAAa,QAAQ,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,2BACtJ,IAAI,CAAC,IAAI,kCACF,QAAQ,CAAC,MAAM,kCACf,IAAI,CAAC,MAAM,EACzC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,EAAE,aAEpC,eAAM,SAAS,EAAC,wBAAwB,YAAE,QAAQ,CAAC,KAAK,GAAQ,EAC/D,IAAI,CAAC,CAAC,CAAC,eAAM,SAAS,EAAC,uBAAuB,YAAE,IAAI,GAAQ,CAAC,CAAC,CAAC,IAAI,KAV/D,IAAI,CAAC,IAAI,CAWV,CACP,CAAC;oBACJ,CAAC,CAAC,IACE,IACL,CACJ,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@graview/react",
3
- "version": "0.1.61",
3
+ "version": "0.1.63",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -19,10 +19,10 @@
19
19
  }
20
20
  },
21
21
  "dependencies": {
22
- "@graview/layout": "0.1.61",
23
- "@graview/tools": "0.1.61",
24
- "@graview/core": "0.1.61",
25
- "@graview/render": "0.1.61"
22
+ "@graview/layout": "0.1.63",
23
+ "@graview/tools": "0.1.63",
24
+ "@graview/core": "0.1.63",
25
+ "@graview/render": "0.1.63"
26
26
  },
27
27
  "peerDependencies": {
28
28
  "react": ">=18",