@hatiolab/figure-model 0.1.31 → 0.1.32

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/index.d.ts CHANGED
@@ -2,7 +2,7 @@ export * from './types.ts';
2
2
  export { V3ContractError } from './v3-contract.ts';
3
3
  export { compileV3Graph } from './v3-graph.ts';
4
4
  export { editV3Part, type V3PartEdit } from './v3-part-edit.ts';
5
- export { createV3Asset, addV3Box, type V3BoxCreation } from './v3-create.ts';
5
+ export { createV3Asset, addV3Box, addV3Primitive, type V3BoxCreation, type V3PrimitiveCreation } from './v3-create.ts';
6
6
  export { createV3AuthoringSession, type V3AuthoringSession, type V3EditControl, type V3EditRequest, type V3InputChange } from './v3-authoring-session.ts';
7
7
  export { createV3EditorWorkspace, type V3EditorWorkspace, type V3WorkspaceView, type V3WorkspaceExport, type V3LeaveOptions } from './v3-editor-workspace.ts';
8
8
  export { compileV3Capabilities } from './v3-capabilities.ts';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAYA,cAAc,YAAY,CAAA;AAE1B,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAE,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC/D,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAC5E,OAAO,EAAE,wBAAwB,EAAE,KAAK,kBAAkB,EAAE,KAAK,aAAa,EAAE,KAAK,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,2BAA2B,CAAA;AACzJ,OAAO,EAAE,uBAAuB,EAAE,KAAK,iBAAiB,EAAE,KAAK,eAAe,EAAE,KAAK,iBAAiB,EAAE,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAC7J,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAC5D,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AAC1F,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAA;AACvG,mBAAmB,qBAAqB,CAAA;AACxC,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,UAAU,EAAE,cAAc,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACrQ,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,KAAK,WAAW,EAAE,MAAM,cAAc,CAAA;AAClI,OAAO,EAAE,QAAQ,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAA;AAC7D,OAAO,EACL,OAAO,EACP,kBAAkB,EAClB,aAAa,EACb,aAAa,EACb,eAAe,EACf,aAAa,EACb,WAAW,EACX,YAAY,EACb,MAAM,gBAAgB,CAAA;AACvB,OAAO,EACL,MAAM,EACN,YAAY,EACZ,OAAO,EACP,KAAK,eAAe,EACpB,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,WAAW,EACjB,MAAM,WAAW,CAAA;AAElB,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AACvD,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,gBAAgB,EAAE,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAA;AACrG,OAAO,EAAE,eAAe,EAAE,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAE5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAMxD,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,aAAa,EACb,cAAc,EACd,WAAW,EACX,WAAW,EACX,KAAK,IAAI,IAAI,UAAU,EACvB,KAAK,aAAa,EACnB,MAAM,aAAa,CAAA;AAGpB,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,qBAAqB,EAAE,WAAW,EAAE,KAAK,aAAa,EAAE,KAAK,YAAY,EAAE,KAAK,kBAAkB,EAAE,MAAM,WAAW,CAAA;AAC5J,OAAO,EACL,eAAe,EACf,cAAc,EACd,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACxB,MAAM,uBAAuB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAYA,cAAc,YAAY,CAAA;AAE1B,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAE,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC/D,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,cAAc,EAAE,KAAK,aAAa,EAAE,KAAK,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AACtH,OAAO,EAAE,wBAAwB,EAAE,KAAK,kBAAkB,EAAE,KAAK,aAAa,EAAE,KAAK,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,2BAA2B,CAAA;AACzJ,OAAO,EAAE,uBAAuB,EAAE,KAAK,iBAAiB,EAAE,KAAK,eAAe,EAAE,KAAK,iBAAiB,EAAE,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAC7J,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAC5D,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AAC1F,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAA;AACvG,mBAAmB,qBAAqB,CAAA;AACxC,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,UAAU,EAAE,cAAc,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACrQ,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,KAAK,WAAW,EAAE,MAAM,cAAc,CAAA;AAClI,OAAO,EAAE,QAAQ,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAA;AAC7D,OAAO,EACL,OAAO,EACP,kBAAkB,EAClB,aAAa,EACb,aAAa,EACb,eAAe,EACf,aAAa,EACb,WAAW,EACX,YAAY,EACb,MAAM,gBAAgB,CAAA;AACvB,OAAO,EACL,MAAM,EACN,YAAY,EACZ,OAAO,EACP,KAAK,eAAe,EACpB,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,WAAW,EACjB,MAAM,WAAW,CAAA;AAElB,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AACvD,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,gBAAgB,EAAE,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAA;AACrG,OAAO,EAAE,eAAe,EAAE,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAE5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAMxD,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,aAAa,EACb,cAAc,EACd,WAAW,EACX,WAAW,EACX,KAAK,IAAI,IAAI,UAAU,EACvB,KAAK,aAAa,EACnB,MAAM,aAAa,CAAA;AAGpB,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,qBAAqB,EAAE,WAAW,EAAE,KAAK,aAAa,EAAE,KAAK,YAAY,EAAE,KAAK,kBAAkB,EAAE,MAAM,WAAW,CAAA;AAC5J,OAAO,EACL,eAAe,EACf,cAAc,EACd,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACxB,MAAM,uBAAuB,CAAA"}
