@layoutit/polycss-vue 0.2.0 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -1,20 +1,19 @@
1
1
  import * as vue from 'vue';
2
- import { PropType, Ref, InjectionKey, VNode, ComputedRef, MaybeRef } from 'vue';
3
- import { Vec3, CameraState, CameraHandle, Polygon, PolyDirectionalLight, PolyAmbientLight, PolyTextureLightingMode, LoadMeshOptions, PolyMaterial, Vec2, PolyAnimationTarget, PolyAnimationMixer, PolyAnimationClip, PolyAnimationAction, ParseAnimationController } from '@layoutit/polycss-core';
4
- export { ApproximateMergeOptions, ArrowPolygonsOptions, AutoRotateConfig, AutoRotateOption, AxesHelperOptions, BASE_TILE, BoxFace, BoxFaceOptions, BoxPolygonsOptions, CAMERA_BACKFACE_CULL_EPS, CameraCullNormalGroup, CameraCullRotation, CameraHandle, CameraState, CameraStyleInput, CoverPlanarPolygonsOptions, CullInteriorOptions, DEFAULT_CAMERA_STATE, DEFAULT_PROJECTION, GltfParseOptions, LoadMeshOptions, LoopMode, LoopOnce, LoopPingPong, LoopRepeat, MeshResolution, MtlParseResult, NormalizeResult, ObjParseOptions, OctahedronPolygonsOptions, OptimizeMeshPolygonsOptions, ParseAnimationClip, ParseAnimationController, ParseResult, ParsedColor, PolyAmbientLight, PolyAnimationAction, PolyAnimationClip, PolyAnimationMixer, PolyAnimationTarget, PolyDirectionalLight, PolyMaterial, PolyTextureLightingMode, Polygon, PolygonFace, RingPolygonsOptions, SceneBbox, SceneContext, SceneContextBuildArgs, SceneContextBuildResult, SolidTextureSampleOptions, TexturePaintMetrics, TexturePaintMetricsOptions, TextureTriangle, VOXEL_CAMERA_CULL_AXIS_EPS, VOXEL_CAMERA_CULL_NORMAL_LIMIT, Vec2, Vec3, VoxParseOptions, arrowPolygons, axesHelperPolygons, bakeSolidTextureSampledPolygons, bakeSolidTextureSamples, boxPolygons, buildSceneContext, cameraCullNormalGroups, cameraCullNormalGroupsFromPolygons, cameraCullNormalKey, cameraCullVisibleSignature, cameraFacingDepth, clampChannel, computeSceneBbox, computeShapeLighting, computeTexturePaintMetrics, coverPlanarPolygons, createIsometricCamera, createPolyAnimationMixer, cullInteriorPolygons, formatColor, inverseRotateVec3, isAxisAlignedSurfaceNormal, isVoxelCameraCullableNormalGroups, loadMesh, mergePolygons, normalFacesCamera, normalizeInvertMultiplier, normalizePolygons, octahedronPolygons, optimizeMeshPolygons, parseColor, parseGltf, parseHexColor, parseMtl, parseObj, parsePureColor, parseRgbColor, parseVox, polygonCssSurfaceNormal, polygonFaces, polygonFacesCamera, ringPolygons, rotateVec3, shadeColor } from '@layoutit/polycss-core';
2
+ import { PropType, Ref, InjectionKey, VNode, CSSProperties, ComputedRef, MaybeRef } from 'vue';
3
+ import * as _layoutit_polycss_core from '@layoutit/polycss-core';
4
+ import { Vec3, CameraState, CameraHandle, Polygon, PolyDirectionalLight, PolyAmbientLight, PolyTextureLightingMode, TextureQuality, PolySeamBleed, PolyRenderStrategiesOption, LoadMeshOptions, ParseResult, MeshResolution, PolyMaterial, Vec2, BoxPolygonsOptions, ConePolygonsOptions, CylinderPolygonsOptions, DodecahedronPolygonsOptions, IcosahedronPolygonsOptions, OctahedronPolygonsOptions, PlanePolygonsOptions, RingPolygonsOptions, SpherePolygonsOptions, TetrahedronPolygonsOptions, TorusPolygonsOptions, PolyAnimationTarget, PolyAnimationMixer, PolyAnimationClip, PolyAnimationAction, ParseAnimationController } from '@layoutit/polycss-core';
5
+ export { ArrowPolygonsOptions, AutoRotateConfig, AutoRotateOption, AxesHelperOptions, BASE_TILE, BoxFace, BoxFaceOptions, BoxPolygonsOptions, CAMERA_BACKFACE_CULL_EPS, CameraCullNormalGroup, CameraCullRotation, CameraHandle, CameraState, CameraStyleInput, ConePolygonsOptions, CoverPlanarPolygonsOptions, CullInteriorOptions, CylinderPolygonsOptions, DEFAULT_CAMERA_STATE, DEFAULT_PROJECTION, DEFAULT_SEAM_FACET_SPLIT_OPTIONS, DEFAULT_SEAM_OVERLAP_OPTIONS, DodecahedronPolygonsOptions, GltfParseOptions, IcosahedronPolygonsOptions, LoadMeshOptions, LoopMode, LoopOnce, LoopPingPong, LoopRepeat, MeshResolution, MtlParseResult, NormalizeResult, ObjParseOptions, OctahedronPolygonsOptions, OptimizeAnimatedMeshPolygonsOptions, OptimizeMeshParseResultOptions, OptimizeMeshPolygonsOptions, ParseAnimationClip, ParseAnimationController, ParseResult, ParseStlColor, ParseStlSolid, ParseStlTopology, ParsedColor, PlanePolygonsOptions, PolyAmbientLight, PolyAnimationAction, PolyAnimationClip, PolyAnimationMixer, PolyAnimationTarget, PolyDirectionalLight, PolyMaterial, PolyRenderStrategiesOption, PolyRenderStrategy, PolyTextureLightingMode, Polygon, PolygonFace, RingPolygonsOptions, SceneBbox, SceneContext, SceneContextBuildArgs, SceneContextBuildResult, SeamFacetSplitCandidate, SeamFacetSplitCandidateReason, SeamFacetSplitOptions, SeamFacetSplitReport, SeamOverlapCandidate, SeamOverlapCandidateKind, SeamOverlapDiagnostics, SeamOverlapOptions, SimplifyTriangleMeshPolygonsOptions, SolidTextureSampleOptions, StlParseOptions, TetrahedronPolygonsOptions, TexturePaintMetrics, TexturePaintMetricsOptions, TextureTriangle, TorusPolygonsOptions, VOXEL_CAMERA_CULL_AXIS_EPS, VOXEL_CAMERA_CULL_NORMAL_LIMIT, Vec2, Vec3, VoxParseOptions, arrowPolygons, axesHelperPolygons, bakeSolidTextureSampledPolygons, bakeSolidTextureSamples, boxPolygons, buildSceneContext, cameraCullNormalGroups, cameraCullNormalGroupsFromPolygons, cameraCullNormalKey, cameraCullVisibleSignature, cameraFacingDepth, clampChannel, computeSceneBbox, computeShapeLighting, computeTexturePaintMetrics, conePolygons, coverPlanarPolygons, createIsometricCamera, createPolyAnimationMixer, cullInteriorPolygons, cylinderPolygons, dodecahedronPolygons, formatColor, icosahedronPolygons, inverseRotateVec3, isAxisAlignedSurfaceNormal, isVoxelCameraCullableNormalGroups, loadMesh, mergePolygons, normalFacesCamera, normalizeInvertMultiplier, normalizePolygons, octahedronPolygons, optimizeAnimatedMeshPolygons, optimizeMeshParseResult, optimizeMeshPolygons, parseColor, parseGltf, parseHexColor, parseMtl, parseObj, parsePureColor, parseRgbColor, parseStl, parseVox, planePolygons, polygonCssSurfaceNormal, polygonFaces, polygonFacesCamera, repairMeshSeams, ringPolygons, rotateVec3, seamFacetSplitPolygons, seamFacetSplitReport, seamOverlapDiagnostics, seamOverlapPolygons, seamOverlapReport, shadeColor, simplifyTriangleMeshPolygons, tetrahedronPolygons, torusPolygons } from '@layoutit/polycss-core';
5
6
 
