@dxos/react-ui-canvas-compute 0.13.0 → 0.14.0
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/lib/chunk-types.mjs +142 -0
- package/dist/lib/chunk-types.mjs.map +1 -0
- package/dist/lib/index.mjs +526 -430
- package/dist/lib/index.mjs.map +1 -1
- package/dist/lib/types.mjs +2 -0
- package/dist/types/src/graph/controller.d.ts +1 -1
- package/dist/types/src/graph/controller.d.ts.map +1 -1
- package/dist/types/src/hooks/compute-context.d.ts +5 -4
- package/dist/types/src/hooks/compute-context.d.ts.map +1 -1
- package/dist/types/src/hooks/index.d.ts +0 -1
- package/dist/types/src/hooks/index.d.ts.map +1 -1
- package/dist/types/src/hooks/useGraphMonitor.d.ts +18 -1
- package/dist/types/src/hooks/useGraphMonitor.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +1 -1
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/registry.d.ts +5 -8
- package/dist/types/src/registry.d.ts.map +1 -1
- package/dist/types/src/scene/compute.stories.d.ts.map +1 -1
- package/dist/types/src/scene/echo-store.d.ts +1 -1
- package/dist/types/src/scene/echo-store.d.ts.map +1 -1
- package/dist/types/src/scene/index.d.ts +0 -3
- package/dist/types/src/scene/index.d.ts.map +1 -1
- package/dist/types/src/scene/projection.d.ts.map +1 -1
- package/dist/types/src/scene/scene.d.ts +2 -2
- package/dist/types/src/scene/scene.d.ts.map +1 -1
- package/dist/types/src/shapes/Append.d.ts +2 -2
- package/dist/types/src/shapes/Append.d.ts.map +1 -1
- package/dist/types/src/shapes/Array.d.ts +3 -3
- package/dist/types/src/shapes/Array.d.ts.map +1 -1
- package/dist/types/src/shapes/Audio.d.ts +2 -2
- package/dist/types/src/shapes/Audio.d.ts.map +1 -1
- package/dist/types/src/shapes/Beacon.d.ts +2 -2
- package/dist/types/src/shapes/Beacon.d.ts.map +1 -1
- package/dist/types/src/shapes/Boolean.d.ts +4 -52
- package/dist/types/src/shapes/Boolean.d.ts.map +1 -1
- package/dist/types/src/shapes/Chat.d.ts +3 -3
- package/dist/types/src/shapes/Chat.d.ts.map +1 -1
- package/dist/types/src/shapes/Constant.d.ts +3 -4
- package/dist/types/src/shapes/Constant.d.ts.map +1 -1
- package/dist/types/src/shapes/Database.d.ts +2 -2
- package/dist/types/src/shapes/Database.d.ts.map +1 -1
- package/dist/types/src/shapes/Feed.d.ts +2 -2
- package/dist/types/src/shapes/Feed.d.ts.map +1 -1
- package/dist/types/src/shapes/Function.d.ts +3 -5
- package/dist/types/src/shapes/Function.d.ts.map +1 -1
- package/dist/types/src/shapes/Gpt.d.ts +2 -2
- package/dist/types/src/shapes/Gpt.d.ts.map +1 -1
- package/dist/types/src/shapes/GptRealtime.d.ts +2 -2
- package/dist/types/src/shapes/GptRealtime.d.ts.map +1 -1
- package/dist/types/src/shapes/Json.d.ts +5 -5
- package/dist/types/src/shapes/Json.d.ts.map +1 -1
- package/dist/types/src/shapes/Logic.d.ts +5 -5
- package/dist/types/src/shapes/Logic.d.ts.map +1 -1
- package/dist/types/src/shapes/RNG.d.ts +2 -2
- package/dist/types/src/shapes/RNG.d.ts.map +1 -1
- package/dist/types/src/shapes/Scope.d.ts +2 -2
- package/dist/types/src/shapes/Scope.d.ts.map +1 -1
- package/dist/types/src/shapes/Surface.d.ts +2 -2
- package/dist/types/src/shapes/Surface.d.ts.map +1 -1
- package/dist/types/src/shapes/Switch.d.ts +2 -2
- package/dist/types/src/shapes/Switch.d.ts.map +1 -1
- package/dist/types/src/shapes/Table.d.ts +2 -2
- package/dist/types/src/shapes/Table.d.ts.map +1 -1
- package/dist/types/src/shapes/Template.d.ts +2 -2
- package/dist/types/src/shapes/Template.d.ts.map +1 -1
- package/dist/types/src/shapes/Text.d.ts +2 -2
- package/dist/types/src/shapes/Text.d.ts.map +1 -1
- package/dist/types/src/shapes/TextToImage.d.ts +2 -2
- package/dist/types/src/shapes/TextToImage.d.ts.map +1 -1
- package/dist/types/src/shapes/Thread.d.ts +2 -2
- package/dist/types/src/shapes/Thread.d.ts.map +1 -1
- package/dist/types/src/shapes/Trigger.d.ts +3 -3
- package/dist/types/src/shapes/Trigger.d.ts.map +1 -1
- package/dist/types/src/shapes/append-def.d.ts +1 -2
- package/dist/types/src/shapes/append-def.d.ts.map +1 -1
- package/dist/types/src/shapes/array-def.d.ts +2 -3
- package/dist/types/src/shapes/array-def.d.ts.map +1 -1
- package/dist/types/src/shapes/audio-def.d.ts +1 -2
- package/dist/types/src/shapes/audio-def.d.ts.map +1 -1
- package/dist/types/src/shapes/beacon-def.d.ts +1 -2
- package/dist/types/src/shapes/beacon-def.d.ts.map +1 -1
- package/dist/types/src/shapes/chat-def.d.ts +1 -2
- package/dist/types/src/shapes/chat-def.d.ts.map +1 -1
- package/dist/types/src/shapes/common/Box.d.ts.map +1 -1
- package/dist/types/src/shapes/common/FunctionBody.d.ts.map +1 -1
- package/dist/types/src/shapes/common/TextBox.d.ts +26 -0
- package/dist/types/src/shapes/common/TextBox.d.ts.map +1 -0
- package/dist/types/src/shapes/common/index.d.ts +3 -1
- package/dist/types/src/shapes/common/index.d.ts.map +1 -1
- package/dist/types/src/shapes/common/node-def.d.ts +24 -0
- package/dist/types/src/shapes/common/node-def.d.ts.map +1 -0
- package/dist/types/src/shapes/common/ports.d.ts +33 -0
- package/dist/types/src/shapes/common/ports.d.ts.map +1 -0
- package/dist/types/src/shapes/constant-def.d.ts +1 -2
- package/dist/types/src/shapes/constant-def.d.ts.map +1 -1
- package/dist/types/src/shapes/database-def.d.ts +1 -2
- package/dist/types/src/shapes/database-def.d.ts.map +1 -1
- package/dist/types/src/shapes/defs.d.ts +7 -2
- package/dist/types/src/shapes/defs.d.ts.map +1 -1
- package/dist/types/src/shapes/feed-def.d.ts +1 -2
- package/dist/types/src/shapes/feed-def.d.ts.map +1 -1
- package/dist/types/src/shapes/function-def.d.ts +1 -2
- package/dist/types/src/shapes/function-def.d.ts.map +1 -1
- package/dist/types/src/shapes/gpt-def.d.ts +1 -2
- package/dist/types/src/shapes/gpt-def.d.ts.map +1 -1
- package/dist/types/src/shapes/gpt-realtime-def.d.ts +1 -2
- package/dist/types/src/shapes/gpt-realtime-def.d.ts.map +1 -1
- package/dist/types/src/shapes/json-def.d.ts +2 -3
- package/dist/types/src/shapes/json-def.d.ts.map +1 -1
- package/dist/types/src/shapes/logic-def.d.ts +2 -3
- package/dist/types/src/shapes/logic-def.d.ts.map +1 -1
- package/dist/types/src/shapes/ports.test.d.ts +2 -0
- package/dist/types/src/shapes/ports.test.d.ts.map +1 -0
- package/dist/types/src/shapes/rng-def.d.ts +1 -2
- package/dist/types/src/shapes/rng-def.d.ts.map +1 -1
- package/dist/types/src/shapes/scope-def.d.ts +1 -2
- package/dist/types/src/shapes/scope-def.d.ts.map +1 -1
- package/dist/types/src/shapes/surface-def.d.ts +1 -2
- package/dist/types/src/shapes/surface-def.d.ts.map +1 -1
- package/dist/types/src/shapes/switch-def.d.ts +1 -2
- package/dist/types/src/shapes/switch-def.d.ts.map +1 -1
- package/dist/types/src/shapes/table-def.d.ts +1 -2
- package/dist/types/src/shapes/table-def.d.ts.map +1 -1
- package/dist/types/src/shapes/template-def.d.ts +1 -2
- package/dist/types/src/shapes/template-def.d.ts.map +1 -1
- package/dist/types/src/shapes/text-def.d.ts +1 -2
- package/dist/types/src/shapes/text-def.d.ts.map +1 -1
- package/dist/types/src/shapes/text-to-image-def.d.ts +1 -2
- package/dist/types/src/shapes/text-to-image-def.d.ts.map +1 -1
- package/dist/types/src/shapes/thread-def.d.ts +1 -2
- package/dist/types/src/shapes/thread-def.d.ts.map +1 -1
- package/dist/types/src/shapes/trigger-def.d.ts +1 -2
- package/dist/types/src/shapes/trigger-def.d.ts.map +1 -1
- package/dist/types/src/testing/circuits.d.ts +1 -1
- package/dist/types/src/testing/circuits.d.ts.map +1 -1
- package/dist/types/src/types/canvas-board.test.d.ts +2 -0
- package/dist/types/src/types/canvas-board.test.d.ts.map +1 -0
- package/dist/types/src/types/index.d.ts +4 -0
- package/dist/types/src/types/index.d.ts.map +1 -0
- package/dist/types/src/types/model.d.ts +10 -0
- package/dist/types/src/types/model.d.ts.map +1 -0
- package/dist/types/src/types/schema.d.ts +66 -0
- package/dist/types/src/types/schema.d.ts.map +1 -0
- package/dist/types/src/types/shapes.d.ts +114 -0
- package/dist/types/src/types/shapes.d.ts.map +1 -0
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +43 -35
- package/src/graph/controller.ts +1 -1
- package/src/hooks/compute-context.ts +7 -4
- package/src/hooks/index.ts +0 -1
- package/src/hooks/useGraphMonitor.ts +10 -1
- package/src/index.ts +1 -1
- package/src/playwright/scene.spec.ts +3 -3
- package/src/registry.ts +63 -91
- package/src/scene/compute.stories.tsx +3 -6
- package/src/scene/echo-store.test.ts +18 -7
- package/src/scene/echo-store.ts +7 -10
- package/src/scene/index.ts +0 -3
- package/src/scene/projection.ts +2 -3
- package/src/scene/scene.test.ts +4 -4
- package/src/scene/scene.ts +6 -4
- package/src/schema.test.ts +7 -36
- package/src/shapes/Append.tsx +2 -3
- package/src/shapes/Array.tsx +3 -4
- package/src/shapes/Audio.tsx +2 -2
- package/src/shapes/Beacon.tsx +2 -2
- package/src/shapes/Boolean.tsx +32 -29
- package/src/shapes/Chat.tsx +5 -10
- package/src/shapes/Constant.tsx +19 -12
- package/src/shapes/Database.tsx +2 -4
- package/src/shapes/Feed.tsx +2 -3
- package/src/shapes/Function.tsx +4 -10
- package/src/shapes/Gpt.tsx +2 -3
- package/src/shapes/GptRealtime.tsx +2 -2
- package/src/shapes/Json.tsx +5 -6
- package/src/shapes/Logic.tsx +5 -6
- package/src/shapes/RNG.tsx +2 -2
- package/src/shapes/Scope.tsx +2 -2
- package/src/shapes/Surface.tsx +9 -6
- package/src/shapes/Switch.tsx +10 -12
- package/src/shapes/Table.tsx +2 -4
- package/src/shapes/Template.tsx +10 -9
- package/src/shapes/Text.tsx +2 -3
- package/src/shapes/TextToImage.tsx +2 -4
- package/src/shapes/Thread.tsx +2 -3
- package/src/shapes/Trigger.tsx +3 -4
- package/src/shapes/append-def.ts +8 -7
- package/src/shapes/array-def.ts +8 -8
- package/src/shapes/audio-def.ts +8 -7
- package/src/shapes/beacon-def.ts +9 -8
- package/src/shapes/chat-def.tsx +8 -8
- package/src/shapes/common/Box.tsx +7 -4
- package/src/shapes/common/FunctionBody.tsx +13 -26
- package/src/shapes/common/TextBox.tsx +137 -0
- package/src/shapes/common/index.ts +3 -1
- package/src/shapes/common/node-def.tsx +117 -0
- package/src/shapes/common/ports.ts +107 -0
- package/src/shapes/constant-def.tsx +8 -8
- package/src/shapes/database-def.ts +8 -8
- package/src/shapes/defs.ts +21 -6
- package/src/shapes/feed-def.ts +8 -7
- package/src/shapes/function-def.ts +8 -7
- package/src/shapes/gpt-def.ts +8 -7
- package/src/shapes/gpt-realtime-def.ts +10 -10
- package/src/shapes/json-def.ts +15 -13
- package/src/shapes/logic-def.ts +14 -11
- package/src/shapes/ports.test.ts +23 -0
- package/src/shapes/rng-def.ts +8 -7
- package/src/shapes/scope-def.ts +8 -7
- package/src/shapes/surface-def.ts +8 -8
- package/src/shapes/switch-def.ts +8 -7
- package/src/shapes/table-def.ts +7 -7
- package/src/shapes/template-def.ts +8 -7
- package/src/shapes/text-def.ts +8 -8
- package/src/shapes/text-to-image-def.ts +8 -8
- package/src/shapes/thread-def.ts +8 -7
- package/src/shapes/trigger-def.ts +11 -8
- package/src/testing/circuits.ts +21 -7
- package/src/types/canvas-board.test.ts +84 -0
- package/src/types/index.ts +7 -0
- package/src/types/model.ts +63 -0
- package/src/types/schema.ts +73 -0
- package/src/types/shapes.ts +73 -0
- package/dist/types/src/compute-layout.d.ts +0 -9
- package/dist/types/src/compute-layout.d.ts.map +0 -1
- package/dist/types/src/compute.stories.d.ts +0 -58
- package/dist/types/src/compute.stories.d.ts.map +0 -1
- package/dist/types/src/hooks/useComputeGraphController.d.ts +0 -10
- package/dist/types/src/hooks/useComputeGraphController.d.ts.map +0 -1
- package/dist/types/src/scene/NodeView.d.ts +0 -11
- package/dist/types/src/scene/NodeView.d.ts.map +0 -1
- package/dist/types/src/scene/defs.d.ts +0 -5
- package/dist/types/src/scene/defs.d.ts.map +0 -1
- package/dist/types/src/scene/ports.d.ts +0 -5
- package/dist/types/src/scene/ports.d.ts.map +0 -1
- package/dist/types/src/shapes/common/function-anchors.d.ts +0 -12
- package/dist/types/src/shapes/common/function-anchors.d.ts.map +0 -1
- package/src/compute-layout.ts +0 -37
- package/src/compute.stories.tsx +0 -302
- package/src/hooks/useComputeGraphController.ts +0 -65
- package/src/scene/NodeView.tsx +0 -42
- package/src/scene/defs.ts +0 -158
- package/src/scene/ports.ts +0 -30
- package/src/shapes/common/function-anchors.ts +0 -44
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import { ComputeGraph, ComputeGraphModel, DEFAULT_INPUT, DEFAULT_OUTPUT } from "@dxos/conductor";
|
|
2
|
+
import * as Schema from "effect/Schema";
|
|
3
|
+
import { Annotation, DXN, Obj, Ref, Type } from "@dxos/echo";
|
|
4
|
+
import * as Struct from "effect/Struct";
|
|
5
|
+
import { isProxy } from "@dxos/echo/internal";
|
|
6
|
+
import * as GraphModel from "@dxos/graph/GraphModel";
|
|
7
|
+
import * as GraphEdge from "@dxos/graph/GraphEdge";
|
|
8
|
+
import * as GraphNode from "@dxos/graph/GraphNode";
|
|
9
|
+
//#region \0rolldown/runtime.js
|
|
10
|
+
var __defProp = Object.defineProperty;
|
|
11
|
+
var __exportAll = (all, no_symbols) => {
|
|
12
|
+
let target = {};
|
|
13
|
+
for (var name in all) __defProp(target, name, {
|
|
14
|
+
get: all[name],
|
|
15
|
+
enumerable: true
|
|
16
|
+
});
|
|
17
|
+
if (!no_symbols) __defProp(target, Symbol.toStringTag, { value: "Module" });
|
|
18
|
+
return target;
|
|
19
|
+
};
|
|
20
|
+
//#endregion
|
|
21
|
+
//#region src/types/model.ts
|
|
22
|
+
var CanvasGraphModel = class CanvasGraphModel extends GraphModel.AbstractGraphModel {
|
|
23
|
+
static create(graph, change) {
|
|
24
|
+
if (isProxy(graph)) return new CanvasGraphModel({
|
|
25
|
+
graph,
|
|
26
|
+
change
|
|
27
|
+
});
|
|
28
|
+
return new CanvasGraphModel({ graph: {
|
|
29
|
+
nodes: graph?.nodes ?? [],
|
|
30
|
+
edges: graph?.edges ?? []
|
|
31
|
+
} });
|
|
32
|
+
}
|
|
33
|
+
copy(graph) {
|
|
34
|
+
return CanvasGraphModel.create(graph);
|
|
35
|
+
}
|
|
36
|
+
createNode({ id, ...rest }) {
|
|
37
|
+
const node = {
|
|
38
|
+
id: id ?? Obj.ID.random(),
|
|
39
|
+
...rest
|
|
40
|
+
};
|
|
41
|
+
this.addNode(node);
|
|
42
|
+
return node;
|
|
43
|
+
}
|
|
44
|
+
createEdge({ id, source, target, output = DEFAULT_OUTPUT, input = DEFAULT_INPUT, ...rest }) {
|
|
45
|
+
const edge = {
|
|
46
|
+
id: id ?? Obj.ID.random(),
|
|
47
|
+
source,
|
|
48
|
+
target,
|
|
49
|
+
output,
|
|
50
|
+
input,
|
|
51
|
+
...rest
|
|
52
|
+
};
|
|
53
|
+
this.addEdge(edge);
|
|
54
|
+
return edge;
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
//#endregion
|
|
58
|
+
//#region src/types/schema.ts
|
|
59
|
+
var schema_exports = /* @__PURE__ */ __exportAll({
|
|
60
|
+
CanvasBoard: () => CanvasBoard,
|
|
61
|
+
Connection: () => Connection,
|
|
62
|
+
Layout: () => Layout,
|
|
63
|
+
Shape: () => Shape,
|
|
64
|
+
make: () => make
|
|
65
|
+
});
|
|
66
|
+
/**
|
|
67
|
+
* Base type for all shapes.
|
|
68
|
+
*/
|
|
69
|
+
var Shape = GraphNode.GraphNode.mapFields((fields) => Struct.omit(fields, ["type"])).pipe(Schema.fieldsAssign({
|
|
70
|
+
type: Schema.String,
|
|
71
|
+
text: Schema.optional(Schema.String),
|
|
72
|
+
guide: Schema.optional(Schema.Boolean),
|
|
73
|
+
classNames: Schema.optional(Schema.String)
|
|
74
|
+
}));
|
|
75
|
+
/**
|
|
76
|
+
* Connections between shapes.
|
|
77
|
+
*/
|
|
78
|
+
var Connection = GraphEdge.GraphEdge.mapFields(Struct.assign({
|
|
79
|
+
input: Schema.optional(Schema.String),
|
|
80
|
+
output: Schema.optional(Schema.String)
|
|
81
|
+
}));
|
|
82
|
+
var Layout = Schema.Struct({ shapes: Schema.Array(Shape) });
|
|
83
|
+
var CanvasBoard = class extends Type.makeObject(DXN.make("org.dxos.type.canvasBoard", "0.1.0"))(Schema.Struct({
|
|
84
|
+
name: Schema.optional(Schema.String),
|
|
85
|
+
computeGraph: Schema.optional(Ref.Ref(ComputeGraph)),
|
|
86
|
+
/**
|
|
87
|
+
* Graph of shapes positioned on the canvas.
|
|
88
|
+
*/
|
|
89
|
+
layout: GraphModel.Data
|
|
90
|
+
}).pipe(Annotation.IconAnnotation.set({
|
|
91
|
+
icon: "ph--infinity--regular",
|
|
92
|
+
hue: "sky"
|
|
93
|
+
}), Annotation.UserType.set())) {};
|
|
94
|
+
/**
|
|
95
|
+
* Creates a CanvasBoard with default empty layout and compute graph when not provided.
|
|
96
|
+
*/
|
|
97
|
+
var make = (props = {}) => {
|
|
98
|
+
return Obj.make(CanvasBoard, {
|
|
99
|
+
...props,
|
|
100
|
+
layout: props.layout ?? {
|
|
101
|
+
nodes: [],
|
|
102
|
+
edges: []
|
|
103
|
+
},
|
|
104
|
+
computeGraph: props.computeGraph ?? Ref.make(ComputeGraphModel.create().root)
|
|
105
|
+
});
|
|
106
|
+
};
|
|
107
|
+
//#endregion
|
|
108
|
+
//#region src/types/shapes.ts
|
|
109
|
+
var Point = Schema.Struct({
|
|
110
|
+
x: Schema.Number,
|
|
111
|
+
y: Schema.Number
|
|
112
|
+
});
|
|
113
|
+
var Size = Schema.Struct({
|
|
114
|
+
width: Schema.Number,
|
|
115
|
+
height: Schema.Number
|
|
116
|
+
});
|
|
117
|
+
var PathShape = Shape.mapFields(Struct.assign({
|
|
118
|
+
type: Schema.Literal("path"),
|
|
119
|
+
path: Schema.String,
|
|
120
|
+
start: Schema.optional(Schema.String),
|
|
121
|
+
end: Schema.optional(Schema.String)
|
|
122
|
+
}));
|
|
123
|
+
var isPath = Schema.is(PathShape);
|
|
124
|
+
/**
|
|
125
|
+
* Closed shape.
|
|
126
|
+
* Common handling via Frame.
|
|
127
|
+
*/
|
|
128
|
+
var Polygon = Shape.mapFields(Struct.assign({
|
|
129
|
+
center: Point,
|
|
130
|
+
size: Size.mapFields(Struct.map(Schema.mutableKey))
|
|
131
|
+
})).mapFields(Struct.map(Schema.mutableKey));
|
|
132
|
+
var isPolygon = Schema.is(Polygon);
|
|
133
|
+
var EllipseShape = Polygon.mapFields(Struct.assign({ type: Schema.Literal("ellipse") }));
|
|
134
|
+
var NoteShape = Polygon.mapFields(Struct.assign({ type: Schema.Literal("note") }));
|
|
135
|
+
var RectangleShape = Polygon.mapFields(Struct.assign({
|
|
136
|
+
type: Schema.Literal("rectangle"),
|
|
137
|
+
rounded: Schema.optional(Schema.Number)
|
|
138
|
+
}));
|
|
139
|
+
//#endregion
|
|
140
|
+
export { RectangleShape as a, Shape as c, Polygon as i, schema_exports as l, NoteShape as n, isPath as o, PathShape as r, isPolygon as s, EllipseShape as t, CanvasGraphModel as u };
|
|
141
|
+
|
|
142
|
+
//# sourceMappingURL=chunk-types.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunk-types.mjs","names":[],"sources":["../../src/types/model.ts","../../src/types/schema.ts","../../src/types/shapes.ts"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\nimport { DEFAULT_INPUT, DEFAULT_OUTPUT } from '@dxos/conductor';\nimport { Obj } from '@dxos/echo';\nimport { isProxy } from '@dxos/echo/internal';\nimport * as GraphModel from '@dxos/graph/GraphModel';\nimport { type MakeOptional } from '@dxos/util';\n\nimport { type Connection, type Shape } from './schema.ts';\n\nexport class CanvasGraphModel<S extends Shape = Shape> extends GraphModel.AbstractGraphModel<\n S,\n Connection,\n CanvasGraphModel<S>\n> {\n static create<S extends Shape>(\n graph?: Partial<GraphModel.AnyData>,\n change?: GraphModel.GraphChangeFunction,\n ): CanvasGraphModel<S> {\n if (isProxy(graph)) {\n return new CanvasGraphModel<S>({ graph: graph as GraphModel.Data<S, Connection>, change });\n }\n\n return new CanvasGraphModel<S>({\n graph: {\n nodes: (graph?.nodes ?? []) as S[],\n edges: (graph?.edges ?? []) as Connection[],\n },\n });\n }\n\n override copy(graph?: Partial<GraphModel.Data<S, Connection>>): CanvasGraphModel<S> {\n return CanvasGraphModel.create<S>(graph);\n }\n\n createNode({ id, ...rest }: MakeOptional<S, 'id'>): S {\n const node: S = { id: id ?? Obj.ID.random(), ...rest } as S;\n this.addNode(node);\n return node;\n }\n\n createEdge({\n id,\n source,\n target,\n output = DEFAULT_OUTPUT,\n input = DEFAULT_INPUT,\n ...rest\n }: MakeOptional<Connection, 'id'>): Connection {\n const edge: Connection = {\n id: id ?? Obj.ID.random(),\n source,\n target,\n output,\n input,\n ...rest,\n } as Connection;\n this.addEdge(edge);\n return edge;\n }\n}\n","//\n// Copyright 2024 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\nimport * as Struct from 'effect/Struct';\n\nimport { ComputeGraph, ComputeGraphModel } from '@dxos/conductor';\nimport { Annotation, DXN, Obj, Ref, Type } from '@dxos/echo';\nimport * as GraphEdge from '@dxos/graph/GraphEdge';\nimport * as GraphModel from '@dxos/graph/GraphModel';\nimport * as GraphNode from '@dxos/graph/GraphNode';\n\n// TODO(burdon): Consider interop with TLDraw and GeoJSON standards?\n\n/**\n * Base type for all shapes.\n */\nexport const Shape = GraphNode.GraphNode.mapFields((fields) => Struct.omit(fields, ['type'])).pipe(\n // TODO(burdon): Breaks graph contract?\n Schema.fieldsAssign({\n type: Schema.String,\n text: Schema.optional(Schema.String),\n guide: Schema.optional(Schema.Boolean),\n classNames: Schema.optional(Schema.String),\n }),\n);\n\nexport type Shape = Schema.Schema.Type<typeof Shape>;\n\n/**\n * Connections between shapes.\n */\nexport const Connection = GraphEdge.GraphEdge.mapFields(\n Struct.assign({\n input: Schema.optional(Schema.String),\n output: Schema.optional(Schema.String),\n }),\n);\n\nexport type Connection = Schema.Schema.Type<typeof Connection>;\n\n// TODO(burdon): Rename scene?\nexport const Layout = Schema.Struct({\n shapes: Schema.Array(Shape),\n});\n\nexport type Layout = Schema.Schema.Type<typeof Layout>;\n\n// TODO(wittjosiah): Rename WorkflowType?\nexport class CanvasBoard extends Type.makeObject<CanvasBoard>(DXN.make('org.dxos.type.canvasBoard', '0.1.0'))(\n Schema.Struct({\n name: Schema.optional(Schema.String),\n\n computeGraph: Schema.optional(Ref.Ref(ComputeGraph)),\n\n /**\n * Graph of shapes positioned on the canvas.\n */\n layout: GraphModel.Data,\n }).pipe(Annotation.IconAnnotation.set({ icon: 'ph--infinity--regular', hue: 'sky' }), Annotation.UserType.set()),\n) {}\n\n/**\n * Creates a CanvasBoard with default empty layout and compute graph when not provided.\n */\nexport const make = (props: Partial<Obj.MakeProps<typeof CanvasBoard>> = {}) => {\n return Obj.make(CanvasBoard, {\n ...props,\n layout: props.layout ?? { nodes: [], edges: [] },\n computeGraph: props.computeGraph ?? Ref.make(ComputeGraphModel.create().root),\n });\n};\n","//\n// Copyright 2024 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\nimport * as Struct from 'effect/Struct';\n\nimport { Shape } from './schema.ts';\n\n// The engine's `Point` / `Size` structs, declared here because its `/scene` entry also exports React, which this\n// React-free entry must not import (plugins load it in workers).\nconst Point = Schema.Struct({ x: Schema.Number, y: Schema.Number });\nconst Size = Schema.Struct({ width: Schema.Number, height: Schema.Number });\n\n//\n// Path\n//\n\nexport const PathShape = Shape.mapFields(\n Struct.assign({\n type: Schema.Literal('path'),\n path: Schema.String,\n start: Schema.optional(Schema.String),\n end: Schema.optional(Schema.String),\n }),\n);\n\nexport type PathShape = Schema.Schema.Type<typeof PathShape>;\nexport const isPath = Schema.is(PathShape);\n\n//\n// Polygon\n//\n\n/**\n * Closed shape.\n * Common handling via Frame.\n */\n// `Schema.mutable` is arrays-only in v4, so a struct's fields are made mutable key by key.\nexport const Polygon = Shape.mapFields(\n Struct.assign({\n center: Point,\n size: Size.mapFields(Struct.map(Schema.mutableKey)),\n }),\n).mapFields(Struct.map(Schema.mutableKey));\n\nexport type Polygon = Schema.Schema.Type<typeof Polygon>;\nexport const isPolygon = Schema.is(Polygon);\n\nexport const EllipseShape = Polygon.mapFields(\n Struct.assign({\n type: Schema.Literal('ellipse'),\n }),\n);\n\nexport type EllipseShape = Schema.Schema.Type<typeof EllipseShape>;\n\nexport const NoteShape = Polygon.mapFields(\n Struct.assign({\n type: Schema.Literal('note'),\n }),\n);\n\nexport type NoteShape = Schema.Schema.Type<typeof NoteShape>;\n\nexport const RectangleShape = Polygon.mapFields(\n Struct.assign({\n type: Schema.Literal('rectangle'),\n rounded: Schema.optional(Schema.Number),\n }),\n);\n\nexport type RectangleShape = Schema.Schema.Type<typeof RectangleShape>;\n"],"mappings":"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"}
|