package/dist/index.js CHANGED
@@ -14,7 +14,7 @@ export * from "./types.js";
14
14
  export { V3ContractError } from "./v3-contract.js";
15
15
  export { compileV3Graph } from "./v3-graph.js";
16
16
  export { editV3Part } from "./v3-part-edit.js";
17
- export { createV3Asset, addV3Box } from "./v3-create.js";
17
+ export { createV3Asset, addV3Box, addV3Primitive } from "./v3-create.js";
18
18
  export { createV3AuthoringSession } from "./v3-authoring-session.js";
19
19
  export { createV3EditorWorkspace } from "./v3-editor-workspace.js";
20
20
  export { compileV3Capabilities } from "./v3-capabilities.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,cAAc,YAAY,CAAA;AAC1B,4FAA4F;AAC5F,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAmB,MAAM,mBAAmB,CAAA;AAC/D,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAsB,MAAM,gBAAgB,CAAA;AAC5E,OAAO,EAAE,wBAAwB,EAAuF,MAAM,2BAA2B,CAAA;AACzJ,OAAO,EAAE,uBAAuB,EAA6F,MAAM,0BAA0B,CAAA;AAC7J,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAC5D,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AAC1F,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAA;AAGvG,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,iBAAiB,EAAoB,MAAM,cAAc,CAAA;AAClI,OAAO,EAAE,QAAQ,EAAuB,MAAM,eAAe,CAAA;AAC7D,OAAO,EACL,OAAO,EACP,kBAAkB,EAClB,aAAa,EACb,aAAa,EACb,eAAe,EACf,aAAa,EACb,WAAW,EACX,YAAY,EACb,MAAM,gBAAgB,CAAA;AACvB,OAAO,EACL,MAAM,EACN,YAAY,EACZ,OAAO,EAMR,MAAM,WAAW,CAAA;AAClB,iGAAiG;AACjG,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AACvD,OAAO,EAAE,SAAS,EAAE,YAAY,EAA8C,MAAM,iBAAiB,CAAA;AACrG,OAAO,EAAE,eAAe,EAAwB,MAAM,sBAAsB,CAAA;AAC5E,iDAAiD;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAExD;;;GAGG;AACH,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,aAAa,EACb,cAAc,EACd,WAAW,EACX,WAAW,EAGZ,MAAM,aAAa,CAAA;AAEpB,gCAAgC;AAChC,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,qBAAqB,EAAE,WAAW,EAAkE,MAAM,WAAW,CAAA;AAC5J,OAAO,EACL,eAAe,EACf,cAAc,EAGf,MAAM,uBAAuB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,cAAc,YAAY,CAAA;AAC1B,4FAA4F;AAC5F,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAmB,MAAM,mBAAmB,CAAA;AAC/D,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,cAAc,EAAgD,MAAM,gBAAgB,CAAA;AACtH,OAAO,EAAE,wBAAwB,EAAuF,MAAM,2BAA2B,CAAA;AACzJ,OAAO,EAAE,uBAAuB,EAA6F,MAAM,0BAA0B,CAAA;AAC7J,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAC5D,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AAC1F,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAA;AAGvG,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,iBAAiB,EAAoB,MAAM,cAAc,CAAA;AAClI,OAAO,EAAE,QAAQ,EAAuB,MAAM,eAAe,CAAA;AAC7D,OAAO,EACL,OAAO,EACP,kBAAkB,EAClB,aAAa,EACb,aAAa,EACb,eAAe,EACf,aAAa,EACb,WAAW,EACX,YAAY,EACb,MAAM,gBAAgB,CAAA;AACvB,OAAO,EACL,MAAM,EACN,YAAY,EACZ,OAAO,EAMR,MAAM,WAAW,CAAA;AAClB,iGAAiG;AACjG,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AACvD,OAAO,EAAE,SAAS,EAAE,YAAY,EAA8C,MAAM,iBAAiB,CAAA;AACrG,OAAO,EAAE,eAAe,EAAwB,MAAM,sBAAsB,CAAA;AAC5E,iDAAiD;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAExD;;;GAGG;AACH,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,aAAa,EACb,cAAc,EACd,WAAW,EACX,WAAW,EAGZ,MAAM,aAAa,CAAA;AAEpB,gCAAgC;AAChC,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,qBAAqB,EAAE,WAAW,EAAkE,MAAM,WAAW,CAAA;AAC5J,OAAO,EACL,eAAe,EACf,cAAc,EAGf,MAAM,uBAAuB,CAAA"}