6
- interface PolyPerspectiveCameraProps {
7
+ interface PolyOrthographicCameraProps {
7
8
  zoom?: number;
8
9
  target?: Vec3;
9
10
  rotX?: number;
10
11
  rotY?: number;
11
12
  /** Camera pull-back in CSS pixels (dolly). Default 0. */
12
13
  distance?: number;
13
- /** CSS perspective distance in pixels. Defaults to 8000. */
14
- perspective?: number;
15
14
  class?: string;
16
15
  }
17
- declare const PolyPerspectiveCamera: vue.DefineComponent<vue.ExtractPropTypes<{
16
+ declare const PolyOrthographicCamera: vue.DefineComponent<vue.ExtractPropTypes<{
18
17
  zoom: {
19
18
  type: NumberConstructor;
20
19
  };
@@ -30,10 +29,6 @@ declare const PolyPerspectiveCamera: vue.DefineComponent<vue.ExtractPropTypes<{
30
29
  distance: {
31
30
  type: NumberConstructor;
32
31
  };
33
- perspective: {
34
- type: NumberConstructor;
35
- default: undefined;
36
- };
37
32
  class: {
38
33
  type: StringConstructor;
39
34
  };
@@ -55,27 +50,23 @@ declare const PolyPerspectiveCamera: vue.DefineComponent<vue.ExtractPropTypes<{
55
50
  distance: {
56
51
  type: NumberConstructor;
57
52
  };
58
- perspective: {
59
- type: NumberConstructor;
60
- default: undefined;
61
- };
62
53
  class: {
63
54
  type: StringConstructor;
64
55
  };
65
- }>> & Readonly<{}>, {
66
- perspective: number;
67
- }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
56
+ }>> & Readonly<{}>, {}, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
68
57
 
69
- interface PolyOrthographicCameraProps {
58
+ interface PolyPerspectiveCameraProps {
70
59
  zoom?: number;
71
60
  target?: Vec3;
72
61
  rotX?: number;
73
62
  rotY?: number;
74
63
  /** Camera pull-back in CSS pixels (dolly). Default 0. */
75
64
  distance?: number;
65
+ /** CSS perspective distance in pixels. Defaults to 32000. */
66
+ perspective?: number;
76
67
  class?: string;
77
68
  }
78
- declare const PolyOrthographicCamera: vue.DefineComponent<vue.ExtractPropTypes<{
69
+ declare const PolyPerspectiveCamera: vue.DefineComponent<vue.ExtractPropTypes<{
79
70
  zoom: {
80
71
  type: NumberConstructor;
81
72
  };
@@ -91,6 +82,10 @@ declare const PolyOrthographicCamera: vue.DefineComponent<vue.ExtractPropTypes<{
91
82
  distance: {
92
83
  type: NumberConstructor;
93
84
  };
85
+ perspective: {
86
+ type: NumberConstructor;
87
+ default: undefined;
88
+ };
94
89
  class: {
95
90
  type: StringConstructor;
96
91
  };
@@ -112,13 +107,19 @@ declare const PolyOrthographicCamera: vue.DefineComponent<vue.ExtractPropTypes<{
112
107
  distance: {
113
108
  type: NumberConstructor;
114
109
  };
110
+ perspective: {
111
+ type: NumberConstructor;
112
+ default: undefined;
113
+ };
115
114
  class: {
116
115
  type: StringConstructor;
117
116
  };
118
- }>> & Readonly<{}>, {}, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
117
+ }>> & Readonly<{}>, {
118
+ perspective: number;
119
+ }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
119
120
 
120
121
  /**
121
- * Lightweight reactive store for polycss scene state.
122
+ * Lightweight reactive store for PolyCSS scene state.
122
123
  * Components subscribe to specific slices via selectors,
123
124
  * so only the components that care about a changed value re-render.
124
125
  */
@@ -207,19 +208,18 @@ interface PolyShadowOptions {
207
208
  color?: string;
208
209
  opacity?: number;
209
210
  lift?: number;
210
- }
211
-
212
- type TextureQuality = number | "auto";
213
- type PolyRenderStrategy = "b" | "i" | "u";
214
- interface PolyRenderStrategiesOption {
215
- /** Strategies to skip; polygons that would normally use them fall through
216
- * the chain (b → i → s, u → i → s, i → s). `<s>` is the universal
217
- * fallback and cannot be disabled — textured polys have no other path. */
218
- disable?: readonly PolyRenderStrategy[];
211
+ /**
212
+ * Maximum CSS pixels the shadow may extend beyond the mesh's
213
+ * footprint. Caps the SVG backing store at low light elevations to
214
+ * prevent repaint flicker. Default: `2000`. Pass `Infinity` to
215
+ * disable the cap entirely.
216
+ */
217
+ maxExtend?: number;
219
218
  }
220
219
 
221
220
  interface PolySceneProps {
222
221
  polygons?: Polygon[];
222
+ centerPolygons?: Polygon[];
223
223
  perspective?: number;
224
224
  rotX?: number;
225
225
  rotY?: number;
@@ -232,6 +232,8 @@ interface PolySceneProps {
232
232
  * desktop/mobile sprite sizing. Numeric values 0.1..1 force an explicit
233
233
  * raster scale and the 64px sprite. */
234
234
  textureQuality?: TextureQuality;
235
+ /** Solid seam overscan. `"auto"` computes a fitted per-edge amount from the polygon plan. */
236
+ seamBleed?: PolySeamBleed;
235
237
  /** Opt out of specific render strategies. Disabled strategies fall through the chain (b→i→s, u→i→s, i→s). `<s>` cannot be disabled. */
236
238
  strategies?: PolyRenderStrategiesOption;
237
239
  /**
@@ -242,9 +244,10 @@ interface PolySceneProps {
242
244
  */
243
245
  autoCenter?: boolean;
244
246
  /**
245
- * Shadow appearance for meshes with `castShadow: true`. Only applies in
246
- * dynamic lighting mode baked mode does not emit shadow leaves.
247
- * Defaults: `{ color: "#000000", opacity: 0.25, lift: 0.05 }`.
247
+ * Shadow appearance for meshes with `castShadow: true`. Works in both
248
+ * lighting modes. Shadows emit as SVG paths and reproject when light,
249
+ * ground, or mesh geometry changes. Defaults:
250
+ * `{ color: "#000000", opacity: 0.25, lift: 0.05, maxExtend: 2000 }`.
248
251
  */
249
252
  shadow?: PolyShadowOptions;
250
253
  class?: string;
@@ -259,6 +262,10 @@ declare const PolyScene: vue.DefineComponent<vue.ExtractPropTypes<{
259
262
  type: PropType<Polygon[]>;
260
263
  default: undefined;
261
264
  };
265
+ centerPolygons: {
266
+ type: PropType<Polygon[]>;
267
+ default: undefined;
268
+ };
262
269
  perspective: {
263
270
  type: NumberConstructor;
264
271
  };
@@ -287,6 +294,10 @@ declare const PolyScene: vue.DefineComponent<vue.ExtractPropTypes<{
287
294
  type: PropType<TextureQuality>;
288
295
  default: undefined;
289
296
  };
297
+ seamBleed: {
298
+ type: PropType<PolySeamBleed>;
299
+ default: undefined;
300
+ };
290
301
  strategies: {
291
302
  type: PropType<PolyRenderStrategiesOption>;
292
303
  default: undefined;
@@ -327,6 +338,10 @@ declare const PolyScene: vue.DefineComponent<vue.ExtractPropTypes<{
327
338
  type: PropType<Polygon[]>;
328
339
  default: undefined;
329
340
  };
341
+ centerPolygons: {
342
+ type: PropType<Polygon[]>;
343
+ default: undefined;
344
+ };
330
345
  perspective: {
331
346
  type: NumberConstructor;
332
347
  };
@@ -355,6 +370,10 @@ declare const PolyScene: vue.DefineComponent<vue.ExtractPropTypes<{
355
370
  type: PropType<TextureQuality>;
356
371
  default: undefined;
357
372
  };
373
+ seamBleed: {
374
+ type: PropType<PolySeamBleed>;
375
+ default: undefined;
376
+ };
358
377
  strategies: {
359
378
  type: PropType<PolyRenderStrategiesOption>;
360
379
  default: undefined;
@@ -390,10 +409,12 @@ declare const PolyScene: vue.DefineComponent<vue.ExtractPropTypes<{
390
409
  };
391
410
  }>> & Readonly<{}>, {
392
411
  directionalLight: PolyDirectionalLight;
393
- textureLighting: PolyTextureLightingMode;
394
412
  position: Vec3;
395
413
  scale: number | Vec3;
414
+ seamBleed: PolySeamBleed;
415
+ textureLighting: PolyTextureLightingMode;
396
416
  polygons: Polygon[];
417
+ centerPolygons: Polygon[];
397
418
  ambientLight: PolyAmbientLight;
398
419
  textureQuality: TextureQuality;
399
420
  strategies: PolyRenderStrategiesOption;
@@ -404,10 +425,22 @@ declare const PolyScene: vue.DefineComponent<vue.ExtractPropTypes<{
404
425
  debugShowBackfaces: boolean;
405
426
  }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
406
427
 
428
+ type UseMeshOptions = LoadMeshOptions;
429
+ interface UseMeshResult {
430
+ polygons: Ref<Polygon[]>;
431
+ voxelSource: Ref<ParseResult["voxelSource"]>;
432
+ loading: Ref<boolean>;
433
+ error: Ref<Error | null>;
434
+ warnings: Ref<string[]>;
435
+ /** Manually trigger cleanup (also called on unmount automatically). */
436
+ dispose: () => void;
437
+ }
438
+ declare function usePolyMesh(src: Ref<string>, options?: UseMeshOptions): UseMeshResult;
439
+
407
440
  /**
408
441
  * Pointer event API for `<PolyMesh>` (Vue). Mirrors @react-three/fiber's
409
442
  * mesh event surface (handler names + payload shape) so devs migrating
410
- * from three.js use the same mental model. polycss is DOM-native so
443
+ * from three.js use the same mental model. PolyCSS is DOM-native so
411
444
  * we get native pointer events for free — no raycaster, no canvas
412
445
  * event synthesis.
413
446
  *
@@ -429,6 +462,12 @@ interface PolyMeshHandle {
429
462
  getRotation(): Vec3 | undefined;
430
463
  getScale(): number | Vec3 | undefined;
431
464
  getPolygons(): Polygon[];
465
+ /**
466
+ * Replace the mesh polygons imperatively. Animated solid-triangle meshes use
467
+ * a stable DOM update path that mutates mounted leaves directly; unsupported
468
+ * topology falls back to the normal framework render path.
469
+ */
470
+ setPolygons(polygons: Polygon[]): void;
432
471
  /**
433
472
  * Update a single polygon in place. `target` is either a polygon
434
473
  * reference (as returned by `getPolygons()`) or its index. `partial`
@@ -514,13 +553,41 @@ interface PolyMeshProps extends InteractionProps {
514
553
  * desktop/mobile sprite sizing. Numeric values 0.1..1 force an explicit
515
554
  * raster scale and the 64px sprite. */
516
555
  textureQuality?: TextureQuality;
556
+ /** Solid seam overscan. `"auto"` computes a fitted per-edge amount from the polygon plan. */
557
+ seamBleed?: PolySeamBleed;
558
+ /**
559
+ * Hold the previous frame until the next atlas is decoded, then swap
560
+ * atomically. Best for discrete geometry edits where a partial texture
561
+ * frame would be visible.
562
+ */
563
+ atomicAtlas?: boolean;
564
+ /** Fires when the displayed atlas frame swaps to a ready one in atomic mode. */
565
+ onFrameReady?: () => void;
517
566
  /**
518
- * When `true` and the scene is in dynamic lighting mode, the renderer emits
519
- * a flat shadow leaf sibling for each non-duplicate polygon. The shadow is
520
- * projected onto the ground plane along the CSS-space light direction.
567
+ * When `true`, emits a per-mesh SVG shadow path in both lighting modes.
568
+ * Each casting polygon projects onto the scene ground plane along the
569
+ * directional light; overlapping outlines are merged into one silhouette.
521
570
  * Defaults to `false`.
522
571
  */
523
572
  castShadow?: boolean;
573
+ /**
574
+ * When `true`, this mesh acts as a shadow receiver. The scene's caster
575
+ * meshes (those with `castShadow=true`) project per-coplanar-face SVG
576
+ * shadows onto each visible surface, matching Three.js's `mesh.receiveShadow`
577
+ * semantics. Disables the ground-shadow fallback when at least one
578
+ * receiver exists. Defaults to `false`.
579
+ */
580
+ receiveShadow?: boolean;
581
+ /** Apply mesh optimization (coplanar merge + interior cull) before
582
+ * rendering. Defaults to `true` — matches vanilla `scene.add`. Set
583
+ * `false` for helper meshes whose geometry shouldn't be merged. */
584
+ merge?: boolean;
585
+ /** Mesh optimization intent. Defaults to "lossy"; set "lossless" to keep
586
+ * authored surface fidelity. Top-level prop wins over any meshResolution
587
+ * that might be set inside parseOptions. */
588
+ meshResolution?: MeshResolution;
589
+ /** Parser options forwarded to parseObj/parseGltf/parseVox. */
590
+ parseOptions?: UseMeshOptions;
524
591
  class?: string;
525
592
  position?: Vec3;
526
593
  scale?: number | Vec3;
@@ -543,6 +610,13 @@ declare const PolyMesh: vue.DefineComponent<vue.ExtractPropTypes<{
543
610
  type: PropType<Polygon[]>;
544
611
  default: undefined;
545
612
  };
613
+ /** Optional `parseResult.voxelSource` companion for `.vox` meshes. When
614
+ * set alongside `polygons`, the direct voxel renderer fast path
615
+ * activates — mirrors vanilla's `scene.add(parseResult)` behaviour. */
616
+ voxelSource: {
617
+ type: PropType<_layoutit_polycss_core.ParseResult["voxelSource"]>;
618
+ default: undefined;
619
+ };
546
620
  autoCenter: {
547
621
  type: BooleanConstructor;
548
622
  default: boolean;
@@ -555,10 +629,38 @@ declare const PolyMesh: vue.DefineComponent<vue.ExtractPropTypes<{
555
629
  type: PropType<TextureQuality>;
556
630
  default: undefined;
557
631
  };
632
+ seamBleed: {
633
+ type: PropType<PolySeamBleed>;
634
+ default: undefined;
635
+ };
636
+ atomicAtlas: {
637
+ type: PropType<boolean>;
638
+ default: boolean;
639
+ };
640
+ onFrameReady: {
641
+ type: PropType<() => void>;
642
+ default: undefined;
643
+ };
558
644
  castShadow: {
559
645
  type: PropType<boolean>;
560
646
  default: boolean;
561
647
  };
648
+ receiveShadow: {
649
+ type: PropType<boolean>;
650
+ default: boolean;
651
+ };
652
+ merge: {
653
+ type: PropType<boolean>;
654
+ default: boolean;
655
+ };
656
+ meshResolution: {
657
+ type: PropType<MeshResolution>;
658
+ default: undefined;
659
+ };
660
+ parseOptions: {
661
+ type: PropType<UseMeshOptions>;
662
+ default: undefined;
663
+ };
562
664
  class: {
563
665
  type: StringConstructor;
564
666
  };
@@ -641,6 +743,13 @@ declare const PolyMesh: vue.DefineComponent<vue.ExtractPropTypes<{
641
743
  type: PropType<Polygon[]>;
642
744
  default: undefined;
643
745
  };
746
+ /** Optional `parseResult.voxelSource` companion for `.vox` meshes. When
747
+ * set alongside `polygons`, the direct voxel renderer fast path
748
+ * activates — mirrors vanilla's `scene.add(parseResult)` behaviour. */
749
+ voxelSource: {
750
+ type: PropType<_layoutit_polycss_core.ParseResult["voxelSource"]>;
751
+ default: undefined;
752
+ };
644
753
  autoCenter: {
645
754
  type: BooleanConstructor;
646
755
  default: boolean;
@@ -653,10 +762,38 @@ declare const PolyMesh: vue.DefineComponent<vue.ExtractPropTypes<{
653
762
  type: PropType<TextureQuality>;
654
763
  default: undefined;
655
764
  };
765
+ seamBleed: {
766
+ type: PropType<PolySeamBleed>;
767
+ default: undefined;
768
+ };
769
+ atomicAtlas: {
770
+ type: PropType<boolean>;
771
+ default: boolean;
772
+ };
773
+ onFrameReady: {
774
+ type: PropType<() => void>;
775
+ default: undefined;
776
+ };
656
777
  castShadow: {
657
778
  type: PropType<boolean>;
658
779
  default: boolean;
659
780
  };
781
+ receiveShadow: {
782
+ type: PropType<boolean>;
783
+ default: boolean;
784
+ };
785
+ merge: {
786
+ type: PropType<boolean>;
787
+ default: boolean;
788
+ };
789
+ meshResolution: {
790
+ type: PropType<MeshResolution>;
791
+ default: undefined;
792
+ };
793
+ parseOptions: {
794
+ type: PropType<UseMeshOptions>;
795
+ default: undefined;
796
+ };
660
797
  class: {
661
798
  type: StringConstructor;
662
799
  };
@@ -723,17 +860,25 @@ declare const PolyMesh: vue.DefineComponent<vue.ExtractPropTypes<{
723
860
  }>> & Readonly<{}>, {
724
861
  onClick: PolyEventHandler<MouseEvent>;
725
862
  onWheel: PolyEventHandler<WheelEvent>;
726
- textureLighting: PolyTextureLightingMode;
727
863
  position: Vec3;
728
864
  scale: number | Vec3;
865
+ seamBleed: PolySeamBleed;
866
+ textureLighting: PolyTextureLightingMode;
729
867
  polygons: Polygon[];
730
868
  textureQuality: TextureQuality;
731
869
  autoCenter: boolean;
732
870
  rotation: Vec3;
871
+ voxelSource: _layoutit_polycss_core.PolyVoxelSource | undefined;
733
872
  id: string;
734
873
  src: string;
735
874
  mtl: string;
875
+ atomicAtlas: boolean;
876
+ onFrameReady: () => void;
736
877
  castShadow: boolean;
878
+ receiveShadow: boolean;
879
+ merge: boolean;
880
+ meshResolution: MeshResolution;
881
+ parseOptions: _layoutit_polycss_core.LoadMeshOptions;
737
882
  onContextMenu: PolyEventHandler<MouseEvent>;
738
883
  onDoubleClick: PolyEventHandler<MouseEvent>;
739
884
  onPointerDown: PolyEventHandler<PointerEvent>;
@@ -746,6 +891,142 @@ declare const PolyMesh: vue.DefineComponent<vue.ExtractPropTypes<{
746
891
  onPointerCancel: PolyEventHandler<PointerEvent>;
747
892
  }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
748
893
 
894
+ interface PolyIframeProps {
895
+ src: string;
896
+ width: number;
897
+ height: number;
898
+ position?: Vec3;
899
+ rotation?: Vec3;
900
+ scale?: number | Vec3;
901
+ allow?: string;
902
+ sandbox?: string;
903
+ loading?: "lazy" | "eager";
904
+ referrerpolicy?: string;
905
+ title?: string;
906
+ class?: string;
907
+ style?: CSSProperties;
908
+ }
909
+ declare const PolyIframe: vue.DefineComponent<vue.ExtractPropTypes<{
910
+ src: {
911
+ type: StringConstructor;
912
+ required: true;
913
+ };
914
+ width: {
915
+ type: NumberConstructor;
916
+ required: true;
917
+ };
918
+ height: {
919
+ type: NumberConstructor;
920
+ required: true;
921
+ };
922
+ position: {
923
+ type: PropType<Vec3>;
924
+ default: undefined;
925
+ };
926
+ rotation: {
927
+ type: PropType<Vec3>;
928
+ default: undefined;
929
+ };
930
+ scale: {
931
+ type: PropType<number | Vec3>;
932
+ default: undefined;
933
+ };
934
+ allow: {
935
+ type: StringConstructor;
936
+ default: undefined;
937
+ };
938
+ sandbox: {
939
+ type: StringConstructor;
940
+ default: undefined;
941
+ };
942
+ loading: {
943
+ type: PropType<"lazy" | "eager">;
944
+ default: undefined;
945
+ };
946
+ referrerpolicy: {
947
+ type: StringConstructor;
948
+ default: undefined;
949
+ };
950
+ title: {
951
+ type: StringConstructor;
952
+ default: undefined;
953
+ };
954
+ class: {
955
+ type: StringConstructor;
956
+ default: undefined;
957
+ };
958
+ style: {
959
+ type: PropType<CSSProperties>;
960
+ default: undefined;
961
+ };
962
+ }>, () => vue.VNode<vue.RendererNode, vue.RendererElement, {
963
+ [key: string]: any;
964
+ }>, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
965
+ src: {
966
+ type: StringConstructor;
967
+ required: true;
968
+ };
969
+ width: {
970
+ type: NumberConstructor;
971
+ required: true;
972
+ };
973
+ height: {
974
+ type: NumberConstructor;
975
+ required: true;
976
+ };
977
+ position: {
978
+ type: PropType<Vec3>;
979
+ default: undefined;
980
+ };
981
+ rotation: {
982
+ type: PropType<Vec3>;
983
+ default: undefined;
984
+ };
985
+ scale: {
986
+ type: PropType<number | Vec3>;
987
+ default: undefined;
988
+ };
989
+ allow: {
990
+ type: StringConstructor;
991
+ default: undefined;
992
+ };
993
+ sandbox: {
994
+ type: StringConstructor;
995
+ default: undefined;
996
+ };
997
+ loading: {
998
+ type: PropType<"lazy" | "eager">;
999
+ default: undefined;
1000
+ };
1001
+ referrerpolicy: {
1002
+ type: StringConstructor;
1003
+ default: undefined;
1004
+ };
1005
+ title: {
1006
+ type: StringConstructor;
1007
+ default: undefined;
1008
+ };
1009
+ class: {
1010
+ type: StringConstructor;
1011
+ default: undefined;
1012
+ };
1013
+ style: {
1014
+ type: PropType<CSSProperties>;
1015
+ default: undefined;
1016
+ };
1017
+ }>> & Readonly<{}>, {
1018
+ class: string;
1019
+ style: CSSProperties;
1020
+ title: string;
1021
+ position: Vec3;
1022
+ scale: number | Vec3;
1023
+ rotation: Vec3;
1024
+ allow: string;
1025
+ sandbox: string;
1026
+ loading: "eager" | "lazy";
1027
+ referrerpolicy: string;
1028
+ }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
1029
+
749
1030
  interface PolyGroundProps {
750
1031
  /** Side length of the ground quad in world units. Default `6`. */
751
1032
  size?: number;
@@ -753,8 +1034,8 @@ interface PolyGroundProps {
753
1034
  z?: number;
754
1035
  /** World-space XY center. Default `[0, 0]`. */
755
1036
  center?: [number, number];
756
- /** Fill color. Default `#7d848e` — medium gray, chosen so 25% black `<q>`
757
- * shadow leaves on top have visible contrast against it. */
1037
+ /** Fill color. Default `#7d848e` — medium gray, chosen so the default
1038
+ * 25% black SVG shadow has visible contrast against it. */
758
1039
  color?: string;
759
1040
  class?: string;
760
1041
  }
@@ -804,9 +1085,9 @@ declare const PolyGround: vue.DefineComponent<vue.ExtractPropTypes<{
804
1085
  };
805
1086
  }>> & Readonly<{}>, {
806
1087
  class: string;
807
- color: string;
808
1088
  size: number;
809
1089
  center: [number, number];
1090
+ color: string;
810
1091
  z: number;
811
1092
  }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
812
1093
 
@@ -821,7 +1102,7 @@ interface UseSceneContextResult {
821
1102
  };
822
1103
  }
823
1104
  /**
824
- * Vue 3 composable that runs the polycss scene-context pipeline:
1105
+ * Vue 3 composable that runs the PolyCSS scene-context pipeline:
825
1106
  * normalizePolygons → mergePolygons by default → bbox compute.
826
1107
  *
827
1108
  * Returns a Ref to the processed polygons + the scene-wide axis-aligned bbox.
@@ -829,17 +1110,6 @@ interface UseSceneContextResult {
829
1110
  */
830
1111
  declare function usePolySceneContext(polygons: Ref<Polygon[]>, options: Ref<UseSceneContextOptions>): Ref<UseSceneContextResult>;
831
1112
 
832
- type UseMeshOptions = LoadMeshOptions;
833
- interface UseMeshResult {
834
- polygons: Ref<Polygon[]>;
835
- loading: Ref<boolean>;
836
- error: Ref<Error | null>;
837
- warnings: Ref<string[]>;
838
- /** Manually trigger cleanup (also called on unmount automatically). */
839
- dispose: () => void;
840
- }
841
- declare function usePolyMesh(src: Ref<string>, options?: UseMeshOptions): UseMeshResult;
842
-
843
1113
  /**
844
1114
  * usePolyMaterial — Vue composable that returns a stable computed material
845
1115
  * handle. Accepts either a plain options object or a reactive getter so that
@@ -998,48 +1268,1042 @@ declare const Poly: vue.DefineComponent<vue.ExtractPropTypes<{
998
1268
  };
999
1269
  }>> & Readonly<{}>, {
1000
1270
  data: Record<string, string | number | boolean>;
1001
- pointerEvents: "none" | "auto";
1002
- uvs: Vec2[];
1003
- textureLighting: PolyTextureLightingMode;
1004
1271
  position: Vec3;
1272
+ pointerEvents: "auto" | "none";
1005
1273
  scale: number | Vec3;
1274
+ material: PolyMaterial;
1275
+ uvs: Vec2[];
1276
+ textureLighting: PolyTextureLightingMode;
1006
1277
  textureQuality: TextureQuality;
1007
1278
  rotation: Vec3;
1008
- material: PolyMaterial;
1009
1279
  context: PolyContext;
1010
1280
  }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
1011
1281
 
1012
- interface PolyControlsAnimateOptions {
1013
- speed?: number;
1014
- axis?: "x" | "y";
1015
- pauseOnInteraction?: boolean;
1016
- }
1017
- interface PolyOrbitControlsCamera {
1018
- rotX: number;
1019
- rotY: number;
1020
- zoom: number;
1021
- target: Vec3;
1022
- distance: number;
1023
- }
1024
- interface PolyOrbitControlsProps {
1025
- drag?: boolean;
1026
- wheel?: boolean;
1027
- /** When true, wheel changes camera pull-back (distance) instead of zoom scale. */
1028
- dolly?: boolean;
1029
- invert?: boolean | number;
1030
- /** Minimum zoom multiplier (zoom mode). Default 0.1. */
1031
- minZoom?: number;
1032
- /** Maximum zoom multiplier (zoom mode). Default 10. */
1033
- maxZoom?: number;
1034
- /** Minimum camera pull-back in CSS pixels when dolly=true. Default 0. */
1035
- minDistance?: number;
1036
- /** Maximum camera pull-back in CSS pixels when dolly=true. Default 5000. */
1037
- maxDistance?: number;
1038
- animate?: false | PolyControlsAnimateOptions;
1282
+ type ShapeMeshProps = Omit<PolyMeshProps, "polygons" | "src" | "mtl">;
1283
+ interface PolyBoxProps extends ShapeMeshProps, BoxPolygonsOptions {
1039
1284
  }
1040
- declare const PolyOrbitControls: vue.DefineComponent<vue.ExtractPropTypes<{
1041
- drag: {
1042
- type: BooleanConstructor;
1285
+ declare const PolyBox: vue.DefineComponent<vue.ExtractPropTypes<{
1286
+ size: {
1287
+ type: PropType<number | Vec3>;
1288
+ default: undefined;
1289
+ };
1290
+ center: {
1291
+ type: PropType<Vec3>;
1292
+ default: undefined;
1293
+ };
1294
+ min: {
1295
+ type: PropType<Vec3>;
1296
+ default: undefined;
1297
+ };
1298
+ max: {
1299
+ type: PropType<Vec3>;
1300
+ default: undefined;
1301
+ };
1302
+ color: {
1303
+ type: StringConstructor;
1304
+ default: undefined;
1305
+ };
1306
+ texture: {
1307
+ type: StringConstructor;
1308
+ default: undefined;
1309
+ };
1310
+ material: {
1311
+ type: PropType<PolyMaterial>;
1312
+ default: undefined;
1313
+ };
1314
+ uvs: {
1315
+ type: PropType<Vec2[]>;
1316
+ default: undefined;
1317
+ };
1318
+ data: {
1319
+ type: PropType<BoxPolygonsOptions["data"]>;
1320
+ default: undefined;
1321
+ };
1322
+ faces: {
1323
+ type: PropType<BoxPolygonsOptions["faces"]>;
1324
+ default: undefined;
1325
+ };
1326
+ position: {
1327
+ type: PropType<Vec3>;
1328
+ default: undefined;
1329
+ };
1330
+ scale: {
1331
+ type: PropType<number | Vec3>;
1332
+ default: undefined;
1333
+ };
1334
+ rotation: {
1335
+ type: PropType<Vec3>;
1336
+ default: undefined;
1337
+ };
1338
+ autoCenter: {
1339
+ type: BooleanConstructor;
1340
+ default: boolean;
1341
+ };
1342
+ id: {
1343
+ type: StringConstructor;
1344
+ default: undefined;
1345
+ };
1346
+ }>, () => vue.VNode<vue.RendererNode, vue.RendererElement, {
1347
+ [key: string]: any;
1348
+ }>, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
1349
+ size: {
1350
+ type: PropType<number | Vec3>;
1351
+ default: undefined;
1352
+ };
1353
+ center: {
1354
+ type: PropType<Vec3>;
1355
+ default: undefined;
1356
+ };
1357
+ min: {
1358
+ type: PropType<Vec3>;
1359
+ default: undefined;
1360
+ };
1361
+ max: {
1362
+ type: PropType<Vec3>;
1363
+ default: undefined;
1364
+ };
1365
+ color: {
1366
+ type: StringConstructor;
1367
+ default: undefined;
1368
+ };
1369
+ texture: {
1370
+ type: StringConstructor;
1371
+ default: undefined;
1372
+ };
1373
+ material: {
1374
+ type: PropType<PolyMaterial>;
1375
+ default: undefined;
1376
+ };
1377
+ uvs: {
1378
+ type: PropType<Vec2[]>;
1379
+ default: undefined;
1380
+ };
1381
+ data: {
1382
+ type: PropType<BoxPolygonsOptions["data"]>;
1383
+ default: undefined;
1384
+ };
1385
+ faces: {
1386
+ type: PropType<BoxPolygonsOptions["faces"]>;
1387
+ default: undefined;
1388
+ };
1389
+ position: {
1390
+ type: PropType<Vec3>;
1391
+ default: undefined;
1392
+ };
1393
+ scale: {
1394
+ type: PropType<number | Vec3>;
1395
+ default: undefined;
1396
+ };
1397
+ rotation: {
1398
+ type: PropType<Vec3>;
1399
+ default: undefined;
1400
+ };
1401
+ autoCenter: {
1402
+ type: BooleanConstructor;
1403
+ default: boolean;
1404
+ };
1405
+ id: {
1406
+ type: StringConstructor;
1407
+ default: undefined;
1408
+ };
1409
+ }>> & Readonly<{}>, {
1410
+ data: Record<string, string | number | boolean> | undefined;
1411
+ size: number | Vec3;
1412
+ center: Vec3;
1413
+ color: string;
1414
+ position: Vec3;
1415
+ scale: number | Vec3;
1416
+ texture: string;
1417
+ material: PolyMaterial;
1418
+ uvs: Vec2[];
1419
+ autoCenter: boolean;
1420
+ rotation: Vec3;
1421
+ id: string;
1422
+ faces: Partial<Record<_layoutit_polycss_core.BoxFace, false | _layoutit_polycss_core.BoxFaceOptions>> | undefined;
1423
+ min: Vec3;
1424
+ max: Vec3;
1425
+ }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
1426
+ interface PolyPlaneProps extends ShapeMeshProps, PlanePolygonsOptions {
1427
+ }
1428
+ declare const PolyPlane: vue.DefineComponent<vue.ExtractPropTypes<{
1429
+ axis: {
1430
+ type: PropType<0 | 1 | 2>;
1431
+ required: true;
1432
+ };
1433
+ size: {
1434
+ type: NumberConstructor;
1435
+ default: undefined;
1436
+ };
1437
+ offset: {
1438
+ type: PropType<number | [number, number]>;
1439
+ default: undefined;
1440
+ };
1441
+ along: {
1442
+ type: NumberConstructor;
1443
+ default: undefined;
1444
+ };
1445
+ color: {
1446
+ type: StringConstructor;
1447
+ default: undefined;
1448
+ };
1449
+ position: {
1450
+ type: PropType<Vec3>;
1451
+ default: undefined;
1452
+ };
1453
+ scale: {
1454
+ type: PropType<number | Vec3>;
1455
+ default: undefined;
1456
+ };
1457
+ rotation: {
1458
+ type: PropType<Vec3>;
1459
+ default: undefined;
1460
+ };
1461
+ autoCenter: {
1462
+ type: BooleanConstructor;
1463
+ default: boolean;
1464
+ };
1465
+ id: {
1466
+ type: StringConstructor;
1467
+ default: undefined;
1468
+ };
1469
+ }>, () => vue.VNode<vue.RendererNode, vue.RendererElement, {
1470
+ [key: string]: any;
1471
+ }>, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
1472
+ axis: {
1473
+ type: PropType<0 | 1 | 2>;
1474
+ required: true;
1475
+ };
1476
+ size: {
1477
+ type: NumberConstructor;
1478
+ default: undefined;
1479
+ };
1480
+ offset: {
1481
+ type: PropType<number | [number, number]>;
1482
+ default: undefined;
1483
+ };
1484
+ along: {
1485
+ type: NumberConstructor;
1486
+ default: undefined;
1487
+ };
1488
+ color: {
1489
+ type: StringConstructor;
1490
+ default: undefined;
1491
+ };
1492
+ position: {
1493
+ type: PropType<Vec3>;
1494
+ default: undefined;
1495
+ };
1496
+ scale: {
1497
+ type: PropType<number | Vec3>;
1498
+ default: undefined;
1499
+ };
1500
+ rotation: {
1501
+ type: PropType<Vec3>;
1502
+ default: undefined;
1503
+ };
1504
+ autoCenter: {
1505
+ type: BooleanConstructor;
1506
+ default: boolean;
1507
+ };
1508
+ id: {
1509
+ type: StringConstructor;
1510
+ default: undefined;
1511
+ };
1512
+ }>> & Readonly<{}>, {
1513
+ size: number;
1514
+ color: string;
1515
+ position: Vec3;
1516
+ scale: number | Vec3;
1517
+ offset: number | [number, number];
1518
+ autoCenter: boolean;
1519
+ rotation: Vec3;
1520
+ id: string;
1521
+ along: number;
1522
+ }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
1523
+ interface PolyRingProps extends ShapeMeshProps, RingPolygonsOptions {
1524
+ }
1525
+ declare const PolyRing: vue.DefineComponent<vue.ExtractPropTypes<{
1526
+ axis: {
1527
+ type: PropType<0 | 1 | 2>;
1528
+ required: true;
1529
+ };
1530
+ radius: {
1531
+ type: NumberConstructor;
1532
+ required: true;
1533
+ };
1534
+ halfThickness: {
1535
+ type: NumberConstructor;
1536
+ default: undefined;
1537
+ };
1538
+ segments: {
1539
+ type: NumberConstructor;
1540
+ default: undefined;
1541
+ };
1542
+ color: {
1543
+ type: StringConstructor;
1544
+ default: undefined;
1545
+ };
1546
+ position: {
1547
+ type: PropType<Vec3>;
1548
+ default: undefined;
1549
+ };
1550
+ scale: {
1551
+ type: PropType<number | Vec3>;
1552
+ default: undefined;
1553
+ };
1554
+ rotation: {
1555
+ type: PropType<Vec3>;
1556
+ default: undefined;
1557
+ };
1558
+ autoCenter: {
1559
+ type: BooleanConstructor;
1560
+ default: boolean;
1561
+ };
1562
+ id: {
1563
+ type: StringConstructor;
1564
+ default: undefined;
1565
+ };
1566
+ }>, () => vue.VNode<vue.RendererNode, vue.RendererElement, {
1567
+ [key: string]: any;
1568
+ }>, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
1569
+ axis: {
1570
+ type: PropType<0 | 1 | 2>;
1571
+ required: true;
1572
+ };
1573
+ radius: {
1574
+ type: NumberConstructor;
1575
+ required: true;
1576
+ };
1577
+ halfThickness: {
1578
+ type: NumberConstructor;
1579
+ default: undefined;
1580
+ };
1581
+ segments: {
1582
+ type: NumberConstructor;
1583
+ default: undefined;
1584
+ };
1585
+ color: {
1586
+ type: StringConstructor;
1587
+ default: undefined;
1588
+ };
1589
+ position: {
1590
+ type: PropType<Vec3>;
1591
+ default: undefined;
1592
+ };
1593
+ scale: {
1594
+ type: PropType<number | Vec3>;
1595
+ default: undefined;
1596
+ };
1597
+ rotation: {
1598
+ type: PropType<Vec3>;
1599
+ default: undefined;
1600
+ };
1601
+ autoCenter: {
1602
+ type: BooleanConstructor;
1603
+ default: boolean;
1604
+ };
1605
+ id: {
1606
+ type: StringConstructor;
1607
+ default: undefined;
1608
+ };
1609
+ }>> & Readonly<{}>, {
1610
+ color: string;
1611
+ position: Vec3;
1612
+ scale: number | Vec3;
1613
+ autoCenter: boolean;
1614
+ rotation: Vec3;
1615
+ id: string;
1616
+ halfThickness: number;
1617
+ segments: number;
1618
+ }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
1619
+ interface PolyOctahedronProps extends ShapeMeshProps, OctahedronPolygonsOptions {
1620
+ }
1621
+ declare const PolyOctahedron: vue.DefineComponent<vue.ExtractPropTypes<{
1622
+ center: {
1623
+ type: PropType<Vec3>;
1624
+ required: true;
1625
+ };
1626
+ size: {
1627
+ type: NumberConstructor;
1628
+ required: true;
1629
+ };
1630
+ color: {
1631
+ type: StringConstructor;
1632
+ default: undefined;
1633
+ };
1634
+ position: {
1635
+ type: PropType<Vec3>;
1636
+ default: undefined;
1637
+ };
1638
+ scale: {
1639
+ type: PropType<number | Vec3>;
1640
+ default: undefined;
1641
+ };
1642
+ rotation: {
1643
+ type: PropType<Vec3>;
1644
+ default: undefined;
1645
+ };
1646
+ autoCenter: {
1647
+ type: BooleanConstructor;
1648
+ default: boolean;
1649
+ };
1650
+ id: {
1651
+ type: StringConstructor;
1652
+ default: undefined;
1653
+ };
1654
+ }>, () => vue.VNode<vue.RendererNode, vue.RendererElement, {
1655
+ [key: string]: any;
1656
+ }>, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
1657
+ center: {
1658
+ type: PropType<Vec3>;
1659
+ required: true;
1660
+ };
1661
+ size: {
1662
+ type: NumberConstructor;
1663
+ required: true;
1664
+ };
1665
+ color: {
1666
+ type: StringConstructor;
1667
+ default: undefined;
1668
+ };
1669
+ position: {
1670
+ type: PropType<Vec3>;
1671
+ default: undefined;
1672
+ };
1673
+ scale: {
1674
+ type: PropType<number | Vec3>;
1675
+ default: undefined;
1676
+ };
1677
+ rotation: {
1678
+ type: PropType<Vec3>;
1679
+ default: undefined;
1680
+ };
1681
+ autoCenter: {
1682
+ type: BooleanConstructor;
1683
+ default: boolean;
1684
+ };
1685
+ id: {
1686
+ type: StringConstructor;
1687
+ default: undefined;
1688
+ };
1689
+ }>> & Readonly<{}>, {
1690
+ color: string;
1691
+ position: Vec3;
1692
+ scale: number | Vec3;
1693
+ autoCenter: boolean;
1694
+ rotation: Vec3;
1695
+ id: string;
1696
+ }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
1697
+ interface PolyTetrahedronProps extends ShapeMeshProps, TetrahedronPolygonsOptions {
1698
+ }
1699
+ declare const PolyTetrahedron: vue.DefineComponent<vue.ExtractPropTypes<{
1700
+ size: {
1701
+ type: NumberConstructor;
1702
+ default: undefined;
1703
+ };
1704
+ color: {
1705
+ type: StringConstructor;
1706
+ default: undefined;
1707
+ };
1708
+ position: {
1709
+ type: PropType<Vec3>;
1710
+ default: undefined;
1711
+ };
1712
+ scale: {
1713
+ type: PropType<number | Vec3>;
1714
+ default: undefined;
1715
+ };
1716
+ rotation: {
1717
+ type: PropType<Vec3>;
1718
+ default: undefined;
1719
+ };
1720
+ autoCenter: {
1721
+ type: BooleanConstructor;
1722
+ default: boolean;
1723
+ };
1724
+ id: {
1725
+ type: StringConstructor;
1726
+ default: undefined;
1727
+ };
1728
+ }>, () => vue.VNode<vue.RendererNode, vue.RendererElement, {
1729
+ [key: string]: any;
1730
+ }>, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
1731
+ size: {
1732
+ type: NumberConstructor;
1733
+ default: undefined;
1734
+ };
1735
+ color: {
1736
+ type: StringConstructor;
1737
+ default: undefined;
1738
+ };
1739
+ position: {
1740
+ type: PropType<Vec3>;
1741
+ default: undefined;
1742
+ };
1743
+ scale: {
1744
+ type: PropType<number | Vec3>;
1745
+ default: undefined;
1746
+ };
1747
+ rotation: {
1748
+ type: PropType<Vec3>;
1749
+ default: undefined;
1750
+ };
1751
+ autoCenter: {
1752
+ type: BooleanConstructor;
1753
+ default: boolean;
1754
+ };
1755
+ id: {
1756
+ type: StringConstructor;
1757
+ default: undefined;
1758
+ };
1759
+ }>> & Readonly<{}>, {
1760
+ size: number;
1761
+ color: string;
1762
+ position: Vec3;
1763
+ scale: number | Vec3;
1764
+ autoCenter: boolean;
1765
+ rotation: Vec3;
1766
+ id: string;
1767
+ }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
1768
+ interface PolyIcosahedronProps extends ShapeMeshProps, IcosahedronPolygonsOptions {
1769
+ }
1770
+ declare const PolyIcosahedron: vue.DefineComponent<vue.ExtractPropTypes<{
1771
+ size: {
1772
+ type: NumberConstructor;
1773
+ default: undefined;
1774
+ };
1775
+ color: {
1776
+ type: StringConstructor;
1777
+ default: undefined;
1778
+ };
1779
+ position: {
1780
+ type: PropType<Vec3>;
1781
+ default: undefined;
1782
+ };
1783
+ scale: {
1784
+ type: PropType<number | Vec3>;
1785
+ default: undefined;
1786
+ };
1787
+ rotation: {
1788
+ type: PropType<Vec3>;
1789
+ default: undefined;
1790
+ };
1791
+ autoCenter: {
1792
+ type: BooleanConstructor;
1793
+ default: boolean;
1794
+ };
1795
+ id: {
1796
+ type: StringConstructor;
1797
+ default: undefined;
1798
+ };
1799
+ }>, () => vue.VNode<vue.RendererNode, vue.RendererElement, {
1800
+ [key: string]: any;
1801
+ }>, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
1802
+ size: {
1803
+ type: NumberConstructor;
1804
+ default: undefined;
1805
+ };
1806
+ color: {
1807
+ type: StringConstructor;
1808
+ default: undefined;
1809
+ };
1810
+ position: {
1811
+ type: PropType<Vec3>;
1812
+ default: undefined;
1813
+ };
1814
+ scale: {
1815
+ type: PropType<number | Vec3>;
1816
+ default: undefined;
1817
+ };
1818
+ rotation: {
1819
+ type: PropType<Vec3>;
1820
+ default: undefined;
1821
+ };
1822
+ autoCenter: {
1823
+ type: BooleanConstructor;
1824
+ default: boolean;
1825
+ };
1826
+ id: {
1827
+ type: StringConstructor;
1828
+ default: undefined;
1829
+ };
1830
+ }>> & Readonly<{}>, {
1831
+ size: number;
1832
+ color: string;
1833
+ position: Vec3;
1834
+ scale: number | Vec3;
1835
+ autoCenter: boolean;
1836
+ rotation: Vec3;
1837
+ id: string;
1838
+ }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
1839
+ interface PolyDodecahedronProps extends ShapeMeshProps, DodecahedronPolygonsOptions {
1840
+ }
1841
+ declare const PolyDodecahedron: vue.DefineComponent<vue.ExtractPropTypes<{
1842
+ size: {
1843
+ type: NumberConstructor;
1844
+ default: undefined;
1845
+ };
1846
+ color: {
1847
+ type: StringConstructor;
1848
+ default: undefined;
1849
+ };
1850
+ position: {
1851
+ type: PropType<Vec3>;
1852
+ default: undefined;
1853
+ };
1854
+ scale: {
1855
+ type: PropType<number | Vec3>;
1856
+ default: undefined;
1857
+ };
1858
+ rotation: {
1859
+ type: PropType<Vec3>;
1860
+ default: undefined;
1861
+ };
1862
+ autoCenter: {
1863
+ type: BooleanConstructor;
1864
+ default: boolean;
1865
+ };
1866
+ id: {
1867
+ type: StringConstructor;
1868
+ default: undefined;
1869
+ };
1870
+ }>, () => vue.VNode<vue.RendererNode, vue.RendererElement, {
1871
+ [key: string]: any;
1872
+ }>, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
1873
+ size: {
1874
+ type: NumberConstructor;
1875
+ default: undefined;
1876
+ };
1877
+ color: {
1878
+ type: StringConstructor;
1879
+ default: undefined;
1880
+ };
1881
+ position: {
1882
+ type: PropType<Vec3>;
1883
+ default: undefined;
1884
+ };
1885
+ scale: {
1886
+ type: PropType<number | Vec3>;
1887
+ default: undefined;
1888
+ };
1889
+ rotation: {
1890
+ type: PropType<Vec3>;
1891
+ default: undefined;
1892
+ };
1893
+ autoCenter: {
1894
+ type: BooleanConstructor;
1895
+ default: boolean;
1896
+ };
1897
+ id: {
1898
+ type: StringConstructor;
1899
+ default: undefined;
1900
+ };
1901
+ }>> & Readonly<{}>, {
1902
+ size: number;
1903
+ color: string;
1904
+ position: Vec3;
1905
+ scale: number | Vec3;
1906
+ autoCenter: boolean;
1907
+ rotation: Vec3;
1908
+ id: string;
1909
+ }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
1910
+ interface PolySphereProps extends ShapeMeshProps, SpherePolygonsOptions {
1911
+ }
1912
+ declare const PolySphere: vue.DefineComponent<vue.ExtractPropTypes<{
1913
+ radius: {
1914
+ type: NumberConstructor;
1915
+ default: undefined;
1916
+ };
1917
+ subdivisions: {
1918
+ type: NumberConstructor;
1919
+ default: undefined;
1920
+ };
1921
+ color: {
1922
+ type: StringConstructor;
1923
+ default: undefined;
1924
+ };
1925
+ position: {
1926
+ type: PropType<Vec3>;
1927
+ default: undefined;
1928
+ };
1929
+ scale: {
1930
+ type: PropType<number | Vec3>;
1931
+ default: undefined;
1932
+ };
1933
+ rotation: {
1934
+ type: PropType<Vec3>;
1935
+ default: undefined;
1936
+ };
1937
+ autoCenter: {
1938
+ type: BooleanConstructor;
1939
+ default: boolean;
1940
+ };
1941
+ id: {
1942
+ type: StringConstructor;
1943
+ default: undefined;
1944
+ };
1945
+ }>, () => vue.VNode<vue.RendererNode, vue.RendererElement, {
1946
+ [key: string]: any;
1947
+ }>, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
1948
+ radius: {
1949
+ type: NumberConstructor;
1950
+ default: undefined;
1951
+ };
1952
+ subdivisions: {
1953
+ type: NumberConstructor;
1954
+ default: undefined;
1955
+ };
1956
+ color: {
1957
+ type: StringConstructor;
1958
+ default: undefined;
1959
+ };
1960
+ position: {
1961
+ type: PropType<Vec3>;
1962
+ default: undefined;
1963
+ };
1964
+ scale: {
1965
+ type: PropType<number | Vec3>;
1966
+ default: undefined;
1967
+ };
1968
+ rotation: {
1969
+ type: PropType<Vec3>;
1970
+ default: undefined;
1971
+ };
1972
+ autoCenter: {
1973
+ type: BooleanConstructor;
1974
+ default: boolean;
1975
+ };
1976
+ id: {
1977
+ type: StringConstructor;
1978
+ default: undefined;
1979
+ };
1980
+ }>> & Readonly<{}>, {
1981
+ color: string;
1982
+ position: Vec3;
1983
+ scale: number | Vec3;
1984
+ autoCenter: boolean;
1985
+ rotation: Vec3;
1986
+ id: string;
1987
+ radius: number;
1988
+ subdivisions: number;
1989
+ }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
1990
+ interface PolyCylinderProps extends ShapeMeshProps, CylinderPolygonsOptions {
1991
+ }
1992
+ declare const PolyCylinder: vue.DefineComponent<vue.ExtractPropTypes<{
1993
+ radius: {
1994
+ type: NumberConstructor;
1995
+ default: undefined;
1996
+ };
1997
+ radiusTop: {
1998
+ type: NumberConstructor;
1999
+ default: undefined;
2000
+ };
2001
+ height: {
2002
+ type: NumberConstructor;
2003
+ default: undefined;
2004
+ };
2005
+ radialSegments: {
2006
+ type: NumberConstructor;
2007
+ default: undefined;
2008
+ };
2009
+ color: {
2010
+ type: StringConstructor;
2011
+ default: undefined;
2012
+ };
2013
+ position: {
2014
+ type: PropType<Vec3>;
2015
+ default: undefined;
2016
+ };
2017
+ scale: {
2018
+ type: PropType<number | Vec3>;
2019
+ default: undefined;
2020
+ };
2021
+ rotation: {
2022
+ type: PropType<Vec3>;
2023
+ default: undefined;
2024
+ };
2025
+ autoCenter: {
2026
+ type: BooleanConstructor;
2027
+ default: boolean;
2028
+ };
2029
+ id: {
2030
+ type: StringConstructor;
2031
+ default: undefined;
2032
+ };
2033
+ }>, () => vue.VNode<vue.RendererNode, vue.RendererElement, {
2034
+ [key: string]: any;
2035
+ }>, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
2036
+ radius: {
2037
+ type: NumberConstructor;
2038
+ default: undefined;
2039
+ };
2040
+ radiusTop: {
2041
+ type: NumberConstructor;
2042
+ default: undefined;
2043
+ };
2044
+ height: {
2045
+ type: NumberConstructor;
2046
+ default: undefined;
2047
+ };
2048
+ radialSegments: {
2049
+ type: NumberConstructor;
2050
+ default: undefined;
2051
+ };
2052
+ color: {
2053
+ type: StringConstructor;
2054
+ default: undefined;
2055
+ };
2056
+ position: {
2057
+ type: PropType<Vec3>;
2058
+ default: undefined;
2059
+ };
2060
+ scale: {
2061
+ type: PropType<number | Vec3>;
2062
+ default: undefined;
2063
+ };
2064
+ rotation: {
2065
+ type: PropType<Vec3>;
2066
+ default: undefined;
2067
+ };
2068
+ autoCenter: {
2069
+ type: BooleanConstructor;
2070
+ default: boolean;
2071
+ };
2072
+ id: {
2073
+ type: StringConstructor;
2074
+ default: undefined;
2075
+ };
2076
+ }>> & Readonly<{}>, {
2077
+ height: number;
2078
+ color: string;
2079
+ position: Vec3;
2080
+ scale: number | Vec3;
2081
+ autoCenter: boolean;
2082
+ rotation: Vec3;
2083
+ id: string;
2084
+ radius: number;
2085
+ radiusTop: number;
2086
+ radialSegments: number;
2087
+ }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
2088
+ interface PolyConeProps extends ShapeMeshProps, ConePolygonsOptions {
2089
+ }
2090
+ declare const PolyCone: vue.DefineComponent<vue.ExtractPropTypes<{
2091
+ radius: {
2092
+ type: NumberConstructor;
2093
+ default: undefined;
2094
+ };
2095
+ height: {
2096
+ type: NumberConstructor;
2097
+ default: undefined;
2098
+ };
2099
+ radialSegments: {
2100
+ type: NumberConstructor;
2101
+ default: undefined;
2102
+ };
2103
+ color: {
2104
+ type: StringConstructor;
2105
+ default: undefined;
2106
+ };
2107
+ position: {
2108
+ type: PropType<Vec3>;
2109
+ default: undefined;
2110
+ };
2111
+ scale: {
2112
+ type: PropType<number | Vec3>;
2113
+ default: undefined;
2114
+ };
2115
+ rotation: {
2116
+ type: PropType<Vec3>;
2117
+ default: undefined;
2118
+ };
2119
+ autoCenter: {
2120
+ type: BooleanConstructor;
2121
+ default: boolean;
2122
+ };
2123
+ id: {
2124
+ type: StringConstructor;
2125
+ default: undefined;
2126
+ };
2127
+ }>, () => vue.VNode<vue.RendererNode, vue.RendererElement, {
2128
+ [key: string]: any;
2129
+ }>, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
2130
+ radius: {
2131
+ type: NumberConstructor;
2132
+ default: undefined;
2133
+ };
2134
+ height: {
2135
+ type: NumberConstructor;
2136
+ default: undefined;
2137
+ };
2138
+ radialSegments: {
2139
+ type: NumberConstructor;
2140
+ default: undefined;
2141
+ };
2142
+ color: {
2143
+ type: StringConstructor;
2144
+ default: undefined;
2145
+ };
2146
+ position: {
2147
+ type: PropType<Vec3>;
2148
+ default: undefined;
2149
+ };
2150
+ scale: {
2151
+ type: PropType<number | Vec3>;
2152
+ default: undefined;
2153
+ };
2154
+ rotation: {
2155
+ type: PropType<Vec3>;
2156
+ default: undefined;
2157
+ };
2158
+ autoCenter: {
2159
+ type: BooleanConstructor;
2160
+ default: boolean;
2161
+ };
2162
+ id: {
2163
+ type: StringConstructor;
2164
+ default: undefined;
2165
+ };
2166
+ }>> & Readonly<{}>, {
2167
+ height: number;
2168
+ color: string;
2169
+ position: Vec3;
2170
+ scale: number | Vec3;
2171
+ autoCenter: boolean;
2172
+ rotation: Vec3;
2173
+ id: string;
2174
+ radius: number;
2175
+ radialSegments: number;
2176
+ }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
2177
+ interface PolyTorusProps extends ShapeMeshProps, TorusPolygonsOptions {
2178
+ }
2179
+ declare const PolyTorus: vue.DefineComponent<vue.ExtractPropTypes<{
2180
+ radius: {
2181
+ type: NumberConstructor;
2182
+ default: undefined;
2183
+ };
2184
+ tube: {
2185
+ type: NumberConstructor;
2186
+ default: undefined;
2187
+ };
2188
+ radialSegments: {
2189
+ type: NumberConstructor;
2190
+ default: undefined;
2191
+ };
2192
+ tubularSegments: {
2193
+ type: NumberConstructor;
2194
+ default: undefined;
2195
+ };
2196
+ color: {
2197
+ type: StringConstructor;
2198
+ default: undefined;
2199
+ };
2200
+ position: {
2201
+ type: PropType<Vec3>;
2202
+ default: undefined;
2203
+ };
2204
+ scale: {
2205
+ type: PropType<number | Vec3>;
2206
+ default: undefined;
2207
+ };
2208
+ rotation: {
2209
+ type: PropType<Vec3>;
2210
+ default: undefined;
2211
+ };
2212
+ autoCenter: {
2213
+ type: BooleanConstructor;
2214
+ default: boolean;
2215
+ };
2216
+ id: {
2217
+ type: StringConstructor;
2218
+ default: undefined;
2219
+ };
2220
+ }>, () => vue.VNode<vue.RendererNode, vue.RendererElement, {
2221
+ [key: string]: any;
2222
+ }>, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
2223
+ radius: {
2224
+ type: NumberConstructor;
2225
+ default: undefined;
2226
+ };
2227
+ tube: {
2228
+ type: NumberConstructor;
2229
+ default: undefined;
2230
+ };
2231
+ radialSegments: {
2232
+ type: NumberConstructor;
2233
+ default: undefined;
2234
+ };
2235
+ tubularSegments: {
2236
+ type: NumberConstructor;
2237
+ default: undefined;
2238
+ };
2239
+ color: {
2240
+ type: StringConstructor;
2241
+ default: undefined;
2242
+ };
2243
+ position: {
2244
+ type: PropType<Vec3>;
2245
+ default: undefined;
2246
+ };
2247
+ scale: {
2248
+ type: PropType<number | Vec3>;
2249
+ default: undefined;
2250
+ };
2251
+ rotation: {
2252
+ type: PropType<Vec3>;
2253
+ default: undefined;
2254
+ };
2255
+ autoCenter: {
2256
+ type: BooleanConstructor;
2257
+ default: boolean;
2258
+ };
2259
+ id: {
2260
+ type: StringConstructor;
2261
+ default: undefined;
2262
+ };
2263
+ }>> & Readonly<{}>, {
2264
+ color: string;
2265
+ position: Vec3;
2266
+ scale: number | Vec3;
2267
+ autoCenter: boolean;
2268
+ rotation: Vec3;
2269
+ id: string;
2270
+ radius: number;
2271
+ radialSegments: number;
2272
+ tube: number;
2273
+ tubularSegments: number;
2274
+ }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
2275
+
2276
+ interface PolyControlsAnimateOptions {
2277
+ speed?: number;
2278
+ axis?: "x" | "y";
2279
+ pauseOnInteraction?: boolean;
2280
+ }
2281
+ interface PolyOrbitControlsCamera {
2282
+ rotX: number;
2283
+ rotY: number;
2284
+ zoom: number;
2285
+ target: Vec3;
2286
+ distance: number;
2287
+ }
2288
+ interface PolyOrbitControlsProps {
2289
+ drag?: boolean;
2290
+ wheel?: boolean;
2291
+ /** When true, wheel changes camera pull-back (distance) instead of zoom scale. */
2292
+ dolly?: boolean;
2293
+ invert?: boolean | number;
2294
+ /** Minimum zoom multiplier (zoom mode). Default 0.1. */
2295
+ minZoom?: number;
2296
+ /** Maximum zoom multiplier (zoom mode). Default 10. */
2297
+ maxZoom?: number;
2298
+ /** Minimum camera pull-back in CSS pixels when dolly=true. Default 0. */
2299
+ minDistance?: number;
2300
+ /** Maximum camera pull-back in CSS pixels when dolly=true. Default 5000. */
2301
+ maxDistance?: number;
2302
+ animate?: false | PolyControlsAnimateOptions;
2303
+ }
2304
+ declare const PolyOrbitControls: vue.DefineComponent<vue.ExtractPropTypes<{
2305
+ drag: {
2306
+ type: BooleanConstructor;
1043
2307
  default: boolean;
1044
2308
  };
1045
2309
  wheel: {
@@ -1775,12 +3039,35 @@ declare const PolyDirectionalLightHelper: vue.DefineComponent<vue.ExtractPropTyp
1775
3039
  }>> & Readonly<{}>, {
1776
3040
  target: Vec3;
1777
3041
  distance: number;
1778
- color: string;
1779
3042
  size: number;
3043
+ color: string;
1780
3044
  }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
1781
3045
 
1782
3046
  declare function injectPolyBaseStyles(doc?: Document): void;
1783
3047
 
3048
+ interface PolyRenderSurfaceLeafCounts {
3049
+ quad: number;
3050
+ clippedSolid: number;
3051
+ atlas: number;
3052
+ stableTriangle: number;
3053
+ }
3054
+ interface PolyRenderStats {
3055
+ polygonCount: number;
3056
+ mountedPolygonLeafCount: number;
3057
+ shadowLeafCount: number;
3058
+ surfaceLeafCounts: PolyRenderSurfaceLeafCounts;
3059
+ bucketCount: number;
3060
+ }
3061
+ interface PolyRenderStatsOptions {
3062
+ polygonCount?: number;
3063
+ /**
3064
+ * Optional subtree selector for diagnostics that only want model leaves and
3065
+ * not helpers/floors/gizmos sharing the same scene root.
3066
+ */
3067
+ scopeSelector?: string;
3068
+ }
3069
+ declare function collectPolyRenderStats(root: ParentNode | null | undefined, optionsOrPolygonCount?: number | PolyRenderStatsOptions): PolyRenderStats;
3070
+
1784
3071
  interface UsePolyAnimationResultVue {
1785
3072
  /** Attach to a mesh handle when not passing `root` directly. */
1786
3073
  ref: Ref<PolyAnimationTarget | null>;
@@ -1798,4 +3085,4 @@ interface UsePolyAnimationResultVue {
1798
3085
  }
1799
3086
  declare function usePolyAnimation(clips: MaybeRef<PolyAnimationClip[] | undefined>, controller: MaybeRef<ParseAnimationController | undefined>, root?: MaybeRef<PolyAnimationTarget | null | undefined>): UsePolyAnimationResultVue;
1800
3087
 
1801
- export { type InteractionProps, Poly, PolyAxesHelper, type PolyAxesHelperProps, PolyPerspectiveCamera as PolyCamera, PolyCameraContextKey, type PolyCameraContextValue, type PolyPerspectiveCameraProps as PolyCameraProps, type PolyContext, type PolyControlsAnimateOptions, PolyDirectionalLightHelper, type PolyDirectionalLightHelperProps, type PolyEventHandler, PolyFirstPersonControls, type PolyFirstPersonControlsHandle, type PolyFirstPersonControlsOptions, PolyGround, type PolyGroundProps, PolyMapControls, type PolyMapControlsCamera, type PolyMapControlsProps, PolyMesh, type PolyMeshHandle, type PolyMeshProps, type PolyMouseEvent, PolyOrbitControls, type PolyOrbitControlsCamera, type PolyOrbitControlsProps, PolyOrthographicCamera, type PolyOrthographicCameraProps, PolyPerspectiveCamera, type PolyPerspectiveCameraProps, type PolyPointerEvent, type PolyProps, type PolyRenderStrategiesOption, type PolyRenderStrategy, PolyScene, type PolySceneProps, PolySelect, type PolySelectProps, type PolySelectionApi, PolySelectionContextKey, PolyTransformControls, type PolyTransformControlsObject, type PolyTransformControlsObjectChangeEvent, type PolyTransformControlsProps, type PolyWheelEvent, type UseCameraOptions, type UseCameraResult, type UseMeshOptions, type UseMeshResult, type UsePolyAnimationResultVue, type UseSceneContextOptions, type UseSceneContextResult, findMeshUnderPoint, findPolyMeshHandle, injectPolyBaseStyles, pointInMeshElement, usePolyAnimation, usePolyCamera, usePolyMaterial, usePolyMesh, usePolySceneContext, usePolySelect, usePolySelectionApi };
3088
+ export { type InteractionProps, Poly, PolyAxesHelper, type PolyAxesHelperProps, PolyBox, type PolyBoxProps, PolyOrthographicCamera as PolyCamera, PolyCameraContextKey, type PolyCameraContextValue, type PolyOrthographicCameraProps as PolyCameraProps, PolyCone, type PolyConeProps, type PolyContext, type PolyControlsAnimateOptions, PolyCylinder, type PolyCylinderProps, PolyDirectionalLightHelper, type PolyDirectionalLightHelperProps, PolyDodecahedron, type PolyDodecahedronProps, type PolyEventHandler, PolyFirstPersonControls, type PolyFirstPersonControlsHandle, type PolyFirstPersonControlsOptions, PolyGround, type PolyGroundProps, PolyIcosahedron, type PolyIcosahedronProps, PolyIframe, type PolyIframeProps, PolyMapControls, type PolyMapControlsCamera, type PolyMapControlsProps, PolyMesh, type PolyMeshHandle, type PolyMeshProps, type PolyMouseEvent, PolyOctahedron, type PolyOctahedronProps, PolyOrbitControls, type PolyOrbitControlsCamera, type PolyOrbitControlsProps, PolyOrthographicCamera, type PolyOrthographicCameraProps, PolyPerspectiveCamera, type PolyPerspectiveCameraProps, PolyPlane, type PolyPlaneProps, type PolyPointerEvent, type PolyProps, type PolyRenderStats, type PolyRenderStatsOptions, type PolyRenderSurfaceLeafCounts, PolyRing, type PolyRingProps, PolyScene, type PolySceneProps, PolySelect, type PolySelectProps, type PolySelectionApi, PolySelectionContextKey, PolySphere, type PolySphereProps, PolyTetrahedron, type PolyTetrahedronProps, PolyTorus, type PolyTorusProps, PolyTransformControls, type PolyTransformControlsObject, type PolyTransformControlsObjectChangeEvent, type PolyTransformControlsProps, type PolyWheelEvent, type UseCameraOptions, type UseCameraResult, type UseMeshOptions, type UseMeshResult, type UsePolyAnimationResultVue, type UseSceneContextOptions, type UseSceneContextResult, collectPolyRenderStats, findMeshUnderPoint, findPolyMeshHandle, injectPolyBaseStyles, pointInMeshElement, usePolyAnimation, usePolyCamera, usePolyMaterial, usePolyMesh, usePolySceneContext, usePolySelect, usePolySelectionApi };