@dxos/plugin-illustrator 0.10.0 → 0.11.1
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/IllustratorPlugin.mjs +7 -3
- package/dist/lib/IllustratorPlugin.mjs.map +1 -1
- package/dist/lib/IllustratorPlugin.node.mjs +3 -3
- package/dist/lib/IllustratorPlugin.node.mjs.map +1 -1
- package/dist/lib/IllustratorPlugin.workerd.mjs +2 -2
- package/dist/lib/IllustratorPlugin.workerd.mjs.map +1 -1
- package/dist/lib/capabilities.mjs +2 -1
- package/dist/lib/capabilities.mjs.map +1 -1
- package/dist/lib/chunk-Drawing.mjs +64 -0
- package/dist/lib/chunk-Drawing.mjs.map +1 -0
- package/dist/lib/chunk-IllustratorCapabilities.mjs +2 -2
- package/dist/lib/chunk-IllustratorCapabilities.mjs.map +1 -1
- package/dist/lib/chunk-comment-config.mjs +3 -3
- package/dist/lib/chunk-comment-config.mjs.map +1 -1
- package/dist/lib/chunk-create-object.mjs +13 -12
- package/dist/lib/chunk-create-object.mjs.map +1 -1
- package/dist/lib/chunk-create.mjs +5 -4
- package/dist/lib/chunk-create.mjs.map +1 -1
- package/dist/lib/chunk-edit.mjs +4 -4
- package/dist/lib/chunk-edit.mjs.map +1 -1
- package/dist/lib/chunk-generate.mjs +20 -0
- package/dist/lib/chunk-generate.mjs.map +1 -0
- package/dist/lib/chunk-load-drawing.mjs +35 -0
- package/dist/lib/chunk-load-drawing.mjs.map +1 -0
- package/dist/lib/chunk-meta.mjs +2 -1
- package/dist/lib/chunk-meta.mjs.map +1 -1
- package/dist/lib/chunk-migrations.mjs +23 -0
- package/dist/lib/chunk-migrations.mjs.map +1 -0
- package/dist/lib/chunk-model.mjs +387 -4
- package/dist/lib/chunk-model.mjs.map +1 -1
- package/dist/lib/chunk-react-surface.mjs +14 -13
- package/dist/lib/chunk-react-surface.mjs.map +1 -1
- package/dist/lib/chunk-read.mjs +4 -4
- package/dist/lib/chunk-read.mjs.map +1 -1
- package/dist/lib/chunk-skill-definition.mjs +2 -2
- package/dist/lib/chunk-skill-definition.mjs.map +1 -1
- package/dist/lib/chunk-skills.mjs +10 -10
- package/dist/lib/chunk-skills.mjs.map +1 -1
- package/dist/lib/chunk-types.mjs +41 -49
- package/dist/lib/chunk-types.mjs.map +1 -1
- package/dist/lib/components.mjs +6 -6
- package/dist/lib/components.mjs.map +1 -1
- package/dist/lib/containers.mjs +17 -19
- package/dist/lib/containers.mjs.map +1 -1
- package/dist/lib/index.mjs +4 -3
- package/dist/lib/model.mjs +2 -2
- package/dist/lib/operations.mjs +1 -1
- package/dist/lib/operations.mjs.map +1 -1
- package/dist/lib/skills.mjs +1 -1
- package/dist/lib/translations.mjs +13 -13
- package/dist/lib/translations.mjs.map +1 -1
- package/dist/lib/types.mjs +3 -2
- package/dist/lib/util.mjs +2 -2
- package/dist/types/src/IllustratorPlugin.d.ts.map +1 -1
- package/dist/types/src/IllustratorPlugin.node.d.ts +1 -1
- package/dist/types/src/IllustratorPlugin.test.d.ts +2 -0
- package/dist/types/src/IllustratorPlugin.test.d.ts.map +1 -0
- package/dist/types/src/capabilities/index.d.ts +1 -0
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/migrations.d.ts +7 -0
- package/dist/types/src/capabilities/migrations.d.ts.map +1 -0
- package/dist/types/src/capabilities/migrations.test.d.ts +2 -0
- package/dist/types/src/capabilities/migrations.test.d.ts.map +1 -0
- package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
- package/dist/types/src/capabilities/skill-definition.d.ts.map +1 -1
- package/dist/types/src/components/CreateDrawingPanel.d.ts +15 -0
- package/dist/types/src/components/CreateDrawingPanel.d.ts.map +1 -0
- package/dist/types/src/components/index.d.ts +1 -1
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/containers/DrawingArticle/DrawingArticle.d.ts +11 -0
- package/dist/types/src/containers/DrawingArticle/DrawingArticle.d.ts.map +1 -0
- package/dist/types/src/containers/DrawingArticle/index.d.ts +2 -0
- package/dist/types/src/containers/DrawingArticle/index.d.ts.map +1 -0
- package/dist/types/src/containers/DrawingCard/DrawingCard.d.ts +10 -0
- package/dist/types/src/containers/DrawingCard/DrawingCard.d.ts.map +1 -0
- package/dist/types/src/containers/DrawingCard/index.d.ts +2 -0
- package/dist/types/src/containers/DrawingCard/index.d.ts.map +1 -0
- package/dist/types/src/containers/index.d.ts +2 -2
- package/dist/types/src/containers/index.d.ts.map +1 -1
- package/dist/types/src/model/builder.d.ts +18 -26
- package/dist/types/src/model/builder.d.ts.map +1 -1
- package/dist/types/src/model/content.d.ts +60 -0
- package/dist/types/src/model/content.d.ts.map +1 -0
- package/dist/types/src/model/index.d.ts +2 -0
- package/dist/types/src/model/index.d.ts.map +1 -1
- package/dist/types/src/model/mermaid.d.ts +38 -0
- package/dist/types/src/model/mermaid.d.ts.map +1 -0
- package/dist/types/src/model/mermaid.test.d.ts +3 -0
- package/dist/types/src/model/mermaid.test.d.ts.map +1 -0
- package/dist/types/src/operations/create.d.ts +2 -2
- package/dist/types/src/operations/create.d.ts.map +1 -1
- package/dist/types/src/operations/edit.d.ts +2 -2
- package/dist/types/src/operations/edit.d.ts.map +1 -1
- package/dist/types/src/operations/generate.d.ts +5 -0
- package/dist/types/src/operations/generate.d.ts.map +1 -0
- package/dist/types/src/operations/index.d.ts.map +1 -1
- package/dist/types/src/operations/read.d.ts +2 -2
- package/dist/types/src/operations/read.d.ts.map +1 -1
- package/dist/types/src/skills/{sketch-skill.d.ts → drawing-skill.d.ts} +1 -1
- package/dist/types/src/skills/drawing-skill.d.ts.map +1 -0
- package/dist/types/src/skills/index.d.ts +1 -1
- package/dist/types/src/skills/index.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +10 -10
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types/Drawing.d.ts +50 -0
- package/dist/types/src/types/Drawing.d.ts.map +1 -0
- package/dist/types/src/types/{SketchOperation.d.ts → DrawingOperation.d.ts} +111 -5
- package/dist/types/src/types/DrawingOperation.d.ts.map +1 -0
- package/dist/types/src/types/IllustratorCapabilities.d.ts +4 -4
- package/dist/types/src/types/IllustratorCapabilities.d.ts.map +1 -1
- package/dist/types/src/types/LegacySketch.d.ts +17 -0
- package/dist/types/src/types/LegacySketch.d.ts.map +1 -0
- package/dist/types/src/types/index.d.ts +3 -2
- package/dist/types/src/types/index.d.ts.map +1 -1
- package/dist/types/src/types/types.d.ts +18 -18
- package/dist/types/src/types/types.d.ts.map +1 -1
- package/dist/types/src/util/index.d.ts +1 -1
- package/dist/types/src/util/index.d.ts.map +1 -1
- package/dist/types/src/util/load-drawing.d.ts +22 -0
- package/dist/types/src/util/load-drawing.d.ts.map +1 -0
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/dx.config.ts +1 -0
- package/package.json +21 -19
- package/src/IllustratorPlugin.node.tsx +3 -3
- package/src/IllustratorPlugin.test.ts +32 -0
- package/src/IllustratorPlugin.tsx +15 -3
- package/src/IllustratorPlugin.workerd.tsx +2 -2
- package/src/capabilities/comment-config.ts +2 -2
- package/src/capabilities/create-object.ts +16 -14
- package/src/capabilities/index.ts +1 -0
- package/src/capabilities/migrations.test.ts +142 -0
- package/src/capabilities/migrations.ts +28 -0
- package/src/capabilities/react-surface.ts +36 -0
- package/src/capabilities/skill-definition.ts +2 -2
- package/src/components/{CreateSketchPanel.tsx → CreateDrawingPanel.tsx} +7 -7
- package/src/components/index.ts +1 -1
- package/src/containers/{SketchArticle/SketchArticle.tsx → DrawingArticle/DrawingArticle.tsx} +10 -11
- package/src/containers/{SketchArticle → DrawingArticle}/index.ts +1 -1
- package/src/containers/DrawingCard/DrawingCard.tsx +38 -0
- package/src/containers/{SketchCard → DrawingCard}/index.ts +1 -1
- package/src/containers/index.ts +2 -2
- package/src/model/builder.ts +34 -26
- package/src/model/content.ts +180 -0
- package/src/model/index.ts +2 -0
- package/src/model/mermaid.test.ts +116 -0
- package/src/model/mermaid.ts +299 -0
- package/src/operations/create.ts +6 -6
- package/src/operations/edit.ts +5 -5
- package/src/operations/generate.ts +25 -0
- package/src/operations/index.ts +1 -0
- package/src/operations/read.ts +5 -5
- package/src/skills/{sketch-skill.ts → drawing-skill.ts} +7 -7
- package/src/skills/index.ts +1 -1
- package/src/translations.ts +12 -12
- package/src/types/Drawing.ts +69 -0
- package/src/types/{SketchOperation.ts → DrawingOperation.ts} +28 -9
- package/src/types/IllustratorCapabilities.ts +4 -4
- package/src/types/LegacySketch.ts +25 -0
- package/src/types/index.ts +3 -2
- package/src/types/types.ts +18 -18
- package/src/util/index.ts +1 -1
- package/src/util/load-drawing.ts +48 -0
- package/dist/lib/chunk-load-sketch.mjs +0 -64
- package/dist/lib/chunk-load-sketch.mjs.map +0 -1
- package/dist/types/src/components/CreateSketchPanel.d.ts +0 -15
- package/dist/types/src/components/CreateSketchPanel.d.ts.map +0 -1
- package/dist/types/src/containers/SketchArticle/SketchArticle.d.ts +0 -11
- package/dist/types/src/containers/SketchArticle/SketchArticle.d.ts.map +0 -1
- package/dist/types/src/containers/SketchArticle/index.d.ts +0 -2
- package/dist/types/src/containers/SketchArticle/index.d.ts.map +0 -1
- package/dist/types/src/containers/SketchCard/SketchCard.d.ts +0 -10
- package/dist/types/src/containers/SketchCard/SketchCard.d.ts.map +0 -1
- package/dist/types/src/containers/SketchCard/index.d.ts +0 -2
- package/dist/types/src/containers/SketchCard/index.d.ts.map +0 -1
- package/dist/types/src/skills/sketch-skill.d.ts.map +0 -1
- package/dist/types/src/types/Sketch.d.ts +0 -50
- package/dist/types/src/types/Sketch.d.ts.map +0 -1
- package/dist/types/src/types/SketchOperation.d.ts.map +0 -1
- package/dist/types/src/util/load-sketch.d.ts +0 -37
- package/dist/types/src/util/load-sketch.d.ts.map +0 -1
- package/src/capabilities/react-surface.tsx +0 -37
- package/src/containers/SketchCard/SketchCard.tsx +0 -41
- package/src/types/Sketch.ts +0 -69
- package/src/util/load-sketch.ts +0 -74
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
import { trim } from "@dxos/util";
|
|
2
2
|
import { Skill, Template } from "@dxos/compute";
|
|
3
|
-
import {
|
|
4
|
-
//#region src/skills/
|
|
5
|
-
var SKILL_KEY = "org.dxos.skill.
|
|
3
|
+
import { DrawingOperation } from "#types";
|
|
4
|
+
//#region src/skills/drawing-skill.ts
|
|
5
|
+
var SKILL_KEY = "org.dxos.skill.drawing";
|
|
6
6
|
var operations = [
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
DrawingOperation.Create,
|
|
8
|
+
DrawingOperation.Read,
|
|
9
|
+
DrawingOperation.Edit
|
|
10
10
|
];
|
|
11
11
|
var make = () => Skill.make({
|
|
12
12
|
key: SKILL_KEY,
|
|
13
|
-
name: "
|
|
13
|
+
name: "Drawing",
|
|
14
14
|
tools: Skill.toolDefinitions({ operations }),
|
|
15
15
|
instructions: Template.make({ source: trim`
|
|
16
|
-
{{!
|
|
16
|
+
{{! Drawing }}
|
|
17
17
|
|
|
18
18
|
You can draw and edit diagrams on a shared canvas using a scene DSL.
|
|
19
19
|
|
|
@@ -39,8 +39,8 @@ var make = () => Skill.make({
|
|
|
39
39
|
|
|
40
40
|
## Workflow
|
|
41
41
|
|
|
42
|
-
1. If no
|
|
43
|
-
2. ALWAYS call read before editing an existing
|
|
42
|
+
1. If no drawing exists in context, create one first.
|
|
43
|
+
2. ALWAYS call read before editing an existing drawing — it returns the scene as you
|
|
44
44
|
(or the user) last left it, with origins derived from the live canvas, so it stays
|
|
45
45
|
correct even after the user drags shapes around. Note "unmanaged" counts shapes the
|
|
46
46
|
user drew by hand that are not part of the scene.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chunk-skills.mjs","names":[],"sources":["../../src/skills/
|
|
1
|
+
{"version":3,"file":"chunk-skills.mjs","names":[],"sources":["../../src/skills/drawing-skill.ts"],"sourcesContent":["//\n// Copyright 2026 DXOS.org\n//\n\nimport { Skill, Template } from '@dxos/compute';\nimport { trim } from '@dxos/util';\n\nimport { DrawingOperation } from '#types';\n\nconst SKILL_KEY = 'org.dxos.skill.drawing';\n\nconst operations = [DrawingOperation.Create, DrawingOperation.Read, DrawingOperation.Edit];\n\nconst make = () =>\n Skill.make({\n key: SKILL_KEY,\n name: 'Drawing',\n tools: Skill.toolDefinitions({ operations }),\n instructions: Template.make({\n source: trim`\n {{! Drawing }}\n\n You can draw and edit diagrams on a shared canvas using a scene DSL.\n\n ## Model\n\n A drawing is a set of WORLD OBJECTS — semantic things like \"face\", \"hat\", \"server\" —\n each composed of graphical ELEMENTS (rect, ellipse, circle, diamond, triangle, line,\n curve, arc, text, arrow). You do the layout; there is no auto-layout.\n\n - Give objects and elements short, semantic ids (\"face\", \"left-eye\"). Ids are how you\n edit or delete things later — choose them as carefully as variable names.\n - Element coordinates are OBJECT-LOCAL units. Design each object in roughly a 100-unit\n box. The object's \"origin\" (canvas px) and \"scale\" (px per unit) place it on the\n canvas: canvas = origin + local * scale. Prefer scale 2-3 for a primary subject.\n - Screen coordinates: x grows right, y grows DOWN. Arc angles are degrees clockwise\n from the +x axis: startAngle 30, endAngle 150 bulges downward (a smile);\n 210 to 330 bulges upward (a frown).\n - Circle is sugar for ellipse (reads back as ellipse); arc is sugar for curve.\n - Arrows can bind to elements: from/to is an element id in the same object, or\n \"objectId/elementId\" across objects. Bound arrows track their targets.\n - Styles: color (named palette), fill (none | solid | pattern),\n stroke (sketchy | solid | dashed | dotted), weight (s | m | l | xl).\n\n ## Workflow\n\n 1. If no drawing exists in context, create one first.\n 2. ALWAYS call read before editing an existing drawing — it returns the scene as you\n (or the user) last left it, with origins derived from the live canvas, so it stays\n correct even after the user drags shapes around. Note \"unmanaged\" counts shapes the\n user drew by hand that are not part of the scene.\n 3. Edit with commands, in one batch where possible:\n - upsert-object: create a new object, or redraw one wholesale.\n - upsert-elements: add or replace specific elements of an object — prefer this for\n incremental changes (\"make the smile bigger\" replaces only \"smile\").\n - remove-elements / remove-object: delete by id.\n - move-object: reposition an object (canvas px) without resending its elements.\n 4. Compose scenes from multiple objects: \"add a hat\" means a NEW \"hat\" object placed\n relative to the existing object's origin and size (from read) — do not redraw the\n existing object.\n `,\n }),\n });\n\nconst skill: Skill.Definition = {\n key: SKILL_KEY,\n make,\n};\n\nexport default skill;\n"],"mappings":";;;;AASA,IAAM,YAAY;AAElB,IAAM,aAAa;CAAC,iBAAiB;CAAQ,iBAAiB;CAAM,iBAAiB;AAAI;AAEzF,IAAM,aACJ,MAAM,KAAK;CACT,KAAK;CACL,MAAM;CACN,OAAO,MAAM,gBAAgB,EAAE,WAAW,CAAC;CAC3C,cAAc,SAAS,KAAK,EAC1B,QAAQ,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA0Cd,CAAC;AACH,CAAC;AAEH,IAAM,QAA0B;CAC9B,KAAK;CACL;AACF"}
|
package/dist/lib/chunk-types.mjs
CHANGED
|
@@ -1,71 +1,46 @@
|
|
|
1
1
|
import { t as __exportAll } from "./chunk-rolldown-runtime.mjs";
|
|
2
|
+
import { n as Drawing, t as Canvas } from "./chunk-Drawing.mjs";
|
|
2
3
|
import "./chunk-IllustratorCapabilities.mjs";
|
|
3
4
|
import { Capability } from "@dxos/app-framework";
|
|
5
|
+
import { DXN, Database, Ref, Type } from "@dxos/echo";
|
|
4
6
|
import * as Schema from "effect/Schema";
|
|
5
7
|
import { Operation } from "@dxos/compute";
|
|
6
|
-
import { meta } from "#meta";
|
|
7
|
-
import { Annotation, DXN, Database, Obj, Ref, Type } from "@dxos/echo";
|
|
8
|
-
import { FormInputAnnotation, LabelAnnotation } from "@dxos/echo/Annotation";
|
|
9
|
-
import { CardAnnotation, CollectionItemAnnotation } from "@dxos/schema";
|
|
10
8
|
import { DXN as DXN$1 } from "@dxos/keys";
|
|
9
|
+
import { meta } from "#meta";
|
|
11
10
|
import { Scene } from "#model";
|
|
12
|
-
//#region src/types/
|
|
13
|
-
var
|
|
14
|
-
Sketch: () => Sketch,
|
|
15
|
-
SketchRef: () => SketchRef,
|
|
16
|
-
isSketch: () => isSketch,
|
|
17
|
-
make: () => make
|
|
18
|
-
});
|
|
11
|
+
//#region src/types/LegacySketch.ts
|
|
12
|
+
var LegacySketch_exports = /* @__PURE__ */ __exportAll({ Sketch: () => Sketch });
|
|
19
13
|
/**
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
14
|
+
* The pre-rename `Sketch` object, kept solely so `Migration.define` can read existing data and
|
|
15
|
+
* convert it to {@link Drawing}. Never constructed by this plugin.
|
|
16
|
+
*
|
|
17
|
+
* Its canvas already points at `org.dxos.type.canvas` carrying `schema: 'tldraw.com/2'`, which is
|
|
18
|
+
* exactly the base `Drawing.Canvas` — so only the wrapper needs migrating.
|
|
23
19
|
*/
|
|
24
20
|
var Sketch = class extends Type.makeObject(DXN.make("org.dxos.type.sketch", "0.1.0"))(Schema.Struct({
|
|
25
21
|
name: Schema.optional(Schema.String),
|
|
26
|
-
canvas: Ref.Ref(
|
|
27
|
-
})
|
|
28
|
-
icon: "ph--compass-tool--regular",
|
|
29
|
-
hue: "indigo"
|
|
30
|
-
}), CardAnnotation.set(true), CollectionItemAnnotation.set(true))) {};
|
|
31
|
-
var SketchRef = (_canvasType) => Ref.Ref(Sketch);
|
|
32
|
-
/**
|
|
33
|
-
* Build a base `Sketch` object referencing the given canvas ECHO object.
|
|
34
|
-
*
|
|
35
|
-
* The canvas is stored as a `Ref` so the renderer-specific data (e.g. `Tldraw.Canvas`,
|
|
36
|
-
* `Excalidraw.Canvas`) lives as its own ECHO object alongside the Sketch.
|
|
37
|
-
*
|
|
38
|
-
* @param name Optional display name shown in the graph node and Properties form.
|
|
39
|
-
* @param canvas Renderer-specific canvas object.
|
|
40
|
-
* @returns A new `Sketch` object with `canvas` stored as a Ref.
|
|
41
|
-
*/
|
|
42
|
-
var make = ({ name, canvas }) => {
|
|
43
|
-
return Obj.make(Sketch, {
|
|
44
|
-
name,
|
|
45
|
-
canvas: Ref.make(canvas)
|
|
46
|
-
});
|
|
47
|
-
};
|
|
48
|
-
/** Type guard for {@link Sketch} objects. */
|
|
49
|
-
var isSketch = (object) => Obj.instanceOf(Sketch, object);
|
|
22
|
+
canvas: Ref.Ref(Canvas)
|
|
23
|
+
})) {};
|
|
50
24
|
//#endregion
|
|
51
|
-
//#region src/types/
|
|
52
|
-
var
|
|
25
|
+
//#region src/types/DrawingOperation.ts
|
|
26
|
+
var DrawingOperation_exports = /* @__PURE__ */ __exportAll({
|
|
53
27
|
Create: () => Create,
|
|
54
28
|
Edit: () => Edit,
|
|
29
|
+
Generate: () => Generate,
|
|
55
30
|
Read: () => Read
|
|
56
31
|
});
|
|
57
32
|
var makeKey = (name) => DXN$1.make(`${meta.profile.key}.operation.${name}`);
|
|
58
33
|
var Create = Operation.make({
|
|
59
34
|
meta: {
|
|
60
35
|
key: makeKey("create"),
|
|
61
|
-
name: "Create
|
|
36
|
+
name: "Create Drawing",
|
|
62
37
|
icon: "ph--pencil-simple--regular"
|
|
63
38
|
},
|
|
64
39
|
input: Schema.Struct({
|
|
65
40
|
name: Schema.optional(Schema.String),
|
|
66
41
|
variant: Schema.optional(Schema.String).annotations({ description: "Variant id (canvas typename); defaults to the first registered variant." })
|
|
67
42
|
}),
|
|
68
|
-
output: Schema.Struct({ object: Type.getSchema(
|
|
43
|
+
output: Schema.Struct({ object: Type.getSchema(Drawing) }),
|
|
69
44
|
services: [Capability.Service, Database.Service]
|
|
70
45
|
});
|
|
71
46
|
/** The scene as derived from the live canvas. */
|
|
@@ -76,23 +51,23 @@ var SceneOutput = {
|
|
|
76
51
|
var Read = Operation.make({
|
|
77
52
|
meta: {
|
|
78
53
|
key: makeKey("read"),
|
|
79
|
-
name: "Read
|
|
80
|
-
description: "Returns the current scene of a
|
|
54
|
+
name: "Read Drawing",
|
|
55
|
+
description: "Returns the current scene of a drawing: world objects (by id) with their elements in object-local units. Call before editing an existing drawing.",
|
|
81
56
|
icon: "ph--eye--regular"
|
|
82
57
|
},
|
|
83
|
-
input: Schema.Struct({
|
|
58
|
+
input: Schema.Struct({ drawing: Ref.Ref(Drawing).annotations({ description: "The drawing to read." }) }),
|
|
84
59
|
output: Schema.Struct(SceneOutput),
|
|
85
60
|
services: [Capability.Service, Database.Service]
|
|
86
61
|
});
|
|
87
62
|
var Edit = Operation.make({
|
|
88
63
|
meta: {
|
|
89
64
|
key: makeKey("edit"),
|
|
90
|
-
name: "Edit
|
|
91
|
-
description: "Applies scene commands to a
|
|
65
|
+
name: "Edit Drawing",
|
|
66
|
+
description: "Applies scene commands to a drawing: upsert/move/remove world objects or individual elements by id. Returns the resulting scene.",
|
|
92
67
|
icon: "ph--pencil-simple-line--regular"
|
|
93
68
|
},
|
|
94
69
|
input: Schema.Struct({
|
|
95
|
-
|
|
70
|
+
drawing: Ref.Ref(Drawing).annotations({ description: "The drawing to edit." }),
|
|
96
71
|
commands: Schema.Array(Scene.Command).annotations({ description: "Commands applied in order, atomically." })
|
|
97
72
|
}),
|
|
98
73
|
output: Schema.Struct({
|
|
@@ -102,7 +77,24 @@ var Edit = Operation.make({
|
|
|
102
77
|
}),
|
|
103
78
|
services: [Capability.Service, Database.Service]
|
|
104
79
|
});
|
|
80
|
+
var Generate = Operation.make({
|
|
81
|
+
meta: {
|
|
82
|
+
key: makeKey("generate"),
|
|
83
|
+
name: "Generate Drawing",
|
|
84
|
+
description: "Replaces a drawing with a diagram compiled from a mermaid flowchart description. The dialect owns layout, so no coordinates are supplied.",
|
|
85
|
+
icon: "ph--graph--regular"
|
|
86
|
+
},
|
|
87
|
+
input: Schema.Struct({
|
|
88
|
+
drawing: Ref.Ref(Drawing).annotations({ description: "The drawing to generate into." }),
|
|
89
|
+
source: Schema.String.annotations({ description: "Mermaid flowchart source." })
|
|
90
|
+
}),
|
|
91
|
+
output: Schema.Struct({
|
|
92
|
+
...SceneOutput,
|
|
93
|
+
upserted: Schema.Array(Schema.String).annotations({ description: "Object ids created or modified." })
|
|
94
|
+
}),
|
|
95
|
+
services: [Capability.Service, Database.Service]
|
|
96
|
+
});
|
|
105
97
|
//#endregion
|
|
106
|
-
export {
|
|
98
|
+
export { Read as a, Generate as i, DrawingOperation_exports as n, LegacySketch_exports as o, Edit as r, Sketch as s, Create as t };
|
|
107
99
|
|
|
108
100
|
//# sourceMappingURL=chunk-types.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chunk-types.mjs","names":[],"sources":["../../src/types/
|
|
1
|
+
{"version":3,"file":"chunk-types.mjs","names":[],"sources":["../../src/types/LegacySketch.ts","../../src/types/DrawingOperation.ts"],"sourcesContent":["//\n// Copyright 2026 DXOS.org\n//\n\n// @import-as-namespace\n\nimport * as Schema from 'effect/Schema';\n\nimport { DXN, Ref, Type } from '@dxos/echo';\n\nimport * as Drawing from './Drawing';\n\n/**\n * The pre-rename `Sketch` object, kept solely so `Migration.define` can read existing data and\n * convert it to {@link Drawing}. Never constructed by this plugin.\n *\n * Its canvas already points at `org.dxos.type.canvas` carrying `schema: 'tldraw.com/2'`, which is\n * exactly the base `Drawing.Canvas` — so only the wrapper needs migrating.\n */\nexport class Sketch extends Type.makeObject<Sketch>(DXN.make('org.dxos.type.sketch', '0.1.0'))(\n Schema.Struct({\n name: Schema.optional(Schema.String),\n canvas: Ref.Ref(Drawing.Canvas),\n }),\n) {}\n","//\n// Copyright 2026 DXOS.org\n//\n\n// @import-as-namespace\n\nimport * as Schema from 'effect/Schema';\n\nimport { Capability } from '@dxos/app-framework';\nimport { Operation } from '@dxos/compute';\nimport { Database, Ref, Type } from '@dxos/echo';\nimport { DXN } from '@dxos/keys';\n\nimport { meta } from '#meta';\nimport { Scene } from '#model';\n\nimport * as Drawing from './Drawing';\n\nconst makeKey = (name: string) => DXN.make(`${meta.profile.key}.operation.${name}`);\n\nexport const Create = Operation.make({\n meta: { key: makeKey('create'), name: 'Create Drawing', icon: 'ph--pencil-simple--regular' },\n input: Schema.Struct({\n name: Schema.optional(Schema.String),\n variant: Schema.optional(Schema.String).annotations({\n description: 'Variant id (canvas typename); defaults to the first registered variant.',\n }),\n }),\n output: Schema.Struct({\n object: Type.getSchema(Drawing.Drawing),\n }),\n services: [Capability.Service, Database.Service],\n});\n\n/** The scene as derived from the live canvas. */\nconst SceneOutput = {\n scene: Scene.Scene.annotations({ description: 'The diagram as world objects with object-local coordinates.' }),\n unmanaged: Schema.Number.annotations({\n description: 'Number of shapes on the canvas not managed by the DSL (drawn by users).',\n }),\n};\n\nexport const Read = Operation.make({\n meta: {\n key: makeKey('read'),\n name: 'Read Drawing',\n description:\n 'Returns the current scene of a drawing: world objects (by id) with their elements in object-local units. Call before editing an existing drawing.',\n icon: 'ph--eye--regular',\n },\n input: Schema.Struct({\n drawing: Ref.Ref(Drawing.Drawing).annotations({ description: 'The drawing to read.' }),\n }),\n output: Schema.Struct(SceneOutput),\n services: [Capability.Service, Database.Service],\n});\n\nexport const Edit = Operation.make({\n meta: {\n key: makeKey('edit'),\n name: 'Edit Drawing',\n description:\n 'Applies scene commands to a drawing: upsert/move/remove world objects or individual elements by id. Returns the resulting scene.',\n icon: 'ph--pencil-simple-line--regular',\n },\n input: Schema.Struct({\n drawing: Ref.Ref(Drawing.Drawing).annotations({ description: 'The drawing to edit.' }),\n commands: Schema.Array(Scene.Command).annotations({ description: 'Commands applied in order, atomically.' }),\n }),\n output: Schema.Struct({\n ...SceneOutput,\n upserted: Schema.Array(Schema.String).annotations({ description: 'Object ids created or modified.' }),\n removed: Schema.Number.annotations({ description: 'Number of shapes removed.' }),\n }),\n services: [Capability.Service, Database.Service],\n});\n\nexport const Generate = Operation.make({\n meta: {\n key: makeKey('generate'),\n name: 'Generate Drawing',\n description:\n 'Replaces a drawing with a diagram compiled from a mermaid flowchart description. The dialect owns layout, so no coordinates are supplied.',\n icon: 'ph--graph--regular',\n },\n input: Schema.Struct({\n drawing: Ref.Ref(Drawing.Drawing).annotations({ description: 'The drawing to generate into.' }),\n source: Schema.String.annotations({ description: 'Mermaid flowchart source.' }),\n }),\n output: Schema.Struct({\n ...SceneOutput,\n upserted: Schema.Array(Schema.String).annotations({ description: 'Object ids created or modified.' }),\n }),\n services: [Capability.Service, Database.Service],\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAmBA,IAAa,SAAb,cAA4B,KAAK,WAAmB,IAAI,KAAK,wBAAwB,OAAO,CAAC,CAAC,CAC5F,OAAO,OAAO;CACZ,MAAM,OAAO,SAAS,OAAO,MAAM;CACnC,QAAQ,IAAI,IAAI,MAAc;AAChC,CAAC,CACH,CAAC,CAAC,CAAC;;;;;;;;;ACNH,IAAM,WAAW,SAAiB,MAAI,KAAK,GAAG,KAAK,QAAQ,IAAI,aAAa,MAAM;AAElF,IAAa,SAAS,UAAU,KAAK;CACnC,MAAM;EAAE,KAAK,QAAQ,QAAQ;EAAG,MAAM;EAAkB,MAAM;CAA6B;CAC3F,OAAO,OAAO,OAAO;EACnB,MAAM,OAAO,SAAS,OAAO,MAAM;EACnC,SAAS,OAAO,SAAS,OAAO,MAAM,CAAC,CAAC,YAAY,EAClD,aAAa,0EACf,CAAC;CACH,CAAC;CACD,QAAQ,OAAO,OAAO,EACpB,QAAQ,KAAK,UAAU,OAAe,EACxC,CAAC;CACD,UAAU,CAAC,WAAW,SAAS,SAAS,OAAO;AACjD,CAAC;;AAGD,IAAM,cAAc;CAClB,OAAO,MAAM,MAAM,YAAY,EAAE,aAAa,8DAA8D,CAAC;CAC7G,WAAW,OAAO,OAAO,YAAY,EACnC,aAAa,0EACf,CAAC;AACH;AAEA,IAAa,OAAO,UAAU,KAAK;CACjC,MAAM;EACJ,KAAK,QAAQ,MAAM;EACnB,MAAM;EACN,aACE;EACF,MAAM;CACR;CACA,OAAO,OAAO,OAAO,EACnB,SAAS,IAAI,IAAI,OAAe,CAAC,CAAC,YAAY,EAAE,aAAa,uBAAuB,CAAC,EACvF,CAAC;CACD,QAAQ,OAAO,OAAO,WAAW;CACjC,UAAU,CAAC,WAAW,SAAS,SAAS,OAAO;AACjD,CAAC;AAED,IAAa,OAAO,UAAU,KAAK;CACjC,MAAM;EACJ,KAAK,QAAQ,MAAM;EACnB,MAAM;EACN,aACE;EACF,MAAM;CACR;CACA,OAAO,OAAO,OAAO;EACnB,SAAS,IAAI,IAAI,OAAe,CAAC,CAAC,YAAY,EAAE,aAAa,uBAAuB,CAAC;EACrF,UAAU,OAAO,MAAM,MAAM,OAAO,CAAC,CAAC,YAAY,EAAE,aAAa,yCAAyC,CAAC;CAC7G,CAAC;CACD,QAAQ,OAAO,OAAO;EACpB,GAAG;EACH,UAAU,OAAO,MAAM,OAAO,MAAM,CAAC,CAAC,YAAY,EAAE,aAAa,kCAAkC,CAAC;EACpG,SAAS,OAAO,OAAO,YAAY,EAAE,aAAa,4BAA4B,CAAC;CACjF,CAAC;CACD,UAAU,CAAC,WAAW,SAAS,SAAS,OAAO;AACjD,CAAC;AAED,IAAa,WAAW,UAAU,KAAK;CACrC,MAAM;EACJ,KAAK,QAAQ,UAAU;EACvB,MAAM;EACN,aACE;EACF,MAAM;CACR;CACA,OAAO,OAAO,OAAO;EACnB,SAAS,IAAI,IAAI,OAAe,CAAC,CAAC,YAAY,EAAE,aAAa,gCAAgC,CAAC;EAC9F,QAAQ,OAAO,OAAO,YAAY,EAAE,aAAa,4BAA4B,CAAC;CAChF,CAAC;CACD,QAAQ,OAAO,OAAO;EACpB,GAAG;EACH,UAAU,OAAO,MAAM,OAAO,MAAM,CAAC,CAAC,YAAY,EAAE,aAAa,kCAAkC,CAAC;CACtG,CAAC;CACD,UAAU,CAAC,WAAW,SAAS,SAAS,OAAO;AACjD,CAAC"}
|
package/dist/lib/components.mjs
CHANGED
|
@@ -5,14 +5,14 @@ import { useCapabilities } from "@dxos/app-framework/ui";
|
|
|
5
5
|
import { useTranslation } from "@dxos/react-ui";
|
|
6
6
|
import { SearchList, useSearchListResults } from "@dxos/react-ui-search";
|
|
7
7
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
8
|
-
//#region src/components/
|
|
8
|
+
//#region src/components/CreateDrawingPanel.tsx
|
|
9
9
|
/**
|
|
10
|
-
* Variant picker for
|
|
10
|
+
* Variant picker for drawings (SearchList over contributed `DrawingVariant[]`).
|
|
11
11
|
* On select, calls `onCreateObject({ variantId })`; plugin-illustrator's
|
|
12
12
|
* CreateObjectEntry.createObject resolves the variantId, builds the canvas via
|
|
13
|
-
* variant.createCanvas, then wraps it in a
|
|
13
|
+
* variant.createCanvas, then wraps it in a Drawing.
|
|
14
14
|
*/
|
|
15
|
-
var
|
|
15
|
+
var CreateDrawingPanel = ({ onCreateObject, variants: variantsProp }) => {
|
|
16
16
|
const { t } = useTranslation(meta.profile.key);
|
|
17
17
|
const capabilityVariants = useCapabilities(IllustratorCapabilities.VariantProvider);
|
|
18
18
|
const variants = variantsProp ?? capabilityVariants;
|
|
@@ -29,7 +29,7 @@ var CreateSketchPanel = ({ onCreateObject, variants: variantsProp }) => {
|
|
|
29
29
|
children: [/* @__PURE__ */ jsx(SearchList.Input, {
|
|
30
30
|
classNames: "mb-form-gap",
|
|
31
31
|
autoFocus: true,
|
|
32
|
-
"data-testid": "create-
|
|
32
|
+
"data-testid": "create-drawing-panel.variant-input",
|
|
33
33
|
placeholder: t("create-panel.variant.placeholder")
|
|
34
34
|
}), /* @__PURE__ */ jsx(SearchList.Viewport, { children: results.map((variant) => /* @__PURE__ */ jsx(SearchList.Item, {
|
|
35
35
|
value: variant.id,
|
|
@@ -40,6 +40,6 @@ var CreateSketchPanel = ({ onCreateObject, variants: variantsProp }) => {
|
|
|
40
40
|
});
|
|
41
41
|
};
|
|
42
42
|
//#endregion
|
|
43
|
-
export {
|
|
43
|
+
export { CreateDrawingPanel };
|
|
44
44
|
|
|
45
45
|
//# sourceMappingURL=components.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"components.mjs","names":[],"sources":["../../src/components/
|
|
1
|
+
{"version":3,"file":"components.mjs","names":[],"sources":["../../src/components/CreateDrawingPanel.tsx"],"sourcesContent":["//\n// Copyright 2026 DXOS.org\n//\n\nimport React, { useCallback, useMemo } from 'react';\n\nimport { useCapabilities } from '@dxos/app-framework/ui';\nimport { type SpaceCapabilities } from '@dxos/plugin-space';\nimport { useTranslation } from '@dxos/react-ui';\nimport { SearchList, useSearchListResults } from '@dxos/react-ui-search';\n\nimport { meta } from '#meta';\nimport { type DrawingVariant, IllustratorCapabilities } from '#types';\n\nexport type CreateDrawingPanelProps = SpaceCapabilities.CreateObjectCustomPanelProps & {\n /** Optional override (primarily for stories/tests). Defaults to IllustratorCapabilities.VariantProvider. */\n variants?: DrawingVariant[];\n};\n\n/**\n * Variant picker for drawings (SearchList over contributed `DrawingVariant[]`).\n * On select, calls `onCreateObject({ variantId })`; plugin-illustrator's\n * CreateObjectEntry.createObject resolves the variantId, builds the canvas via\n * variant.createCanvas, then wraps it in a Drawing.\n */\nexport const CreateDrawingPanel = ({ onCreateObject, variants: variantsProp }: CreateDrawingPanelProps) => {\n const { t } = useTranslation(meta.profile.key);\n const capabilityVariants = useCapabilities(IllustratorCapabilities.VariantProvider);\n const variants = variantsProp ?? capabilityVariants;\n const sorted = useMemo(() => [...variants].sort((a, b) => a.label.localeCompare(b.label)), [variants]);\n const { results, handleSearch } = useSearchListResults({\n items: sorted,\n extract: (variant) => variant.label,\n });\n\n const handleSelect = useCallback(\n (id: string) => {\n const variant = variants.find((entry) => entry.id === id);\n if (!variant) {\n return;\n }\n void onCreateObject({ variantId: id });\n },\n [variants, onCreateObject],\n );\n\n return (\n <SearchList.Root onSearch={handleSearch}>\n <SearchList.Input\n classNames='mb-form-gap'\n autoFocus\n data-testid='create-drawing-panel.variant-input'\n placeholder={t('create-panel.variant.placeholder')}\n />\n <SearchList.Viewport>\n {results.map((variant) => (\n <SearchList.Item\n key={variant.id}\n value={variant.id}\n label={variant.label}\n icon={variant.icon ?? 'ph--compass-tool--regular'}\n onSelect={() => handleSelect(variant.id)}\n />\n ))}\n </SearchList.Viewport>\n </SearchList.Root>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;AAyBA,IAAa,sBAAsB,EAAE,gBAAgB,UAAU,mBAA4C;CACzG,MAAM,EAAE,MAAM,eAAe,KAAK,QAAQ,GAAG;CAC7C,MAAM,qBAAqB,gBAAgB,wBAAwB,eAAe;CAClF,MAAM,WAAW,gBAAgB;CAEjC,MAAM,EAAE,SAAS,iBAAiB,qBAAqB;EACrD,OAFa,cAAc,CAAC,GAAG,QAAQ,CAAC,CAAC,MAAM,GAAG,MAAM,EAAE,MAAM,cAAc,EAAE,KAAK,CAAC,GAAG,CAAC,QAAQ,CAE3F;EACP,UAAU,YAAY,QAAQ;CAChC,CAAC;CAED,MAAM,eAAe,aAClB,OAAe;EAEd,IAAI,CADY,SAAS,MAAM,UAAU,MAAM,OAAO,EACjD,GACH;EAEF,eAAoB,EAAE,WAAW,GAAG,CAAC;CACvC,GACA,CAAC,UAAU,cAAc,CAC3B;CAEA,OACE,qBAAC,WAAW,MAAZ;EAAiB,UAAU;YAA3B,CACE,oBAAC,WAAW,OAAZ;GACE,YAAW;GACX,WAAA;GACA,eAAY;GACZ,aAAa,EAAE,kCAAkC;EAClD,CAAA,GACD,oBAAC,WAAW,UAAZ,EAAA,UACG,QAAQ,KAAK,YACZ,oBAAC,WAAW,MAAZ;GAEE,OAAO,QAAQ;GACf,OAAO,QAAQ;GACf,MAAM,QAAQ,QAAQ;GACtB,gBAAgB,aAAa,QAAQ,EAAE;EACxC,GALM,QAAQ,EAKd,CACF,EACkB,CAAA,CACN;;AAErB"}
|
package/dist/lib/containers.mjs
CHANGED
|
@@ -1,58 +1,56 @@
|
|
|
1
1
|
import { IllustratorCapabilities } from "#types";
|
|
2
2
|
import { meta } from "#meta";
|
|
3
|
-
import { Obj } from "@dxos/echo";
|
|
4
3
|
import "react";
|
|
5
4
|
import { useCapabilities } from "@dxos/app-framework/ui";
|
|
6
5
|
import { useTranslation } from "@dxos/react-ui";
|
|
7
6
|
import { jsx } from "react/jsx-runtime";
|
|
8
7
|
import { useObject } from "@dxos/echo-react";
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
8
|
+
import { findVariant } from "#util";
|
|
9
|
+
//#region src/containers/DrawingArticle/DrawingArticle.tsx
|
|
10
|
+
/** Resolves the drawing's canvas and delegates rendering to the variant claiming its schema. */
|
|
11
|
+
var DrawingArticle = ({ role, attendableId, subject: drawing, extrinsic }) => {
|
|
12
12
|
const { t } = useTranslation(meta.profile.key);
|
|
13
13
|
const variants = useCapabilities(IllustratorCapabilities.VariantProvider);
|
|
14
|
-
const ref =
|
|
14
|
+
const ref = drawing.canvas;
|
|
15
15
|
const [snapshot] = useObject(ref);
|
|
16
16
|
const canvas = snapshot ? ref.target : void 0;
|
|
17
17
|
if (!canvas) return null;
|
|
18
|
-
const
|
|
19
|
-
const match = variants.find((variant) => variant.id === typename);
|
|
18
|
+
const match = findVariant(variants, canvas);
|
|
20
19
|
if (!match?.article) return /* @__PURE__ */ jsx("div", {
|
|
21
20
|
className: "p-4 text-sm",
|
|
22
|
-
children: t("unsupported-variant.label", { defaultValue: "Unsupported
|
|
21
|
+
children: t("unsupported-variant.label", { defaultValue: "Unsupported drawing variant" })
|
|
23
22
|
});
|
|
24
23
|
const Component = match.article;
|
|
25
24
|
return /* @__PURE__ */ jsx(Component, {
|
|
26
|
-
|
|
25
|
+
drawing,
|
|
27
26
|
canvas,
|
|
28
27
|
role,
|
|
29
28
|
attendableId,
|
|
30
29
|
extrinsic
|
|
31
30
|
});
|
|
32
31
|
};
|
|
33
|
-
|
|
32
|
+
DrawingArticle.displayName = "DrawingArticle";
|
|
34
33
|
//#endregion
|
|
35
|
-
//#region src/containers/
|
|
36
|
-
/** Resolves the
|
|
37
|
-
var
|
|
34
|
+
//#region src/containers/DrawingCard/DrawingCard.tsx
|
|
35
|
+
/** Resolves the drawing's canvas and delegates rendering to the variant claiming its schema. */
|
|
36
|
+
var DrawingCard = ({ role, subject: drawing, editable }) => {
|
|
38
37
|
const variants = useCapabilities(IllustratorCapabilities.VariantProvider);
|
|
39
|
-
const ref =
|
|
38
|
+
const ref = drawing.canvas;
|
|
40
39
|
const [snapshot] = useObject(ref);
|
|
41
40
|
const canvas = snapshot ? ref.target : void 0;
|
|
42
41
|
if (!canvas) return null;
|
|
43
|
-
const
|
|
44
|
-
const match = variants.find((variant) => variant.id === typename);
|
|
42
|
+
const match = findVariant(variants, canvas);
|
|
45
43
|
if (!match?.card) return null;
|
|
46
44
|
const Component = match.card;
|
|
47
45
|
return /* @__PURE__ */ jsx(Component, {
|
|
48
|
-
|
|
46
|
+
drawing,
|
|
49
47
|
canvas,
|
|
50
48
|
role,
|
|
51
49
|
editable
|
|
52
50
|
});
|
|
53
51
|
};
|
|
54
|
-
|
|
52
|
+
DrawingCard.displayName = "DrawingCard";
|
|
55
53
|
//#endregion
|
|
56
|
-
export {
|
|
54
|
+
export { DrawingArticle, DrawingCard };
|
|
57
55
|
|
|
58
56
|
//# sourceMappingURL=containers.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"containers.mjs","names":[],"sources":["../../src/containers/
|
|
1
|
+
{"version":3,"file":"containers.mjs","names":[],"sources":["../../src/containers/DrawingArticle/DrawingArticle.tsx","../../src/containers/DrawingCard/DrawingCard.tsx"],"sourcesContent":["//\n// Copyright 2026 DXOS.org\n//\n\nimport React from 'react';\n\nimport { useCapabilities } from '@dxos/app-framework/ui';\nimport { type AppSurface } from '@dxos/app-toolkit/ui';\nimport { useObject } from '@dxos/echo-react';\nimport { useTranslation } from '@dxos/react-ui';\n\nimport { meta } from '#meta';\nimport { type Drawing, IllustratorCapabilities } from '#types';\nimport { findVariant } from '#util';\n\nexport type DrawingArticleProps = AppSurface.ObjectArticleProps<Drawing.Drawing> & {\n extrinsic?: boolean;\n};\n\n/** Resolves the drawing's canvas and delegates rendering to the variant claiming its schema. */\nexport const DrawingArticle = ({ role, attendableId, subject: drawing, extrinsic }: DrawingArticleProps) => {\n const { t } = useTranslation(meta.profile.key);\n const variants = useCapabilities(IllustratorCapabilities.VariantProvider);\n const ref = drawing.canvas;\n // Subscribe via the snapshot for load/re-render, but hand variants the LIVE object —\n // their store adapters need `Doc.createAccessor`, which rejects snapshots.\n const [snapshot] = useObject(ref);\n const canvas = snapshot ? ref.target : undefined;\n\n if (!canvas) {\n return null;\n }\n\n const match = findVariant(variants, canvas);\n if (!match?.article) {\n return (\n <div className='p-4 text-sm'>\n {t('unsupported-variant.label', { defaultValue: 'Unsupported drawing variant' })}\n </div>\n );\n }\n\n const Component = match.article;\n return <Component drawing={drawing} canvas={canvas} role={role} attendableId={attendableId} extrinsic={extrinsic} />;\n};\n\nDrawingArticle.displayName = 'DrawingArticle';\n","//\n// Copyright 2026 DXOS.org\n//\n\nimport React from 'react';\n\nimport { useCapabilities } from '@dxos/app-framework/ui';\nimport { type AppSurface } from '@dxos/app-toolkit/ui';\nimport { useObject } from '@dxos/echo-react';\n\nimport { type Drawing, IllustratorCapabilities } from '#types';\nimport { findVariant } from '#util';\n\nexport type DrawingCardProps = AppSurface.ObjectCardProps<Drawing.Drawing>;\n\n/** Resolves the drawing's canvas and delegates rendering to the variant claiming its schema. */\nexport const DrawingCard = ({ role, subject: drawing, editable }: DrawingCardProps) => {\n const variants = useCapabilities(IllustratorCapabilities.VariantProvider);\n const ref = drawing.canvas;\n const [snapshot] = useObject(ref);\n const canvas = snapshot ? ref.target : undefined;\n\n if (!canvas) {\n return null;\n }\n\n const match = findVariant(variants, canvas);\n if (!match?.card) {\n return null;\n }\n\n const Component = match.card;\n return <Component drawing={drawing} canvas={canvas} role={role} editable={editable} />;\n};\n\nDrawingCard.displayName = 'DrawingCard';\n\nexport default DrawingCard;\n"],"mappings":";;;;;;;;;;AAoBA,IAAa,kBAAkB,EAAE,MAAM,cAAc,SAAS,SAAS,gBAAqC;CAC1G,MAAM,EAAE,MAAM,eAAe,KAAK,QAAQ,GAAG;CAC7C,MAAM,WAAW,gBAAgB,wBAAwB,eAAe;CACxE,MAAM,MAAM,QAAQ;CAGpB,MAAM,CAAC,YAAY,UAAU,GAAG;CAChC,MAAM,SAAS,WAAW,IAAI,SAAS,KAAA;CAEvC,IAAI,CAAC,QACH,OAAO;CAGT,MAAM,QAAQ,YAAY,UAAU,MAAM;CAC1C,IAAI,CAAC,OAAO,SACV,OACE,oBAAC,OAAD;EAAK,WAAU;YACZ,EAAE,6BAA6B,EAAE,cAAc,8BAA8B,CAAC;CAC5E,CAAA;CAIT,MAAM,YAAY,MAAM;CACxB,OAAO,oBAAC,WAAD;EAAoB;EAAiB;EAAc;EAAoB;EAAyB;CAAY,CAAA;AACrH;AAEA,eAAe,cAAc;;;;AC9B7B,IAAa,eAAe,EAAE,MAAM,SAAS,SAAS,eAAiC;CACrF,MAAM,WAAW,gBAAgB,wBAAwB,eAAe;CACxE,MAAM,MAAM,QAAQ;CACpB,MAAM,CAAC,YAAY,UAAU,GAAG;CAChC,MAAM,SAAS,WAAW,IAAI,SAAS,KAAA;CAEvC,IAAI,CAAC,QACH,OAAO;CAGT,MAAM,QAAQ,YAAY,UAAU,MAAM;CAC1C,IAAI,CAAC,OAAO,MACV,OAAO;CAGT,MAAM,YAAY,MAAM;CACxB,OAAO,oBAAC,WAAD;EAAoB;EAAiB;EAAc;EAAgB;CAAW,CAAA;AACvF;AAEA,YAAY,cAAc"}
|
package/dist/lib/index.mjs
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { t as meta } from "./chunk-meta.mjs";
|
|
2
|
+
import { r as Drawing_exports } from "./chunk-Drawing.mjs";
|
|
2
3
|
import { t as model_exports } from "./chunk-model.mjs";
|
|
3
4
|
import { IllustratorOperationHandlerSet } from "./operations.mjs";
|
|
4
5
|
import { t as skill } from "./chunk-skills.mjs";
|
|
6
|
+
import { n as DrawingOperation_exports, o as LegacySketch_exports } from "./chunk-types.mjs";
|
|
5
7
|
import { t as IllustratorCapabilities_exports } from "./chunk-IllustratorCapabilities.mjs";
|
|
6
|
-
import {
|
|
7
|
-
import { i as resolveVariant, n as UnknownSketchVariantError, r as loadSketch, t as SketchVariantMismatchError } from "./chunk-load-sketch.mjs";
|
|
8
|
+
import { n as findVariant, r as resolveVariant, t as UnknownDrawingVariantError } from "./chunk-load-drawing.mjs";
|
|
8
9
|
import "./util.mjs";
|
|
9
|
-
export {
|
|
10
|
+
export { Drawing_exports as Drawing, DrawingOperation_exports as DrawingOperation, skill as DrawingSkill, IllustratorCapabilities_exports as IllustratorCapabilities, model_exports as IllustratorModel, IllustratorOperationHandlerSet, LegacySketch_exports as LegacySketch, UnknownDrawingVariantError, findVariant, meta, resolveVariant };
|
package/dist/lib/model.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export { DialectRegistry, scene_exports as Scene, sceneDialect };
|
|
1
|
+
import { a as scene_exports, c as nextIndex, i as sceneDialect, n as mermaid_exports, o as makeBuilder, r as DialectRegistry, s as applyCommands } from "./chunk-model.mjs";
|
|
2
|
+
export { DialectRegistry, mermaid_exports as Mermaid, scene_exports as Scene, applyCommands, makeBuilder, nextIndex, sceneDialect };
|
package/dist/lib/operations.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { OperationHandlerSet } from "@dxos/compute";
|
|
2
2
|
//#region src/operations/index.ts
|
|
3
|
-
var IllustratorOperationHandlerSet = OperationHandlerSet.lazy(() => import("./chunk-create.mjs"), () => import("./chunk-edit.mjs"), () => import("./chunk-read.mjs"));
|
|
3
|
+
var IllustratorOperationHandlerSet = OperationHandlerSet.lazy(() => import("./chunk-create.mjs"), () => import("./chunk-edit.mjs"), () => import("./chunk-generate.mjs"), () => import("./chunk-read.mjs"));
|
|
4
4
|
//#endregion
|
|
5
5
|
export { IllustratorOperationHandlerSet };
|
|
6
6
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"operations.mjs","names":[],"sources":["../../src/operations/index.ts"],"sourcesContent":["//\n// Copyright 2026 DXOS.org\n//\n\nimport { OperationHandlerSet } from '@dxos/compute';\n\nexport const IllustratorOperationHandlerSet = OperationHandlerSet.lazy(\n () => import('./create'),\n () => import('./edit'),\n () => import('./read'),\n);\n"],"mappings":";;AAMA,IAAa,iCAAiC,oBAAoB,WAC1D,OAAO,6BACP,OAAO,2BACP,OAAO,mBACf"}
|
|
1
|
+
{"version":3,"file":"operations.mjs","names":[],"sources":["../../src/operations/index.ts"],"sourcesContent":["//\n// Copyright 2026 DXOS.org\n//\n\nimport { OperationHandlerSet } from '@dxos/compute';\n\nexport const IllustratorOperationHandlerSet = OperationHandlerSet.lazy(\n () => import('./create'),\n () => import('./edit'),\n () => import('./generate'),\n () => import('./read'),\n);\n"],"mappings":";;AAMA,IAAa,iCAAiC,oBAAoB,WAC1D,OAAO,6BACP,OAAO,2BACP,OAAO,+BACP,OAAO,mBACf"}
|
package/dist/lib/skills.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { t as skill } from "./chunk-skills.mjs";
|
|
2
|
-
export { skill as
|
|
2
|
+
export { skill as DrawingSkill };
|
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
import { Sketch } from "#types";
|
|
2
|
-
import { meta } from "#meta";
|
|
3
1
|
import { Type } from "@dxos/echo";
|
|
2
|
+
import { Drawing } from "#types";
|
|
3
|
+
import { meta } from "#meta";
|
|
4
4
|
//#region src/translations.ts
|
|
5
5
|
var translations = [{ "en-US": {
|
|
6
|
-
[Type.getTypename(
|
|
7
|
-
"typename.label": "
|
|
8
|
-
"typename.label_zero": "
|
|
9
|
-
"typename.label_one": "
|
|
10
|
-
"typename.label_other": "
|
|
11
|
-
"object-name.placeholder": "New
|
|
12
|
-
"add-object.label": "Add
|
|
13
|
-
"rename-object.label": "Rename
|
|
14
|
-
"delete-object.label": "Delete
|
|
15
|
-
"object-deleted.label": "
|
|
6
|
+
[Type.getTypename(Drawing.Drawing)]: {
|
|
7
|
+
"typename.label": "Drawing",
|
|
8
|
+
"typename.label_zero": "Drawings",
|
|
9
|
+
"typename.label_one": "Drawing",
|
|
10
|
+
"typename.label_other": "Drawings",
|
|
11
|
+
"object-name.placeholder": "New drawing",
|
|
12
|
+
"add-object.label": "Add drawing",
|
|
13
|
+
"rename-object.label": "Rename drawing",
|
|
14
|
+
"delete-object.label": "Delete drawing",
|
|
15
|
+
"object-deleted.label": "Drawing deleted"
|
|
16
16
|
},
|
|
17
17
|
[meta.profile.key]: {
|
|
18
18
|
"plugin.name": "Illustrator",
|
|
19
19
|
"create-panel.variant.label": "Select renderer",
|
|
20
20
|
"create-panel.variant.placeholder": "Search renderers...",
|
|
21
|
-
"unsupported-variant.label": "Unsupported
|
|
21
|
+
"unsupported-variant.label": "Unsupported drawing variant"
|
|
22
22
|
}
|
|
23
23
|
} }];
|
|
24
24
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"translations.mjs","names":[],"sources":["../../src/translations.ts"],"sourcesContent":["//\n// Copyright 2026 DXOS.org\n//\n\nimport { Type } from '@dxos/echo';\nimport { type Resource } from '@dxos/react-ui';\n\nimport { meta } from '#meta';\nimport {
|
|
1
|
+
{"version":3,"file":"translations.mjs","names":[],"sources":["../../src/translations.ts"],"sourcesContent":["//\n// Copyright 2026 DXOS.org\n//\n\nimport { Type } from '@dxos/echo';\nimport { type Resource } from '@dxos/react-ui';\n\nimport { meta } from '#meta';\nimport { Drawing } from '#types';\n\nexport const translations = [\n {\n 'en-US': {\n [Type.getTypename(Drawing.Drawing)]: {\n 'typename.label': 'Drawing',\n 'typename.label_zero': 'Drawings',\n 'typename.label_one': 'Drawing',\n 'typename.label_other': 'Drawings',\n 'object-name.placeholder': 'New drawing',\n 'add-object.label': 'Add drawing',\n 'rename-object.label': 'Rename drawing',\n 'delete-object.label': 'Delete drawing',\n 'object-deleted.label': 'Drawing deleted',\n },\n [meta.profile.key]: {\n 'plugin.name': 'Illustrator',\n 'create-panel.variant.label': 'Select renderer',\n 'create-panel.variant.placeholder': 'Search renderers...',\n 'unsupported-variant.label': 'Unsupported drawing variant',\n },\n },\n },\n] as const satisfies Resource[];\n"],"mappings":";;;;AAUA,IAAa,eAAe,CAC1B,EACE,SAAS;EACN,KAAK,YAAY,QAAQ,OAAO,IAAI;EACnC,kBAAkB;EAClB,uBAAuB;EACvB,sBAAsB;EACtB,wBAAwB;EACxB,2BAA2B;EAC3B,oBAAoB;EACpB,uBAAuB;EACvB,uBAAuB;EACvB,wBAAwB;CAC1B;EACC,KAAK,QAAQ,MAAM;EAClB,eAAe;EACf,8BAA8B;EAC9B,oCAAoC;EACpC,6BAA6B;CAC/B;AACF,EACF,CACF"}
|
package/dist/lib/types.mjs
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { r as Drawing_exports } from "./chunk-Drawing.mjs";
|
|
2
|
+
import { n as DrawingOperation_exports, o as LegacySketch_exports } from "./chunk-types.mjs";
|
|
1
3
|
import { t as IllustratorCapabilities_exports } from "./chunk-IllustratorCapabilities.mjs";
|
|
2
|
-
|
|
3
|
-
export { IllustratorCapabilities_exports as IllustratorCapabilities, Sketch_exports as Sketch, SketchOperation_exports as SketchOperation };
|
|
4
|
+
export { Drawing_exports as Drawing, DrawingOperation_exports as DrawingOperation, IllustratorCapabilities_exports as IllustratorCapabilities, LegacySketch_exports as LegacySketch };
|
package/dist/lib/util.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export {
|
|
1
|
+
import { n as findVariant, r as resolveVariant, t as UnknownDrawingVariantError } from "./chunk-load-drawing.mjs";
|
|
2
|
+
export { UnknownDrawingVariantError, findVariant, resolveVariant };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IllustratorPlugin.d.ts","sourceRoot":"","sources":["../../../src/IllustratorPlugin.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"IllustratorPlugin.d.ts","sourceRoot":"","sources":["../../../src/IllustratorPlugin.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAmB7C,eAAO,MAAM,iBAAiB,4BAgB7B,CAAC;eAEa,iBAAiB"}
|
|
@@ -2,7 +2,7 @@ import { Plugin } from '@dxos/app-framework';
|
|
|
2
2
|
/**
|
|
3
3
|
* Headless variant of IllustratorPlugin (no React surfaces / CreateObject panel).
|
|
4
4
|
* Used in node contexts (CLI, agents, tests) where rendering is unavailable —
|
|
5
|
-
* the full variant lazy-loads `
|
|
5
|
+
* the full variant lazy-loads `CreateDrawingPanel` from `react-ui-search` which
|
|
6
6
|
* downstream bundlers don't resolve cleanly under nested pnpm symlinks.
|
|
7
7
|
*/
|
|
8
8
|
export declare const IllustratorPlugin: Plugin.PluginFactory<void>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IllustratorPlugin.test.d.ts","sourceRoot":"","sources":["../../../src/IllustratorPlugin.test.ts"],"names":[],"mappings":""}
|
|
@@ -2,6 +2,7 @@ import { Capability } from '@dxos/app-framework';
|
|
|
2
2
|
import { OperationHandlerSet } from '@dxos/compute';
|
|
3
3
|
export declare const CommentConfig: Capability.LazyCapability<void, Capability.ModuleReturn, Error>;
|
|
4
4
|
export declare const CreateObject: Capability.LazyCapability<void, Capability.ModuleReturn, Error>;
|
|
5
|
+
export declare const Migrations: Capability.LazyCapability<void, Capability.ModuleReturn, Error>;
|
|
5
6
|
export declare const OperationHandler: Capability.LazyCapability<OperationHandlerSet.OperationHandlerSet, Capability.ModuleReturn, Error>;
|
|
6
7
|
export declare const ReactSurface: Capability.LazyCapability<void, Capability.ModuleReturn, Error>;
|
|
7
8
|
export declare const SkillDefinition: Capability.LazyCapability<void, Capability.ModuleReturn, Error>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEpD,eAAO,MAAM,aAAa,iEAAqE,CAAC;AAChG,eAAO,MAAM,YAAY,iEAAmE,CAAC;AAC7F,eAAO,MAAM,gBAAgB,oGAG5B,CAAC;AACF,eAAO,MAAM,YAAY,iEAAmE,CAAC;AAC7F,eAAO,MAAM,eAAe,iEAAyE,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEpD,eAAO,MAAM,aAAa,iEAAqE,CAAC;AAChG,eAAO,MAAM,YAAY,iEAAmE,CAAC;AAC7F,eAAO,MAAM,UAAU,iEAAyE,CAAC;AACjG,eAAO,MAAM,gBAAgB,oGAG5B,CAAC;AACF,eAAO,MAAM,YAAY,iEAAmE,CAAC;AAC7F,eAAO,MAAM,eAAe,iEAAyE,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import * as Effect from 'effect/Effect';
|
|
2
|
+
import { Capability } from '@dxos/app-framework';
|
|
3
|
+
import { Migration } from '@dxos/echo';
|
|
4
|
+
export declare const sketchToDrawing: Migration.ObjectMigration;
|
|
5
|
+
declare const _default: (props: void) => Effect.Effect<Capability.Any, never, import("effect/Scope").Scope>;
|
|
6
|
+
export default _default;
|
|
7
|
+
//# sourceMappingURL=migrations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/migrations.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAQvC,eAAO,MAAM,eAAe,2BAI1B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrations.test.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/migrations.test.ts"],"names":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react-surface.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/react-surface.
|
|
1
|
+
{"version":3,"file":"react-surface.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/react-surface.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,EAAgB,UAAU,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-definition.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/skill-definition.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAKjD,QAAA,MAAM,eAAe,
|
|
1
|
+
{"version":3,"file":"skill-definition.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/skill-definition.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAKjD,QAAA,MAAM,eAAe,qDAAgG,CAAC;eAEvG,eAAe"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { type SpaceCapabilities } from '@dxos/plugin-space';
|
|
3
|
+
import { type DrawingVariant } from '#types';
|
|
4
|
+
export type CreateDrawingPanelProps = SpaceCapabilities.CreateObjectCustomPanelProps & {
|
|
5
|
+
/** Optional override (primarily for stories/tests). Defaults to IllustratorCapabilities.VariantProvider. */
|
|
6
|
+
variants?: DrawingVariant[];
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Variant picker for drawings (SearchList over contributed `DrawingVariant[]`).
|
|
10
|
+
* On select, calls `onCreateObject({ variantId })`; plugin-illustrator's
|
|
11
|
+
* CreateObjectEntry.createObject resolves the variantId, builds the canvas via
|
|
12
|
+
* variant.createCanvas, then wraps it in a Drawing.
|
|
13
|
+
*/
|
|
14
|
+
export declare const CreateDrawingPanel: ({ onCreateObject, variants: variantsProp }: CreateDrawingPanelProps) => React.JSX.Element;
|
|
15
|
+
//# sourceMappingURL=CreateDrawingPanel.d.ts.map
|