@snaptrude/plugin-core 0.5.0 → 0.6.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 (67) hide show
  1. package/CHANGELOG.md +52 -0
  2. package/api-manifest.full.json +2044 -443
  3. package/api-manifest.json +2051 -394
  4. package/dist/api/analysis/heatmaps.d.ts +234 -0
  5. package/dist/api/analysis/heatmaps.d.ts.map +1 -0
  6. package/dist/api/analysis/illuminance.d.ts +145 -0
  7. package/dist/api/analysis/illuminance.d.ts.map +1 -0
  8. package/dist/api/analysis/index.d.ts +44 -0
  9. package/dist/api/analysis/index.d.ts.map +1 -0
  10. package/dist/api/analysis/shadows.d.ts +165 -0
  11. package/dist/api/analysis/shadows.d.ts.map +1 -0
  12. package/dist/api/analysis/sunlightHours.d.ts +208 -0
  13. package/dist/api/analysis/sunlightHours.d.ts.map +1 -0
  14. package/dist/api/analysis/sunpath.d.ts +80 -0
  15. package/dist/api/analysis/sunpath.d.ts.map +1 -0
  16. package/dist/api/core/index.d.ts +5 -0
  17. package/dist/api/core/index.d.ts.map +1 -1
  18. package/dist/api/core/io/import/index.d.ts +392 -0
  19. package/dist/api/core/io/import/index.d.ts.map +1 -0
  20. package/dist/api/core/io/index.d.ts +35 -0
  21. package/dist/api/core/io/index.d.ts.map +1 -0
  22. package/dist/api/core/io/job/index.d.ts +139 -0
  23. package/dist/api/core/io/job/index.d.ts.map +1 -0
  24. package/dist/api/core/io/query/index.d.ts +74 -0
  25. package/dist/api/core/io/query/index.d.ts.map +1 -0
  26. package/dist/api/core/io/terrain/index.d.ts +206 -0
  27. package/dist/api/core/io/terrain/index.d.ts.map +1 -0
  28. package/dist/api/core/io/underlay/index.d.ts +286 -0
  29. package/dist/api/core/io/underlay/index.d.ts.map +1 -0
  30. package/dist/api/core/layers.d.ts +7 -7
  31. package/dist/api/design/create/index.d.ts +9 -0
  32. package/dist/api/design/create/index.d.ts.map +1 -1
  33. package/dist/api/design/query/spaces.d.ts +3 -3
  34. package/dist/api/design/selection/index.d.ts +144 -0
  35. package/dist/api/design/selection/index.d.ts.map +1 -1
  36. package/dist/api/entity/space.d.ts +2 -2
  37. package/dist/api/index.d.ts +5 -0
  38. package/dist/api/index.d.ts.map +1 -1
  39. package/dist/api/program/site.d.ts +84 -0
  40. package/dist/api/program/site.d.ts.map +1 -1
  41. package/dist/handles.d.ts +33 -0
  42. package/dist/handles.d.ts.map +1 -1
  43. package/dist/index.cjs +1335 -987
  44. package/dist/index.cjs.map +1 -1
  45. package/dist/index.js +1278 -983
  46. package/dist/index.js.map +1 -1
  47. package/package.json +1 -1
  48. package/scripts/generate-manifest.test.mjs +26 -4
  49. package/src/api/analysis/heatmaps.ts +256 -0
  50. package/src/api/analysis/illuminance.ts +155 -0
  51. package/src/api/analysis/index.ts +46 -0
  52. package/src/api/analysis/shadows.ts +183 -0
  53. package/src/api/analysis/sunlightHours.ts +211 -0
  54. package/src/api/analysis/sunpath.ts +83 -0
  55. package/src/api/core/index.ts +5 -0
  56. package/src/api/core/io/import/index.ts +432 -0
  57. package/src/api/core/io/index.ts +37 -0
  58. package/src/api/core/io/job/index.ts +140 -0
  59. package/src/api/core/io/query/index.ts +71 -0
  60. package/src/api/core/io/terrain/index.ts +214 -0
  61. package/src/api/core/io/underlay/index.ts +295 -0
  62. package/src/api/design/create/index.ts +9 -0
  63. package/src/api/design/erase/index.ts +1 -1
  64. package/src/api/design/selection/index.ts +129 -0
  65. package/src/api/index.ts +5 -0
  66. package/src/api/program/site.ts +93 -0
  67. package/src/handles.ts +46 -0