@@ -20,6 +20,42 @@ export interface V3BoxCreation {
20
20
  };
21
21
  material?: V3Material;
22
22
  }
23
+ export type V3PrimitiveCreation = Omit<V3BoxCreation, 'size'> & ({
24
+ kind: 'box';
25
+ dimensions: {
26
+ width: number;
27
+ height: number;
28
+ depth: number;
29
+ };
30
+ } | {
31
+ kind: 'cylinder';
32
+ dimensions: {
33
+ radius: number;
34
+ length: number;
35
+ };
36
+ } | {
37
+ kind: 'rounded-box';
38
+ dimensions: {
39
+ width: number;
40
+ height: number;
41
+ depth: number;
42
+ round: number;
43
+ };
44
+ } | {
45
+ kind: 'portal';
46
+ dimensions: {
47
+ left: number;
48
+ right: number;
49
+ bottom: number;
50
+ top: number;
51
+ openingLeft: number;
52
+ openingRight: number;
53
+ openingTop: number;
54
+ depth: number;
55
+ };
56
+ });
57
+ /** Authoring recipes use existing providers; they introduce no extra evaluation rules. */
58
+ export declare function addV3Primitive(source: V3Asset, part: V3PrimitiveCreation): V3Asset;
23
59
  /** Pure authoring operation. Expands to standard graph operators, not a second runtime geometry model. */
24
60
  export declare function addV3Box(source: V3Asset, box: V3BoxCreation): V3Asset;
25
61
  //# sourceMappingURL=v3-create.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"v3-create.d.ts","sourceRoot":"","sources":["../src/v3-create.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAE9D,qFAAqF;AACrF,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAYnD;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACzC,QAAQ,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAC7C,QAAQ,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAC9C,QAAQ,CAAC,EAAE,UAAU,CAAA;CACtB;AAED,0GAA0G;AAC1G,wBAAgB,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,aAAa,GAAG,OAAO,CAgCrE"}
