@snaptrude/plugin-core 0.9.0 → 0.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +19 -0
- package/api-manifest.json +312 -0
- package/dist/api/core/io/terrain/index.d.ts +132 -0
- package/dist/api/core/io/terrain/index.d.ts.map +1 -1
- package/dist/api/presentation/annotate.d.ts +23 -4
- package/dist/api/presentation/annotate.d.ts.map +1 -1
- package/dist/api/presentation/diagrams.d.ts +64 -2
- package/dist/api/presentation/diagrams.d.ts.map +1 -1
- package/dist/api/presentation/index.d.ts +11 -1
- package/dist/api/presentation/index.d.ts.map +1 -1
- package/dist/api/presentation/placedViews.d.ts +772 -3
- package/dist/api/presentation/placedViews.d.ts.map +1 -1
- package/dist/api/presentation/shapes.d.ts +2 -2
- package/dist/api/presentation/sheets.d.ts +42 -0
- package/dist/api/presentation/sheets.d.ts.map +1 -1
- package/dist/api/presentation/slideshow.d.ts +125 -0
- package/dist/api/presentation/slideshow.d.ts.map +1 -0
- package/dist/api/presentation/tables.d.ts +81 -0
- package/dist/api/presentation/tables.d.ts.map +1 -0
- package/dist/api/program/site.d.ts +166 -2
- package/dist/api/program/site.d.ts.map +1 -1
- package/dist/api/workspace/index.d.ts +46 -1
- package/dist/api/workspace/index.d.ts.map +1 -1
- package/dist/index.cjs +829 -553
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +797 -553
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/api/core/io/terrain/index.ts +143 -0
- package/src/api/presentation/annotate.ts +27 -2
- package/src/api/presentation/diagrams.ts +67 -2
- package/src/api/presentation/index.ts +11 -1
- package/src/api/presentation/placedViews.ts +760 -3
- package/src/api/presentation/sheets.ts +54 -0
- package/src/api/presentation/slideshow.ts +134 -0
- package/src/api/presentation/tables.ts +84 -0
- package/src/api/program/site.ts +110 -2
- package/src/api/workspace/index.ts +48 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,24 @@
|
|
|
1
1
|
# @snaptrude/plugin-core
|
|
2
2
|
|
|
3
|
+
## 0.9.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Plugin API 0.9.1 — strictly additive: the terrain mesh lane and the Present-mode styling/canvas lane. No signatures changed, no behavior of existing methods changed; deployed plugins are unaffected (`versionGate` compares major.minor only).
|
|
8
|
+
- **`core.io.terrain.replaceMesh(positions, indices, units?, options?)`** — replace the site terrain surface with a caller-supplied triangle mesh. World-space flat arrays (the `getTriangulatedMeshes` frame, so read-modify-write round-trips); `units: "meters"` converts on the way in. Validated before any engine call (finiteness, index bounds, degenerate topology, scene-bound extents, **500k vertex/triangle caps** — the surface's first explicit payload ceiling); a predominantly down-facing mesh is auto-flipped with a warning. Datum, geolocation, opacity, lock state and the elevation/satellite toggles survive; the map texture is re-projected best-effort; cut/fill history resets by contract. One undo step restores the prior surface exactly (buffers, UVs, submesh layout, cut/fill data, volumes). The replacement **persists with the project**: the mesh uploads to bucket storage and reload applies it instead of the heightmap build. The optional `options` mirrors the requester's contract: `coordinateSpace`, `expectedTerrain` (session optimistic check), `expectedModelRevision` (session terrain-mesh revision, returned as `modelRevision` in the result), `baseline: "make-replacement-original"`, `preserve` opt-outs (`datum`/`satellite`/`material` have real opt-out behavior; `geolocation: false` rejects — always preserved), and `clientMutationId` (session-scoped idempotent replay). For projects without terrain, compose `core.io.import.terrain` + `replaceMesh` (a separate `createFromMesh` was deliberately not added).
|
|
9
|
+
- **`presentation.placedViews` — per-instance styling** (`getStyles` / `updateStyles` / `resetStyles` / `updateFontStyles`): the Present sidebar's full per-category styling surface — 7 line dash styles, line color, dash-length multiplier, **cut vs projection line weights in mm** (plus tree/parking weights), fills (`department`/`texture`/`monochrome`/`tag:<tagCategoryId>`), per-category opacity, category hide (cascades to labels), view-style restyles (block/rounded/bubble with radius + inset), Topography map/building sub-controls, and Text-tab typography per label type (font family incl. Google Fonts, weight, italic, px size, visible label types). Writes are host-validated (typed VALIDATION with the supported-setting list), land as **one undo step per call**, re-render immediately, and fan out across an auto-diagram sheet's set. `getStyles` returns fully-resolved values plus each category's supported setting ids.
|
|
10
|
+
- **`presentation.placedViews` — labels** (`listLabels` / `moveLabel` / `setLabelHidden`): a placed view's generated labels (space names, departments, areas, dimensions) as addressable shapes — read text/category/position, reposition them, hide/show individually (independent of category-level hides).
|
|
11
|
+
- **`presentation.placedViews` — generic canvas shapes** (`listShapes` / `getShape` / `moveShape` / `resizeShape` / `deleteShapes` / `setOpacity` / `setMask`): every top-level Present-canvas shape — AI-generated outputs, placed diagram images, plugin shapes, annotations — addressable by id with an `origin` classification. Previously `aiInspiration.generate` and `diagrams.place` returned shape ids nothing could act on. `deleteShapes` is atomic (any rejected id deletes nothing), protects sheets (use `sheets.delete`) and user-drawn annotations, and closes the placed-view no-delete gap. `setOpacity` is the whole-shape slider; `setMask` toggles context-building masking on views.
|
|
12
|
+
- **`presentation.sheets.setMargin(sheetId, margin)`** — set a sheet's print margin to one of the canonical unit-agnostic presets `0 | 0.25 | 0.5 | 0.75 | 1` (displayed None / 1/4″ / 1/2″ / 3/4″ / 1″ on imperial projects, None / 5mm / 10mm / 15mm / 20mm on metric) — the sheet header's margin dropdown; one undo step. Sheet reads (`list`/`get`) now report `margin` (`null` when absent/unrecognized).
|
|
13
|
+
- **`presentation.placedViews.setRotation(shapeId, rotation)`** — set a placed view's **absolute** rotation in radians (tldraw convention) about its bounds center (the UI rotation handle's pivot); one undo step. Angles are canonicalized into `[0, 2π)`, so the round-trip with the record's `rotation` read is exact only in that range (`setRotation(-0.1)` reads back `2π − 0.1`). **3D placed views only** — 2D/site-plan views cannot rotate (the canvas reverts any rotation applied to them) and are refused with a typed `PRECONDITION_FAILED`. Joins the absolute-setter family (`setScale`/`setCrop`/`setOpacity`/`setMask`).
|
|
14
|
+
- **`presentation.placedViews.rotateShape(shapeId, rotation)`** — the same absolute center-pivot rotation for any top-level Present-canvas shape (AI outputs, diagram images, plugin shapes, annotations — placed views too); targets and refusals mirror `moveShape`. Same `[0, 2π)` canonicalization (exact round-trip only in that range), and a placed view passed here falls under the same 3D-only rule — 2D/site-plan views refuse with a typed `PRECONDITION_FAILED`.
|
|
15
|
+
- **`presentation.tables.place(sheetId, { rows }, options?)`** — new `tables` namespace: place plain string rows as a table shape on a sheet (the same shape the Present canvas creates when a Program-mode / Google Sheets / Excel table is pasted). Rows may be ragged, capped at 10000 cells total; `options.position` is sheet-local like `annotate.*` (default: the paste flow's viewport-center auto-placement); returns the created shape as a canvas-shape record; one undo step.
|
|
16
|
+
- **`presentation.slideshow`** (`start` / `stop` / `getState`) — new namespace: run the Present-mode slideshow programmatically. The slideshow plays **all** sheets in order; `start` options only pick the opening slide (`startIndex` wins over a single-entry `sheetIds`, clamped into range). Browsers grant fullscreen only on a user gesture, so a plugin-triggered `start` typically runs **non-fullscreen** (the rejection is caught). `start`/`stop` are write-gated; `getState` is a never-throw read (`running` + current `index`, `null` when not running). No `next`/`prev`/`goTo` — slide navigation stays with the user.
|
|
17
|
+
- **`workspace.openPresentMode()` / `closePresentMode()`** — open/close the Present-mode documentation editor. `openPresentMode` resolves only once the Present canvas has mounted (up to ~15s, then a typed `PRECONDITION_FAILED`), so follow-up `presentation.*` calls find Present mode open; both are idempotent and **write-gated** (a mode switch under the user's feet is approval-controlled by design). Overlaps `core.mode.set("present")`/`set("design")` but adds the mount-await + idempotency contract.
|
|
18
|
+
- **`presentation.diagrams.generateSite(options?)`** — run the site-diagram auto-generation (location / streetview / climate sheets from the map terrain) and return the created `sheetIds`. `options.types` selects a subset (default all three); generation is tracked per-proposal — already-generated types are **skipped, not duplicated** (mount-time-flow semantics; existing site-diagram sheets are never replaced), so `sheetIds` can be empty. Requires Present mode and a map terrain.
|
|
19
|
+
- **`presentation.annotate.text` typography** — the existing text args gain optional `fontFamily` (system family or any Google Font, loaded automatically — the Present text panel's loader), `fontWeight` (numeric string like `"400"`/`"700"`, `-italic` suffix allowed; unavailable weights fall back to regular), and `fontSizePx` (exact pixel size overriding the `size` preset — `size` alone keeps working). Existing calls are unaffected.
|
|
20
|
+
- **`program.site.listEdges()`** — read each site parcel's boundary edges with their **front / side / rear** classification: the exact resolution the buildable-envelope setback pills show on canvas (user per-edge overrides win over the tangent heuristic; `roleSource` says which applied), so a plugin picks up the user's edge tagging without asking them to set it up again. Per edge: canonical `edgeIndex` (the envelope `edgeOverrides` index space), endpoints and length in **world meters** (`lengthUnit: "m"` — unlike `listPolygons`' Snaptrude-unit footprints), and the **effective base setback** (per-edge exception, else the role value; `null` for parcels with no zoning envelope — those still classify by heuristic). Entries also report the linked `buildableEnvelopeId` and whether stale index-misaligned overrides were dropped. Never throws; `"street"` resolves to `front`.
|
|
21
|
+
|
|
3
22
|
## 0.9.0
|
|
4
23
|
|
|
5
24
|
### Minor Changes
|
package/api-manifest.json
CHANGED
|
@@ -2750,6 +2750,19 @@
|
|
|
2750
2750
|
"argsType": null,
|
|
2751
2751
|
"resultType": "boolean | null"
|
|
2752
2752
|
},
|
|
2753
|
+
{
|
|
2754
|
+
"path": "core.io.terrain.replaceMesh",
|
|
2755
|
+
"namespace": "core.io.terrain",
|
|
2756
|
+
"summary": "Replace the terrain surface with a caller-supplied triangle mesh. Undoable (one step), and the replacement persists with the project.",
|
|
2757
|
+
"examplePrompts": [
|
|
2758
|
+
"Replace the terrain with this surveyed mesh",
|
|
2759
|
+
"Flatten a building pad into the site surface",
|
|
2760
|
+
"Load a custom DEM surface onto the terrain",
|
|
2761
|
+
"Regrade the terrain from these points\n\n# Example\n```ts\n// Projects with no terrain yet: import first, then replace.\nif (!(await snaptrude.core.io.terrain.exists())) {\nawait snaptrude.core.io.import.terrain(40.7128, -74.006, 300, 300)\n}\nconst result = await snaptrude.core.io.terrain.replaceMesh(\npositions, // [x0, y0, z0, x1, y1, z1, …] — world space\nindices, // [a0, b0, c0, a1, b1, c1, …]\n\"meters\",\n{\ncoordinateSpace: \"world\",\nexpectedTerrain: await snaptrude.core.io.terrain.get(),\nbaseline: \"make-replacement-original\",\npreserve: { datum: true, geolocation: true, satellite: true, material: true },\nclientMutationId: \"survey-2026-08-05-r1\",\n},\n)\n// result.modelRevision — pass back as expectedModelRevision on the next call\n```"
|
|
2762
|
+
],
|
|
2763
|
+
"argsType": "number[]",
|
|
2764
|
+
"resultType": "PluginTerrainReplaceMeshResult"
|
|
2765
|
+
},
|
|
2753
2766
|
{
|
|
2754
2767
|
"path": "core.io.terrain.setDatum",
|
|
2755
2768
|
"namespace": "core.io.terrain",
|
|
@@ -6332,6 +6345,18 @@
|
|
|
6332
6345
|
"argsType": null,
|
|
6333
6346
|
"resultType": "PluginPresentationDiagramsGenerateResult"
|
|
6334
6347
|
},
|
|
6348
|
+
{
|
|
6349
|
+
"path": "presentation.diagrams.generateSite",
|
|
6350
|
+
"namespace": "presentation.diagrams",
|
|
6351
|
+
"summary": "Generate the site diagrams (location, streetview, climate) for the current model, creating new layout sheets.",
|
|
6352
|
+
"examplePrompts": [
|
|
6353
|
+
"Generate the site diagrams for this project",
|
|
6354
|
+
"Create the location, streetview and climate sheets",
|
|
6355
|
+
"Add a climate diagram sheet to the presentation\n\n# Example\n```ts\nconst { sheetIds } = await snaptrude.presentation.diagrams.generateSite({\ntypes: [\"location\", \"climate\"],\n})\n```"
|
|
6356
|
+
],
|
|
6357
|
+
"argsType": "{\n types?: PluginPresentationSiteDiagramType[]\n }",
|
|
6358
|
+
"resultType": "PluginPresentationDiagramsGenerateResult"
|
|
6359
|
+
},
|
|
6335
6360
|
{
|
|
6336
6361
|
"path": "presentation.diagrams.place",
|
|
6337
6362
|
"namespace": "presentation.diagrams",
|
|
@@ -6397,6 +6422,18 @@
|
|
|
6397
6422
|
"argsType": "{ url?: string; dataUrl?: string }",
|
|
6398
6423
|
"resultType": "PluginPresentationImportResult"
|
|
6399
6424
|
},
|
|
6425
|
+
{
|
|
6426
|
+
"path": "presentation.placedViews.deleteShapes",
|
|
6427
|
+
"namespace": "presentation.placedViews",
|
|
6428
|
+
"summary": "Delete Present-canvas shapes. One undoable step for the whole batch, and the batch is atomic — if any id is rejected, nothing is deleted.",
|
|
6429
|
+
"examplePrompts": [
|
|
6430
|
+
"Delete the old AI renders from the sheet",
|
|
6431
|
+
"Remove that placed view",
|
|
6432
|
+
"Clear the diagram images I placed\n\n# Example\n```ts\nconst { deleted } = await snaptrude.presentation.placedViews.deleteShapes([\nout1.shapeId,\nout2.shapeId,\n])\n```"
|
|
6433
|
+
],
|
|
6434
|
+
"argsType": "string[]",
|
|
6435
|
+
"resultType": "PluginCanvasShapesDeleteResult"
|
|
6436
|
+
},
|
|
6400
6437
|
{
|
|
6401
6438
|
"path": "presentation.placedViews.get",
|
|
6402
6439
|
"namespace": "presentation.placedViews",
|
|
@@ -6409,6 +6446,29 @@
|
|
|
6409
6446
|
"argsType": "string",
|
|
6410
6447
|
"resultType": "PluginPlacedView"
|
|
6411
6448
|
},
|
|
6449
|
+
{
|
|
6450
|
+
"path": "presentation.placedViews.getShape",
|
|
6451
|
+
"namespace": "presentation.placedViews",
|
|
6452
|
+
"summary": "Get one Present-canvas shape by id — works for any top-level shape (placed view, AI output, diagram image, plugin shape, annotation), unlike `get` which requires a placed view. Requires Present mode to be open.",
|
|
6453
|
+
"examplePrompts": [
|
|
6454
|
+
"Inspect the AI render I just generated",
|
|
6455
|
+
"Get the bounds of that diagram image"
|
|
6456
|
+
],
|
|
6457
|
+
"argsType": "string",
|
|
6458
|
+
"resultType": "PluginCanvasShape"
|
|
6459
|
+
},
|
|
6460
|
+
{
|
|
6461
|
+
"path": "presentation.placedViews.getStyles",
|
|
6462
|
+
"namespace": "presentation.placedViews",
|
|
6463
|
+
"summary": "Read a placed view's (or sheet's) per-category presentation styles.",
|
|
6464
|
+
"examplePrompts": [
|
|
6465
|
+
"What line weights is this placed plan using?",
|
|
6466
|
+
"Read the styling of the placed view",
|
|
6467
|
+
"Which categories can I restyle on this sheet?\n\n# Example\n```ts\nconst styles = await snaptrude.presentation.placedViews.getStyles(shapeId)\nconst space = styles.categories.find((c) => c.category === \"Space\")\nconsole.log(space?.settings.cutWidth, space?.settings.lineStyle)\n```"
|
|
6468
|
+
],
|
|
6469
|
+
"argsType": "string",
|
|
6470
|
+
"resultType": "PluginPlacedViewStylesResult"
|
|
6471
|
+
},
|
|
6412
6472
|
{
|
|
6413
6473
|
"path": "presentation.placedViews.list",
|
|
6414
6474
|
"namespace": "presentation.placedViews",
|
|
@@ -6422,6 +6482,30 @@
|
|
|
6422
6482
|
"argsType": "string",
|
|
6423
6483
|
"resultType": "PluginPresentationPlacedViewsListResult"
|
|
6424
6484
|
},
|
|
6485
|
+
{
|
|
6486
|
+
"path": "presentation.placedViews.listLabels",
|
|
6487
|
+
"namespace": "presentation.placedViews",
|
|
6488
|
+
"summary": "List a placed view's labels — the text children generated from the view's content (space names, departments, areas, dimension texts). Each label is individually addressable: it can be moved and hidden. Returns `[]` when the view has no labels. Requires Present mode to be open.",
|
|
6489
|
+
"examplePrompts": [
|
|
6490
|
+
"List the labels on this placed plan",
|
|
6491
|
+
"Where are the space labels on this view?",
|
|
6492
|
+
"Show every label with its position\n\n# Example\n```ts\nconst { labels } = await snaptrude.presentation.placedViews.listLabels(shapeId)\nfor (const l of labels) console.log(l.text, l.position, l.hidden)\n```"
|
|
6493
|
+
],
|
|
6494
|
+
"argsType": "string",
|
|
6495
|
+
"resultType": "PluginPlacedViewLabelsResult"
|
|
6496
|
+
},
|
|
6497
|
+
{
|
|
6498
|
+
"path": "presentation.placedViews.listShapes",
|
|
6499
|
+
"namespace": "presentation.placedViews",
|
|
6500
|
+
"summary": "List the top-level shapes on the Present canvas — not just placed views: AI-generated outputs, placed diagram images, plugin-created shapes, and annotations, each with an `origin` classification. Sheets (frames) are not listed — use `sheets.list`. Pass `sheetId` to list only shapes on that sheet. Returns `[]` when Present mode is closed.",
|
|
6501
|
+
"examplePrompts": [
|
|
6502
|
+
"List everything on the Present canvas",
|
|
6503
|
+
"What AI outputs are on this sheet?",
|
|
6504
|
+
"Show all the shapes with their positions\n\n# Example\n```ts\nconst { shapes } = await snaptrude.presentation.placedViews.listShapes()\nconst aiOutputs = shapes.filter((s) => s.origin === \"aiOutput\")\n```"
|
|
6505
|
+
],
|
|
6506
|
+
"argsType": "string",
|
|
6507
|
+
"resultType": "PluginCanvasShapesListResult"
|
|
6508
|
+
},
|
|
6425
6509
|
{
|
|
6426
6510
|
"path": "presentation.placedViews.move",
|
|
6427
6511
|
"namespace": "presentation.placedViews",
|
|
@@ -6434,6 +6518,64 @@
|
|
|
6434
6518
|
"argsType": "string",
|
|
6435
6519
|
"resultType": "PluginPlacedView"
|
|
6436
6520
|
},
|
|
6521
|
+
{
|
|
6522
|
+
"path": "presentation.placedViews.moveLabel",
|
|
6523
|
+
"namespace": "presentation.placedViews",
|
|
6524
|
+
"summary": "Move a label to a new position (coordinates relative to its placed view, the same space `listLabels` reports). The manual position survives style changes. Undoable. Requires Present mode to be open.",
|
|
6525
|
+
"examplePrompts": [
|
|
6526
|
+
"Move the kitchen label out of the hatched area",
|
|
6527
|
+
"Nudge this label 20 units right",
|
|
6528
|
+
"Reposition the area text"
|
|
6529
|
+
],
|
|
6530
|
+
"argsType": "string",
|
|
6531
|
+
"resultType": "PluginPlacedViewLabel"
|
|
6532
|
+
},
|
|
6533
|
+
{
|
|
6534
|
+
"path": "presentation.placedViews.moveShape",
|
|
6535
|
+
"namespace": "presentation.placedViews",
|
|
6536
|
+
"summary": "Move any Present-canvas shape (AI outputs, diagram images, plugin shapes, annotations — placed views too). Same coordinate semantics as `move`: sheet-local when on a sheet, page coordinates otherwise; pass `options.sheetId` to reparent onto a sheet. Undoable. Requires Present mode to be open.",
|
|
6537
|
+
"examplePrompts": [
|
|
6538
|
+
"Move the AI render to the top of the sheet",
|
|
6539
|
+
"Put the diagram image at 100, 200"
|
|
6540
|
+
],
|
|
6541
|
+
"argsType": "string",
|
|
6542
|
+
"resultType": "PluginCanvasShape"
|
|
6543
|
+
},
|
|
6544
|
+
{
|
|
6545
|
+
"path": "presentation.placedViews.resetStyles",
|
|
6546
|
+
"namespace": "presentation.placedViews",
|
|
6547
|
+
"summary": "Reset a placed view's styling to defaults — the sidebar's Reset button: clears every per-category override and view-style restyle, resets font styles, and un-hides labels hidden by styling. Undoable. Requires Present mode to be open.",
|
|
6548
|
+
"examplePrompts": [
|
|
6549
|
+
"Reset this view's styling",
|
|
6550
|
+
"Clear all the style overrides on the placed plan",
|
|
6551
|
+
"Put the sheet styles back to default"
|
|
6552
|
+
],
|
|
6553
|
+
"argsType": "string",
|
|
6554
|
+
"resultType": "void"
|
|
6555
|
+
},
|
|
6556
|
+
{
|
|
6557
|
+
"path": "presentation.placedViews.resizeShape",
|
|
6558
|
+
"namespace": "presentation.placedViews",
|
|
6559
|
+
"summary": "Resize any Present-canvas shape by a uniform factor about its top-left corner (aspect ratio held) — the generic counterpart of `scale`, which requires a placed view. Undoable. Requires Present mode to be open.",
|
|
6560
|
+
"examplePrompts": [
|
|
6561
|
+
"Make the AI output half its size",
|
|
6562
|
+
"Double the size of that image"
|
|
6563
|
+
],
|
|
6564
|
+
"argsType": "string",
|
|
6565
|
+
"resultType": "PluginCanvasShape"
|
|
6566
|
+
},
|
|
6567
|
+
{
|
|
6568
|
+
"path": "presentation.placedViews.rotateShape",
|
|
6569
|
+
"namespace": "presentation.placedViews",
|
|
6570
|
+
"summary": "Rotate any Present-canvas shape (AI outputs, diagram images, plugin shapes, annotations — placed views too) — the generic counterpart of `setRotation`, same target rules as `moveShape`. Same semantics: **absolute** angle in radians (tldraw convention) about the shape's bounds center, canonicalized into `[0, 2π)` (pass values in that range for an exact round-trip via `getShape`), one undo step. A placed view passed here falls under the same 3D-only rule as `setRotation`: 2D and site-plan views cannot rotate and are refused with a typed `PRECONDITION_FAILED`. Requires Present mode to be open.",
|
|
6571
|
+
"examplePrompts": [
|
|
6572
|
+
"Rotate the AI render 15 degrees",
|
|
6573
|
+
"Turn that image sideways",
|
|
6574
|
+
"Reset the diagram image's rotation"
|
|
6575
|
+
],
|
|
6576
|
+
"argsType": "string",
|
|
6577
|
+
"resultType": "PluginCanvasShape"
|
|
6578
|
+
},
|
|
6437
6579
|
{
|
|
6438
6580
|
"path": "presentation.placedViews.scale",
|
|
6439
6581
|
"namespace": "presentation.placedViews",
|
|
@@ -6458,6 +6600,51 @@
|
|
|
6458
6600
|
"argsType": "string",
|
|
6459
6601
|
"resultType": "PluginPlacedView"
|
|
6460
6602
|
},
|
|
6603
|
+
{
|
|
6604
|
+
"path": "presentation.placedViews.setLabelHidden",
|
|
6605
|
+
"namespace": "presentation.placedViews",
|
|
6606
|
+
"summary": "Hide or show a single label (independent of the category-level label visibility). Undoable. Requires Present mode to be open.",
|
|
6607
|
+
"examplePrompts": [
|
|
6608
|
+
"Hide the corridor label",
|
|
6609
|
+
"Show that label again"
|
|
6610
|
+
],
|
|
6611
|
+
"argsType": "string",
|
|
6612
|
+
"resultType": "PluginPlacedViewLabel"
|
|
6613
|
+
},
|
|
6614
|
+
{
|
|
6615
|
+
"path": "presentation.placedViews.setMask",
|
|
6616
|
+
"namespace": "presentation.placedViews",
|
|
6617
|
+
"summary": "Toggle \"mask context buildings\" on a placed view — mutes the inactive proposal buildings in the view (the sidebar checkbox). Views only. Undoable. Requires Present mode to be open.",
|
|
6618
|
+
"examplePrompts": [
|
|
6619
|
+
"Mask the context buildings in this view",
|
|
6620
|
+
"Show the neighboring proposals again in the placed view"
|
|
6621
|
+
],
|
|
6622
|
+
"argsType": "string",
|
|
6623
|
+
"resultType": "void"
|
|
6624
|
+
},
|
|
6625
|
+
{
|
|
6626
|
+
"path": "presentation.placedViews.setOpacity",
|
|
6627
|
+
"namespace": "presentation.placedViews",
|
|
6628
|
+
"summary": "Set a Present-canvas shape's opacity (`0` transparent .. `1` opaque) — the sidebar's whole-shape opacity slider (distinct from the per-category fill opacity in `updateStyles`). Works for any top-level shape. Undoable. Requires Present mode to be open.",
|
|
6629
|
+
"examplePrompts": [
|
|
6630
|
+
"Fade the placed view to 50%",
|
|
6631
|
+
"Make the AI render semi-transparent"
|
|
6632
|
+
],
|
|
6633
|
+
"argsType": "string",
|
|
6634
|
+
"resultType": "void"
|
|
6635
|
+
},
|
|
6636
|
+
{
|
|
6637
|
+
"path": "presentation.placedViews.setRotation",
|
|
6638
|
+
"namespace": "presentation.placedViews",
|
|
6639
|
+
"summary": "Set a placed view's rotation.",
|
|
6640
|
+
"examplePrompts": [
|
|
6641
|
+
"Rotate the placed plan 90 degrees",
|
|
6642
|
+
"Set this view's rotation to 45 degrees",
|
|
6643
|
+
"Straighten the placed view back to zero rotation\n\n# Example\n```ts\nawait snaptrude.presentation.placedViews.setRotation(shapeId, Math.PI / 2)\n```"
|
|
6644
|
+
],
|
|
6645
|
+
"argsType": "string",
|
|
6646
|
+
"resultType": "PluginPlacedView"
|
|
6647
|
+
},
|
|
6461
6648
|
{
|
|
6462
6649
|
"path": "presentation.placedViews.setScale",
|
|
6463
6650
|
"namespace": "presentation.placedViews",
|
|
@@ -6470,6 +6657,32 @@
|
|
|
6470
6657
|
"argsType": "string",
|
|
6471
6658
|
"resultType": "PluginPlacedView"
|
|
6472
6659
|
},
|
|
6660
|
+
{
|
|
6661
|
+
"path": "presentation.placedViews.updateFontStyles",
|
|
6662
|
+
"namespace": "presentation.placedViews",
|
|
6663
|
+
"summary": "Update a category's label typography on a placed view (or sheet) — the configure panel's Text tab.",
|
|
6664
|
+
"examplePrompts": [
|
|
6665
|
+
"Set the space labels to Roboto 24px bold",
|
|
6666
|
+
"Hide the area values on this plan",
|
|
6667
|
+
"Make the department labels italic\n\n# Example\n```ts\nawait snaptrude.presentation.placedViews.updateFontStyles(shapeId, \"Space\", {\nobjectLabels: { fontFamily: \"Roboto\", fontWeight: \"700\", fontSize: 24 },\nvisibleTypes: [\"objectLabels\", \"areas\"],\n})\n```"
|
|
6668
|
+
],
|
|
6669
|
+
"argsType": "string",
|
|
6670
|
+
"resultType": "void"
|
|
6671
|
+
},
|
|
6672
|
+
{
|
|
6673
|
+
"path": "presentation.placedViews.updateStyles",
|
|
6674
|
+
"namespace": "presentation.placedViews",
|
|
6675
|
+
"summary": "Update one style category on a placed view (or sheet) — the same writes the Present sidebar's per-category configure panel performs.",
|
|
6676
|
+
"examplePrompts": [
|
|
6677
|
+
"Set the Space cut line weight to 0.5 mm",
|
|
6678
|
+
"Make the Department lines dashed",
|
|
6679
|
+
"Color the plan by department",
|
|
6680
|
+
"Hide the dimension lines on this view",
|
|
6681
|
+
"Round the space corners with a 2 ft radius\n\n# Example\n```ts\nawait snaptrude.presentation.placedViews.updateStyles(shapeId, \"Space\", {\ncutWidth: 0.5,\nprojectionWidth: 0.18,\nlineStyle: \"dashed\",\ncolorMode: \"department\",\n})\n```"
|
|
6682
|
+
],
|
|
6683
|
+
"argsType": "string",
|
|
6684
|
+
"resultType": "PluginPlacedViewCategoryStyles"
|
|
6685
|
+
},
|
|
6473
6686
|
{
|
|
6474
6687
|
"path": "presentation.shapes.list",
|
|
6475
6688
|
"namespace": "presentation.shapes",
|
|
@@ -6619,6 +6832,18 @@
|
|
|
6619
6832
|
"argsType": "string",
|
|
6620
6833
|
"resultType": "PluginPresentationSheet"
|
|
6621
6834
|
},
|
|
6835
|
+
{
|
|
6836
|
+
"path": "presentation.sheets.setMargin",
|
|
6837
|
+
"namespace": "presentation.sheets",
|
|
6838
|
+
"summary": "Set a sheet's print margin.",
|
|
6839
|
+
"examplePrompts": [
|
|
6840
|
+
"Set the sheet margin to half an inch",
|
|
6841
|
+
"Remove the margins on sheet_1",
|
|
6842
|
+
"Give the cover sheet a 10mm margin\n\n# Example\n```ts\nconst sheet = await snaptrude.presentation.sheets.setMargin(\"sheet_1\", 0.5)\n```"
|
|
6843
|
+
],
|
|
6844
|
+
"argsType": "string",
|
|
6845
|
+
"resultType": "PluginPresentationSheet"
|
|
6846
|
+
},
|
|
6622
6847
|
{
|
|
6623
6848
|
"path": "presentation.sheets.setSize",
|
|
6624
6849
|
"namespace": "presentation.sheets",
|
|
@@ -6644,6 +6869,56 @@
|
|
|
6644
6869
|
"argsType": "{\n sheetId?: string\n }",
|
|
6645
6870
|
"resultType": "PluginPresentationSheetsUpdatePlacedViewResult"
|
|
6646
6871
|
},
|
|
6872
|
+
{
|
|
6873
|
+
"path": "presentation.slideshow.getState",
|
|
6874
|
+
"namespace": "presentation.slideshow",
|
|
6875
|
+
"summary": "Read the slideshow state.",
|
|
6876
|
+
"examplePrompts": [
|
|
6877
|
+
"Is the slideshow running?",
|
|
6878
|
+
"Which slide is the presentation on?",
|
|
6879
|
+
"Check the slideshow state\n\n# Example\n```ts\nconst { running, index } = await snaptrude.presentation.slideshow.getState()\n```"
|
|
6880
|
+
],
|
|
6881
|
+
"argsType": null,
|
|
6882
|
+
"resultType": "PluginPresentationSlideshowState"
|
|
6883
|
+
},
|
|
6884
|
+
{
|
|
6885
|
+
"path": "presentation.slideshow.start",
|
|
6886
|
+
"namespace": "presentation.slideshow",
|
|
6887
|
+
"summary": "Start the slideshow.",
|
|
6888
|
+
"examplePrompts": [
|
|
6889
|
+
"Start the slideshow",
|
|
6890
|
+
"Present the sheets from the beginning",
|
|
6891
|
+
"Start the slideshow on sheet 3",
|
|
6892
|
+
"Play the presentation starting at the cover sheet\n\n# Example\n```ts\nconst state = await snaptrude.presentation.slideshow.start({ startIndex: 2 })\nconsole.log(state.running, state.index) // true, 2\n```"
|
|
6893
|
+
],
|
|
6894
|
+
"argsType": "{\n sheetIds?: string[]\n startIndex?: number\n }",
|
|
6895
|
+
"resultType": "PluginPresentationSlideshowState"
|
|
6896
|
+
},
|
|
6897
|
+
{
|
|
6898
|
+
"path": "presentation.slideshow.stop",
|
|
6899
|
+
"namespace": "presentation.slideshow",
|
|
6900
|
+
"summary": "Stop the slideshow.",
|
|
6901
|
+
"examplePrompts": [
|
|
6902
|
+
"Stop the slideshow",
|
|
6903
|
+
"Exit the presentation",
|
|
6904
|
+
"Close the slideshow and go back to the sheets\n\n# Example\n```ts\nawait snaptrude.presentation.slideshow.stop()\n```"
|
|
6905
|
+
],
|
|
6906
|
+
"argsType": null,
|
|
6907
|
+
"resultType": "PluginPresentationSlideshowState"
|
|
6908
|
+
},
|
|
6909
|
+
{
|
|
6910
|
+
"path": "presentation.tables.place",
|
|
6911
|
+
"namespace": "presentation.tables",
|
|
6912
|
+
"summary": "Place a table on a sheet.",
|
|
6913
|
+
"examplePrompts": [
|
|
6914
|
+
"Put the area schedule as a table on Sheet 1",
|
|
6915
|
+
"Add a table of the room programs to the cover sheet",
|
|
6916
|
+
"Paste this data as a table on the sheet",
|
|
6917
|
+
"Place a two-column table of space names and areas\n\n# Example\n```ts\nconst shape = await snaptrude.presentation.tables.place(\"sheet_1\", {\nrows: [\n[\"Room\", \"Area\"],\n[\"Kitchen\", \"12.4 m²\"],\n[\"Living\", \"28.0 m²\"],\n],\n}, { position: { x: 40, y: 40 } })\n```"
|
|
6918
|
+
],
|
|
6919
|
+
"argsType": "string",
|
|
6920
|
+
"resultType": "PluginCanvasShape"
|
|
6921
|
+
},
|
|
6647
6922
|
{
|
|
6648
6923
|
"path": "presentation.views.capture",
|
|
6649
6924
|
"namespace": "presentation.views",
|
|
@@ -7183,6 +7458,19 @@
|
|
|
7183
7458
|
"argsType": null,
|
|
7184
7459
|
"resultType": "PluginProgramSiteWeatherResult"
|
|
7185
7460
|
},
|
|
7461
|
+
{
|
|
7462
|
+
"path": "program.site.listEdges",
|
|
7463
|
+
"namespace": "program.site",
|
|
7464
|
+
"summary": "List each site parcel's boundary edges with their front / side / rear classification — the same per-edge roles the buildable-envelope setback pills show on canvas, so a plugin can pick up the user's edge tagging without asking them to set it up again.",
|
|
7465
|
+
"examplePrompts": [
|
|
7466
|
+
"Which edge of my site is the front?",
|
|
7467
|
+
"Read the front / side / rear edges of the plot",
|
|
7468
|
+
"What setback applies to each site edge?",
|
|
7469
|
+
"Get the site edges the way the setback pills show them\n\n# Example\n```ts\nconst { sites } = await snaptrude.program.site.listEdges()\nfor (const site of sites)\nfor (const e of site.edges)\nconsole.log(e.edgeIndex, e.role, e.roleSource, e.setbackMeters)\n```"
|
|
7470
|
+
],
|
|
7471
|
+
"argsType": null,
|
|
7472
|
+
"resultType": "PluginProgramSiteListEdgesResult"
|
|
7473
|
+
},
|
|
7186
7474
|
{
|
|
7187
7475
|
"path": "program.site.listGeoPolygons",
|
|
7188
7476
|
"namespace": "program.site",
|
|
@@ -7590,6 +7878,30 @@
|
|
|
7590
7878
|
"argsType": "PluginSpreadsheetTransactionOp[]",
|
|
7591
7879
|
"resultType": "PluginProgramSpreadsheetTransactionResult"
|
|
7592
7880
|
},
|
|
7881
|
+
{
|
|
7882
|
+
"path": "workspace.closePresentMode",
|
|
7883
|
+
"namespace": "workspace",
|
|
7884
|
+
"summary": "Close Present mode and return to the modeling canvas.",
|
|
7885
|
+
"examplePrompts": [
|
|
7886
|
+
"Close present mode",
|
|
7887
|
+
"Exit the presentation editor",
|
|
7888
|
+
"Go back to the modeling canvas\n\n# Example\n```ts\nawait snaptrude.workspace.closePresentMode()\n```"
|
|
7889
|
+
],
|
|
7890
|
+
"argsType": null,
|
|
7891
|
+
"resultType": "void"
|
|
7892
|
+
},
|
|
7893
|
+
{
|
|
7894
|
+
"path": "workspace.openPresentMode",
|
|
7895
|
+
"namespace": "workspace",
|
|
7896
|
+
"summary": "Open Present mode — the documentation editor the `presentation.*` namespaces operate on.",
|
|
7897
|
+
"examplePrompts": [
|
|
7898
|
+
"Open present mode",
|
|
7899
|
+
"Switch to the presentation editor",
|
|
7900
|
+
"Open the sheets so I can lay out views\n\n# Example\n```ts\nawait snaptrude.workspace.openPresentMode()\nconst { sheets } = await snaptrude.presentation.sheets.list()\n```"
|
|
7901
|
+
],
|
|
7902
|
+
"argsType": null,
|
|
7903
|
+
"resultType": "void"
|
|
7904
|
+
},
|
|
7593
7905
|
{
|
|
7594
7906
|
"path": "workspace.projects.copy",
|
|
7595
7907
|
"namespace": "workspace.projects",
|
|
@@ -158,6 +158,68 @@ export declare abstract class PluginCoreIoTerrainApi {
|
|
|
158
158
|
* @examplePrompt Remove the satellite drape
|
|
159
159
|
*/
|
|
160
160
|
abstract disableSatellite(): PluginApiReturn<void>;
|
|
161
|
+
/**
|
|
162
|
+
* Replace the terrain surface with a caller-supplied triangle mesh. Undoable
|
|
163
|
+
* (one step), and the replacement persists with the project.
|
|
164
|
+
*
|
|
165
|
+
* `positions` is a flat `[x, y, z, …]` array in **world space** — the same
|
|
166
|
+
* frame `design.query.geometry.getTriangulatedMeshes` reads — so a
|
|
167
|
+
* read-modify-write round trip needs no conversion. `indices` is a flat
|
|
168
|
+
* triangle list into `positions` (three indices per triangle). A
|
|
169
|
+
* predominantly down-facing surface is flipped automatically (reported in
|
|
170
|
+
* `warnings`), and zero-area sliver triangles are tolerated and counted.
|
|
171
|
+
*
|
|
172
|
+
* **What survives the replacement:** the datum, geolocation, opacity, lock
|
|
173
|
+
* state, and the elevation/satellite toggles. The map/satellite texture is
|
|
174
|
+
* re-projected onto the new surface from above (best effort — alignment is
|
|
175
|
+
* approximate, reported in `warnings`). **What resets:** cut/fill history
|
|
176
|
+
* and the earthwork report — the replaced surface starts with a clean
|
|
177
|
+
* grading slate.
|
|
178
|
+
*
|
|
179
|
+
* Limits: at most 500,000 triangles and 500,000 vertices; every coordinate
|
|
180
|
+
* must be finite and within the scene bound.
|
|
181
|
+
*
|
|
182
|
+
* @param positions - Flat `[x, y, z, …]` world-space vertex positions.
|
|
183
|
+
* @param indices - Flat triangle list into `positions`.
|
|
184
|
+
* @param units - `"world"` (default): coordinates are raw internal units;
|
|
185
|
+
* `"meters"`: coordinates are metres and are converted on the way in.
|
|
186
|
+
* @param options - Optional {@linkcode PluginTerrainReplaceMeshOptions}:
|
|
187
|
+
* optimistic-concurrency expectations (`expectedTerrain`,
|
|
188
|
+
* `expectedModelRevision`), `preserve` opt-outs, idempotent replay via
|
|
189
|
+
* `clientMutationId`, and the `coordinateSpace`/`baseline` declarations.
|
|
190
|
+
* @throws if writes are disabled, there is no terrain (import one first),
|
|
191
|
+
* the terrain is **locked**, the mesh fails validation (non-finite or
|
|
192
|
+
* out-of-bound coordinates, bad indices, degenerate-only geometry, over
|
|
193
|
+
* the size caps), `expectedTerrain` does not match the live terrain, or
|
|
194
|
+
* `expectedModelRevision` is stale.
|
|
195
|
+
*
|
|
196
|
+
* @examplePrompt Replace the terrain with this surveyed mesh
|
|
197
|
+
* @examplePrompt Flatten a building pad into the site surface
|
|
198
|
+
* @examplePrompt Load a custom DEM surface onto the terrain
|
|
199
|
+
* @examplePrompt Regrade the terrain from these points
|
|
200
|
+
*
|
|
201
|
+
* # Example
|
|
202
|
+
* ```ts
|
|
203
|
+
* // Projects with no terrain yet: import first, then replace.
|
|
204
|
+
* if (!(await snaptrude.core.io.terrain.exists())) {
|
|
205
|
+
* await snaptrude.core.io.import.terrain(40.7128, -74.006, 300, 300)
|
|
206
|
+
* }
|
|
207
|
+
* const result = await snaptrude.core.io.terrain.replaceMesh(
|
|
208
|
+
* positions, // [x0, y0, z0, x1, y1, z1, …] — world space
|
|
209
|
+
* indices, // [a0, b0, c0, a1, b1, c1, …]
|
|
210
|
+
* "meters",
|
|
211
|
+
* {
|
|
212
|
+
* coordinateSpace: "world",
|
|
213
|
+
* expectedTerrain: await snaptrude.core.io.terrain.get(),
|
|
214
|
+
* baseline: "make-replacement-original",
|
|
215
|
+
* preserve: { datum: true, geolocation: true, satellite: true, material: true },
|
|
216
|
+
* clientMutationId: "survey-2026-08-05-r1",
|
|
217
|
+
* },
|
|
218
|
+
* )
|
|
219
|
+
* // result.modelRevision — pass back as expectedModelRevision on the next call
|
|
220
|
+
* ```
|
|
221
|
+
*/
|
|
222
|
+
abstract replaceMesh(positions: number[], indices: number[], units?: "world" | "meters", options?: PluginTerrainReplaceMeshOptions): PluginApiReturn<PluginTerrainReplaceMeshResult>;
|
|
161
223
|
/** Read the terrain opacity, `0`..`1`, or `null` if no terrain. */
|
|
162
224
|
abstract getOpacity(): PluginApiReturn<number | null>;
|
|
163
225
|
/**
|
|
@@ -193,6 +255,76 @@ export declare const TerrainReport: z.ZodObject<{
|
|
|
193
255
|
netVolume: z.ZodNumber;
|
|
194
256
|
}, z.core.$strip>;
|
|
195
257
|
export type TerrainReport = z.infer<typeof TerrainReport>;
|
|
258
|
+
/**
|
|
259
|
+
* Result of {@link PluginCoreIoTerrainApi.replaceMesh}.
|
|
260
|
+
*
|
|
261
|
+
* | Property | Type | Description |
|
|
262
|
+
* |---|---|---|
|
|
263
|
+
* | `terrain` | `TerrainHandle` | The terrain (unchanged singleton handle) |
|
|
264
|
+
* | `modelRevision` | `number` | Session-scoped terrain-mesh revision after this replace — pass back as `expectedModelRevision` for compare-and-swap semantics |
|
|
265
|
+
* | `vertexCount` | `number` | Vertices in the applied mesh |
|
|
266
|
+
* | `triangleCount` | `number` | Triangles in the applied mesh |
|
|
267
|
+
* | `warnings` | `string[]` | Non-fatal notes: winding flipped, sliver triangles, approximate texture re-projection |
|
|
268
|
+
*/
|
|
269
|
+
export type PluginTerrainReplaceMeshResult = {
|
|
270
|
+
terrain: TerrainHandle;
|
|
271
|
+
modelRevision: number;
|
|
272
|
+
vertexCount: number;
|
|
273
|
+
triangleCount: number;
|
|
274
|
+
warnings: string[];
|
|
275
|
+
};
|
|
276
|
+
/**
|
|
277
|
+
* Options for {@link PluginCoreIoTerrainApi.replaceMesh}.
|
|
278
|
+
*
|
|
279
|
+
* | Property | Type | Description |
|
|
280
|
+
* |---|---|---|
|
|
281
|
+
* | `coordinateSpace` | `"world"`? | Declares the input frame. `world` is the only supported space (the same frame `getTriangulatedMeshes` reads) |
|
|
282
|
+
* | `expectedTerrain` | `TerrainHandle`? | Optimistic check: throws `HANDLE_INVALID` if the live terrain is not this handle (session-scoped — handles do not survive reloads) |
|
|
283
|
+
* | `expectedModelRevision` | `number`? | Optimistic check against the session terrain-mesh revision (starts at `0`, increments per successful `replaceMesh`; the result returns the new value). Stale → `PRECONDITION_FAILED` with the current revision in `details` |
|
|
284
|
+
* | `baseline` | `"make-replacement-original"`? | Declares replacement semantics. This is the only (and default) behavior: the replacement becomes the persisted surface; the app's terrain Reset restores the original map heightmap as the escape hatch |
|
|
285
|
+
* | `preserve` | object? | Opt-outs, all defaulting `true`. `datum: false` resets the terrain transform (authored coordinates become the local frame). `satellite: false` switches the drape off after the replace. `material: false` skips texture re-projection — the whole surface takes the ground material. `geolocation: false` is rejected (`VALIDATION`): geolocation is always preserved in this version |
|
|
286
|
+
* | `clientMutationId` | `string`? | Session-scoped idempotency: a repeated call with the same id returns the original result without re-executing |
|
|
287
|
+
*/
|
|
288
|
+
export declare const PluginTerrainReplaceMeshOptions: z.ZodObject<{
|
|
289
|
+
coordinateSpace: z.ZodOptional<z.ZodLiteral<"world">>;
|
|
290
|
+
expectedTerrain: z.ZodOptional<z.ZodString>;
|
|
291
|
+
expectedModelRevision: z.ZodOptional<z.ZodNumber>;
|
|
292
|
+
baseline: z.ZodOptional<z.ZodLiteral<"make-replacement-original">>;
|
|
293
|
+
preserve: z.ZodOptional<z.ZodObject<{
|
|
294
|
+
datum: z.ZodOptional<z.ZodBoolean>;
|
|
295
|
+
geolocation: z.ZodOptional<z.ZodBoolean>;
|
|
296
|
+
satellite: z.ZodOptional<z.ZodBoolean>;
|
|
297
|
+
material: z.ZodOptional<z.ZodBoolean>;
|
|
298
|
+
}, z.core.$strict>>;
|
|
299
|
+
clientMutationId: z.ZodOptional<z.ZodString>;
|
|
300
|
+
}, z.core.$strict>;
|
|
301
|
+
export type PluginTerrainReplaceMeshOptions = z.infer<typeof PluginTerrainReplaceMeshOptions>;
|
|
302
|
+
/**
|
|
303
|
+
* Arguments for {@link PluginCoreIoTerrainApi.replaceMesh}. The caps are the
|
|
304
|
+
* plugin surface's explicit payload ceiling: 500k vertices / 500k triangles.
|
|
305
|
+
*/
|
|
306
|
+
export declare const PluginTerrainReplaceMeshArgs: z.ZodObject<{
|
|
307
|
+
positions: z.ZodArray<z.ZodNumber>;
|
|
308
|
+
indices: z.ZodArray<z.ZodNumber>;
|
|
309
|
+
units: z.ZodOptional<z.ZodEnum<{
|
|
310
|
+
meters: "meters";
|
|
311
|
+
world: "world";
|
|
312
|
+
}>>;
|
|
313
|
+
options: z.ZodOptional<z.ZodObject<{
|
|
314
|
+
coordinateSpace: z.ZodOptional<z.ZodLiteral<"world">>;
|
|
315
|
+
expectedTerrain: z.ZodOptional<z.ZodString>;
|
|
316
|
+
expectedModelRevision: z.ZodOptional<z.ZodNumber>;
|
|
317
|
+
baseline: z.ZodOptional<z.ZodLiteral<"make-replacement-original">>;
|
|
318
|
+
preserve: z.ZodOptional<z.ZodObject<{
|
|
319
|
+
datum: z.ZodOptional<z.ZodBoolean>;
|
|
320
|
+
geolocation: z.ZodOptional<z.ZodBoolean>;
|
|
321
|
+
satellite: z.ZodOptional<z.ZodBoolean>;
|
|
322
|
+
material: z.ZodOptional<z.ZodBoolean>;
|
|
323
|
+
}, z.core.$strict>>;
|
|
324
|
+
clientMutationId: z.ZodOptional<z.ZodString>;
|
|
325
|
+
}, z.core.$strict>>;
|
|
326
|
+
}, z.core.$strip>;
|
|
327
|
+
export type PluginTerrainReplaceMeshArgs = z.infer<typeof PluginTerrainReplaceMeshArgs>;
|
|
196
328
|
/** Arguments for {@link PluginCoreIoTerrainApi.setDatum}. */
|
|
197
329
|
export declare const PluginTerrainSetDatumArgs: z.ZodObject<{
|
|
198
330
|
offset: z.ZodNumber;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/api/core/io/terrain/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAA;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAEnD;;;;;;;;;;;;;;;;GAgBG;AACH,8BAAsB,sBAAsB;;IAG1C;;;;;;;;;;;;;;OAcG;aACa,MAAM,IAAI,eAAe,CAAC,OAAO,CAAC;IAElD;;;;;;;;;OASG;aACa,GAAG,IAAI,eAAe,CAAC,aAAa,GAAG,IAAI,CAAC;IAE5D;;;;;;;;;;;OAWG;aACa,QAAQ,IAAI,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC;IAE1D;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;aACa,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC;IAE/D;;;;;;;;;;OAUG;aACa,MAAM,IAAI,eAAe,CAAC,IAAI,CAAC;IAE/C;;;;;;;;;;;;;;OAcG;aACa,SAAS,IAAI,eAAe,CAAC,aAAa,GAAG,IAAI,CAAC;IAElE,0EAA0E;aAC1D,kBAAkB,IAAI,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC;IACrE;;;;;;;;OAQG;aACa,eAAe,IAAI,eAAe,CAAC,IAAI,CAAC;IACxD;;;;;;;;OAQG;aACa,gBAAgB,IAAI,eAAe,CAAC,IAAI,CAAC;IAEzD,gFAAgF;aAChE,kBAAkB,IAAI,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC;IACrE;;;;;;;;OAQG;aACa,eAAe,IAAI,eAAe,CAAC,IAAI,CAAC;IACxD;;;;;;;;OAQG;aACa,gBAAgB,IAAI,eAAe,CAAC,IAAI,CAAC;IAEzD,mEAAmE;aACnD,UAAU,IAAI,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC;IAC5D;;;;;;;;;;;;;;OAcG;aACa,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC;CACnE;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,aAAa;;;;iBAIxB,CAAA;AACF,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAA;AAEzD,6DAA6D;AAC7D,eAAO,MAAM,yBAAyB;;iBAA4C,CAAA;AAClF,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAA;AAEjF,+DAA+D;AAC/D,eAAO,MAAM,2BAA2B;;iBAAkD,CAAA;AAC1F,MAAM,MAAM,2BAA2B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/api/core/io/terrain/index.ts"],"names":[],"mappings":"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"}
|