@dxos/plugin-illustrator 0.10.0 → 0.11.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.
Files changed (184) hide show
  1. package/dist/lib/IllustratorPlugin.mjs +7 -3
  2. package/dist/lib/IllustratorPlugin.mjs.map +1 -1
  3. package/dist/lib/IllustratorPlugin.node.mjs +3 -3
  4. package/dist/lib/IllustratorPlugin.node.mjs.map +1 -1
  5. package/dist/lib/IllustratorPlugin.workerd.mjs +2 -2
  6. package/dist/lib/IllustratorPlugin.workerd.mjs.map +1 -1
  7. package/dist/lib/capabilities.mjs +2 -1
  8. package/dist/lib/capabilities.mjs.map +1 -1
  9. package/dist/lib/chunk-Drawing.mjs +64 -0
  10. package/dist/lib/chunk-Drawing.mjs.map +1 -0
  11. package/dist/lib/chunk-IllustratorCapabilities.mjs +2 -2
  12. package/dist/lib/chunk-IllustratorCapabilities.mjs.map +1 -1
  13. package/dist/lib/chunk-comment-config.mjs +3 -3
  14. package/dist/lib/chunk-comment-config.mjs.map +1 -1
  15. package/dist/lib/chunk-create-object.mjs +13 -12
  16. package/dist/lib/chunk-create-object.mjs.map +1 -1
  17. package/dist/lib/chunk-create.mjs +5 -4
  18. package/dist/lib/chunk-create.mjs.map +1 -1
  19. package/dist/lib/chunk-edit.mjs +4 -4
  20. package/dist/lib/chunk-edit.mjs.map +1 -1
  21. package/dist/lib/chunk-generate.mjs +20 -0
  22. package/dist/lib/chunk-generate.mjs.map +1 -0
  23. package/dist/lib/chunk-load-drawing.mjs +35 -0
  24. package/dist/lib/chunk-load-drawing.mjs.map +1 -0
  25. package/dist/lib/chunk-meta.mjs +2 -1
  26. package/dist/lib/chunk-meta.mjs.map +1 -1
  27. package/dist/lib/chunk-migrations.mjs +23 -0
  28. package/dist/lib/chunk-migrations.mjs.map +1 -0
  29. package/dist/lib/chunk-model.mjs +387 -4
  30. package/dist/lib/chunk-model.mjs.map +1 -1
  31. package/dist/lib/chunk-react-surface.mjs +14 -13
  32. package/dist/lib/chunk-react-surface.mjs.map +1 -1
  33. package/dist/lib/chunk-read.mjs +4 -4
  34. package/dist/lib/chunk-read.mjs.map +1 -1
  35. package/dist/lib/chunk-skill-definition.mjs +2 -2
  36. package/dist/lib/chunk-skill-definition.mjs.map +1 -1
  37. package/dist/lib/chunk-skills.mjs +10 -10
  38. package/dist/lib/chunk-skills.mjs.map +1 -1
  39. package/dist/lib/chunk-types.mjs +41 -49
  40. package/dist/lib/chunk-types.mjs.map +1 -1
  41. package/dist/lib/components.mjs +6 -6
  42. package/dist/lib/components.mjs.map +1 -1
  43. package/dist/lib/containers.mjs +17 -19
  44. package/dist/lib/containers.mjs.map +1 -1
  45. package/dist/lib/index.mjs +4 -3
  46. package/dist/lib/model.mjs +2 -2
  47. package/dist/lib/operations.mjs +1 -1
  48. package/dist/lib/operations.mjs.map +1 -1
  49. package/dist/lib/skills.mjs +1 -1
  50. package/dist/lib/translations.mjs +13 -13
  51. package/dist/lib/translations.mjs.map +1 -1
  52. package/dist/lib/types.mjs +3 -2
  53. package/dist/lib/util.mjs +2 -2
  54. package/dist/types/src/IllustratorPlugin.d.ts.map +1 -1
  55. package/dist/types/src/IllustratorPlugin.node.d.ts +1 -1
  56. package/dist/types/src/IllustratorPlugin.test.d.ts +2 -0
  57. package/dist/types/src/IllustratorPlugin.test.d.ts.map +1 -0
  58. package/dist/types/src/capabilities/index.d.ts +1 -0
  59. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  60. package/dist/types/src/capabilities/migrations.d.ts +7 -0
  61. package/dist/types/src/capabilities/migrations.d.ts.map +1 -0
  62. package/dist/types/src/capabilities/migrations.test.d.ts +2 -0
  63. package/dist/types/src/capabilities/migrations.test.d.ts.map +1 -0
  64. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  65. package/dist/types/src/capabilities/skill-definition.d.ts.map +1 -1
  66. package/dist/types/src/components/CreateDrawingPanel.d.ts +15 -0
  67. package/dist/types/src/components/CreateDrawingPanel.d.ts.map +1 -0
  68. package/dist/types/src/components/index.d.ts +1 -1
  69. package/dist/types/src/components/index.d.ts.map +1 -1
  70. package/dist/types/src/containers/DrawingArticle/DrawingArticle.d.ts +11 -0
  71. package/dist/types/src/containers/DrawingArticle/DrawingArticle.d.ts.map +1 -0
  72. package/dist/types/src/containers/DrawingArticle/index.d.ts +2 -0
  73. package/dist/types/src/containers/DrawingArticle/index.d.ts.map +1 -0
  74. package/dist/types/src/containers/DrawingCard/DrawingCard.d.ts +10 -0
  75. package/dist/types/src/containers/DrawingCard/DrawingCard.d.ts.map +1 -0
  76. package/dist/types/src/containers/DrawingCard/index.d.ts +2 -0
  77. package/dist/types/src/containers/DrawingCard/index.d.ts.map +1 -0
  78. package/dist/types/src/containers/index.d.ts +2 -2
  79. package/dist/types/src/containers/index.d.ts.map +1 -1
  80. package/dist/types/src/model/builder.d.ts +18 -26
  81. package/dist/types/src/model/builder.d.ts.map +1 -1
  82. package/dist/types/src/model/content.d.ts +60 -0
  83. package/dist/types/src/model/content.d.ts.map +1 -0
  84. package/dist/types/src/model/index.d.ts +2 -0
  85. package/dist/types/src/model/index.d.ts.map +1 -1
  86. package/dist/types/src/model/mermaid.d.ts +38 -0
  87. package/dist/types/src/model/mermaid.d.ts.map +1 -0
  88. package/dist/types/src/model/mermaid.test.d.ts +3 -0
  89. package/dist/types/src/model/mermaid.test.d.ts.map +1 -0
  90. package/dist/types/src/operations/create.d.ts +2 -2
  91. package/dist/types/src/operations/create.d.ts.map +1 -1
  92. package/dist/types/src/operations/edit.d.ts +2 -2
  93. package/dist/types/src/operations/edit.d.ts.map +1 -1
  94. package/dist/types/src/operations/generate.d.ts +5 -0
  95. package/dist/types/src/operations/generate.d.ts.map +1 -0
  96. package/dist/types/src/operations/index.d.ts.map +1 -1
  97. package/dist/types/src/operations/read.d.ts +2 -2
  98. package/dist/types/src/operations/read.d.ts.map +1 -1
  99. package/dist/types/src/skills/{sketch-skill.d.ts → drawing-skill.d.ts} +1 -1
  100. package/dist/types/src/skills/drawing-skill.d.ts.map +1 -0
  101. package/dist/types/src/skills/index.d.ts +1 -1
  102. package/dist/types/src/skills/index.d.ts.map +1 -1
  103. package/dist/types/src/translations.d.ts +10 -10
  104. package/dist/types/src/translations.d.ts.map +1 -1
  105. package/dist/types/src/types/Drawing.d.ts +50 -0
  106. package/dist/types/src/types/Drawing.d.ts.map +1 -0
  107. package/dist/types/src/types/{SketchOperation.d.ts → DrawingOperation.d.ts} +111 -5
  108. package/dist/types/src/types/DrawingOperation.d.ts.map +1 -0
  109. package/dist/types/src/types/IllustratorCapabilities.d.ts +4 -4
  110. package/dist/types/src/types/IllustratorCapabilities.d.ts.map +1 -1
  111. package/dist/types/src/types/LegacySketch.d.ts +17 -0
  112. package/dist/types/src/types/LegacySketch.d.ts.map +1 -0
  113. package/dist/types/src/types/index.d.ts +3 -2
  114. package/dist/types/src/types/index.d.ts.map +1 -1
  115. package/dist/types/src/types/types.d.ts +18 -18
  116. package/dist/types/src/types/types.d.ts.map +1 -1
  117. package/dist/types/src/util/index.d.ts +1 -1
  118. package/dist/types/src/util/index.d.ts.map +1 -1
  119. package/dist/types/src/util/load-drawing.d.ts +22 -0
  120. package/dist/types/src/util/load-drawing.d.ts.map +1 -0
  121. package/dist/types/tsconfig.tsbuildinfo +1 -1
  122. package/dx.config.ts +1 -0
  123. package/package.json +21 -19
  124. package/src/IllustratorPlugin.node.tsx +3 -3
  125. package/src/IllustratorPlugin.test.ts +32 -0
  126. package/src/IllustratorPlugin.tsx +15 -3
  127. package/src/IllustratorPlugin.workerd.tsx +2 -2
  128. package/src/capabilities/comment-config.ts +2 -2
  129. package/src/capabilities/create-object.ts +16 -14
  130. package/src/capabilities/index.ts +1 -0
  131. package/src/capabilities/migrations.test.ts +142 -0
  132. package/src/capabilities/migrations.ts +28 -0
  133. package/src/capabilities/react-surface.ts +36 -0
  134. package/src/capabilities/skill-definition.ts +2 -2
  135. package/src/components/{CreateSketchPanel.tsx → CreateDrawingPanel.tsx} +7 -7
  136. package/src/components/index.ts +1 -1
  137. package/src/containers/{SketchArticle/SketchArticle.tsx → DrawingArticle/DrawingArticle.tsx} +10 -11
  138. package/src/containers/{SketchArticle → DrawingArticle}/index.ts +1 -1
  139. package/src/containers/DrawingCard/DrawingCard.tsx +38 -0
  140. package/src/containers/{SketchCard → DrawingCard}/index.ts +1 -1
  141. package/src/containers/index.ts +2 -2
  142. package/src/model/builder.ts +34 -26
  143. package/src/model/content.ts +180 -0
  144. package/src/model/index.ts +2 -0
  145. package/src/model/mermaid.test.ts +116 -0
  146. package/src/model/mermaid.ts +299 -0
  147. package/src/operations/create.ts +6 -6
  148. package/src/operations/edit.ts +5 -5
  149. package/src/operations/generate.ts +25 -0
  150. package/src/operations/index.ts +1 -0
  151. package/src/operations/read.ts +5 -5
  152. package/src/skills/{sketch-skill.ts → drawing-skill.ts} +7 -7
  153. package/src/skills/index.ts +1 -1
  154. package/src/translations.ts +12 -12
  155. package/src/types/Drawing.ts +69 -0
  156. package/src/types/{SketchOperation.ts → DrawingOperation.ts} +28 -9
  157. package/src/types/IllustratorCapabilities.ts +4 -4
  158. package/src/types/LegacySketch.ts +25 -0
  159. package/src/types/index.ts +3 -2
  160. package/src/types/types.ts +18 -18
  161. package/src/util/index.ts +1 -1
  162. package/src/util/load-drawing.ts +48 -0
  163. package/dist/lib/chunk-load-sketch.mjs +0 -64
  164. package/dist/lib/chunk-load-sketch.mjs.map +0 -1
  165. package/dist/types/src/components/CreateSketchPanel.d.ts +0 -15
  166. package/dist/types/src/components/CreateSketchPanel.d.ts.map +0 -1
  167. package/dist/types/src/containers/SketchArticle/SketchArticle.d.ts +0 -11
  168. package/dist/types/src/containers/SketchArticle/SketchArticle.d.ts.map +0 -1
  169. package/dist/types/src/containers/SketchArticle/index.d.ts +0 -2
  170. package/dist/types/src/containers/SketchArticle/index.d.ts.map +0 -1
  171. package/dist/types/src/containers/SketchCard/SketchCard.d.ts +0 -10
  172. package/dist/types/src/containers/SketchCard/SketchCard.d.ts.map +0 -1
  173. package/dist/types/src/containers/SketchCard/index.d.ts +0 -2
  174. package/dist/types/src/containers/SketchCard/index.d.ts.map +0 -1
  175. package/dist/types/src/skills/sketch-skill.d.ts.map +0 -1
  176. package/dist/types/src/types/Sketch.d.ts +0 -50
  177. package/dist/types/src/types/Sketch.d.ts.map +0 -1
  178. package/dist/types/src/types/SketchOperation.d.ts.map +0 -1
  179. package/dist/types/src/util/load-sketch.d.ts +0 -37
  180. package/dist/types/src/util/load-sketch.d.ts.map +0 -1
  181. package/src/capabilities/react-surface.tsx +0 -37
  182. package/src/containers/SketchCard/SketchCard.tsx +0 -41
  183. package/src/types/Sketch.ts +0 -69
  184. 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 { SketchOperation } from "#types";