1
+ {"version":3,"file":"v3-create.d.ts","sourceRoot":"","sources":["../src/v3-create.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAE9D,qFAAqF;AACrF,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAgBnD;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACzC,QAAQ,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAC7C,QAAQ,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAC9C,QAAQ,CAAC,EAAE,UAAU,CAAA;CACtB;AAED,MAAM,MAAM,mBAAmB,GAAG,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,GAC3D,CACI;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,UAAU,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GAC7E;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,UAAU,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GACpE;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,UAAU,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GACpG;IACE,IAAI,EAAE,QAAQ,CAAA;IACd,UAAU,EAAE;QACV,IAAI,EAAE,MAAM,CAAA;QACZ,KAAK,EAAE,MAAM,CAAA;QACb,MAAM,EAAE,MAAM,CAAA;QACd,GAAG,EAAE,MAAM,CAAA;QACX,WAAW,EAAE,MAAM,CAAA;QACnB,YAAY,EAAE,MAAM,CAAA;QACpB,UAAU,EAAE,MAAM,CAAA;QAClB,KAAK,EAAE,MAAM,CAAA;KACd,CAAA;CACF,CACJ,CAAA;AAEH,0FAA0F;AAC1F,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAiDlF;AAED,0GAA0G;AAC1G,wBAAgB,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,aAAa,GAAG,OAAO,CAsFrE"}
package/dist/v3-create.js CHANGED
@@ -3,17 +3,73 @@ import { V3ContractError } from "./v3-contract.js";
3
3
  /** New assets start empty. A box is created only by an explicit authoring action. */
4
4
  export function createV3Asset(name) {
5
5
  const asset = {
6
- version: 'figure-v3-asset-experiment-1', name,
6
+ version: 'figure-v3-asset-experiment-1',
7
+ name,
7
8
  document: {
8
9
  version: 'figure-v3-prototype-1',
9
10
  model: { version: 'r3-spatial-1', inputs: [], constants: [], nodes: [] },
10
11
  capabilities: { version: 'r3-capability-3', assetFrame: 'asset', bindings: [] }
11
12
  },
12
- designInputs: {}, stateDefaults: {}, palette: { 'palette.primary': '#477b9e' }, appearance: []
13
+ designInputs: {},
14
+ stateDefaults: {},
15
+ palette: { 'palette.primary': '#477b9e' },
16
+ appearance: []
13
17
  };
14
18
  compileV3Asset(asset);
15
19
  return asset;
16
20
  }
21
+ /** Authoring recipes use existing providers; they introduce no extra evaluation rules. */
22
+ export function addV3Primitive(source, part) {
23
+ const recipes = {
24
+ box: { op: 'box-shape@1', keys: ['width', 'height', 'depth'] },
25
+ cylinder: { op: 'cylinder-shape@1', keys: ['radius', 'length'] },
26
+ 'rounded-box': { op: 'rounded-box@1', keys: ['width', 'height', 'depth', 'round'] },
27
+ portal: {
28
+ op: 'portal-profile@1',
29
+ keys: ['left', 'right', 'bottom', 'top', 'openingLeft', 'openingRight', 'openingTop', 'depth']
30
+ }
31
+ };
32
+ if (!part || !Object.hasOwn(recipes, part.kind))
33
+ throw new V3ContractError('PROVIDER', 'part', 'unknown primitive');
34
+ const recipe = recipes[part.kind];
35
+ if (!part.dimensions ||
36
+ Object.keys(part.dimensions).length !== recipe.keys.length ||
37
+ recipe.keys.some(k => !Object.hasOwn(part.dimensions, k)))
38
+ throw new V3ContractError('SCHEMA', part.id, 'provider dimensions must match declared fields');
39
+ const asset = addV3Box(source, {
40
+ id: part.id,
41
+ size: { x: 1, y: 1, z: 1 },
42
+ position: part.position,
43
+ ...(part.rotation ? { rotation: part.rotation } : {}),
44
+ ...(part.material ? { material: part.material } : {})
45
+ });
46
+ const model = asset.document.model, removed = new Set(['x', 'y', 'z'].map(a => part.id + '.size.' + a));
47
+ model.inputs = model.inputs.filter(i => !removed.has(i.id));
48
+ for (const id of removed)
49
+ delete asset.designInputs[id];
50
+ const shape = model.nodes.find(n => n.id === part.id + '.shape');
51
+ shape.op = recipe.op;
52
+ shape.args = [];
53
+ const existing = new Set([
54
+ ...model.inputs.map(i => i.id),
55
+ ...model.constants.map(c => c.id),
56
+ ...model.nodes.flatMap(n => [n.id, ...Object.values(n.outputs)])
57
+ ]);
58
+ for (const key of recipe.keys) {
59
+ const id = part.id + '.dimension.' + key, value = part.dimensions[key];
60
+ if (existing.has(id))
61
+ throw new V3ContractError('DUPLICATE_WRITER', id, 'input already exists');
62
+ if (!Number.isFinite(value))
63
+ throw new V3ContractError('NON_FINITE', id, 'finite dimension required');
64
+ model.inputs.push({ id, unit: 'mm', min: -Number.MAX_VALUE, max: Number.MAX_VALUE, role: 'design' });
65
+ asset.designInputs[id] = value;
66
+ shape.args.push(id);
67
+ }
68
+ if (part.kind === 'cylinder')
69
+ asset.appearance.find(a => a.target === part.id).segments = 12;
70
+ compileV3Asset(asset);
71
+ return asset;
72
+ }
17
73
  /** Pure authoring operation. Expands to standard graph operators, not a second runtime geometry model. */
18
74
  export function addV3Box(source, box) {
19
75
  compileV3Asset(source);
@@ -21,9 +77,31 @@ export function addV3Box(source, box) {
21
77
  throw new V3ContractError('ID', 'box', 'letter-led part ID required');
22
78
  }
23
79
  const asset = structuredClone(source), model = asset.document.model, prefix = box.id;
24
- const keys = ['size.x', 'size.y', 'size.z', 'position.x', 'position.y', 'position.z', 'rotation.x', 'rotation.y', 'rotation.z'];
25
- const reserved = new Set([prefix, `${prefix}.shape`, `${prefix}.shapeValue`, `${prefix}.pose`, `${prefix}.poseValue`, `${prefix}.placed`, ...keys.map(k => `${prefix}.${k}`)]);
26
- const existing = [...model.inputs.map(i => i.id), ...model.constants.map(c => c.id), ...model.nodes.flatMap(n => [n.id, ...Object.values(n.outputs)])];
80
+ const keys = [
81
+ 'size.x',
82
+ 'size.y',
83
+ 'size.z',
84
+ 'position.x',
85
+ 'position.y',
86
+ 'position.z',
87
+ 'rotation.x',
88
+ 'rotation.y',
89
+ 'rotation.z'
90
+ ];
91
+ const reserved = new Set([
92
+ prefix,
93
+ `${prefix}.shape`,
94
+ `${prefix}.shapeValue`,
95
+ `${prefix}.pose`,
96
+ `${prefix}.poseValue`,
97
+ `${prefix}.placed`,
98
+ ...keys.map(k => `${prefix}.${k}`)
99
+ ]);
100
+ const existing = [
101
+ ...model.inputs.map(i => i.id),
102
+ ...model.constants.map(c => c.id),
103
+ ...model.nodes.flatMap(n => [n.id, ...Object.values(n.outputs)])
104
+ ];
27
105
  if (existing.some(id => reserved.has(id)))
28
106
  throw new V3ContractError('DUPLICATE_PART', prefix, 'part IDs overlap existing graph identifiers');
29
107
  const rotation = box.rotation ?? { x: 0, y: 0, z: 0 };
@@ -37,12 +115,35 @@ export function addV3Box(source, box) {
37
115
  throw new V3ContractError('GEOMETRY_DOMAIN', `${prefix}.${group}.${axis}`, 'finite value and positive size required');
38
116
  const id = `${prefix}.${group}.${axis}`;
39
117
  // These are broad authoring limits, not a rendering safety/performance guarantee.
40
- model.inputs.push({ id, unit: group === 'rotation' ? 'deg' : 'mm', min: group === 'size' ? Number.MIN_VALUE : -Number.MAX_VALUE, max: Number.MAX_VALUE, role: 'design' });
118
+ model.inputs.push({
119
+ id,
120
+ unit: group === 'rotation' ? 'deg' : 'mm',
121
+ min: group === 'size' ? Number.MIN_VALUE : -Number.MAX_VALUE,
122
+ max: Number.MAX_VALUE,
123
+ role: 'design'
124
+ });
41
125
  asset.designInputs[id] = value;
42
126
  }
43
127
  }
44
128
  const local = `${prefix}.local`;
45
- model.nodes.push({ id: `${prefix}.shape`, op: 'box-shape@1', args: keys.slice(0, 3).map(k => `${prefix}.${k}`), outputs: { shape: `${prefix}.shapeValue` }, params: { frame: local } }, { id: `${prefix}.pose`, op: 'rigid@1', args: keys.slice(3).map(k => `${prefix}.${k}`), outputs: { pose: `${prefix}.poseValue` }, params: { from: local, to: asset.document.capabilities.assetFrame } }, { id: prefix, op: 'place@1', args: [`${prefix}.shapeValue`, `${prefix}.poseValue`], outputs: { placed: `${prefix}.placed` } });
129
+ model.nodes.push({
130
+ id: `${prefix}.shape`,
131
+ op: 'box-shape@1',
132
+ args: keys.slice(0, 3).map(k => `${prefix}.${k}`),
133
+ outputs: { shape: `${prefix}.shapeValue` },
134
+ params: { frame: local }
135
+ }, {
136
+ id: `${prefix}.pose`,
137
+ op: 'rigid@1',
138
+ args: keys.slice(3).map(k => `${prefix}.${k}`),
139
+ outputs: { pose: `${prefix}.poseValue` },
140
+ params: { from: local, to: asset.document.capabilities.assetFrame }
141
+ }, {
142
+ id: prefix,
143
+ op: 'place@1',
144
+ args: [`${prefix}.shapeValue`, `${prefix}.poseValue`],
145
+ outputs: { placed: `${prefix}.placed` }
146
+ });
46
147
  asset.appearance.push({ target: prefix, material: structuredClone(box.material ?? { token: 'palette.primary' }) });
47
148
  compileV3Asset(asset);
48
149
  return asset;
@@ -1 +1 @@
1
- {"version":3,"file":"v3-create.js","sourceRoot":"","sources":["../src/v3-create.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"v3-create.js","sourceRoot":"","sources":["../src/v3-create.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import type { V3EditRequest, V3EditControl } from './v3-authoring-session.ts';
2
- import type { V3BoxCreation } from './v3-create.ts';
2
+ import type { V3BoxCreation, V3PrimitiveCreation } from './v3-create.ts';
3
3
  import type { V3PartEdit } from './v3-part-edit.ts';
4
4
  export interface V3WorkspaceExport {
5
5
  context: string;
@@ -197,6 +197,39 @@ export declare function createV3EditorWorkspace(): {
197
197
  bindings: import("./v3-asset-types.ts").V3EvaluatedBinding[];
198
198
  palette: Record<string, string>;
199
199
  };
200
+ addPrimitive({ context, part, ...q }: V3EditControl & {
201
+ context: string;
202
+ part: V3PrimitiveCreation;
203
+ }): {
204
+ context: null;
205
+ name: null;
206
+ fields: never[];
207
+ geometry: never[];
208
+ bindings: never[];
209
+ dirty: boolean;
210
+ revision: null;
211
+ canUndo?: undefined;
212
+ canRedo?: undefined;
213
+ palette?: undefined;
214
+ } | {
215
+ context: string;
216
+ name: string;
217
+ revision: number;
218
+ dirty: boolean;
219
+ canUndo: boolean;
220
+ canRedo: boolean;
221
+ fields: {
222
+ value: number;
223
+ id: string;
224
+ unit: import("./v3-graph-types.ts").V3Unit;
225
+ min: number;
226
+ max: number;
227
+ role?: "design" | "state";
228
+ }[];
229
+ geometry: import("./v3-asset-types.ts").V3AssetGeometry[];
230
+ bindings: import("./v3-asset-types.ts").V3EvaluatedBinding[];
231
+ palette: Record<string, string>;
232
+ };
200
233
  editPart({ context, edit, ...q }: V3EditControl & {
201
234
  context: string;
202
235
  edit: V3PartEdit;
@@ -1 +1 @@
1
- {"version":3,"file":"v3-editor-workspace.d.ts","sourceRoot":"","sources":["../src/v3-editor-workspace.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAE7E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAEnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAGnD,MAAM,WAAW,iBAAiB;IAAG,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE;AACtF,MAAM,WAAW,cAAc;IAAG,oBAAoB,CAAC,EAAE,OAAO,CAAA;CAAE;AAIlE,+FAA+F;AAC/F,wBAAgB,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;eAkC1B,MAAM,6BAA+B,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qCAO1B,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+BAC1B,aAAa,GAAG;QAAC,OAAO,EAAC,MAAM,CAAA;KAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6BAClC,aAAa,GAAG;QAAC,OAAO,EAAC,MAAM,CAAA;KAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mCAK3B,aAAa,GAAG;QAAC,OAAO,EAAC,MAAM,CAAC;QAAA,GAAG,EAAC,aAAa,CAAA;KAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sCAK/C,aAAa,GAAG;QAAC,OAAO,EAAC,MAAM,CAAC;QAAA,IAAI,EAAC,UAAU,CAAA;KAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4BASzD,aAAa,GAAG;QAAC,OAAO,EAAC,MAAM,CAAA;KAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4BAKhC,aAAa,GAAG;QAAC,OAAO,EAAC,MAAM,CAAA;KAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8CAKR;QAAC,OAAO,EAAC,MAAM,CAAC;QAAA,oBAAoB,CAAC,EAAC,OAAO,CAAA;KAAC,GAAG,iBAAiB;kDAIrE,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAO5D;AACD,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC,OAAO,uBAAuB,CAAC,CAAA;AAC1E,MAAM,MAAM,eAAe,GAAG,UAAU,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"v3-editor-workspace.d.ts","sourceRoot":"","sources":["../src/v3-editor-workspace.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAE7E,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AAExE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAGnD,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;CACb;AACD,MAAM,WAAW,cAAc;IAC7B,oBAAoB,CAAC,EAAE,OAAO,CAAA;CAC/B;AAeD,+FAA+F;AAC/F,wBAAgB,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;eA4DxB,MAAM,6BAAoC,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qCAgB3B,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+BAM3B,aAAa,GAAG;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6BAGrC,aAAa,GAAG;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mCAO7B,aAAa,GAAG;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,aAAa,CAAA;KAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0CAQhD,aAAa,GAAG;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,mBAAmB,CAAA;KAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sCAQlE,aAAa,GAAG;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,UAAU,CAAA;KAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4BAe/D,aAAa,GAAG;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4BAanC,aAAa,GAAG;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8CAgBxD;QACD,OAAO,EAAE,MAAM,CAAA;QACf,oBAAoB,CAAC,EAAE,OAAO,CAAA;KAC/B,GAAG,iBAAiB;kDAQyB,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgBlE;AACD,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC,OAAO,uBAAuB,CAAC,CAAA;AAC1E,MAAM,MAAM,eAAe,GAAG,UAAU,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAA"}
@@ -1,9 +1,11 @@
1
1
  import { parseV3Asset, serializeV3Asset, compileV3Asset, captureV3AuthoredInputs } from "./v3-asset.js";
2
2
  import { createV3AuthoringSession } from "./v3-authoring-session.js";
3
- import { addV3Box } from "./v3-create.js";
3
+ import { addV3Box, addV3Primitive } from "./v3-create.js";
4
4
  import { editV3Part } from "./v3-part-edit.js";
5
5
  import { V3ContractError } from "./v3-contract.js";
6
- function fail(code, message) { throw new V3ContractError(code, 'workspace', message); }
6
+ function fail(code, message) {
7
+ throw new V3ContractError(code, 'workspace', message);
8
+ }
7
9
  /** One history for structural and input edits. No persistence or authentication is implied. */
8
10
  export function createV3EditorWorkspace() {
9
11
  let active = null, epoch = 0;
@@ -20,11 +22,17 @@ export function createV3EditorWorkspace() {
20
22
  if (q.expectedRevision !== a.revision)
21
23
  fail('REVISION_CONFLICT', 'editor changed since request');
22
24
  }
23
- function dirty() { return !!active && serializeV3Asset(active.asset) !== serializeV3Asset(active.baseline); }
24
- function leave(discard) { if (dirty() && !discard)
25
- fail('UNSAVED_DESIGN', 'current asset has unsaved design edits'); }
25
+ function dirty() {
26
+ return !!active && serializeV3Asset(active.asset) !== serializeV3Asset(active.baseline);
27
+ }
28
+ function leave(discard) {
29
+ if (dirty() && !discard)
30
+ fail('UNSAVED_DESIGN', 'current asset has unsaved design edits');
31
+ }
26
32
  const snapshot = (a) => structuredClone({ asset: a.asset, inputs: a.inputs });
27
- function validate(s) { compileV3Asset(captureV3AuthoredInputs(s.asset, s.inputs, { captureStateDefaults: true })).evaluate(); }
33
+ function validate(s) {
34
+ compileV3Asset(captureV3AuthoredInputs(s.asset, s.inputs, { captureStateDefaults: true })).evaluate();
35
+ }
28
36
  function install(a, next) {
29
37
  validate(next);
30
38
  a.undo.push(snapshot(a));
@@ -39,7 +47,18 @@ export function createV3EditorWorkspace() {
39
47
  if (!active)
40
48
  return { context: null, name: null, fields: [], geometry: [], bindings: [], dirty: false, revision: null };
41
49
  const a = active, rendered = compileV3Asset(captureV3AuthoredInputs(a.asset, a.inputs, { captureStateDefaults: true })).evaluate();
42
- return { context: a.context, name: a.asset.name, revision: a.revision, dirty: dirty(), canUndo: a.undo.length > 0, canRedo: a.redo.length > 0, fields: a.asset.document.model.inputs.map(i => ({ ...i, value: a.inputs[i.id] })), geometry: rendered.geometry, bindings: rendered.bindings, palette: rendered.palette };
50
+ return {
51
+ context: a.context,
52
+ name: a.asset.name,
53
+ revision: a.revision,
54
+ dirty: dirty(),
55
+ canUndo: a.undo.length > 0,
56
+ canRedo: a.redo.length > 0,
57
+ fields: a.asset.document.model.inputs.map(i => ({ ...i, value: a.inputs[i.id] })),
58
+ geometry: rendered.geometry,
59
+ bindings: rendered.bindings,
60
+ palette: rendered.palette
61
+ };
43
62
  }
44
63
  function candidate(a, q) {
45
64
  control(a, q);
@@ -54,11 +73,26 @@ export function createV3EditorWorkspace() {
54
73
  leave(discardDesignChanges);
55
74
  const asset = parseV3Asset(text), inputs = { ...asset.designInputs, ...asset.stateDefaults };
56
75
  validate({ asset, inputs });
57
- active = { asset, inputs, baseline: structuredClone(asset), revision: 0, context: `asset-context-${++epoch}`, undo: [], redo: [] };
76
+ active = {
77
+ asset,
78
+ inputs,
79
+ baseline: structuredClone(asset),
80
+ revision: 0,
81
+ context: `asset-context-${++epoch}`,
82
+ undo: [],
83
+ redo: []
84
+ };
85
+ return read();
86
+ },
87
+ close({ discardDesignChanges = false } = {}) {
88
+ leave(discardDesignChanges);
89
+ active = null;
90
+ epoch++;
58
91
  return read();
59
92
  },
60
- close({ discardDesignChanges = false } = {}) { leave(discardDesignChanges); active = null; epoch++; return read(); },
61
- preview({ context, ...q }) { return candidate(current(context), q); },
93
+ preview({ context, ...q }) {
94
+ return candidate(current(context), q);
95
+ },
62
96
  apply({ context, ...q }) {
63
97
  const a = current(context), c = candidate(a, q);
64
98
  if (c.changes.length)
@@ -72,12 +106,22 @@ export function createV3EditorWorkspace() {
72
106
  install(a, { asset, inputs });
73
107
  return read();
74
108
  },
109
+ addPrimitive({ context, part, ...q }) {
110
+ const a = current(context);
111
+ control(a, q);
112
+ const asset = addV3Primitive(a.asset, part), inputs = { ...asset.designInputs, ...asset.stateDefaults, ...a.inputs };
113
+ install(a, { asset, inputs });
114
+ return read();
115
+ },
75
116
  editPart({ context, edit, ...q }) {
76
117
  const a = current(context);
77
118
  control(a, q);
78
119
  const asset = editV3Part(a.asset, edit);
79
120
  if (serializeV3Asset(asset) !== serializeV3Asset(a.asset)) {
80
- const inputs = Object.fromEntries(asset.document.model.inputs.map(i => [i.id, a.inputs[i.id] ?? asset.designInputs[i.id] ?? asset.stateDefaults[i.id]]));
121
+ const inputs = Object.fromEntries(asset.document.model.inputs.map(i => [
122
+ i.id,
123
+ a.inputs[i.id] ?? asset.designInputs[i.id] ?? asset.stateDefaults[i.id]
124
+ ]));
81
125
  install(a, { asset, inputs });
82
126
  }
83
127
  return read();
@@ -112,14 +156,19 @@ export function createV3EditorWorkspace() {
112
156
  },
113
157
  export({ context, captureStateDefaults = false }) {
114
158
  const a = current(context);
115
- return { context, revision: a.revision, text: serializeV3Asset(captureV3AuthoredInputs(a.asset, a.inputs, { captureStateDefaults })) };
159
+ return {
160
+ context,
161
+ revision: a.revision,
162
+ text: serializeV3Asset(captureV3AuthoredInputs(a.asset, a.inputs, { captureStateDefaults }))
163
+ };
116
164
  },
117
165
  acknowledgeSaved({ context, revision, text }) {
118
166
  const a = current(context);
119
167
  if (revision !== a.revision)
120
168
  fail('REVISION_CONFLICT', 'edited since export');
121
169
  const saved = parseV3Asset(text), ordinary = captureV3AuthoredInputs(a.asset, a.inputs), withPose = captureV3AuthoredInputs(a.asset, a.inputs, { captureStateDefaults: true });
122
- if (serializeV3Asset(saved) !== serializeV3Asset(ordinary) && serializeV3Asset(saved) !== serializeV3Asset(withPose))
170
+ if (serializeV3Asset(saved) !== serializeV3Asset(ordinary) &&
171
+ serializeV3Asset(saved) !== serializeV3Asset(withPose))
123
172
  fail('SAVE_MISMATCH', 'acknowledgement does not match current asset');
124
173
  a.asset = saved;
125
174
  a.baseline = structuredClone(saved);
@@ -1 +1 @@
1
- {"version":3,"file":"v3-editor-workspace.js","sourceRoot":"","sources":["../src/v3-editor-workspace.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"v3-editor-workspace.js","sourceRoot":"","sources":["../src/v3-editor-workspace.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"v3-part-edit.d.ts","sourceRoot":"","sources":["../src/v3-part-edit.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAG9D,MAAM,MAAM,UAAU,GAAG;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,UAAU,CAAA;CAAE,GACnF;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAA;AAE3C,6FAA6F;AAC7F,wBAAgB,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAsCrE"}
1
+ {"version":3,"file":"v3-part-edit.d.ts","sourceRoot":"","sources":["../src/v3-part-edit.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAG9D,MAAM,MAAM,UAAU,GACpB;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,UAAU,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAA;AAE1G,6FAA6F;AAC7F,wBAAgB,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAkErE"}
@@ -15,10 +15,16 @@ export function editV3Part(source, edit) {
15
15
  throw new V3ContractError('EDIT_TARGET', edit.target, 'remove an explicit placement, not a repeated template');
16
16
  const outputs = new Set(Object.values(part.outputs));
17
17
  // Other graph nodes and capability declarations are roots. Deletion must not invalidate them.
18
- const references = (value) => typeof value === 'string' ? [value] :
19
- Array.isArray(value) ? value.flatMap(references) : value && typeof value === 'object' ? Object.values(value).flatMap(references) : [];
18
+ const references = (value) => typeof value === 'string'
19
+ ? [value]
20
+ : Array.isArray(value)
21
+ ? value.flatMap(references)
22
+ : value && typeof value === 'object'
23
+ ? Object.values(value).flatMap(references)
24
+ : [];
20
25
  const bound = new Set(references(asset.document.capabilities));
21
- if (model.nodes.some(n => n.id !== part.id && n.args.some(ref => outputs.has(ref))) || [...outputs].some(ref => bound.has(ref))) {
26
+ if (model.nodes.some(n => n.id !== part.id && n.args.some(ref => outputs.has(ref))) ||
27
+ [...outputs].some(ref => bound.has(ref))) {
22
28
  throw new V3ContractError('PART_REFERENCED', part.id, 'another graph node or capability references this placement');
23
29
  }
24
30
  model.nodes = model.nodes.filter(n => n.id !== part.id);
@@ -32,7 +38,9 @@ export function editV3Part(source, edit) {
32
38
  const writer = model.nodes.find(n => Object.values(n.outputs).includes(ref));
33
39
  if (writer) {
34
40
  const refs = Object.values(writer.outputs);
35
- if (asset.appearance.some(a => a.target === writer.id) || refs.some(r => bound.has(r) || model.nodes.some(n => n.id !== writer.id && (n.args.includes(r) || Object.values(n.params ?? {}).includes(r)))))
41
+ if (asset.appearance.some(a => a.target === writer.id) ||
42
+ refs.some(r => bound.has(r) ||
43
+ model.nodes.some(n => n.id !== writer.id && (n.args.includes(r) || Object.values(n.params ?? {}).includes(r)))))
36
44
  continue;
37
45
  model.nodes = model.nodes.filter(n => n.id !== writer.id);
38
46
  pending.push(...writer.args);
@@ -1 +1 @@
1
- {"version":3,"file":"v3-part-edit.js","sourceRoot":"","sources":["../src/v3-part-edit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"v3-part-edit.js","sourceRoot":"","sources":["../src/v3-part-edit.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hatiolab/figure-model",
3
- "version": "0.1.31",
3
+ "version": "0.1.32",
4
4
  "description": "Figure 저작 결과의 정본 형식과 검증 — 재질별로 병합되고 이름이 붙은 부품 그래프. 3D 로 저작한 형상 하나가 씬 컴포넌트로 서는 데 필요한 것을 담는다.",
5
5
  "keywords": [
6
6
  "figure",