@@ -90,6 +90,7 @@ export declare const PluginDesignQuerySpacesGetProperty: z.ZodEnum<{
90
90
  position: "position";
91
91
  id: "id";
92
92
  name: "name";
93
+ storey: "storey";
93
94
  height: "height";
94
95
  depth: "depth";
95
96
  innerProfiles: "innerProfiles";
@@ -99,7 +100,6 @@ export declare const PluginDesignQuerySpacesGetProperty: z.ZodEnum<{
99
100
  massType: "massType";
100
101
  spaceType: "spaceType";
101
102
  areaClass: "areaClass";
102
- storey: "storey";
103
103
  departmentId: "departmentId";
104
104
  departmentName: "departmentName";
105
105
  departmentColor: "departmentColor";
@@ -126,6 +126,7 @@ export declare const PluginDesignQuerySpacesGetArgs: z.ZodObject<{
126
126
  position: "position";
127
127
  id: "id";
128
128
  name: "name";
129
+ storey: "storey";
129
130
  height: "height";
130
131
  depth: "depth";
131
132
  innerProfiles: "innerProfiles";
@@ -135,7 +136,6 @@ export declare const PluginDesignQuerySpacesGetArgs: z.ZodObject<{
135
136
  massType: "massType";
136
137
  spaceType: "spaceType";
137
138
  areaClass: "areaClass";
138
- storey: "storey";
139
139
  departmentId: "departmentId";
140
140
  departmentName: "departmentName";
141
141
  departmentColor: "departmentColor";
@@ -162,6 +162,7 @@ export declare const PluginDesignQuerySpacesGetResult: z.ZodObject<{
162
162
  }, z.core.$strip>>;
163
163
  id: z.ZodOptional<z.ZodString>;
164
164
  name: z.ZodOptional<z.ZodString>;
165
+ storey: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
165
166
  height: z.ZodOptional<z.ZodNumber>;
166
167
  depth: z.ZodOptional<z.ZodNumber>;
167
168
  innerProfiles: z.ZodOptional<z.ZodArray<z.ZodArray<z.ZodUnion<readonly [z.ZodPipe<z.ZodString, z.ZodTransform<import("../../..").Handle<"line">, string>>, z.ZodPipe<z.ZodString, z.ZodTransform<import("../../..").Handle<"arc">, string>>]>>>>;
@@ -186,7 +187,6 @@ export declare const PluginDesignQuerySpacesGetResult: z.ZodObject<{
186
187
  GROSS: "GROSS";
187
188
  EXCLUDED: "EXCLUDED";
188
189
  }>>;
189
- storey: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
190
190
  departmentId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
191
191
  departmentName: z.ZodOptional<z.ZodString>;
192
192
  departmentColor: z.ZodOptional<z.ZodString>;
@@ -2,6 +2,109 @@ import * as z from "zod";
2
2
  import { PluginApiReturn } from "../../../types";
3
3
  import { ComponentHandle } from "../../../handles";
4
4
  import { PluginDesignChangeResult } from "../lock";
5
+ /**
6
+ * The entity kinds {@linkcode PluginDesignSelectionApi.setByFilter} can select —
7
+ * the union of the editor's "Filter selection" menus (Design tab + BIM tab).
8
+ * Tokens mirror {@linkcode PluginEntityType} where a kind exists on the query
9
+ * surface; the rest are selection-only kinds the query surface cannot reach
10
+ * (layer-backed and annotation objects).
11
+ *
12
+ * | Value | Entity (menu label) |
13
+ * |---|---|
14
+ * | `"wall"` | Wall |
15
+ * | `"slab"` | Floor slab |
16
+ * | `"floor"` | Flooring |
17
+ * | `"door"` | Door |
18
+ * | `"window"` | Window |
19
+ * | `"beam"` | Beam |
20
+ * | `"column"` | Column |
21
+ * | `"ceiling"` | Ceiling |
22
+ * | `"roof"` | Roof |
23
+ * | `"staircase"` | Staircase |
24
+ * | `"furniture"` | Furniture |
25
+ * | `"pergola"` | Pergola |
26
+ * | `"sunshade"` | Sunshade |
27
+ * | `"referenceLine"` | Reference line |
28
+ * | `"space"` | Space (room mass) |
29
+ * | `"site"` | Site |
30
+ * | `"terrain"` | Terrain |
31
+ * | `"cad"` | CAD import |
32
+ * | `"pdf"` | PDF import |
33
+ * | `"image"` | Image import |
34
+ * | `"dimensionLine"` | Dimension line |
35
+ * | `"model3d"` | Imported 3D model |
36
+ * | `"neighborhoodBuilding"` | Neighborhood building |
37
+ * | `"programBlock"` | Program block (department mass) |
38
+ */
39
+ export declare const PluginSelectionEntityType: z.ZodEnum<{
40
+ terrain: "terrain";
41
+ floor: "floor";
42
+ wall: "wall";
43
+ ceiling: "ceiling";
44
+ image: "image";
45
+ cad: "cad";
46
+ pdf: "pdf";
47
+ space: "space";
48
+ door: "door";
49
+ window: "window";
50
+ slab: "slab";
51
+ roof: "roof";
52
+ column: "column";
53
+ beam: "beam";
54
+ staircase: "staircase";
55
+ furniture: "furniture";
56
+ referenceLine: "referenceLine";
57
+ pergola: "pergola";
58
+ sunshade: "sunshade";
59
+ site: "site";
60
+ dimensionLine: "dimensionLine";
61
+ model3d: "model3d";
62
+ neighborhoodBuilding: "neighborhoodBuilding";
63
+ programBlock: "programBlock";
64
+ }>;
65
+ export type PluginSelectionEntityType = z.infer<typeof PluginSelectionEntityType>;
66
+ /**
67
+ * The filter for {@linkcode PluginDesignSelectionApi.setByFilter}. At least one
68
+ * field must be non-empty (to empty the selection use
69
+ * {@linkcode PluginDesignSelectionApi.clear}). Fields **AND**-combine; values
70
+ * within a field **OR**-combine — `{ storeys: [2], types: ["furniture"] }`
71
+ * selects only the furniture on storey 2.
72
+ *
73
+ * | Field | Type | Selects entities where |
74
+ * |---|---|---|
75
+ * | `storeys` | `number[]` | storey/floor level ∈ `storeys` (negative = basement) |
76
+ * | `types` | {@linkcode PluginSelectionEntityType}`[]` | entity kind ∈ `types` |
77
+ */
78
+ export declare const PluginSelectionFilter: z.ZodObject<{
79
+ storeys: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
80
+ types: z.ZodOptional<z.ZodArray<z.ZodEnum<{
81
+ terrain: "terrain";
82
+ floor: "floor";
83
+ wall: "wall";
84
+ ceiling: "ceiling";
85
+ image: "image";
86
+ cad: "cad";
87
+ pdf: "pdf";
88
+ space: "space";
89
+ door: "door";
90
+ window: "window";
91
+ slab: "slab";
92
+ roof: "roof";
93
+ column: "column";
94
+ beam: "beam";
95
+ staircase: "staircase";
96
+ furniture: "furniture";
97
+ referenceLine: "referenceLine";
98
+ pergola: "pergola";
99
+ sunshade: "sunshade";
100
+ site: "site";
101
+ dimensionLine: "dimensionLine";
102
+ model3d: "model3d";
103
+ neighborhoodBuilding: "neighborhoodBuilding";
104
+ programBlock: "programBlock";
105
+ }>>>;
106
+ }, z.core.$strip>;
107
+ export type PluginSelectionFilter = z.infer<typeof PluginSelectionFilter>;
5
108
  /**
6
109
  * `snaptrude.design.selection` — read and mutate the current scene selection.
7
110
  *
@@ -115,6 +218,47 @@ export declare abstract class PluginDesignSelectionApi {
115
218
  * ```
116
219
  */
117
220
  abstract clear(): PluginApiReturn<PluginDesignChangeResult>;
221
+ /**
222
+ * Replace the selection with every visible entity of the active building that
223
+ * matches the filter — the programmatic equivalent of the editor's
224
+ * **Story selection** (`storeys`) and **Filter selection** (`types`) menus
225
+ * under the select tool, including their combination (fields AND, values
226
+ * within a field OR). Reaches selection-only kinds the query surface cannot
227
+ * (sites, terrain, CAD/PDF/image imports, dimension lines, 3D models,
228
+ * neighborhood buildings) and selects whole groups the way the editor does.
229
+ *
230
+ * This is a one-shot bulk select, not a persistent mode: the user's next
231
+ * canvas click resets the underlying filter state (the selection it made
232
+ * stays until changed). Results honor the ambient view — active building,
233
+ * hidden objects/buckets, and in 2D the active storey.
234
+ *
235
+ * @param filter Which entities to select — {@linkcode PluginSelectionFilter};
236
+ * at least one field must be non-empty
237
+ * @returns The resulting selection snapshot
238
+ *
239
+ * @examplePrompt Select everything on storey 2
240
+ * @examplePrompt Select all the walls and doors
241
+ * @examplePrompt Story selection: select the ground floor and first floor
242
+ * @examplePrompt Filter selection: select all furniture in the model
243
+ * @examplePrompt Select only the furniture on the second storey
244
+ * @examplePrompt Select all the spaces so I can recolor them
245
+ *
246
+ * # Example
247
+ * ```ts
248
+ * // "Story selection": everything on storeys 1 and 2
249
+ * await snaptrude.design.selection.setByFilter({ storeys: [1, 2] })
250
+ *
251
+ * // "Filter selection": all walls and doors
252
+ * await snaptrude.design.selection.setByFilter({ types: ["wall", "door"] })
253
+ *
254
+ * // Combined: only the furniture on storey 2
255
+ * const { affected } = await snaptrude.design.selection.setByFilter({
256
+ * storeys: [2],
257
+ * types: ["furniture"],
258
+ * })
259
+ * ```
260
+ */
261
+ abstract setByFilter(filter: PluginSelectionFilter): PluginApiReturn<PluginDesignChangeResult>;
118
262
  }
119
263
  /**
120
264
  * Arguments for {@linkcode PluginDesignSelectionApi.set}.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/api/design/selection/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAA;AAElD;;;;;;;;GAQG;AACH,8BAAsB,wBAAwB;;IAG5C;;;;;;;;;;;;;;;;;;;;;OAqBG;aACa,GAAG,IAAI,eAAe,CAAC,eAAe,EAAE,CAAC;IAEzD;;;;;;;;;;;;;;;;;;;OAmBG;aACa,GAAG,CAAC,UAAU,EAAE,eAAe,EAAE,GAAG,eAAe,CAAC,wBAAwB,CAAC;IAE7F;;;;;;;;;;;;;;;;;;;OAmBG;aACa,GAAG,CAAC,UAAU,EAAE,eAAe,EAAE,GAAG,eAAe,CAAC,wBAAwB,CAAC;IAE7F;;;;;;;;;;;;;;;;;;OAkBG;aACa,MAAM,CACpB,UAAU,EAAE,eAAe,EAAE,GAC5B,eAAe,CAAC,wBAAwB,CAAC;IAE5C;;;;;;;;;;;;;;;OAeG;aACa,KAAK,IAAI,eAAe,CAAC,wBAAwB,CAAC;CACnE;AAED;;;;;;GAMG;AACH,eAAO,MAAM,4BAA4B;;iBAEvC,CAAA;AACF,MAAM,MAAM,4BAA4B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAA;AAEvF,eAAO,MAAM,4BAA4B;;iBAA+B,CAAA;AACxE,MAAM,MAAM,4BAA4B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAA;AAEvF,eAAO,MAAM,+BAA+B;;iBAA+B,CAAA;AAC3E,MAAM,MAAM,+BAA+B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/api/design/selection/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAA;AAElD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;EAyBpC,CAAA;AACF,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAA;AAEjF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAQ9B,CAAA;AACJ,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAA;AAEzE;;;;;;;;GAQG;AACH,8BAAsB,wBAAwB;;IAG5C;;;;;;;;;;;;;;;;;;;;;OAqBG;aACa,GAAG,IAAI,eAAe,CAAC,eAAe,EAAE,CAAC;IAEzD;;;;;;;;;;;;;;;;;;;OAmBG;aACa,GAAG,CAAC,UAAU,EAAE,eAAe,EAAE,GAAG,eAAe,CAAC,wBAAwB,CAAC;IAE7F;;;;;;;;;;;;;;;;;;;OAmBG;aACa,GAAG,CAAC,UAAU,EAAE,eAAe,EAAE,GAAG,eAAe,CAAC,wBAAwB,CAAC;IAE7F;;;;;;;;;;;;;;;;;;OAkBG;aACa,MAAM,CACpB,UAAU,EAAE,eAAe,EAAE,GAC5B,eAAe,CAAC,wBAAwB,CAAC;IAE5C;;;;;;;;;;;;;;;OAeG;aACa,KAAK,IAAI,eAAe,CAAC,wBAAwB,CAAC;IAElE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAuCG;aACa,WAAW,CACzB,MAAM,EAAE,qBAAqB,GAC5B,eAAe,CAAC,wBAAwB,CAAC;CAC7C;AAED;;;;;;GAMG;AACH,eAAO,MAAM,4BAA4B;;iBAEvC,CAAA;AACF,MAAM,MAAM,4BAA4B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAA;AAEvF,eAAO,MAAM,4BAA4B;;iBAA+B,CAAA;AACxE,MAAM,MAAM,4BAA4B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAA;AAEvF,eAAO,MAAM,+BAA+B;;iBAA+B,CAAA;AAC3E,MAAM,MAAM,+BAA+B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAA"}
@@ -133,6 +133,7 @@ export declare const PluginSpaceGetProperty: z.ZodEnum<{
133
133
  position: "position";
134
134
  id: "id";
135
135
  name: "name";
136
+ storey: "storey";
136
137
  height: "height";
137
138
  depth: "depth";
138
139
  innerProfiles: "innerProfiles";
@@ -142,7 +143,6 @@ export declare const PluginSpaceGetProperty: z.ZodEnum<{
142
143
  massType: "massType";
143
144
  spaceType: "spaceType";
144
145
  areaClass: "areaClass";
145
- storey: "storey";
146
146
  departmentId: "departmentId";
147
147
  departmentName: "departmentName";
148
148
  departmentColor: "departmentColor";
@@ -169,6 +169,7 @@ export declare const PluginSpaceGetArgs: z.ZodObject<{
169
169
  position: "position";
170
170
  id: "id";
171
171
  name: "name";
172
+ storey: "storey";
172
173
  height: "height";
173
174
  depth: "depth";
174
175
  innerProfiles: "innerProfiles";
@@ -178,7 +179,6 @@ export declare const PluginSpaceGetArgs: z.ZodObject<{
178
179
  massType: "massType";
179
180
  spaceType: "spaceType";
180
181
  areaClass: "areaClass";
181
- storey: "storey";
182
182
  departmentId: "departmentId";
183
183
  departmentName: "departmentName";
184
184
  departmentColor: "departmentColor";
@@ -3,6 +3,7 @@ import { PluginDesignApi } from "./design";
3
3
  import { PluginEntityApi } from "./entity";
4
4
  import { PluginProgramApi } from "./program";
5
5
  import { PluginPresentationApi } from "./presentation";
6
+ import { PluginAnalysisApi } from "./analysis";
6
7
  /**
7
8
  * Root API surface for Snaptrude plugins.
8
9
  *
@@ -13,6 +14,7 @@ import { PluginPresentationApi } from "./presentation";
13
14
  * - {@linkcode PluginApi.entity} — CRUD operations on Snaptrude entities (spaces, stories)
14
15
  * - {@linkcode PluginApi.program} — Program-mode planning reads (departments, metrics)
15
16
  * - {@linkcode PluginApi.presentation} — Presentation preparation (views, AI Inspiration)
17
+ * - {@linkcode PluginApi.analysis} — Sustainability analysis (sunpath, shadows, sunlight/illuminance heatmaps)
16
18
  */
17
19
  export declare abstract class PluginApi {
18
20
  /** Core math, geometry, history, and units primitives. See {@linkcode PluginCoreApi}. */
@@ -25,6 +27,8 @@ export declare abstract class PluginApi {
25
27
  abstract program: PluginProgramApi;
26
28
  /** Presentation preparation reads — saved views. See {@linkcode PluginPresentationApi}. */
27
29
  abstract presentation: PluginPresentationApi;
30
+ /** Sustainability analysis — sun & daylight studies. See {@linkcode PluginAnalysisApi}. */
31
+ abstract analysis: PluginAnalysisApi;
28
32
  constructor();
29
33
  }
30
34
  export * from "./core";
@@ -32,4 +36,5 @@ export * from "./design";
32
36
  export * from "./entity";
33
37
  export * from "./program";
34
38
  export * from "./presentation";
39
+ export * from "./analysis";
35
40
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAA;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAA;AAEtD;;;;;;;;;;GAUG;AACH,8BAAsB,SAAS;IAC7B,yFAAyF;IACzF,SAAgB,IAAI,EAAE,aAAa,CAAA;IACnC,0EAA0E;IAC1E,SAAgB,MAAM,EAAE,eAAe,CAAA;IACvC,8EAA8E;IAC9E,SAAgB,MAAM,EAAE,eAAe,CAAA;IACvC,oGAAoG;IACpG,SAAgB,OAAO,EAAE,gBAAgB,CAAA;IACzC,2FAA2F;IAC3F,SAAgB,YAAY,EAAE,qBAAqB,CAAA;;CAGpD;AAED,cAAc,QAAQ,CAAA;AACtB,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,gBAAgB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAA;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAA;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAE9C;;;;;;;;;;;GAWG;AACH,8BAAsB,SAAS;IAC7B,yFAAyF;IACzF,SAAgB,IAAI,EAAE,aAAa,CAAA;IACnC,0EAA0E;IAC1E,SAAgB,MAAM,EAAE,eAAe,CAAA;IACvC,8EAA8E;IAC9E,SAAgB,MAAM,EAAE,eAAe,CAAA;IACvC,oGAAoG;IACpG,SAAgB,OAAO,EAAE,gBAAgB,CAAA;IACzC,2FAA2F;IAC3F,SAAgB,YAAY,EAAE,qBAAqB,CAAA;IACnD,2FAA2F;IAC3F,SAAgB,QAAQ,EAAE,iBAAiB,CAAA;;CAG5C;AAED,cAAc,QAAQ,CAAA;AACtB,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAA"}
@@ -120,6 +120,61 @@ export declare abstract class PluginProgramSiteApi {
120
120
  * ```
121
121
  */
122
122
  abstract getContext(): PluginApiReturn<PluginProgramSiteContextResult>;
123
+ /**
124
+ * Get the project's geographic location.
125
+ *
126
+ * The latitude/longitude the site is geo-located at — the location the
127
+ * `analysis.*` sun and daylight studies compute against. Returns `null`
128
+ * when the project is not geo-located on terrain (there is no fallback
129
+ * location).
130
+ *
131
+ * Note the spelling: this result uses the full `{ latitude, longitude }`
132
+ * keys, while the older site reads
133
+ * ({@linkcode PluginProgramSiteApi.getContext},
134
+ * {@linkcode PluginProgramSiteApi.listGeoPolygons}) use the abbreviated
135
+ * `{ lat, lng }`.
136
+ *
137
+ * @returns A {@linkcode PluginProgramSiteLocationResult} —
138
+ * `{ latitude, longitude }`, or `null` when the project has no
139
+ * geo-located site.
140
+ *
141
+ * @examplePrompt What's the project's latitude and longitude?
142
+ * @examplePrompt Where is this site located?
143
+ * @examplePrompt Get the geographic coordinates of the project
144
+ *
145
+ * # Example
146
+ * ```ts
147
+ * const location = await snaptrude.program.site.getLocation()
148
+ * if (location) console.log(location.latitude, location.longitude)
149
+ * ```
150
+ */
151
+ abstract getLocation(): PluginApiReturn<PluginProgramSiteLocationResult>;
152
+ /**
153
+ * Get the site's true-north angle.
154
+ *
155
+ * The angle in degrees the model's north (the scene's +Z axis) is rotated
156
+ * from true north, derived from the terrain's rotation. `0` means the
157
+ * model is aligned to true north. Reported in `[0, 360)`,
158
+ * **clockwise-positive** viewed from above (Babylon's +Y rotation sign) —
159
+ * note this is the opposite sign convention to `design.transform.rotate`,
160
+ * where positive = CCW. Returns `null` when the project is not
161
+ * geo-located on terrain.
162
+ *
163
+ * @returns A {@linkcode PluginProgramSiteNorthAngleResult} — the angle in
164
+ * degrees (`[0, 360)`, clockwise-positive), or `null` when the project
165
+ * has no geo-located site.
166
+ *
167
+ * @examplePrompt What's the north angle of the site?
168
+ * @examplePrompt How far is the model rotated from true north?
169
+ * @examplePrompt Get the project's true north direction
170
+ *
171
+ * # Example
172
+ * ```ts
173
+ * const northAngle = await snaptrude.program.site.getNorthAngle()
174
+ * if (northAngle !== null) console.log(`${northAngle}° from true north`)
175
+ * ```
176
+ */
177
+ abstract getNorthAngle(): PluginApiReturn<PluginProgramSiteNorthAngleResult>;
123
178
  }
124
179
  /**
125
180
  * A 2D ground-plane point of a site parcel footprint, in scene coordinates
@@ -364,4 +419,33 @@ export declare const PluginProgramSiteContextResult: z.ZodNullable<z.ZodObject<{
364
419
  }, z.core.$strip>>;
365
420
  }, z.core.$strip>>;
366
421
  export type PluginProgramSiteContextResult = z.infer<typeof PluginProgramSiteContextResult>;
422
+ /**
423
+ * The project's geographic location (WGS84).
424
+ *
425
+ * | Property | Type | Description |
426
+ * |---|---|---|
427
+ * | `latitude` | `number` | Latitude (degrees) |
428
+ * | `longitude` | `number` | Longitude (degrees) |
429
+ */
430
+ export declare const PluginProgramSiteLocation: z.ZodObject<{
431
+ latitude: z.ZodNumber;
432
+ longitude: z.ZodNumber;
433
+ }, z.core.$strip>;
434
+ export type PluginProgramSiteLocation = z.infer<typeof PluginProgramSiteLocation>;
435
+ /**
436
+ * Result of {@linkcode PluginProgramSiteApi.getLocation} — the location, or
437
+ * `null` when the project is not geo-located.
438
+ */
439
+ export declare const PluginProgramSiteLocationResult: z.ZodNullable<z.ZodObject<{
440
+ latitude: z.ZodNumber;
441
+ longitude: z.ZodNumber;
442
+ }, z.core.$strip>>;
443
+ export type PluginProgramSiteLocationResult = z.infer<typeof PluginProgramSiteLocationResult>;
444
+ /**
445
+ * Result of {@linkcode PluginProgramSiteApi.getNorthAngle} — the true-north
446
+ * angle in degrees (`[0, 360)`, clockwise-positive), or `null` when the
447
+ * project is not geo-located.
448
+ */
449
+ export declare const PluginProgramSiteNorthAngleResult: z.ZodNullable<z.ZodNumber>;
450
+ export type PluginProgramSiteNorthAngleResult = z.infer<typeof PluginProgramSiteNorthAngleResult>;
367
451
  //# sourceMappingURL=site.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"site.d.ts","sourceRoot":"","sources":["../../../src/api/program/site.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"site.d.ts","sourceRoot":"","sources":["../../../src/api/program/site.ts"],"names":[],"mappings":"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"}
package/dist/handles.d.ts CHANGED
@@ -40,6 +40,31 @@ export type ComponentHandle = EntityId<"component">;
40
40
  * Project-scoped, not a scene entity.
41
41
  */
42
42
  export type MaterialHandle = EntityId<"material">;
43
+ /**
44
+ * A placed **scene underlay** — an imported reference plane the user traces over:
45
+ * an image `FloorPlan`, a `PDF` overlay, or a `CAD` sketch. Entity-style: the token
46
+ * IS the raw `Component.id` (`fp_…` / a pdf id / `cad_…`). Resolved live host-side
47
+ * via the import-order layer walk (`collectStoreyImportItems`) — NOT via
48
+ * `ComponentUtility.FindComponentById`, which does not index underlays. No arena, no
49
+ * quota, stable across undo/redo. Returned by `core.io.import.{image,pdf,cadJson}`
50
+ * and consumed by every `core.io.underlay.*` method.
51
+ */
52
+ export type UnderlayHandle = EntityId<"underlay">;
53
+ /**
54
+ * The project's **site terrain** — a Mapbox-derived topography mesh. Entity-style
55
+ * and a project **singleton** (one terrain per project): the token is the terrain
56
+ * `Component.id` (`terrain-…`), resolved live via `TerrainOperations.getTerrain()`
57
+ * (absent from the level component collections, so NOT `FindComponentById`).
58
+ * Returned by `core.io.import.terrain`.
59
+ */
60
+ export type TerrainHandle = EntityId<"terrain">;
61
+ /**
62
+ * A handle to an **asynchronous import job** (today: a DWG → Forge conversion, which
63
+ * can take minutes). Returned immediately by `core.io.import.dwg`; poll it via
64
+ * `core.io.job.*` (`getStatus` / `isComplete` / `getResult` / `getError`). The token
65
+ * is the engine's import request id; job state lives in a host-side registry.
66
+ */
67
+ export type ImportJobHandle = EntityId<"importJob">;
43
68
  export type Vec3Handle = Handle<"vec3">;
44
69
  export type QuatHandle = Handle<"quat">;
45
70
  export type LineHandle = Handle<"line">;
@@ -101,6 +126,14 @@ export declare const ComponentHandle: z.ZodPipe<z.ZodString, z.ZodTransform<Comp
101
126
  * prefix) — validated only as non-empty, resolved live via `scene.getMaterialByName`.
102
127
  */
103
128
  export declare const MaterialHandle: z.ZodPipe<z.ZodString, z.ZodTransform<MaterialHandle, string>>;
129
+ /**
130
+ * {@linkcode UnderlayHandle} / {@linkcode TerrainHandle} / {@linkcode ImportJobHandle}
131
+ * are entity-style handles — raw host ids, validated only as a non-empty string
132
+ * (no `"<kind>_"` prefix), resolved live host-side (existence enforced there).
133
+ */
134
+ export declare const UnderlayHandle: z.ZodPipe<z.ZodString, z.ZodTransform<UnderlayHandle, string>>;
135
+ export declare const TerrainHandle: z.ZodPipe<z.ZodString, z.ZodTransform<TerrainHandle, string>>;
136
+ export declare const ImportJobHandle: z.ZodPipe<z.ZodString, z.ZodTransform<ImportJobHandle, string>>;
104
137
  export declare const Vec3Handle: z.ZodPipe<z.ZodString, z.ZodTransform<Handle<"vec3">, string>>;
105
138
  export declare const QuatHandle: z.ZodPipe<z.ZodString, z.ZodTransform<Handle<"quat">, string>>;
106
139
  export declare const LineHandle: z.ZodPipe<z.ZodString, z.ZodTransform<Handle<"line">, string>>;
@@ -1 +1 @@
1
- {"version":3,"file":"handles.d.ts","sourceRoot":"","sources":["../src/handles.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"handles.d.ts","sourceRoot":"","sources":["../src/handles.ts"],"names":[],"mappings":"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"}