4
- //#region src/skills/sketch-skill.ts
5
- var SKILL_KEY = "org.dxos.skill.sketch";
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
- SketchOperation.Create,
8
- SketchOperation.Read,
9
- SketchOperation.Edit
7
+ DrawingOperation.Create,
8
+ DrawingOperation.Read,
9
+ DrawingOperation.Edit
10
10
  ];
11
11
  var make = () => Skill.make({
12
12
  key: SKILL_KEY,
13
- name: "Sketch",
13
+ name: "Drawing",
14
14
  tools: Skill.toolDefinitions({ operations }),
15
15
  instructions: Template.make({ source: trim`
16
- {{! Sketch }}
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 sketch exists in context, create one first.
43
- 2. ALWAYS call read before editing an existing sketch — it returns the scene as you
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/sketch-skill.ts"],"sourcesContent":["//\n// Copyright 2026 DXOS.org\n//\n\nimport { Skill, Template } from '@dxos/compute';\nimport { trim } from '@dxos/util';\n\nimport { SketchOperation } from '#types';\n\nconst SKILL_KEY = 'org.dxos.skill.sketch';\n\nconst operations = [SketchOperation.Create, SketchOperation.Read, SketchOperation.Edit];\n\nconst make = () =>\n Skill.make({\n key: SKILL_KEY,\n name: 'Sketch',\n tools: Skill.toolDefinitions({ operations }),\n instructions: Template.make({\n source: trim`\n {{! Sketch }}\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 sketch exists in context, create one first.\n 2. ALWAYS call read before editing an existing sketch — 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,gBAAgB;CAAQ,gBAAgB;CAAM,gBAAgB;AAAI;AAEtF,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"}
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"}
@@ -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/Sketch.ts
13
- var Sketch_exports = /* @__PURE__ */ __exportAll({
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
- * Base Sketch object. Renderer-specific canvas data lives in a separate referenced object.
21
- * Unifies all canvas renderers (tldraw, excalidraw, ...) under one typename so they share
22
- * graph node, create flow, and shared surface scaffolding.
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(Obj.Unknown).annotations({ description: "Reference to the renderer-specific canvas object." }).pipe(FormInputAnnotation.set(false))
27
- }).pipe(LabelAnnotation.set(["name"]), Annotation.IconAnnotation.set({
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/SketchOperation.ts
52
- var SketchOperation_exports = /* @__PURE__ */ __exportAll({
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 Sketch",
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(Sketch) }),
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 Sketch",
80
- description: "Returns the current scene of a sketch: world objects (by id) with their elements in object-local units. Call before editing an existing sketch.",
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({ sketch: Ref.Ref(Sketch).annotations({ description: "The sketch to read." }) }),
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 Sketch",
91
- description: "Applies scene commands to a sketch: upsert/move/remove world objects or individual elements by id. Returns the resulting scene.",
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
- sketch: Ref.Ref(Sketch).annotations({ description: "The sketch to edit." }),
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 { Sketch as a, SketchOperation_exports as i, Edit as n, Sketch_exports as o, Read as r, make as s, Create as t };
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/Sketch.ts","../../src/types/SketchOperation.ts"],"sourcesContent":["//\n// Copyright 2026 DXOS.org\n//\n\n// @import-as-namespace\n\nimport * as Schema from 'effect/Schema';\n\nimport { Annotation, DXN, Obj, Ref, Type } from '@dxos/echo';\nimport { FormInputAnnotation, LabelAnnotation } from '@dxos/echo/Annotation';\nimport { CardAnnotation, CollectionItemAnnotation } from '@dxos/schema';\n\n/**\n * Base Sketch object. Renderer-specific canvas data lives in a separate referenced object.\n * Unifies all canvas renderers (tldraw, excalidraw, ...) under one typename so they share\n * graph node, create flow, and shared surface scaffolding.\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(Obj.Unknown)\n .annotations({ description: 'Reference to the renderer-specific canvas object.' })\n .pipe(FormInputAnnotation.set(false)),\n }).pipe(\n LabelAnnotation.set(['name']),\n Annotation.IconAnnotation.set({ icon: 'ph--compass-tool--regular', hue: 'indigo' }),\n CardAnnotation.set(true),\n CollectionItemAnnotation.set(true),\n ),\n) {}\n\n/**\n * Variant-narrowed reference to a Sketch.\n *\n * Encodes — at the type level — that the canvas ref points to a specific canvas type.\n * Runtime narrowing is performed by `loadSketch(ref, canvasType)` which validates and\n * returns the resolved Sketch together with its typed canvas.\n *\n * @example\n * ```ts\n * input: Schema.Struct({\n * sketch: SketchRef(Tldraw.Canvas),\n * }),\n * // handler:\n * const { sketch, canvas } = yield* loadSketch(input.sketch, Tldraw.Canvas);\n * // `canvas` is typed as Tldraw.Canvas.\n * ```\n */\nexport type SketchRef<_V> = Ref.Ref<Sketch>;\n\nexport const SketchRef = <S extends Type.AnyObj>(_canvasType: S) =>\n Ref.Ref(Sketch) as Schema.Schema<SketchRef<Type.InstanceType<S>>, any, never>;\n\n/**\n * Build a base `Sketch` object referencing the given canvas ECHO object.\n *\n * The canvas is stored as a `Ref` so the renderer-specific data (e.g. `Tldraw.Canvas`,\n * `Excalidraw.Canvas`) lives as its own ECHO object alongside the Sketch.\n *\n * @param name Optional display name shown in the graph node and Properties form.\n * @param canvas Renderer-specific canvas object.\n * @returns A new `Sketch` object with `canvas` stored as a Ref.\n */\nexport const make = ({ name, canvas }: { name?: string; canvas: Obj.Unknown }): Sketch => {\n return Obj.make(Sketch, { name, canvas: Ref.make(canvas) });\n};\n\n/** Type guard for {@link Sketch} objects. */\nexport const isSketch = (object: unknown): object is Sketch => Obj.instanceOf(Sketch, object);\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 Sketch from './Sketch';\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 Sketch', 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(Sketch.Sketch),\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 Sketch',\n description:\n 'Returns the current scene of a sketch: world objects (by id) with their elements in object-local units. Call before editing an existing sketch.',\n icon: 'ph--eye--regular',\n },\n input: Schema.Struct({\n sketch: Ref.Ref(Sketch.Sketch).annotations({ description: 'The sketch 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 Sketch',\n description:\n 'Applies scene commands to a sketch: 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 sketch: Ref.Ref(Sketch.Sketch).annotations({ description: 'The sketch 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"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAiBA,IAAa,SAAb,cAA4B,KAAK,WAAmB,IAAI,KAAK,wBAAwB,OAAO,CAAC,CAAC,CAC5F,OAAO,OAAO;CACZ,MAAM,OAAO,SAAS,OAAO,MAAM;CACnC,QAAQ,IAAI,IAAI,IAAI,OAAO,CAAA,CACxB,YAAY,EAAE,aAAa,oDAAoD,CAAC,CAAA,CAChF,KAAK,oBAAoB,IAAI,KAAK,CAAC;AACxC,CAAC,CAAC,CAAC,KACD,gBAAgB,IAAI,CAAC,MAAM,CAAC,GAC5B,WAAW,eAAe,IAAI;CAAE,MAAM;CAA6B,KAAK;AAAS,CAAC,GAClF,eAAe,IAAI,IAAI,GACvB,yBAAyB,IAAI,IAAI,CACnC,CACF,CAAC,CAAC,CAAC;AAqBH,IAAa,aAAoC,gBAC/C,IAAI,IAAI,MAAM;;;;;;;;;;;AAYhB,IAAa,QAAQ,EAAE,MAAM,aAA6D;CACxF,OAAO,IAAI,KAAK,QAAQ;EAAE;EAAM,QAAQ,IAAI,KAAK,MAAM;CAAE,CAAC;AAC5D;;AAGA,IAAa,YAAY,WAAsC,IAAI,WAAW,QAAQ,MAAM;;;;;;;;AClD5F,IAAM,WAAW,SAAiB,MAAI,KAAK,GAAG,KAAK,QAAQ,IAAI,aAAa,MAAM;AAElF,IAAa,SAAS,UAAU,KAAK;CACnC,MAAM;EAAE,KAAK,QAAQ,QAAQ;EAAG,MAAM;EAAiB,MAAM;CAA6B;CAC1F,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,MAAa,EACtC,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,QAAQ,IAAI,IAAI,MAAa,CAAC,CAAC,YAAY,EAAE,aAAa,sBAAsB,CAAC,EACnF,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,QAAQ,IAAI,IAAI,MAAa,CAAC,CAAC,YAAY,EAAE,aAAa,sBAAsB,CAAC;EACjF,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"}
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"}
@@ -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/CreateSketchPanel.tsx
8
+ //#region src/components/CreateDrawingPanel.tsx
9
9
  /**
10
- * Variant picker for sketches (SearchList over contributed `SketchVariant[]`).
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 Sketch.
13
+ * variant.createCanvas, then wraps it in a Drawing.
14
14
  */
15
- var CreateSketchPanel = ({ onCreateObject, variants: variantsProp }) => {
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-sketch-panel.variant-input",
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 { CreateSketchPanel };
43
+ export { CreateDrawingPanel };
44
44
 
45
45
  //# sourceMappingURL=components.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"components.mjs","names":[],"sources":["../../src/components/CreateSketchPanel.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 { IllustratorCapabilities, type SketchVariant } from '#types';\n\nexport type CreateSketchPanelProps = SpaceCapabilities.CreateObjectCustomPanelProps & {\n /** Optional override (primarily for stories/tests). Defaults to IllustratorCapabilities.VariantProvider. */\n variants?: SketchVariant[];\n};\n\n/**\n * Variant picker for sketches (SearchList over contributed `SketchVariant[]`).\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 Sketch.\n */\nexport const CreateSketchPanel = ({ onCreateObject, variants: variantsProp }: CreateSketchPanelProps) => {\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-sketch-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,qBAAqB,EAAE,gBAAgB,UAAU,mBAA2C;CACvG,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"}
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"}
@@ -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
- //#region src/containers/SketchArticle/SketchArticle.tsx
10
- /** Resolves the sketch's canvas and delegates rendering to the matching variant's article. */
11
- var SketchArticle = ({ role, attendableId, subject: sketch, extrinsic }) => {
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 = sketch.canvas;
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 typename = Obj.getTypename(canvas);
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 sketch variant" })
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
- sketch,
25
+ drawing,
27
26
  canvas,
28
27
  role,
29
28
  attendableId,
30
29
  extrinsic
31
30
  });
32
31
  };
33
- SketchArticle.displayName = "SketchArticle";
32
+ DrawingArticle.displayName = "DrawingArticle";
34
33
  //#endregion
35
- //#region src/containers/SketchCard/SketchCard.tsx
36
- /** Resolves the sketch's canvas and delegates rendering to the matching variant's card. */
37
- var SketchCard = ({ role, subject: sketch, editable }) => {
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 = sketch.canvas;
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 typename = Obj.getTypename(canvas);
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
- sketch,
46
+ drawing,
49
47
  canvas,
50
48
  role,
51
49
  editable
52
50
  });
53
51
  };
54
- SketchCard.displayName = "SketchCard";
52
+ DrawingCard.displayName = "DrawingCard";
55
53
  //#endregion
56
- export { SketchArticle, SketchCard };
54
+ export { DrawingArticle, DrawingCard };
57
55
 
58
56
  //# sourceMappingURL=containers.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"containers.mjs","names":[],"sources":["../../src/containers/SketchArticle/SketchArticle.tsx","../../src/containers/SketchCard/SketchCard.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 { Obj, type Ref } from '@dxos/echo';\nimport { useObject } from '@dxos/echo-react';\nimport { useTranslation } from '@dxos/react-ui';\n\nimport { meta } from '#meta';\nimport { IllustratorCapabilities, type Sketch } from '#types';\n\nexport type SketchArticleProps = AppSurface.ObjectArticleProps<Sketch.Sketch> & {\n extrinsic?: boolean;\n};\n\n/** Resolves the sketch's canvas and delegates rendering to the matching variant's article. */\nexport const SketchArticle = ({ role, attendableId, subject: sketch, extrinsic }: SketchArticleProps) => {\n const { t } = useTranslation(meta.profile.key);\n const variants = useCapabilities(IllustratorCapabilities.VariantProvider);\n const ref = sketch.canvas as Ref.Ref<Obj.Unknown>;\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 typename = Obj.getTypename(canvas);\n const match = variants.find((variant) => variant.id === typename);\n if (!match?.article) {\n return (\n <div className='p-4 text-sm'>\n {t('unsupported-variant.label', { defaultValue: 'Unsupported sketch variant' })}\n </div>\n );\n }\n\n const Component = match.article;\n return <Component sketch={sketch} canvas={canvas} role={role} attendableId={attendableId} extrinsic={extrinsic} />;\n};\n\nSketchArticle.displayName = 'SketchArticle';\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 { Obj, type Ref } from '@dxos/echo';\nimport { useObject } from '@dxos/echo-react';\n\nimport { IllustratorCapabilities, type Sketch } from '#types';\n\nexport type SketchCardProps = AppSurface.ObjectCardProps<Sketch.Sketch>;\n\n/** Resolves the sketch's canvas and delegates rendering to the matching variant's card. */\nexport const SketchCard = ({ role, subject: sketch, editable }: SketchCardProps) => {\n const variants = useCapabilities(IllustratorCapabilities.VariantProvider);\n const ref = sketch.canvas as Ref.Ref<Obj.Unknown>;\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 typename = Obj.getTypename(canvas);\n const match = variants.find((variant) => variant.id === typename);\n if (!match?.card) {\n return null;\n }\n\n const Component = match.card;\n return <Component sketch={sketch} canvas={canvas} role={role} editable={editable} />;\n};\n\nSketchCard.displayName = 'SketchCard';\n\nexport default SketchCard;\n"],"mappings":";;;;;;;;;;AAoBA,IAAa,iBAAiB,EAAE,MAAM,cAAc,SAAS,QAAQ,gBAAoC;CACvG,MAAM,EAAE,MAAM,eAAe,KAAK,QAAQ,GAAG;CAC7C,MAAM,WAAW,gBAAgB,wBAAwB,eAAe;CACxE,MAAM,MAAM,OAAO;CAGnB,MAAM,CAAC,YAAY,UAAU,GAAG;CAChC,MAAM,SAAS,WAAW,IAAI,SAAS,KAAA;CAEvC,IAAI,CAAC,QACH,OAAO;CAGT,MAAM,WAAW,IAAI,YAAY,MAAM;CACvC,MAAM,QAAQ,SAAS,MAAM,YAAY,QAAQ,OAAO,QAAQ;CAChE,IAAI,CAAC,OAAO,SACV,OACE,oBAAC,OAAD;EAAK,WAAU;YACZ,EAAE,6BAA6B,EAAE,cAAc,6BAA6B,CAAC;CAC3E,CAAA;CAIT,MAAM,YAAY,MAAM;CACxB,OAAO,oBAAC,WAAD;EAAmB;EAAgB;EAAc;EAAoB;EAAyB;CAAY,CAAA;AACnH;AAEA,cAAc,cAAc;;;;AC/B5B,IAAa,cAAc,EAAE,MAAM,SAAS,QAAQ,eAAgC;CAClF,MAAM,WAAW,gBAAgB,wBAAwB,eAAe;CACxE,MAAM,MAAM,OAAO;CAGnB,MAAM,CAAC,YAAY,UAAU,GAAG;CAChC,MAAM,SAAS,WAAW,IAAI,SAAS,KAAA;CAEvC,IAAI,CAAC,QACH,OAAO;CAGT,MAAM,WAAW,IAAI,YAAY,MAAM;CACvC,MAAM,QAAQ,SAAS,MAAM,YAAY,QAAQ,OAAO,QAAQ;CAChE,IAAI,CAAC,OAAO,MACV,OAAO;CAGT,MAAM,YAAY,MAAM;CACxB,OAAO,oBAAC,WAAD;EAAmB;EAAgB;EAAc;EAAgB;CAAW,CAAA;AACrF;AAEA,WAAW,cAAc"}
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"}
@@ -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 { i as SketchOperation_exports, o as Sketch_exports } from "./chunk-types.mjs";
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 { IllustratorCapabilities_exports as IllustratorCapabilities, model_exports as IllustratorModel, IllustratorOperationHandlerSet, Sketch_exports as Sketch, SketchOperation_exports as SketchOperation, skill as SketchSkill, SketchVariantMismatchError, UnknownSketchVariantError, loadSketch, meta, resolveVariant };
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 };
@@ -1,2 +1,2 @@
1
- import { i as scene_exports, n as DialectRegistry, r as sceneDialect } from "./chunk-model.mjs";
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 };
@@ -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"}
@@ -1,2 +1,2 @@
1
1
  import { t as skill } from "./chunk-skills.mjs";
2
- export { skill as SketchSkill };
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(Sketch.Sketch)]: {
7
- "typename.label": "Sketch",
8
- "typename.label_zero": "Sketches",
9
- "typename.label_one": "Sketch",
10
- "typename.label_other": "Sketches",
11
- "object-name.placeholder": "New sketch",
12
- "add-object.label": "Add sketch",
13
- "rename-object.label": "Rename sketch",
14
- "delete-object.label": "Delete sketch",
15
- "object-deleted.label": "Sketch deleted"
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 sketch variant"
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 { Sketch } from '#types';\n\nexport const translations = [\n {\n 'en-US': {\n [Type.getTypename(Sketch.Sketch)]: {\n 'typename.label': 'Sketch',\n 'typename.label_zero': 'Sketches',\n 'typename.label_one': 'Sketch',\n 'typename.label_other': 'Sketches',\n 'object-name.placeholder': 'New sketch',\n 'add-object.label': 'Add sketch',\n 'rename-object.label': 'Rename sketch',\n 'delete-object.label': 'Delete sketch',\n 'object-deleted.label': 'Sketch 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 sketch variant',\n },\n },\n },\n] as const satisfies Resource[];\n"],"mappings":";;;;AAUA,IAAa,eAAe,CAC1B,EACE,SAAS;EACN,KAAK,YAAY,OAAO,MAAM,IAAI;EACjC,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"}
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"}
@@ -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
- import { i as SketchOperation_exports, o as Sketch_exports } from "./chunk-types.mjs";
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 { i as resolveVariant, n as UnknownSketchVariantError, r as loadSketch, t as SketchVariantMismatchError } from "./chunk-load-sketch.mjs";
2
- export { SketchVariantMismatchError, UnknownSketchVariantError, loadSketch, resolveVariant };
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;AAW7C,eAAO,MAAM,iBAAiB,4BAY7B,CAAC;eAEa,iBAAiB"}
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 `CreateSketchPanel` from `react-ui-search` which
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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=IllustratorPlugin.test.d.ts.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=migrations.test.d.ts.map
@@ -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.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAGxC,OAAO,EAAgB,UAAU,EAAE,MAAM,qBAAqB,CAAC"}
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,qDAA+F,CAAC;eAEtG,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