@snaptrude/plugin-core 0.3.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.
- package/AGENTS.md +130 -48
- package/CHANGELOG.md +163 -0
- package/api-manifest.full.json +5600 -0
- package/api-manifest.json +5502 -0
- package/dist/api/analysis/heatmaps.d.ts +234 -0
- package/dist/api/analysis/heatmaps.d.ts.map +1 -0
- package/dist/api/analysis/illuminance.d.ts +145 -0
- package/dist/api/analysis/illuminance.d.ts.map +1 -0
- package/dist/api/analysis/index.d.ts +44 -0
- package/dist/api/analysis/index.d.ts.map +1 -0
- package/dist/api/analysis/shadows.d.ts +165 -0
- package/dist/api/analysis/shadows.d.ts.map +1 -0
- package/dist/api/analysis/sunlightHours.d.ts +208 -0
- package/dist/api/analysis/sunlightHours.d.ts.map +1 -0
- package/dist/api/analysis/sunpath.d.ts +80 -0
- package/dist/api/analysis/sunpath.d.ts.map +1 -0
- package/dist/api/core/buildings.d.ts +427 -0
- package/dist/api/core/buildings.d.ts.map +1 -0
- package/dist/api/core/comment/index.d.ts +230 -0
- package/dist/api/core/comment/index.d.ts.map +1 -0
- package/dist/api/core/geom/create/index.d.ts +247 -0
- package/dist/api/core/geom/create/index.d.ts.map +1 -0
- package/dist/api/core/geom/delete/index.d.ts +72 -0
- package/dist/api/core/geom/delete/index.d.ts.map +1 -0
- package/dist/api/core/geom/index.d.ts +24 -23
- package/dist/api/core/geom/index.d.ts.map +1 -1
- package/dist/api/core/geom/query/arc.d.ts +169 -0
- package/dist/api/core/geom/query/arc.d.ts.map +1 -0
- package/dist/api/core/geom/query/brep.d.ts +402 -0
- package/dist/api/core/geom/query/brep.d.ts.map +1 -0
- package/dist/api/core/geom/query/circle.d.ts +378 -0
- package/dist/api/core/geom/query/circle.d.ts.map +1 -0
- package/dist/api/core/geom/query/contour.d.ts +450 -0
- package/dist/api/core/geom/query/contour.d.ts.map +1 -0
- package/dist/api/core/geom/query/curve.d.ts +918 -0
- package/dist/api/core/geom/query/curve.d.ts.map +1 -0
- package/dist/api/core/geom/query/edge.d.ts +128 -0
- package/dist/api/core/geom/query/edge.d.ts.map +1 -0
- package/dist/api/core/geom/query/face.d.ts +363 -0
- package/dist/api/core/geom/query/face.d.ts.map +1 -0
- package/dist/api/core/geom/query/halfedge.d.ts +206 -0
- package/dist/api/core/geom/query/halfedge.d.ts.map +1 -0
- package/dist/api/core/geom/query/index.d.ts +61 -0
- package/dist/api/core/geom/query/index.d.ts.map +1 -0
- package/dist/api/core/geom/query/profile.d.ts +410 -0
- package/dist/api/core/geom/query/profile.d.ts.map +1 -0
- package/dist/api/core/geom/query/vertex.d.ts +187 -0
- package/dist/api/core/geom/query/vertex.d.ts.map +1 -0
- package/dist/api/core/geom/update/contour.d.ts +272 -0
- package/dist/api/core/geom/update/contour.d.ts.map +1 -0
- package/dist/api/core/geom/update/curve.d.ts +180 -0
- package/dist/api/core/geom/update/curve.d.ts.map +1 -0
- package/dist/api/core/geom/update/index.d.ts +27 -0
- package/dist/api/core/geom/update/index.d.ts.map +1 -0
- package/dist/api/core/geom/update/profile.d.ts +329 -0
- package/dist/api/core/geom/update/profile.d.ts.map +1 -0
- package/dist/api/core/groups.d.ts +485 -0
- package/dist/api/core/groups.d.ts.map +1 -0
- package/dist/api/core/history/index.d.ts +78 -0
- package/dist/api/core/history/index.d.ts.map +1 -0
- package/dist/api/core/index.d.ts +51 -1
- package/dist/api/core/index.d.ts.map +1 -1
- package/dist/api/core/io/import/index.d.ts +392 -0
- package/dist/api/core/io/import/index.d.ts.map +1 -0
- package/dist/api/core/io/index.d.ts +35 -0
- package/dist/api/core/io/index.d.ts.map +1 -0
- package/dist/api/core/io/job/index.d.ts +139 -0
- package/dist/api/core/io/job/index.d.ts.map +1 -0
- package/dist/api/core/io/query/index.d.ts +74 -0
- package/dist/api/core/io/query/index.d.ts.map +1 -0
- package/dist/api/core/io/terrain/index.d.ts +206 -0
- package/dist/api/core/io/terrain/index.d.ts.map +1 -0
- package/dist/api/core/io/underlay/index.d.ts +286 -0
- package/dist/api/core/io/underlay/index.d.ts.map +1 -0
- package/dist/api/core/layers.d.ts +402 -0
- package/dist/api/core/layers.d.ts.map +1 -0
- package/dist/api/core/math/quat.d.ts +111 -128
- package/dist/api/core/math/quat.d.ts.map +1 -1
- package/dist/api/core/math/vec3.d.ts +120 -102
- package/dist/api/core/math/vec3.d.ts.map +1 -1
- package/dist/api/core/project/index.d.ts +399 -0
- package/dist/api/core/project/index.d.ts.map +1 -0
- package/dist/api/core/tags.d.ts +755 -0
- package/dist/api/core/tags.d.ts.map +1 -0
- package/dist/api/core/units/index.d.ts +175 -0
- package/dist/api/core/units/index.d.ts.map +1 -0
- package/dist/api/core/zoom/index.d.ts +45 -0
- package/dist/api/core/zoom/index.d.ts.map +1 -0
- package/dist/api/design/boolean/index.d.ts +168 -0
- package/dist/api/design/boolean/index.d.ts.map +1 -0
- package/dist/api/design/create/index.d.ts +837 -0
- package/dist/api/design/create/index.d.ts.map +1 -0
- package/dist/api/design/delete/index.d.ts +63 -0
- package/dist/api/design/delete/index.d.ts.map +1 -0
- package/dist/api/design/doors/index.d.ts +268 -0
- package/dist/api/design/doors/index.d.ts.map +1 -0
- package/dist/api/design/edit/index.d.ts +49 -0
- package/dist/api/design/edit/index.d.ts.map +1 -0
- package/dist/api/design/erase/index.d.ts +160 -0
- package/dist/api/design/erase/index.d.ts.map +1 -0
- package/dist/api/design/furniture/index.d.ts +123 -0
- package/dist/api/design/furniture/index.d.ts.map +1 -0
- package/dist/api/design/index.d.ts +153 -0
- package/dist/api/design/index.d.ts.map +1 -0
- package/dist/api/design/lock.d.ts +41 -0
- package/dist/api/design/lock.d.ts.map +1 -0
- package/dist/api/design/materials/index.d.ts +297 -0
- package/dist/api/design/materials/index.d.ts.map +1 -0
- package/dist/api/design/query/geometry/index.d.ts +140 -0
- package/dist/api/design/query/geometry/index.d.ts.map +1 -0
- package/dist/api/design/query/index.d.ts +1011 -0
- package/dist/api/design/query/index.d.ts.map +1 -0
- package/dist/api/design/query/spaces.d.ts +221 -0
- package/dist/api/design/query/spaces.d.ts.map +1 -0
- package/dist/api/design/selection/index.d.ts +282 -0
- package/dist/api/design/selection/index.d.ts.map +1 -0
- package/dist/api/design/shared.d.ts +38 -0
- package/dist/api/design/shared.d.ts.map +1 -0
- package/dist/api/design/transform/index.d.ts +87 -0
- package/dist/api/design/transform/index.d.ts.map +1 -0
- package/dist/api/design/update/index.d.ts +178 -0
- package/dist/api/design/update/index.d.ts.map +1 -0
- package/dist/api/design/windows/index.d.ts +189 -0
- package/dist/api/design/windows/index.d.ts.map +1 -0
- package/dist/api/entity/buildableEnvelope.d.ts +261 -0
- package/dist/api/entity/buildableEnvelope.d.ts.map +1 -0
- package/dist/api/entity/department.d.ts +0 -98
- package/dist/api/entity/department.d.ts.map +1 -1
- package/dist/api/entity/index.d.ts +9 -9
- package/dist/api/entity/index.d.ts.map +1 -1
- package/dist/api/entity/referenceLine.d.ts +49 -106
- package/dist/api/entity/referenceLine.d.ts.map +1 -1
- package/dist/api/entity/space.d.ts +484 -251
- package/dist/api/entity/space.d.ts.map +1 -1
- package/dist/api/entity/story.d.ts +49 -39
- package/dist/api/entity/story.d.ts.map +1 -1
- package/dist/api/index.d.ts +22 -12
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/presentation/aiInspiration.d.ts +440 -0
- package/dist/api/presentation/aiInspiration.d.ts.map +1 -0
- package/dist/api/presentation/diagrams.d.ts +81 -0
- package/dist/api/presentation/diagrams.d.ts.map +1 -0
- package/dist/api/presentation/import.d.ts +113 -0
- package/dist/api/presentation/import.d.ts.map +1 -0
- package/dist/api/presentation/index.d.ts +46 -0
- package/dist/api/presentation/index.d.ts.map +1 -0
- package/dist/api/presentation/sheets.d.ts +176 -0
- package/dist/api/presentation/sheets.d.ts.map +1 -0
- package/dist/api/presentation/views.d.ts +296 -0
- package/dist/api/presentation/views.d.ts.map +1 -0
- package/dist/api/program/adjacency.d.ts +155 -0
- package/dist/api/program/adjacency.d.ts.map +1 -0
- package/dist/api/program/areas.d.ts +360 -0
- package/dist/api/program/areas.d.ts.map +1 -0
- package/dist/api/program/classification.d.ts +135 -0
- package/dist/api/program/classification.d.ts.map +1 -0
- package/dist/api/program/cores.d.ts +174 -0
- package/dist/api/program/cores.d.ts.map +1 -0
- package/dist/api/program/departments.d.ts +431 -0
- package/dist/api/program/departments.d.ts.map +1 -0
- package/dist/api/program/index.d.ts +69 -0
- package/dist/api/program/index.d.ts.map +1 -0
- package/dist/api/program/layout.d.ts +63 -0
- package/dist/api/program/layout.d.ts.map +1 -0
- package/dist/api/program/metrics.d.ts +108 -0
- package/dist/api/program/metrics.d.ts.map +1 -0
- package/dist/api/program/site.d.ts +451 -0
- package/dist/api/program/site.d.ts.map +1 -0
- package/dist/api/program/spreadsheet.d.ts +2041 -0
- package/dist/api/program/spreadsheet.d.ts.map +1 -0
- package/dist/handles.d.ts +171 -0
- package/dist/handles.d.ts.map +1 -0
- package/dist/host-utils.d.ts +7 -5
- package/dist/host-utils.d.ts.map +1 -1
- package/dist/index.cjs +4344 -899
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3682 -865
- package/dist/index.js.map +1 -1
- package/package.json +6 -2
- package/scripts/generate-manifest.mjs +193 -0
- package/scripts/generate-manifest.test.mjs +215 -0
- package/src/api/analysis/heatmaps.ts +256 -0
- package/src/api/analysis/illuminance.ts +155 -0
- package/src/api/analysis/index.ts +46 -0
- package/src/api/analysis/shadows.ts +183 -0
- package/src/api/analysis/sunlightHours.ts +211 -0
- package/src/api/analysis/sunpath.ts +83 -0
- package/src/api/core/buildings.ts +485 -0
- package/src/api/core/comment/index.ts +258 -0
- package/src/api/core/geom/create/index.ts +293 -0
- package/src/api/core/geom/delete/index.ts +78 -0
- package/src/api/core/geom/index.ts +24 -23
- package/src/api/core/geom/query/arc.ts +169 -0
- package/src/api/core/geom/query/brep.ts +444 -0
- package/src/api/core/geom/query/circle.ts +404 -0
- package/src/api/core/geom/query/contour.ts +540 -0
- package/src/api/core/geom/query/curve.ts +1078 -0
- package/src/api/core/geom/query/edge.ts +130 -0
- package/src/api/core/geom/query/face.ts +403 -0
- package/src/api/core/geom/query/halfedge.ts +210 -0
- package/src/api/core/geom/query/index.ts +63 -0
- package/src/api/core/geom/query/profile.ts +473 -0
- package/src/api/core/geom/query/vertex.ts +205 -0
- package/src/api/core/geom/update/contour.ts +315 -0
- package/src/api/core/geom/update/curve.ts +209 -0
- package/src/api/core/geom/update/index.ts +29 -0
- package/src/api/core/geom/update/profile.ts +377 -0
- package/src/api/core/groups.ts +521 -0
- package/src/api/core/history/index.ts +84 -0
- package/src/api/core/index.ts +51 -1
- package/src/api/core/io/import/index.ts +432 -0
- package/src/api/core/io/index.ts +37 -0
- package/src/api/core/io/job/index.ts +140 -0
- package/src/api/core/io/query/index.ts +71 -0
- package/src/api/core/io/terrain/index.ts +214 -0
- package/src/api/core/io/underlay/index.ts +295 -0
- package/src/api/core/layers.ts +333 -0
- package/src/api/core/math/quat.ts +112 -235
- package/src/api/core/math/vec3.ts +124 -159
- package/src/api/core/project/index.ts +418 -0
- package/src/api/core/tags.ts +808 -0
- package/src/api/core/units/index.ts +164 -0
- package/src/api/core/zoom/index.ts +47 -0
- package/src/api/design/boolean/index.ts +179 -0
- package/src/api/design/create/index.ts +895 -0
- package/src/api/design/delete/index.ts +67 -0
- package/src/api/design/doors/index.ts +285 -0
- package/src/api/design/edit/index.ts +54 -0
- package/src/api/design/erase/index.ts +151 -0
- package/src/api/design/furniture/index.ts +130 -0
- package/src/api/design/index.ts +162 -0
- package/src/api/design/lock.ts +42 -0
- package/src/api/design/materials/index.ts +301 -0
- package/src/api/design/query/geometry/index.ts +166 -0
- package/src/api/design/query/index.ts +937 -0
- package/src/api/design/query/spaces.ts +132 -0
- package/src/api/design/selection/index.ts +273 -0
- package/src/api/design/shared.ts +40 -0
- package/src/api/design/transform/index.ts +93 -0
- package/src/api/design/update/index.ts +117 -0
- package/src/api/design/windows/index.ts +207 -0
- package/src/api/entity/buildableEnvelope.ts +318 -0
- package/src/api/entity/department.ts +0 -113
- package/src/api/entity/index.ts +9 -9
- package/src/api/entity/referenceLine.ts +50 -38
- package/src/api/entity/space.ts +285 -226
- package/src/api/entity/story.ts +53 -42
- package/src/api/index.ts +22 -12
- package/src/api/presentation/aiInspiration.ts +362 -0
- package/src/api/presentation/diagrams.ts +84 -0
- package/src/api/presentation/import.ts +112 -0
- package/src/api/presentation/index.ts +48 -0
- package/src/api/presentation/sheets.ts +198 -0
- package/src/api/presentation/views.ts +303 -0
- package/src/api/program/adjacency.ts +164 -0
- package/src/api/program/areas.ts +335 -0
- package/src/api/program/classification.ts +138 -0
- package/src/api/program/cores.ts +171 -0
- package/src/api/program/departments.ts +465 -0
- package/src/api/program/index.ts +71 -0
- package/src/api/program/layout.ts +68 -0
- package/src/api/program/metrics.ts +120 -0
- package/src/api/program/site.ts +419 -0
- package/src/api/program/spreadsheet.ts +2075 -0
- package/src/handles.ts +194 -0
- package/src/host-utils.ts +10 -6
- package/src/index.ts +1 -0
- package/dist/api/core/geom/arc.d.ts +0 -81
- package/dist/api/core/geom/arc.d.ts.map +0 -1
- package/dist/api/core/geom/curve.d.ts +0 -70
- package/dist/api/core/geom/curve.d.ts.map +0 -1
- package/dist/api/core/geom/line.d.ts +0 -56
- package/dist/api/core/geom/line.d.ts.map +0 -1
- package/dist/api/core/geom/profile.d.ts +0 -121
- package/dist/api/core/geom/profile.d.ts.map +0 -1
- package/dist/api/tools/copy.d.ts +0 -59
- package/dist/api/tools/copy.d.ts.map +0 -1
- package/dist/api/tools/index.d.ts +0 -33
- package/dist/api/tools/index.d.ts.map +0 -1
- package/dist/api/tools/material.d.ts +0 -51
- package/dist/api/tools/material.d.ts.map +0 -1
- package/dist/api/tools/offset.d.ts +0 -43
- package/dist/api/tools/offset.d.ts.map +0 -1
- package/dist/api/tools/selection.d.ts +0 -48
- package/dist/api/tools/selection.d.ts.map +0 -1
- package/dist/api/tools/transform.d.ts +0 -114
- package/dist/api/tools/transform.d.ts.map +0 -1
- package/dist/api/units/index.d.ts +0 -163
- package/dist/api/units/index.d.ts.map +0 -1
- package/src/api/core/geom/arc.ts +0 -70
- package/src/api/core/geom/curve.ts +0 -41
- package/src/api/core/geom/line.ts +0 -53
- package/src/api/core/geom/profile.ts +0 -94
- package/src/api/tools/copy.ts +0 -55
- package/src/api/tools/index.ts +0 -39
- package/src/api/tools/material.ts +0 -49
- package/src/api/tools/offset.ts +0 -43
- package/src/api/tools/selection.ts +0 -51
- package/src/api/tools/transform.ts +0 -117
- package/src/api/units/index.ts +0 -163
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
import * as z from "zod"
|
|
2
|
-
import { PluginApiReturn } from "../../../types"
|
|
3
|
-
import { PVec3 } from "../math/vec3"
|
|
4
|
-
import { PCurve } from "./curve"
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Profile construction — a closed loop of {@linkcode PCurve}s.
|
|
8
|
-
*
|
|
9
|
-
* Profiles are the primary 2D shape primitive used for creating
|
|
10
|
-
* extruded entities like spaces. Build profiles either from an
|
|
11
|
-
* explicit list of curves or from a list of points (auto-connected
|
|
12
|
-
* with line segments).
|
|
13
|
-
*
|
|
14
|
-
* Accessed via `snaptrude.core.geom.profile`.
|
|
15
|
-
*/
|
|
16
|
-
export abstract class PluginProfileApi {
|
|
17
|
-
constructor() {}
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* Create a profile from an ordered list of curves.
|
|
21
|
-
*
|
|
22
|
-
* The curves should form a closed loop — the end point of each curve
|
|
23
|
-
* should coincide with the start point of the next.
|
|
24
|
-
*
|
|
25
|
-
* @param curves - An ordered array of {@linkcode PCurve}s forming a closed loop
|
|
26
|
-
* @returns A new {@linkcode PProfile}
|
|
27
|
-
*/
|
|
28
|
-
new(curves: PCurve[]): PProfile {
|
|
29
|
-
return { curves }
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* Create a profile by connecting a list of points with line segments.
|
|
34
|
-
*
|
|
35
|
-
* The points are connected in order, with the last point automatically
|
|
36
|
-
* connected back to the first to close the loop.
|
|
37
|
-
*
|
|
38
|
-
* This is a **host API call** — it returns a `Promise`.
|
|
39
|
-
*
|
|
40
|
-
* @param args - An object containing:
|
|
41
|
-
* - {@linkcode PluginProfileFromLinePointsArgs.points args.points} — An ordered
|
|
42
|
-
* array of {@linkcode PVec3} forming the profile vertices
|
|
43
|
-
* @returns A {@linkcode PProfile} with line-segment curves connecting the points
|
|
44
|
-
*
|
|
45
|
-
* # Example
|
|
46
|
-
* ```ts
|
|
47
|
-
* const { vec3 } = snaptrude.core.math
|
|
48
|
-
*
|
|
49
|
-
* // Create an L-shaped profile
|
|
50
|
-
* const profile = await snaptrude.core.geom.profile.fromLinePoints({
|
|
51
|
-
* points: [
|
|
52
|
-
* vec3.new(0, 0, 0),
|
|
53
|
-
* vec3.new(10, 0, 0),
|
|
54
|
-
* vec3.new(10, 0, 5),
|
|
55
|
-
* vec3.new(5, 0, 5),
|
|
56
|
-
* vec3.new(5, 0, 10),
|
|
57
|
-
* vec3.new(0, 0, 10),
|
|
58
|
-
* ],
|
|
59
|
-
* })
|
|
60
|
-
* ```
|
|
61
|
-
*/
|
|
62
|
-
public abstract fromLinePoints(
|
|
63
|
-
args: PluginProfileFromLinePointsArgs
|
|
64
|
-
): PluginApiReturn<PProfile>
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
/**
|
|
68
|
-
* Arguments for {@linkcode PluginProfileApi.fromLinePoints}.
|
|
69
|
-
*
|
|
70
|
-
* | Property | Type | Description |
|
|
71
|
-
* |---|---|---|
|
|
72
|
-
* | `points` | {@linkcode PVec3}`[]` | Ordered vertices of the profile |
|
|
73
|
-
*/
|
|
74
|
-
export const PluginProfileFromLinePointsArgs = z.object({
|
|
75
|
-
points: z.array(PVec3),
|
|
76
|
-
})
|
|
77
|
-
|
|
78
|
-
export type PluginProfileFromLinePointsArgs = z.infer<typeof PluginProfileFromLinePointsArgs>
|
|
79
|
-
|
|
80
|
-
/**
|
|
81
|
-
* A closed profile composed of an ordered list of curves.
|
|
82
|
-
*
|
|
83
|
-
* Profiles are used as input to entity creation methods like
|
|
84
|
-
* {@linkcode PluginSpaceApi.createFromProfile}.
|
|
85
|
-
*
|
|
86
|
-
* | Property | Type | Description |
|
|
87
|
-
* |---|---|---|
|
|
88
|
-
* | `curves` | {@linkcode PCurve}`[]` | Ordered curves forming a closed loop |
|
|
89
|
-
*/
|
|
90
|
-
export const PProfile = z.object({
|
|
91
|
-
curves: z.array(PCurve),
|
|
92
|
-
})
|
|
93
|
-
|
|
94
|
-
export type PProfile = z.infer<typeof PProfile>
|
package/src/api/tools/copy.ts
DELETED
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import * as z from "zod"
|
|
2
|
-
import type { ComponentId } from "../../types"
|
|
3
|
-
import { PVec3 } from "../core/math/vec3"
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Copy mode for `snaptrude.tools.copy`.
|
|
7
|
-
*
|
|
8
|
-
* | Value | Description |
|
|
9
|
-
* |---|---|
|
|
10
|
-
* | `"instance"` | Create instanced copies where possible |
|
|
11
|
-
* | `"unique"` | Create independent geometry copies |
|
|
12
|
-
*/
|
|
13
|
-
export const PluginCopyMode = z.enum(["instance", "unique"])
|
|
14
|
-
|
|
15
|
-
export type PluginCopyMode = z.infer<typeof PluginCopyMode>
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* Arguments for `snaptrude.tools.copy`.
|
|
19
|
-
*
|
|
20
|
-
* Creates one or more copies for each component in `componentIds`. Copy `i` is
|
|
21
|
-
* offset by `displacement * i`, where `i` starts at `1`. Source positions are
|
|
22
|
-
* preserved. In `"instance"` mode, a unique source mesh can be replaced by an
|
|
23
|
-
* instance at the same position so the source and copied objects remain in the
|
|
24
|
-
* same instance family. The created copy stack becomes the active editor
|
|
25
|
-
* selection, matching the native paste workflow.
|
|
26
|
-
*
|
|
27
|
-
* | Property | Type | Description |
|
|
28
|
-
* |---|---|---|
|
|
29
|
-
* | `componentIds` | `string[]` | Component IDs to copy |
|
|
30
|
-
* | `displacement` | {@linkcode PVec3} | Offset applied to each copy in Babylon units |
|
|
31
|
-
* | `count` | `number` | Number of copies per component. Defaults to `1` |
|
|
32
|
-
* | `copyMode` | {@linkcode PluginCopyMode} | `"instance"` or `"unique"`. Defaults to `"instance"` |
|
|
33
|
-
*/
|
|
34
|
-
export const PluginCopyArgs = z.object({
|
|
35
|
-
componentIds: z.array(z.string()).min(1),
|
|
36
|
-
displacement: PVec3,
|
|
37
|
-
count: z.number().int().positive().optional(),
|
|
38
|
-
copyMode: PluginCopyMode.optional(),
|
|
39
|
-
})
|
|
40
|
-
|
|
41
|
-
export type PluginCopyArgs = z.infer<typeof PluginCopyArgs>
|
|
42
|
-
|
|
43
|
-
/**
|
|
44
|
-
* Result of `snaptrude.tools.copy`.
|
|
45
|
-
*
|
|
46
|
-
* Returned IDs are Snaptrude component IDs for the newly created copies, not
|
|
47
|
-
* Babylon mesh IDs.
|
|
48
|
-
*/
|
|
49
|
-
export const PluginCopyResult = z.object({
|
|
50
|
-
copiedIds: z.array(z.string()),
|
|
51
|
-
})
|
|
52
|
-
|
|
53
|
-
export type PluginCopyResult = {
|
|
54
|
-
copiedIds: ComponentId[]
|
|
55
|
-
}
|
package/src/api/tools/index.ts
DELETED
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { PluginMaterialApi } from "./material"
|
|
2
|
-
import { PluginSelectionApi } from "./selection"
|
|
3
|
-
import { PluginTransformApi } from "./transform"
|
|
4
|
-
import type { PluginApiReturn } from "../../types"
|
|
5
|
-
import type { PluginCopyArgs, PluginCopyResult } from "./copy"
|
|
6
|
-
import type { PluginOffsetArgs, PluginOffsetResult } from "./offset"
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Snaptrude editor tools for querying and manipulating scene components.
|
|
10
|
-
*
|
|
11
|
-
* - {@linkcode PluginToolsApi.selection} — Query the current user selection
|
|
12
|
-
* - {@linkcode PluginToolsApi.transform} — Move and rotate components
|
|
13
|
-
* - {@linkcode PluginToolsApi.copy} — Copy components
|
|
14
|
-
* - {@linkcode PluginToolsApi.offset} — Offset or split component profiles
|
|
15
|
-
*/
|
|
16
|
-
export abstract class PluginToolsApi {
|
|
17
|
-
/** Query the current selection. See {@linkcode PluginSelectionApi}. */
|
|
18
|
-
public abstract selection: PluginSelectionApi
|
|
19
|
-
/** Move and rotate components. See {@linkcode PluginTransformApi}. */
|
|
20
|
-
public abstract transform: PluginTransformApi
|
|
21
|
-
/** Apply materials to the current user selection in the Snaptrude editor or passed component ids if any. See {@linkcode PluginMaterialApi}. */
|
|
22
|
-
public abstract material: PluginMaterialApi
|
|
23
|
-
|
|
24
|
-
/** Copy components by ID. See {@linkcode PluginCopyArgs}. */
|
|
25
|
-
public abstract copy(args: PluginCopyArgs): PluginApiReturn<PluginCopyResult>
|
|
26
|
-
|
|
27
|
-
/** Offset or split a component profile. See {@linkcode PluginOffsetArgs}. */
|
|
28
|
-
public abstract offset(
|
|
29
|
-
args: PluginOffsetArgs,
|
|
30
|
-
): PluginApiReturn<PluginOffsetResult>
|
|
31
|
-
|
|
32
|
-
constructor() {}
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
export * from "./copy"
|
|
36
|
-
export * from "./offset"
|
|
37
|
-
export * from "./selection"
|
|
38
|
-
export * from "./transform"
|
|
39
|
-
export * from "./material"
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import * as z from "zod"
|
|
2
|
-
import { PluginApiReturn } from "../../types"
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Apply materials to the current user selection in the Snaptrude editor or passed component ids if any.
|
|
6
|
-
*
|
|
7
|
-
* Accessed via `snaptrude.tools.material`.
|
|
8
|
-
*/
|
|
9
|
-
export abstract class PluginMaterialApi {
|
|
10
|
-
constructor() {}
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* Apply materials to the current user selection in the Snaptrude editor or passed component ids if any.
|
|
14
|
-
*
|
|
15
|
-
* @param args - An object containing:
|
|
16
|
-
* - {@linkcode PluginMaterialArgs.materialName args.materialName} — Material to apply
|
|
17
|
-
* - {@linkcode PluginMaterialArgs.componentIds args.componentIds} — Array of component
|
|
18
|
-
* ID strings to apply materials to if provided, if not provided, the current user selection will be used
|
|
19
|
-
*/
|
|
20
|
-
public abstract apply({
|
|
21
|
-
materialName,
|
|
22
|
-
componentIds,
|
|
23
|
-
}: PluginMaterialArgs): PluginApiReturn<void>
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
enum DEFAULT_MATERIALS {
|
|
27
|
-
GLASS = 'glass',
|
|
28
|
-
WOOD = 'wood',
|
|
29
|
-
METAL = 'metal',
|
|
30
|
-
STONE = 'stone',
|
|
31
|
-
TILES = 'tiles',
|
|
32
|
-
CONCRETE = 'concrete',
|
|
33
|
-
BRICK = 'brick',
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* Arguments for {@linkcode PluginMaterialApi.apply}.
|
|
38
|
-
*
|
|
39
|
-
* | Property | Type | Description |
|
|
40
|
-
* |---|---|---|
|
|
41
|
-
* | `materialName` | `DEFAULT_MATERIALS` | Material to apply |
|
|
42
|
-
* | `componentIds` | `string[]` | Component IDs to apply materials to if provided |
|
|
43
|
-
*/
|
|
44
|
-
export const PluginMaterialArgs = z.object({
|
|
45
|
-
materialName: z.enum(Object.values(DEFAULT_MATERIALS)),
|
|
46
|
-
componentIds: z.array(z.string()),
|
|
47
|
-
})
|
|
48
|
-
|
|
49
|
-
export type PluginMaterialArgs = z.infer<typeof PluginMaterialArgs>
|
package/src/api/tools/offset.ts
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import * as z from "zod"
|
|
2
|
-
import type { ComponentId } from "../../types"
|
|
3
|
-
import { PVec3 } from "../core/math/vec3"
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Arguments for `snaptrude.tools.offset`.
|
|
7
|
-
*
|
|
8
|
-
* Runs Snaptrude's offset/split operation on the top profile of a scene
|
|
9
|
-
* component. A positive distance offsets outward from the selected profile;
|
|
10
|
-
* a negative distance offsets inward. If `profilePickPoint` is omitted, the
|
|
11
|
-
* outer top profile is used. If `profilePickPoint` is provided, the nearest top
|
|
12
|
-
* contour profile to that point is used, matching the interactive offset tool's
|
|
13
|
-
* pick behavior.
|
|
14
|
-
*
|
|
15
|
-
* | Property | Type | Description |
|
|
16
|
-
* |---|---|---|
|
|
17
|
-
* | `componentId` | `string` | Component ID to offset |
|
|
18
|
-
* | `distance` | `number` | Signed offset distance in Snaptrude units |
|
|
19
|
-
* | `profilePickPoint` | {@linkcode PVec3} | Optional point used to choose a top contour profile |
|
|
20
|
-
*/
|
|
21
|
-
export const PluginOffsetArgs = z.object({
|
|
22
|
-
componentId: z.string().min(1),
|
|
23
|
-
distance: z.number(),
|
|
24
|
-
profilePickPoint: PVec3.optional(),
|
|
25
|
-
})
|
|
26
|
-
|
|
27
|
-
export type PluginOffsetArgs = z.infer<typeof PluginOffsetArgs>
|
|
28
|
-
|
|
29
|
-
/**
|
|
30
|
-
* Result of `snaptrude.tools.offset`.
|
|
31
|
-
*
|
|
32
|
-
* `createdIds` are the components created by the offset operation. `deletedIds`
|
|
33
|
-
* are components removed by split-style offsets.
|
|
34
|
-
*/
|
|
35
|
-
export const PluginOffsetResult = z.object({
|
|
36
|
-
createdIds: z.array(z.string()),
|
|
37
|
-
deletedIds: z.array(z.string()),
|
|
38
|
-
})
|
|
39
|
-
|
|
40
|
-
export type PluginOffsetResult = {
|
|
41
|
-
createdIds: ComponentId[]
|
|
42
|
-
deletedIds: ComponentId[]
|
|
43
|
-
}
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import * as z from "zod"
|
|
2
|
-
import { PluginApiReturn } from "../../types"
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Query the current user selection in the Snaptrude editor.
|
|
6
|
-
*
|
|
7
|
-
* Accessed via `snaptrude.tools.selection`.
|
|
8
|
-
*/
|
|
9
|
-
export abstract class PluginSelectionApi {
|
|
10
|
-
constructor() {}
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* Get the IDs of all currently selected components.
|
|
14
|
-
*
|
|
15
|
-
* Returns the component IDs from the editor's active selection stack.
|
|
16
|
-
* If nothing is selected, returns an empty array.
|
|
17
|
-
*
|
|
18
|
-
* The returned IDs can be used with {@linkcode PluginTransformApi.move},
|
|
19
|
-
* {@linkcode PluginTransformApi.rotate}, or entity query methods like
|
|
20
|
-
* {@linkcode PluginSpaceApi.get}.
|
|
21
|
-
*
|
|
22
|
-
* @returns A {@linkcode PluginSelectionGetResult} with a `selected` array
|
|
23
|
-
* of component ID strings
|
|
24
|
-
*
|
|
25
|
-
* # Example
|
|
26
|
-
* ```ts
|
|
27
|
-
* const { selected } = await snaptrude.tools.selection.get()
|
|
28
|
-
* if (selected.length > 0) {
|
|
29
|
-
* // Move selected components 5 units along X
|
|
30
|
-
* await snaptrude.tools.transform.move({
|
|
31
|
-
* componentIds: selected,
|
|
32
|
-
* displacement: snaptrude.core.math.vec3.new(5, 0, 0),
|
|
33
|
-
* })
|
|
34
|
-
* }
|
|
35
|
-
* ```
|
|
36
|
-
*/
|
|
37
|
-
public abstract get(): PluginApiReturn<PluginSelectionGetResult>
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
* Result of {@linkcode PluginSelectionApi.get}.
|
|
42
|
-
*
|
|
43
|
-
* | Property | Type | Description |
|
|
44
|
-
* |---|---|---|
|
|
45
|
-
* | `selected` | `string[]` | Component IDs of the current selection |
|
|
46
|
-
*/
|
|
47
|
-
export const PluginSelectionGetResult = z.object({
|
|
48
|
-
selected: z.array(z.string()),
|
|
49
|
-
})
|
|
50
|
-
|
|
51
|
-
export type PluginSelectionGetResult = z.infer<typeof PluginSelectionGetResult>
|
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
import * as z from "zod"
|
|
2
|
-
import { PluginApiReturn } from "../../types"
|
|
3
|
-
import { PVec3 } from "../core/math/vec3"
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Transform operations — move and rotate scene components.
|
|
7
|
-
*
|
|
8
|
-
* All transform methods accept an array of component IDs and apply the
|
|
9
|
-
* transformation to each. Operations are recorded in Snaptrude's
|
|
10
|
-
* command system for undo/redo support.
|
|
11
|
-
*
|
|
12
|
-
* Accessed via `snaptrude.tools.transform`.
|
|
13
|
-
*/
|
|
14
|
-
export abstract class PluginTransformApi {
|
|
15
|
-
constructor() {}
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* Translate components by a displacement vector.
|
|
19
|
-
*
|
|
20
|
-
* Each component's position is offset by the given
|
|
21
|
-
* {@linkcode PluginMoveArgs.displacement displacement} vector.
|
|
22
|
-
* This operation is undoable.
|
|
23
|
-
*
|
|
24
|
-
* @param args - An object containing:
|
|
25
|
-
* - {@linkcode PluginMoveArgs.componentIds args.componentIds} — Array of component
|
|
26
|
-
* ID strings to move
|
|
27
|
-
* - {@linkcode PluginMoveArgs.displacement args.displacement} — Translation vector
|
|
28
|
-
* as a {@linkcode PVec3} in Babylon units
|
|
29
|
-
* @throws If any component ID is not found in the scene
|
|
30
|
-
*
|
|
31
|
-
* # Example
|
|
32
|
-
* ```ts
|
|
33
|
-
* const { vec3 } = snaptrude.core.math
|
|
34
|
-
*
|
|
35
|
-
* // Move a space 10 units along the X axis
|
|
36
|
-
* await snaptrude.tools.transform.move({
|
|
37
|
-
* componentIds: ["some-space-id"],
|
|
38
|
-
* displacement: vec3.new(10, 0, 0),
|
|
39
|
-
* })
|
|
40
|
-
* ```
|
|
41
|
-
*/
|
|
42
|
-
public abstract move({
|
|
43
|
-
componentIds,
|
|
44
|
-
displacement,
|
|
45
|
-
}: PluginMoveArgs): PluginApiReturn<void>
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* Rotate components around an axis through a pivot point.
|
|
49
|
-
*
|
|
50
|
-
* Each component is rotated by {@linkcode PluginRotateArgs.angle angle}
|
|
51
|
-
* radians around the {@linkcode PluginRotateArgs.axis axis} vector,
|
|
52
|
-
* pivoting about the {@linkcode PluginRotateArgs.pivot pivot} point.
|
|
53
|
-
* This operation is undoable.
|
|
54
|
-
*
|
|
55
|
-
* @param args - An object containing:
|
|
56
|
-
* - {@linkcode PluginRotateArgs.componentIds args.componentIds} — Array of component
|
|
57
|
-
* ID strings to rotate
|
|
58
|
-
* - {@linkcode PluginRotateArgs.angle args.angle} — Rotation angle in **radians**
|
|
59
|
-
* - {@linkcode PluginRotateArgs.axis args.axis} — Rotation axis as a {@linkcode PVec3}
|
|
60
|
-
* - {@linkcode PluginRotateArgs.pivot args.pivot} — Pivot point as a {@linkcode PVec3}
|
|
61
|
-
* in Babylon units
|
|
62
|
-
* @throws If any component ID is not found in the scene
|
|
63
|
-
*
|
|
64
|
-
* # Example
|
|
65
|
-
* ```ts
|
|
66
|
-
* const { vec3 } = snaptrude.core.math
|
|
67
|
-
*
|
|
68
|
-
* // Rotate a space 45° around the Y axis at the origin
|
|
69
|
-
* await snaptrude.tools.transform.rotate({
|
|
70
|
-
* componentIds: ["some-space-id"],
|
|
71
|
-
* angle: Math.PI / 4,
|
|
72
|
-
* axis: vec3.new(0, 1, 0),
|
|
73
|
-
* pivot: vec3.new(0, 0, 0),
|
|
74
|
-
* })
|
|
75
|
-
* ```
|
|
76
|
-
*/
|
|
77
|
-
public abstract rotate({
|
|
78
|
-
componentIds,
|
|
79
|
-
angle,
|
|
80
|
-
axis,
|
|
81
|
-
pivot,
|
|
82
|
-
}: PluginRotateArgs): PluginApiReturn<void>
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
/**
|
|
86
|
-
* Arguments for {@linkcode PluginTransformApi.move}.
|
|
87
|
-
*
|
|
88
|
-
* | Property | Type | Description |
|
|
89
|
-
* |---|---|---|
|
|
90
|
-
* | `componentIds` | `string[]` | Component IDs to move |
|
|
91
|
-
* | `displacement` | {@linkcode PVec3} | Translation vector in Babylon units |
|
|
92
|
-
*/
|
|
93
|
-
export const PluginMoveArgs = z.object({
|
|
94
|
-
componentIds: z.array(z.string()),
|
|
95
|
-
displacement: PVec3,
|
|
96
|
-
})
|
|
97
|
-
|
|
98
|
-
export type PluginMoveArgs = z.infer<typeof PluginMoveArgs>
|
|
99
|
-
|
|
100
|
-
/**
|
|
101
|
-
* Arguments for {@linkcode PluginTransformApi.rotate}.
|
|
102
|
-
*
|
|
103
|
-
* | Property | Type | Description |
|
|
104
|
-
* |---|---|---|
|
|
105
|
-
* | `componentIds` | `string[]` | Component IDs to rotate |
|
|
106
|
-
* | `angle` | `number` | Rotation angle in radians |
|
|
107
|
-
* | `axis` | {@linkcode PVec3} | Rotation axis direction |
|
|
108
|
-
* | `pivot` | {@linkcode PVec3} | Pivot point in Babylon units |
|
|
109
|
-
*/
|
|
110
|
-
export const PluginRotateArgs = z.object({
|
|
111
|
-
componentIds: z.array(z.string()),
|
|
112
|
-
angle: z.number(),
|
|
113
|
-
axis: PVec3,
|
|
114
|
-
pivot: PVec3,
|
|
115
|
-
})
|
|
116
|
-
|
|
117
|
-
export type PluginRotateArgs = z.infer<typeof PluginRotateArgs>
|
package/src/api/units/index.ts
DELETED
|
@@ -1,163 +0,0 @@
|
|
|
1
|
-
import * as z from "zod"
|
|
2
|
-
import { PluginApiReturn } from "../../types"
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Unit conversion between real-world units and Snaptrude's internal
|
|
6
|
-
* (Babylon) coordinate system.
|
|
7
|
-
*
|
|
8
|
-
* Snaptrude uses an internal unit system (Babylon units) for all
|
|
9
|
-
* coordinates and dimensions. Use these methods to convert between
|
|
10
|
-
* real-world measurements and Babylon units.
|
|
11
|
-
*
|
|
12
|
-
* Accessed via `snaptrude.units`.
|
|
13
|
-
*/
|
|
14
|
-
export abstract class PluginUnitsApi {
|
|
15
|
-
constructor() {}
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* Convert a value from a real-world unit to Snaptrude's internal (Babylon) units.
|
|
19
|
-
*
|
|
20
|
-
* Use this when you have a measurement in real-world units (e.g. meters, feet)
|
|
21
|
-
* and need to convert it to the coordinate system used by Snaptrude internally.
|
|
22
|
-
*
|
|
23
|
-
* @param args - An object containing:
|
|
24
|
-
* - {@linkcode PluginUnitsConvertFromArgs.unit args.unit} — The source unit
|
|
25
|
-
* to convert from. See {@linkcode PUnitType} for supported values.
|
|
26
|
-
* - {@linkcode PluginUnitsConvertFromArgs.value args.value} — The numeric
|
|
27
|
-
* value in the source unit
|
|
28
|
-
* - {@linkcode PluginUnitsConvertFromArgs.degree args.degree} — (Optional)
|
|
29
|
-
* Degree of the unit: 1 for length, 2 for area, 3 for volume. Defaults to 1
|
|
30
|
-
* @returns A {@linkcode PluginUnitsConvertFromResult} containing the converted
|
|
31
|
-
* `value` in Babylon units
|
|
32
|
-
*
|
|
33
|
-
* # Example
|
|
34
|
-
* ```ts
|
|
35
|
-
* // Convert 5 meters to Babylon units for use in API calls
|
|
36
|
-
* const result = await snaptrude.units.convertFrom({ unit: "meters", value: 5 })
|
|
37
|
-
* const { spaceId } = await snaptrude.entity.space.createRectangular({
|
|
38
|
-
* position: snaptrude.core.math.vec3.new(0, 0, 0),
|
|
39
|
-
* dimensions: { width: result.value, height: result.value, depth: result.value },
|
|
40
|
-
* })
|
|
41
|
-
* ```
|
|
42
|
-
*/
|
|
43
|
-
public abstract convertFrom(
|
|
44
|
-
args: PluginUnitsConvertFromArgs,
|
|
45
|
-
): PluginApiReturn<PluginUnitsConvertFromResult>
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* Convert a value from Snaptrude's internal (Babylon) units to a real-world unit.
|
|
49
|
-
*
|
|
50
|
-
* Use this when you have a value in Snaptrude's internal coordinate system
|
|
51
|
-
* and need to express it in real-world units (e.g. meters, feet).
|
|
52
|
-
*
|
|
53
|
-
* @param args - An object containing:
|
|
54
|
-
* - {@linkcode PluginUnitsConvertToArgs.unit args.unit} — The target unit
|
|
55
|
-
* to convert to. See {@linkcode PUnitType} for supported values.
|
|
56
|
-
* - {@linkcode PluginUnitsConvertToArgs.value args.value} — The numeric
|
|
57
|
-
* value in Babylon units
|
|
58
|
-
* - {@linkcode PluginUnitsConvertToArgs.degree args.degree} — (Optional)
|
|
59
|
-
* Degree of the unit: 1 for length, 2 for area, 3 for volume. Defaults to 1
|
|
60
|
-
* @returns A {@linkcode PluginUnitsConvertToResult} containing the converted
|
|
61
|
-
* `value` in the target unit
|
|
62
|
-
*
|
|
63
|
-
* # Example
|
|
64
|
-
* ```ts
|
|
65
|
-
* // Get a space's area in square meters
|
|
66
|
-
* const info = await snaptrude.entity.space.get({
|
|
67
|
-
* spaceId: "some-id",
|
|
68
|
-
* properties: ["area"],
|
|
69
|
-
* })
|
|
70
|
-
* const areaInMeters = await snaptrude.units.convertTo({
|
|
71
|
-
* unit: "meters",
|
|
72
|
-
* value: info.area!,
|
|
73
|
-
* degree: 2,
|
|
74
|
-
* })
|
|
75
|
-
* ```
|
|
76
|
-
*/
|
|
77
|
-
public abstract convertTo(
|
|
78
|
-
args: PluginUnitsConvertToArgs,
|
|
79
|
-
): PluginApiReturn<PluginUnitsConvertToResult>
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
/**
|
|
83
|
-
* Supported unit types for conversion.
|
|
84
|
-
*
|
|
85
|
-
* - `meters` — Metric meters
|
|
86
|
-
* - `feet-inches` — Imperial feet (1 foot = 12 inches)
|
|
87
|
-
* - `inches` — Imperial inches
|
|
88
|
-
* - `centimeters` — Metric centimeters
|
|
89
|
-
* - `millimeters` — Metric millimeters
|
|
90
|
-
* - `kilometers` — Metric kilometers
|
|
91
|
-
* - `miles` — Imperial miles
|
|
92
|
-
*/
|
|
93
|
-
export const PUnitType = z.enum([
|
|
94
|
-
"meters",
|
|
95
|
-
"feet-inches",
|
|
96
|
-
"inches",
|
|
97
|
-
"centimeters",
|
|
98
|
-
"millimeters",
|
|
99
|
-
"kilometers",
|
|
100
|
-
"miles",
|
|
101
|
-
])
|
|
102
|
-
|
|
103
|
-
export type PUnitType = z.infer<typeof PUnitType>
|
|
104
|
-
|
|
105
|
-
/**
|
|
106
|
-
* Arguments for {@linkcode PluginUnitsApi.convertFrom}.
|
|
107
|
-
*
|
|
108
|
-
* | Property | Type | Description |
|
|
109
|
-
* |---|---|---|
|
|
110
|
-
* | `unit` | {@linkcode PUnitType} | Source real-world unit |
|
|
111
|
-
* | `value` | `number` | Numeric value in the source unit |
|
|
112
|
-
* | `degree` | `1 \| 2 \| 3` | (Optional) Degree of the unit (e.g. 1 for length, 2 for area, 3 for volume). Defaults to 1 |
|
|
113
|
-
*/
|
|
114
|
-
export const PluginUnitsConvertFromArgs = z.object({
|
|
115
|
-
unit: PUnitType,
|
|
116
|
-
value: z.number(),
|
|
117
|
-
degree: z.number().int().min(1).max(3).optional(),
|
|
118
|
-
})
|
|
119
|
-
|
|
120
|
-
export type PluginUnitsConvertFromArgs = z.infer<typeof PluginUnitsConvertFromArgs>
|
|
121
|
-
|
|
122
|
-
/**
|
|
123
|
-
* Result of {@linkcode PluginUnitsApi.convertFrom}.
|
|
124
|
-
*
|
|
125
|
-
* | Property | Type | Description |
|
|
126
|
-
* |---|---|---|
|
|
127
|
-
* | `value` | `number` | The converted value in Babylon units |
|
|
128
|
-
*/
|
|
129
|
-
export const PluginUnitsConvertFromResult = z.object({
|
|
130
|
-
value: z.number(),
|
|
131
|
-
})
|
|
132
|
-
|
|
133
|
-
export type PluginUnitsConvertFromResult = z.infer<typeof PluginUnitsConvertFromResult>
|
|
134
|
-
|
|
135
|
-
/**
|
|
136
|
-
* Arguments for {@linkcode PluginUnitsApi.convertTo}.
|
|
137
|
-
*
|
|
138
|
-
* | Property | Type | Description |
|
|
139
|
-
* |---|---|---|
|
|
140
|
-
* | `unit` | {@linkcode PUnitType} | Target real-world unit |
|
|
141
|
-
* | `value` | `number` | Numeric value in Babylon units |
|
|
142
|
-
* | `degree` | `1 \| 2 \| 3` | (Optional) Degree of the unit (e.g. 1 for length, 2 for area, 3 for volume). Defaults to 1 |
|
|
143
|
-
*/
|
|
144
|
-
export const PluginUnitsConvertToArgs = z.object({
|
|
145
|
-
unit: PUnitType,
|
|
146
|
-
value: z.number(),
|
|
147
|
-
degree: z.number().int().min(1).max(3).optional(),
|
|
148
|
-
})
|
|
149
|
-
|
|
150
|
-
export type PluginUnitsConvertToArgs = z.infer<typeof PluginUnitsConvertToArgs>
|
|
151
|
-
|
|
152
|
-
/**
|
|
153
|
-
* Result of {@linkcode PluginUnitsApi.convertTo}.
|
|
154
|
-
*
|
|
155
|
-
* | Property | Type | Description |
|
|
156
|
-
* |---|---|---|
|
|
157
|
-
* | `value` | `number` | The converted value in the target unit |
|
|
158
|
-
*/
|
|
159
|
-
export const PluginUnitsConvertToResult = z.object({
|
|
160
|
-
value: z.number(),
|
|
161
|
-
})
|
|
162
|
-
|
|
163
|
-
export type PluginUnitsConvertToResult = z.infer<typeof PluginUnitsConvertToResult>
|