@pascal-app/viewer 1.0.6 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (238) hide show
  1. package/README.md +54 -21
  2. package/dist/components/viewer/daylight-atmosphere.d.ts +9 -0
  3. package/dist/components/viewer/daylight-atmosphere.d.ts.map +1 -0
  4. package/dist/components/viewer/daylight-atmosphere.js +315 -0
  5. package/dist/components/viewer/drone-controller.d.ts +15 -0
  6. package/dist/components/viewer/drone-controller.d.ts.map +1 -0
  7. package/dist/components/viewer/drone-controller.js +194 -0
  8. package/dist/components/viewer/glb-interactive.d.ts +4 -18
  9. package/dist/components/viewer/glb-interactive.d.ts.map +1 -1
  10. package/dist/components/viewer/glb-interactive.js +32 -268
  11. package/dist/components/viewer/glb-replace-instances.d.ts +6 -3
  12. package/dist/components/viewer/glb-replace-instances.d.ts.map +1 -1
  13. package/dist/components/viewer/glb-replace-instances.js +5 -4
  14. package/dist/components/viewer/glb-scene-motion.d.ts +8 -0
  15. package/dist/components/viewer/glb-scene-motion.d.ts.map +1 -0
  16. package/dist/components/viewer/glb-scene-motion.js +57 -0
  17. package/dist/components/viewer/glb-scene.d.ts +5 -1
  18. package/dist/components/viewer/glb-scene.d.ts.map +1 -1
  19. package/dist/components/viewer/glb-scene.js +290 -49
  20. package/dist/components/viewer/glb-selection-callout.d.ts +17 -0
  21. package/dist/components/viewer/glb-selection-callout.d.ts.map +1 -0
  22. package/dist/components/viewer/glb-selection-callout.js +54 -0
  23. package/dist/components/viewer/glb-walkthrough-controller.d.ts.map +1 -1
  24. package/dist/components/viewer/glb-walkthrough-controller.js +6 -3
  25. package/dist/components/viewer/index.d.ts +5 -0
  26. package/dist/components/viewer/index.d.ts.map +1 -1
  27. package/dist/components/viewer/index.js +38 -10
  28. package/dist/components/viewer/lights.d.ts.map +1 -1
  29. package/dist/components/viewer/lights.js +192 -5
  30. package/dist/components/viewer/post-processing.d.ts.map +1 -1
  31. package/dist/components/viewer/post-processing.js +150 -94
  32. package/dist/components/viewer/registered-systems.d.ts.map +1 -1
  33. package/dist/components/viewer/registered-systems.js +2 -2
  34. package/dist/components/viewer/scene-environment.js +4 -5
  35. package/dist/components/viewer/selection-callout.d.ts +51 -0
  36. package/dist/components/viewer/selection-callout.d.ts.map +1 -0
  37. package/dist/components/viewer/selection-callout.js +197 -0
  38. package/dist/components/viewer/unsupported-gpu-fallback.d.ts.map +1 -1
  39. package/dist/components/viewer/unsupported-gpu-fallback.js +21 -1
  40. package/dist/components/viewer/use-daylight-rooms.d.ts +13 -0
  41. package/dist/components/viewer/use-daylight-rooms.d.ts.map +1 -0
  42. package/dist/components/viewer/use-daylight-rooms.js +278 -0
  43. package/dist/components/viewer/viewer-camera.d.ts.map +1 -1
  44. package/dist/components/viewer/viewer-camera.js +12 -1
  45. package/dist/hooks/use-gltf-ktx2.d.ts.map +1 -1
  46. package/dist/hooks/use-gltf-ktx2.js +2 -1
  47. package/dist/index.d.ts +26 -8
  48. package/dist/index.d.ts.map +1 -1
  49. package/dist/index.js +28 -8
  50. package/dist/lib/asset-url.d.ts +0 -1
  51. package/dist/lib/asset-url.d.ts.map +1 -1
  52. package/dist/lib/asset-url.js +3 -3
  53. package/dist/lib/daylight/ground.d.ts +21 -0
  54. package/dist/lib/daylight/ground.d.ts.map +1 -0
  55. package/dist/lib/daylight/ground.js +53 -0
  56. package/dist/lib/daylight/location.d.ts +32 -0
  57. package/dist/lib/daylight/location.d.ts.map +1 -0
  58. package/dist/lib/daylight/location.js +74 -0
  59. package/dist/lib/daylight/look.d.ts +33 -0
  60. package/dist/lib/daylight/look.d.ts.map +1 -0
  61. package/dist/lib/daylight/look.js +13 -0
  62. package/dist/lib/daylight/material-hooks.d.ts +2 -0
  63. package/dist/lib/daylight/material-hooks.d.ts.map +1 -0
  64. package/dist/lib/daylight/material-hooks.js +150 -0
  65. package/dist/lib/daylight/room-context.d.ts +12 -0
  66. package/dist/lib/daylight/room-context.d.ts.map +1 -0
  67. package/dist/lib/daylight/room-context.js +54 -0
  68. package/dist/lib/daylight/room-map.d.ts +124 -0
  69. package/dist/lib/daylight/room-map.d.ts.map +1 -0
  70. package/dist/lib/daylight/room-map.js +630 -0
  71. package/dist/lib/daylight/room-scene.d.ts +56 -0
  72. package/dist/lib/daylight/room-scene.d.ts.map +1 -0
  73. package/dist/lib/daylight/room-scene.js +391 -0
  74. package/dist/lib/daylight/rooms.d.ts +292 -0
  75. package/dist/lib/daylight/rooms.d.ts.map +1 -0
  76. package/dist/lib/daylight/rooms.js +1268 -0
  77. package/dist/lib/daylight/runtime.d.ts +33 -0
  78. package/dist/lib/daylight/runtime.d.ts.map +1 -0
  79. package/dist/lib/daylight/runtime.js +42 -0
  80. package/dist/lib/daylight/sky.d.ts +26 -0
  81. package/dist/lib/daylight/sky.d.ts.map +1 -0
  82. package/dist/lib/daylight/sky.js +217 -0
  83. package/dist/lib/daylight/solar.d.ts +46 -0
  84. package/dist/lib/daylight/solar.d.ts.map +1 -0
  85. package/dist/lib/daylight/solar.js +156 -0
  86. package/dist/lib/device-tier.d.ts +29 -0
  87. package/dist/lib/device-tier.d.ts.map +1 -0
  88. package/dist/lib/device-tier.js +71 -0
  89. package/dist/lib/dispose-object3d.d.ts.map +1 -1
  90. package/dist/lib/dispose-object3d.js +4 -2
  91. package/dist/lib/drone-flight.d.ts +44 -0
  92. package/dist/lib/drone-flight.d.ts.map +1 -0
  93. package/dist/lib/drone-flight.js +121 -0
  94. package/dist/lib/editor-highlight.d.ts +16 -0
  95. package/dist/lib/editor-highlight.d.ts.map +1 -0
  96. package/dist/lib/editor-highlight.js +33 -0
  97. package/dist/lib/foundation-materials.d.ts.map +1 -1
  98. package/dist/lib/foundation-materials.js +2 -4
  99. package/dist/lib/glb-merge.d.ts +23 -0
  100. package/dist/lib/glb-merge.d.ts.map +1 -0
  101. package/dist/lib/glb-merge.js +184 -0
  102. package/dist/lib/hardware-geometry.d.ts +21 -0
  103. package/dist/lib/hardware-geometry.d.ts.map +1 -0
  104. package/dist/lib/hardware-geometry.js +283 -0
  105. package/dist/lib/ktx2-loader.d.ts.map +1 -1
  106. package/dist/lib/ktx2-loader.js +2 -1
  107. package/dist/lib/layer-pass.d.ts +2 -0
  108. package/dist/lib/layer-pass.d.ts.map +1 -1
  109. package/dist/lib/layer-pass.js +20 -0
  110. package/dist/lib/materials.d.ts.map +1 -1
  111. package/dist/lib/materials.js +50 -23
  112. package/dist/lib/measurement-label.d.ts +4 -0
  113. package/dist/lib/measurement-label.d.ts.map +1 -0
  114. package/dist/lib/measurement-label.js +54 -0
  115. package/dist/lib/measurement-presentation.d.ts +5 -0
  116. package/dist/lib/measurement-presentation.d.ts.map +1 -0
  117. package/dist/lib/measurement-presentation.js +8 -0
  118. package/dist/lib/merged-outline-node.d.ts.map +1 -1
  119. package/dist/lib/merged-outline-node.js +7 -1
  120. package/dist/lib/occlusion-culler.d.ts +34 -0
  121. package/dist/lib/occlusion-culler.d.ts.map +1 -0
  122. package/dist/lib/occlusion-culler.js +698 -0
  123. package/dist/lib/pointer-events.d.ts.map +1 -1
  124. package/dist/lib/pointer-events.js +3 -3
  125. package/dist/lib/post-processing-resources.d.ts +4 -0
  126. package/dist/lib/post-processing-resources.d.ts.map +1 -1
  127. package/dist/lib/post-processing-resources.js +5 -0
  128. package/dist/lib/readback-rows.d.ts +14 -0
  129. package/dist/lib/readback-rows.d.ts.map +1 -0
  130. package/dist/lib/readback-rows.js +31 -0
  131. package/dist/lib/reveal-pose.d.ts.map +1 -1
  132. package/dist/lib/reveal-pose.js +3 -0
  133. package/dist/lib/scene-matrices.d.ts +12 -0
  134. package/dist/lib/scene-matrices.d.ts.map +1 -0
  135. package/dist/lib/scene-matrices.js +287 -0
  136. package/dist/lib/scene-pass-mrt.d.ts +5 -2
  137. package/dist/lib/scene-pass-mrt.d.ts.map +1 -1
  138. package/dist/lib/scene-pass-mrt.js +7 -2
  139. package/dist/lib/scene-themes.d.ts +0 -2
  140. package/dist/lib/scene-themes.d.ts.map +1 -1
  141. package/dist/lib/scene-themes.js +0 -2
  142. package/dist/lib/scene-visibility.d.ts +2 -0
  143. package/dist/lib/scene-visibility.d.ts.map +1 -1
  144. package/dist/lib/scene-visibility.js +12 -3
  145. package/dist/lib/site-surfaces.d.ts +1 -8
  146. package/dist/lib/site-surfaces.d.ts.map +1 -1
  147. package/dist/lib/site-surfaces.js +0 -19
  148. package/dist/lib/snapshot-pipeline.d.ts.map +1 -1
  149. package/dist/lib/snapshot-pipeline.js +24 -40
  150. package/dist/lib/texture-reference.d.ts.map +1 -1
  151. package/dist/lib/texture-reference.js +13 -10
  152. package/dist/lib/underground-ambiance.d.ts +0 -2
  153. package/dist/lib/underground-ambiance.d.ts.map +1 -1
  154. package/dist/lib/underground-ambiance.js +0 -2
  155. package/dist/lib/viewer-config.d.ts +21 -0
  156. package/dist/lib/viewer-config.d.ts.map +1 -0
  157. package/dist/lib/viewer-config.js +21 -0
  158. package/dist/lib/viewer-preference-storage.d.ts +7 -0
  159. package/dist/lib/viewer-preference-storage.d.ts.map +1 -0
  160. package/dist/lib/viewer-preference-storage.js +23 -0
  161. package/dist/store/use-item-light-pool.d.ts +3 -6
  162. package/dist/store/use-item-light-pool.d.ts.map +1 -1
  163. package/dist/store/use-item-light-pool.js +12 -0
  164. package/dist/store/use-viewer.d.ts +62 -59
  165. package/dist/store/use-viewer.d.ts.map +1 -1
  166. package/dist/store/use-viewer.js +106 -19
  167. package/dist/systems/ceiling/ceiling-system.d.ts +5 -0
  168. package/dist/systems/ceiling/ceiling-system.d.ts.map +1 -1
  169. package/dist/systems/ceiling/ceiling-system.js +11 -1
  170. package/dist/systems/door/door-system.d.ts.map +1 -1
  171. package/dist/systems/door/door-system.js +501 -145
  172. package/dist/systems/door/leaf-profile.d.ts +11 -0
  173. package/dist/systems/door/leaf-profile.d.ts.map +1 -0
  174. package/dist/systems/door/leaf-profile.js +140 -0
  175. package/dist/systems/elevator/elevator-interaction-system.d.ts +16 -2
  176. package/dist/systems/elevator/elevator-interaction-system.d.ts.map +1 -1
  177. package/dist/systems/elevator/elevator-interaction-system.js +41 -8
  178. package/dist/systems/geometry/geometry-status.d.ts +8 -0
  179. package/dist/systems/geometry/geometry-status.d.ts.map +1 -0
  180. package/dist/systems/geometry/geometry-status.js +24 -0
  181. package/dist/systems/interactive/callout-actions.d.ts +72 -0
  182. package/dist/systems/interactive/callout-actions.d.ts.map +1 -0
  183. package/dist/systems/interactive/callout-actions.js +212 -0
  184. package/dist/systems/interactive/interactive-system.d.ts +5 -1
  185. package/dist/systems/interactive/interactive-system.d.ts.map +1 -1
  186. package/dist/systems/interactive/interactive-system.js +44 -121
  187. package/dist/systems/interactive/opening-settled.d.ts +16 -0
  188. package/dist/systems/interactive/opening-settled.d.ts.map +1 -0
  189. package/dist/systems/interactive/opening-settled.js +53 -0
  190. package/dist/systems/item-light/item-light-system.d.ts.map +1 -1
  191. package/dist/systems/item-light/item-light-system.js +22 -214
  192. package/dist/systems/item-light/pooled-lights.d.ts +70 -0
  193. package/dist/systems/item-light/pooled-lights.d.ts.map +1 -0
  194. package/dist/systems/item-light/pooled-lights.js +449 -0
  195. package/dist/systems/level/level-system.d.ts.map +1 -1
  196. package/dist/systems/level/level-system.js +19 -1
  197. package/dist/systems/roof/roof-material-slots.d.ts +14 -0
  198. package/dist/systems/roof/roof-material-slots.d.ts.map +1 -0
  199. package/dist/systems/roof/roof-material-slots.js +13 -0
  200. package/dist/systems/roof/roof-materials.d.ts +25 -2
  201. package/dist/systems/roof/roof-materials.d.ts.map +1 -1
  202. package/dist/systems/roof/roof-materials.js +85 -26
  203. package/dist/systems/roof/roof-system.d.ts +34 -1
  204. package/dist/systems/roof/roof-system.d.ts.map +1 -1
  205. package/dist/systems/roof/roof-system.js +582 -168
  206. package/dist/systems/wall/opening-casing-geometry.d.ts +14 -0
  207. package/dist/systems/wall/opening-casing-geometry.d.ts.map +1 -0
  208. package/dist/systems/wall/opening-casing-geometry.js +102 -0
  209. package/dist/systems/wall/opening-cutout-geometry.d.ts +9 -0
  210. package/dist/systems/wall/opening-cutout-geometry.d.ts.map +1 -1
  211. package/dist/systems/wall/opening-cutout-geometry.js +7 -3
  212. package/dist/systems/wall/wall-materials.d.ts.map +1 -1
  213. package/dist/systems/wall/wall-materials.js +28 -35
  214. package/dist/systems/wall/wall-system.d.ts +11 -0
  215. package/dist/systems/wall/wall-system.d.ts.map +1 -1
  216. package/dist/systems/wall/wall-system.js +86 -25
  217. package/dist/systems/wall/wall-t-junctions.d.ts +15 -0
  218. package/dist/systems/wall/wall-t-junctions.d.ts.map +1 -0
  219. package/dist/systems/wall/wall-t-junctions.js +149 -0
  220. package/dist/systems/window/window-animation-system.d.ts +3 -12
  221. package/dist/systems/window/window-animation-system.d.ts.map +1 -1
  222. package/dist/systems/window/window-animation-system.js +37 -122
  223. package/dist/systems/window/window-pose.d.ts +31 -0
  224. package/dist/systems/window/window-pose.d.ts.map +1 -0
  225. package/dist/systems/window/window-pose.js +152 -0
  226. package/dist/systems/window/window-roller-shutter.d.ts +8 -0
  227. package/dist/systems/window/window-roller-shutter.d.ts.map +1 -0
  228. package/dist/systems/window/window-roller-shutter.js +64 -0
  229. package/dist/systems/window/window-system.d.ts +2 -11
  230. package/dist/systems/window/window-system.d.ts.map +1 -1
  231. package/dist/systems/window/window-system.js +470 -303
  232. package/package.json +6 -6
  233. package/dist/systems/interactive/control-widget.d.ts +0 -10
  234. package/dist/systems/interactive/control-widget.d.ts.map +0 -1
  235. package/dist/systems/interactive/control-widget.js +0 -35
  236. package/dist/systems/interactive/procedural-controls.d.ts +0 -13
  237. package/dist/systems/interactive/procedural-controls.d.ts.map +0 -1
  238. package/dist/systems/interactive/procedural-controls.js +0 -17
package/dist/index.d.ts CHANGED
@@ -1,8 +1,10 @@
1
1
  export type { SurfaceRole } from '@pascal-app/core';
2
2
  export { ErrorBoundary } from './components/error-boundary';
3
3
  export { NodeRenderer } from './components/renderers/node-renderer';
4
+ export { ParametricNodeRenderer } from './components/renderers/parametric-node-renderer';
4
5
  export { default as Viewer, pendingSceneBuildCount, type ViewerHandle, type ViewerImmersiveSession, } from './components/viewer';
5
6
  export { type BVHEcctrlApi, default as BVHEcctrl, type MovementInput, } from './components/viewer/bvh-ecctrl';
7
+ export { DroneController, type DroneControllerProps, } from './components/viewer/drone-controller';
6
8
  export { buildGlbInteractiveItems, GlbInteractive, type GlbInteractiveItem, } from './components/viewer/glb-interactive';
7
9
  export { buildGlbReferenceNodes, buildGlbReplaceNodes, } from './components/viewer/glb-reference-nodes';
8
10
  export { type GlbPickEvent, GlbScene, type GlbWalkthrough, resolveGlbPick, } from './components/viewer/glb-scene';
@@ -12,19 +14,27 @@ export { DEFAULT_HOVER_STYLES, SSGI_PARAMS, } from './components/viewer/post-pro
12
14
  export { SceneAtmosphere, type SceneAtmosphereSource, useSceneAtmosphere, } from './components/viewer/scene-atmosphere';
13
15
  export { SceneEnvironment } from './components/viewer/scene-environment';
14
16
  export { claimSceneGround, SceneGroundReplacement, useSceneGroundReplacement, } from './components/viewer/scene-ground-replacement';
17
+ export { type CalloutAction, type CalloutText, SelectionCallout, } from './components/viewer/selection-callout';
15
18
  export { applyWalkthroughCameraClipping } from './components/viewer/viewer-camera';
16
19
  export { isViewerPresentationTextureBorrowed, markViewerPresentationTextureBorrowed, registerViewerPresentation, type ViewerPresentationConfiguration, type ViewerPresentationContribution, type ViewerPresentationExportContext, type ViewerPresentationStaticExport, ViewerPresentations, viewerPresentationRegistry, } from './components/viewer/viewer-presentations';
17
20
  export { useAssetUrl } from './hooks/use-asset-url';
18
21
  export { useGLTFKTX2 } from './hooks/use-gltf-ktx2';
19
22
  export { useLibraryMaterialsVersion } from './hooks/use-library-materials-version';
20
23
  export { useNodeEvents } from './hooks/use-node-events';
21
- export { ASSETS_CDN_URL, resolveAssetUrl, resolveCdnUrl } from './lib/asset-url';
24
+ export { resolveAssetUrl, resolveCdnUrl } from './lib/asset-url';
22
25
  export { backdropColors, backdropGradient, deepSkyColor, horizonHazeColor } from './lib/backdrop';
23
26
  export { applyWorldScaleBoxUVs } from './lib/box-uv';
24
27
  export { ADDITION, Brush, computeGeometryBoundsTree, csgEvaluator, csgGeometry, csgMaterials, Evaluator, ensureRenderableGeometryAttributes, INTERSECTION, prepareBrushForCSG, SUBTRACTION, } from './lib/csg-utils';
28
+ export { createDaylightGroundMaterial, DAYLIGHT_GROUND, DAYLIGHT_PARCEL, daylightGroundColor, } from './lib/daylight/ground';
29
+ export { type LatLng, type LocationSource, requestDeviceLocation, resolveLocation, } from './lib/daylight/location';
30
+ export { type DaylightAtmosphereSource, isDaylightAtmosphere } from './lib/daylight/look';
31
+ export { WEATHER_COVER, type Weather } from './lib/daylight/sky';
32
+ export { presetInstant, type SkyPhase, skyPhase, solarClockInstant, solarClockMinutes, solarPosition, sunEvents, type TimeOfDay, } from './lib/daylight/solar';
25
33
  export type { DisplayState } from './lib/display-state';
26
34
  export { disposeObject3DResources } from './lib/dispose-object3d';
35
+ export { createDroneInput, DRONE_SLOW_MULTIPLIER, type DroneInput, type DroneLook, seedDroneLook, stepDroneFlight, turnFirstPersonLook, } from './lib/drone-flight';
27
36
  export type { EdgeMode } from './lib/edge-style';
37
+ export { markHighlight, tintEmissive } from './lib/editor-highlight';
28
38
  export { BLOCK_MASONRY, concreteMaterial, type Masonry, masonryMaterial, STRUCTURE_COLORS, } from './lib/foundation-materials';
29
39
  export { preserveGltfUnlit } from './lib/gltf-unlit';
30
40
  export { PERF_OVERLAY_ENABLED } from './lib/gpu-perf';
@@ -37,6 +47,8 @@ export { LayerPassIndex } from './lib/layer-pass';
37
47
  export { BATCHED_LAYER, GRID_LAYER, OVERLAY_LAYER, SCENE_LAYER, SHADOW_ONLY_LAYER, setSurfaceRaycastLayers, ZONE_LAYER, } from './lib/layers';
38
48
  export { holdLiveFrame } from './lib/live-frame-hold';
39
49
  export { applyMaterialPresetToMaterials, BLUEPRINT_PALETTE, baseMaterial, CLAY_PALETTE, type ColorPreset, clearMaterialCache, createDefaultMaterial, createMaterial, createMaterialFromPreset, createMaterialFromPresetRef, createSurfaceRoleMaterial, DEFAULT_CEILING_MATERIAL, DEFAULT_DOOR_MATERIAL, DEFAULT_ROOF_MATERIAL, DEFAULT_SHELF_MATERIAL, DEFAULT_SLAB_MATERIAL, DEFAULT_STAIR_MATERIAL, DEFAULT_WALL_MATERIAL, DEFAULT_WINDOW_MATERIAL, disposeMaterial, getMaterialTextureVersion, glassMaterial, MONO_PALETTE, materialCastsShadow, materialTextureLoadState, PRESET_PALETTES, type RenderShading, registerMaterialCacheCleanup, resolveMaterialRef, resolveSlotDefaultMaterial, resolveSurfaceColor, setSlotDefaultOverrides, WHITE_PALETTE, } from './lib/materials';
50
+ export * from './lib/measurement-label';
51
+ export * from './lib/measurement-presentation';
40
52
  export { mergedOutline } from './lib/merged-outline-node';
41
53
  export { createNodeTopSurfaceHeightSampler } from './lib/node-top-surface-height';
42
54
  export * from './lib/perf-actions';
@@ -52,32 +64,37 @@ export { createSceneSupportHeightSampler } from './lib/scene-support-height';
52
64
  export { getSceneTheme, SCENE_THEME_IDS, SCENE_THEMES, type SceneTheme, } from './lib/scene-themes';
53
65
  export { type HiddenReason, hideFromScene, showInScene, temporarilyShowPresentation, temporarilyShowShadowOnly, } from './lib/scene-visibility';
54
66
  export { SCRIPTED_MODEL_FLAG } from './lib/scripted-opening';
55
- export { SITE_FOUNDATION, SITE_GROUND, type SiteGroundRole, siteFoundation, siteGround, siteSurfaces, temporarilyVeilGround, } from './lib/site-surfaces';
67
+ export { SITE_GROUND, type SiteGroundRole, siteGround, siteSurfaces, temporarilyVeilGround, } from './lib/site-surfaces';
56
68
  export { createPlainSnapshotPipeline, createSnapshotPipeline, SNAPSHOT_MAX_EDGE, SNAPSHOT_MIME, SNAPSHOT_QUALITY, type SnapshotCaptureMode, type SnapshotCaptureResult, type SnapshotCropRegion, type SnapshotPipeline, type SnapshotSize, type StudioBackdrop, THUMBNAIL_HEIGHT, THUMBNAIL_WIDTH, } from './lib/snapshot-pipeline';
57
69
  export { buildTerrainPerimeterFillGeometry, type TerrainPerimeterPoint, } from './lib/terrain-perimeter-fill';
58
70
  export { getPascalTextureRef, type PascalTextureColorSpace, type PascalTextureMap, type PascalTextureRef, stampPascalTextureRef, textureMapForSlot, } from './lib/texture-reference';
59
71
  export { packNormalToRGB, unpackRGBToNormal } from './lib/tsl-compat';
60
- export { AMBIANCE_SECONDS, ambianceNow, ambianceTarget, easeAmbiance, eyeUnderTheGround, FADE_SECONDS, groundHoleOpenNode, groundHoleOpenNow, stepAmbianceProgress, temporarilyWithoutAmbiance, UNDERGROUND_RIM, UNDERGROUND_RING, undergroundAmbianceNode, } from './lib/underground-ambiance';
72
+ export { AMBIANCE_SECONDS, ambianceNow, ambianceTarget, easeAmbiance, eyeUnderTheGround, FADE_SECONDS, groundHoleOpenNode, groundHoleOpenNow, stepAmbianceProgress, temporarilyWithoutAmbiance, UNDERGROUND_RIM, undergroundAmbianceNode, } from './lib/underground-ambiance';
73
+ export { ASSETS_CDN_URL, configureViewer, getViewerConfig, type ViewerConfig, } from './lib/viewer-config';
61
74
  export { createZoneShape, createZoneWallGeometry } from './lib/zone-geometry';
62
75
  export type { LightSource } from './store/use-item-light-pool';
63
76
  export { catalogLightSource, useItemLightPool } from './store/use-item-light-pool';
64
- export { anyGroundVeiled, applyCountryUnitDefault, DEFAULT_UNDERGROUND_LOOK, default as useViewer, type GroundMode, groundVeiled, type MetricNotation, siteGroundShown, type UndergroundEdge, type UndergroundLook, type UndergroundTransition, type WallMode, } from './store/use-viewer';
65
- export { CEILING_REGION_MESH, type CeilingRegionMaterial, CeilingSystem, } from './systems/ceiling/ceiling-system';
77
+ export { applyCountryUnitDefault, DEFAULT_UNDERGROUND_LOOK, default as useViewer, type GroundMode, groundVeiled, type MetricNotation, type RenderQuality, type RenderQualityChoice, siteGroundShown, type UndergroundEdge, type UndergroundLook, type UndergroundTransition, type WalkthroughMovement, type WallMode, } from './store/use-viewer';
78
+ export { CEILING_CAP_MESH, CEILING_REGION_MESH, type CeilingRegionMaterial, CeilingSystem, } from './systems/ceiling/ceiling-system';
66
79
  export { createColumnBoxGeometry, createColumnCylinderGeometry, createColumnSphereGeometry, createColumnTorusGeometry, } from './systems/column/column-geometry';
67
80
  export { ConstructionReveal, type ConstructionRevealDriver, type ConstructionRevealLevel, type ConstructionRevealOptions, emitRevealPuff, getRetractTurn, getRevealPlanSpeed, getRevealPlanState, getRevealTurn, isNodeRevealing, isRevealAssembling, type RetractResult, type RevealCompleteEvent, type RevealEvent, type RevealFinaleEvent, type RevealGroupEvent, type RevealNodeStartEvent, type RevealPhaseEvent, type RevealPlanState, type RevealPreroll, type RevealRetractEvent, retractNodes, revealChangedNodeIds, revealClockMs, revealMotionOff, seatLiftedNow, setRevealPreroll, startConstructionReveal, subscribeRevealAssembling, subscribeRevealEvents, subscribeRevealPhases, subscribeRevealTicks, useRevealPending, useRevealPlanActive, useRevealWaiting, } from './systems/construction-reveal/construction-reveal';
68
81
  export { DoorAnimationSystem } from './systems/door/door-animation-system';
69
82
  export { buildDoorPreviewMesh, DoorSystem, poseDoorMovingParts } from './systems/door/door-system';
70
83
  export { ElevatorInteractionSystem } from './systems/elevator/elevator-interaction-system';
71
84
  export { FloorElevationSystem } from './systems/floor-elevation/floor-elevation-system';
85
+ export { type GeometryFailure, setGeometryFailure, useGeometryStatus, } from './systems/geometry/geometry-status';
72
86
  export { GuideSystem } from './systems/guide/guide-system';
73
87
  export { InteractiveSystem } from './systems/interactive/interactive-system';
88
+ export { openingSettled, proceduralSettled } from './systems/interactive/opening-settled';
74
89
  export { type ScriptedClipActions, ScriptedClips, useClipActions, } from './systems/interactive/scripted-clips';
75
90
  export { ItemSystem } from './systems/item/item-system';
76
91
  export { ItemLightSystem } from './systems/item-light/item-light-system';
92
+ export { itemLightsForCapture } from './systems/item-light/pooled-lights';
77
93
  export { LevelSystem } from './systems/level/level-system';
78
94
  export { EXPLODED_GAP, getLevelPresentationY, presentLevelsForCapture, snapLevelsToTruePositions, } from './systems/level/level-utils';
79
- export { getRoofMaterialArray, levelWallCladdingRef } from './systems/roof/roof-materials';
80
- export { clipDirectRoofGeometryAgainstSiblings, clipGeometryBySegmentTrim, generateRoofSegmentGeometry, getPendingRoofMergeCount, getRoofOuterSurfaceFrameAtPoint, getRoofSegmentBrushes, mapRoofGroupMaterialIndex, ROOF_MATERIAL_SLOT_COUNT, type RoofGeometryAdapter, RoofSystem, remapRoofShellFaces, roofCsgDummyMats, type SurfaceFrame, } from './systems/roof/roof-system';
95
+ export { ROOF_GABLE_LEFT_MATERIAL_INDEX, ROOF_GABLE_RIGHT_MATERIAL_INDEX, ROOF_HEEL_MATERIAL_INDEX, ROOF_RENDER_MATERIAL_COUNT, } from './systems/roof/roof-material-slots';
96
+ export { getRoofMaterialArray, levelWallCladdingRef, levelWallFaceRef, } from './systems/roof/roof-materials';
97
+ export { clipDirectRoofGeometryAgainstSiblings, clipGeometryBySegmentTrim, generateRoofSegmentGeometry, getPendingRoofMergeCount, getRoofOuterSurfaceFrameAtPoint, getRoofSegmentBrushes, mapRoofGroupMaterialIndex, ROOF_MATERIAL_SLOT_COUNT, type RoofGeometryAdapter, RoofSystem, remapRoofShellFaces, roofCsgDummyMats, type SurfaceFrame, splitRoofWallBandFaces, } from './systems/roof/roof-system';
81
98
  export { ScanSystem } from './systems/scan/scan-system';
82
99
  export { generateSlabGeometry } from './systems/slab/slab-system';
83
100
  export { getStairBodyMaterials, getStairRailingMaterial, getStraightStairSegmentBodyMaterials, type StairBodyMaterials, } from './systems/stair/stair-materials';
@@ -88,7 +105,8 @@ export { WallCutoutCache, type WallCutoutViewerState, type WallCutoutViewerStore
88
105
  export { getWallFaceBaseAt, getWallFinishData, getWallFinishRefs, type WallFinishGeometryData, } from './systems/wall/wall-finish-data';
89
106
  export { getMaterialsForWall, getVisibleWallMaterials, type WallMaterialOverride, type WallMaterials, type WallMaterialsResolver, } from './systems/wall/wall-materials';
90
107
  export { drainRebuiltWalls, generateExtrudedWall, getPendingWallRebuildCount, isWallInitialBuildActive, runWallBuildFrame, type WallGeometryAdapter, type WallGeometryAdapterContext, WallSystem, } from './systems/wall/wall-system';
91
- export { poseWindowMovingParts, WindowAnimationSystem, } from './systems/window/window-animation-system';
108
+ export { advanceWindowAnimations, poseWindowMovingParts, WindowAnimationSystem, } from './systems/window/window-animation-system';
109
+ export { restoreWindowRollerShutter } from './systems/window/window-roller-shutter';
92
110
  export { buildWindowPreviewMesh, WindowSystem } from './systems/window/window-system';
93
111
  export { ZoneSystem } from './systems/zone/zone-system';
94
112
  export { useImmersiveXRPresentation } from './xr/presentation-context';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -10,8 +10,12 @@ export { ErrorBoundary } from './components/error-boundary';
10
10
  // `@pascal-app/nodes/<kind>/renderer.tsx` and are loaded by the registry
11
11
  // — no per-kind re-exports needed.
12
12
  export { NodeRenderer } from './components/renderers/node-renderer';
13
+ // The generic renderer of a kind that ships `def.geometry`, for a kind's renderer that draws
14
+ // something beside its built group.
15
+ export { ParametricNodeRenderer } from './components/renderers/parametric-node-renderer';
13
16
  export { default as Viewer, pendingSceneBuildCount, } from './components/viewer';
14
17
  export { default as BVHEcctrl, } from './components/viewer/bvh-ecctrl';
18
+ export { DroneController, } from './components/viewer/drone-controller';
15
19
  export { buildGlbInteractiveItems, GlbInteractive, } from './components/viewer/glb-interactive';
16
20
  export { buildGlbReferenceNodes, buildGlbReplaceNodes, } from './components/viewer/glb-reference-nodes';
17
21
  export { GlbScene, resolveGlbPick, } from './components/viewer/glb-scene';
@@ -20,20 +24,28 @@ export { DEFAULT_HOVER_STYLES, SSGI_PARAMS, } from './components/viewer/post-pro
20
24
  export { SceneAtmosphere, useSceneAtmosphere, } from './components/viewer/scene-atmosphere';
21
25
  export { SceneEnvironment } from './components/viewer/scene-environment';
22
26
  export { claimSceneGround, SceneGroundReplacement, useSceneGroundReplacement, } from './components/viewer/scene-ground-replacement';
27
+ export { SelectionCallout, } from './components/viewer/selection-callout';
23
28
  export { applyWalkthroughCameraClipping } from './components/viewer/viewer-camera';
24
29
  export { isViewerPresentationTextureBorrowed, markViewerPresentationTextureBorrowed, registerViewerPresentation, ViewerPresentations, viewerPresentationRegistry, } from './components/viewer/viewer-presentations';
25
30
  export { useAssetUrl } from './hooks/use-asset-url';
26
31
  export { useGLTFKTX2 } from './hooks/use-gltf-ktx2';
27
32
  export { useLibraryMaterialsVersion } from './hooks/use-library-materials-version';
28
33
  export { useNodeEvents } from './hooks/use-node-events';
29
- export { ASSETS_CDN_URL, resolveAssetUrl, resolveCdnUrl } from './lib/asset-url';
34
+ export { resolveAssetUrl, resolveCdnUrl } from './lib/asset-url';
30
35
  export { backdropColors, backdropGradient, deepSkyColor, horizonHazeColor } from './lib/backdrop';
31
36
  export { applyWorldScaleBoxUVs } from './lib/box-uv';
32
37
  // CSG primitives — used by chimney's roof-trim and other kinds whose
33
38
  // geometry subtracts pieces against their host. Lives in viewer
34
39
  // because three-bvh-csg / three-mesh-bvh are viewer-only deps.
35
40
  export { ADDITION, Brush, computeGeometryBoundsTree, csgEvaluator, csgGeometry, csgMaterials, Evaluator, ensureRenderableGeometryAttributes, INTERSECTION, prepareBrushForCSG, SUBTRACTION, } from './lib/csg-utils';
41
+ export { createDaylightGroundMaterial, DAYLIGHT_GROUND, DAYLIGHT_PARCEL, daylightGroundColor, } from './lib/daylight/ground';
42
+ export { requestDeviceLocation, resolveLocation, } from './lib/daylight/location';
43
+ export { isDaylightAtmosphere } from './lib/daylight/look';
44
+ export { WEATHER_COVER } from './lib/daylight/sky';
45
+ export { presetInstant, skyPhase, solarClockInstant, solarClockMinutes, solarPosition, sunEvents, } from './lib/daylight/solar';
36
46
  export { disposeObject3DResources } from './lib/dispose-object3d';
47
+ export { createDroneInput, DRONE_SLOW_MULTIPLIER, seedDroneLook, stepDroneFlight, turnFirstPersonLook, } from './lib/drone-flight';
48
+ export { markHighlight, tintEmissive } from './lib/editor-highlight';
37
49
  export { BLOCK_MASONRY, concreteMaterial, masonryMaterial, STRUCTURE_COLORS, } from './lib/foundation-materials';
38
50
  export { preserveGltfUnlit } from './lib/gltf-unlit';
39
51
  export { PERF_OVERLAY_ENABLED } from './lib/gpu-perf';
@@ -46,6 +58,8 @@ export { LayerPassIndex } from './lib/layer-pass';
46
58
  export { BATCHED_LAYER, GRID_LAYER, OVERLAY_LAYER, SCENE_LAYER, SHADOW_ONLY_LAYER, setSurfaceRaycastLayers, ZONE_LAYER, } from './lib/layers';
47
59
  export { holdLiveFrame } from './lib/live-frame-hold';
48
60
  export { applyMaterialPresetToMaterials, BLUEPRINT_PALETTE, baseMaterial, CLAY_PALETTE, clearMaterialCache, createDefaultMaterial, createMaterial, createMaterialFromPreset, createMaterialFromPresetRef, createSurfaceRoleMaterial, DEFAULT_CEILING_MATERIAL, DEFAULT_DOOR_MATERIAL, DEFAULT_ROOF_MATERIAL, DEFAULT_SHELF_MATERIAL, DEFAULT_SLAB_MATERIAL, DEFAULT_STAIR_MATERIAL, DEFAULT_WALL_MATERIAL, DEFAULT_WINDOW_MATERIAL, disposeMaterial, getMaterialTextureVersion, glassMaterial, MONO_PALETTE, materialCastsShadow, materialTextureLoadState, PRESET_PALETTES, registerMaterialCacheCleanup, resolveMaterialRef, resolveSlotDefaultMaterial, resolveSurfaceColor, setSlotDefaultOverrides, WHITE_PALETTE, } from './lib/materials';
61
+ export * from './lib/measurement-label';
62
+ export * from './lib/measurement-presentation';
49
63
  export { mergedOutline } from './lib/merged-outline-node';
50
64
  export { createNodeTopSurfaceHeightSampler } from './lib/node-top-surface-height';
51
65
  export * from './lib/perf-actions';
@@ -61,16 +75,17 @@ export { createSceneSupportHeightSampler } from './lib/scene-support-height';
61
75
  export { getSceneTheme, SCENE_THEME_IDS, SCENE_THEMES, } from './lib/scene-themes';
62
76
  export { hideFromScene, showInScene, temporarilyShowPresentation, temporarilyShowShadowOnly, } from './lib/scene-visibility';
63
77
  export { SCRIPTED_MODEL_FLAG } from './lib/scripted-opening';
64
- export { SITE_FOUNDATION, SITE_GROUND, siteFoundation, siteGround, siteSurfaces, temporarilyVeilGround, } from './lib/site-surfaces';
78
+ export { SITE_GROUND, siteGround, siteSurfaces, temporarilyVeilGround, } from './lib/site-surfaces';
65
79
  export { createPlainSnapshotPipeline, createSnapshotPipeline, SNAPSHOT_MAX_EDGE, SNAPSHOT_MIME, SNAPSHOT_QUALITY, THUMBNAIL_HEIGHT, THUMBNAIL_WIDTH, } from './lib/snapshot-pipeline';
66
80
  export { buildTerrainPerimeterFillGeometry, } from './lib/terrain-perimeter-fill';
67
81
  export { getPascalTextureRef, stampPascalTextureRef, textureMapForSlot, } from './lib/texture-reference';
68
82
  export { packNormalToRGB, unpackRGBToNormal } from './lib/tsl-compat';
69
- export { AMBIANCE_SECONDS, ambianceNow, ambianceTarget, easeAmbiance, eyeUnderTheGround, FADE_SECONDS, groundHoleOpenNode, groundHoleOpenNow, stepAmbianceProgress, temporarilyWithoutAmbiance, UNDERGROUND_RIM, UNDERGROUND_RING, undergroundAmbianceNode, } from './lib/underground-ambiance';
83
+ export { AMBIANCE_SECONDS, ambianceNow, ambianceTarget, easeAmbiance, eyeUnderTheGround, FADE_SECONDS, groundHoleOpenNode, groundHoleOpenNow, stepAmbianceProgress, temporarilyWithoutAmbiance, UNDERGROUND_RIM, undergroundAmbianceNode, } from './lib/underground-ambiance';
84
+ export { ASSETS_CDN_URL, configureViewer, getViewerConfig, } from './lib/viewer-config';
70
85
  export { createZoneShape, createZoneWallGeometry } from './lib/zone-geometry';
71
86
  export { catalogLightSource, useItemLightPool } from './store/use-item-light-pool';
72
- export { anyGroundVeiled, applyCountryUnitDefault, DEFAULT_UNDERGROUND_LOOK, default as useViewer, groundVeiled, siteGroundShown, } from './store/use-viewer';
73
- export { CEILING_REGION_MESH, CeilingSystem, } from './systems/ceiling/ceiling-system';
87
+ export { applyCountryUnitDefault, DEFAULT_UNDERGROUND_LOOK, default as useViewer, groundVeiled, siteGroundShown, } from './store/use-viewer';
88
+ export { CEILING_CAP_MESH, CEILING_REGION_MESH, CeilingSystem, } from './systems/ceiling/ceiling-system';
74
89
  export { createColumnBoxGeometry, createColumnCylinderGeometry, createColumnSphereGeometry, createColumnTorusGeometry, } from './systems/column/column-geometry';
75
90
  export { ConstructionReveal, emitRevealPuff, getRetractTurn, getRevealPlanSpeed, getRevealPlanState, getRevealTurn, isNodeRevealing, isRevealAssembling, retractNodes, revealChangedNodeIds, revealClockMs, revealMotionOff, seatLiftedNow, setRevealPreroll, startConstructionReveal, subscribeRevealAssembling, subscribeRevealEvents, subscribeRevealPhases, subscribeRevealTicks, useRevealPending, useRevealPlanActive, useRevealWaiting, } from './systems/construction-reveal/construction-reveal';
76
91
  export { DoorAnimationSystem } from './systems/door/door-animation-system';
@@ -81,22 +96,26 @@ export { ElevatorInteractionSystem } from './systems/elevator/elevator-interacti
81
96
  // elevation under its footprint. Replaces the per-kind elevation block
82
97
  // that used to live inside `ItemSystem`.
83
98
  export { FloorElevationSystem } from './systems/floor-elevation/floor-elevation-system';
99
+ export { setGeometryFailure, useGeometryStatus, } from './systems/geometry/geometry-status';
84
100
  export { GuideSystem } from './systems/guide/guide-system';
85
101
  export { InteractiveSystem } from './systems/interactive/interactive-system';
102
+ export { openingSettled, proceduralSettled } from './systems/interactive/opening-settled';
86
103
  export { ScriptedClips, useClipActions, } from './systems/interactive/scripted-clips';
87
104
  // Item systems for the registry-driven item definition. ItemSystem
88
105
  // applies attachTo-driven transforms each frame; ItemLightSystem
89
106
  // manages item-mounted light sources.
90
107
  export { ItemSystem } from './systems/item/item-system';
91
108
  export { ItemLightSystem } from './systems/item-light/item-light-system';
109
+ export { itemLightsForCapture } from './systems/item-light/pooled-lights';
92
110
  export { LevelSystem } from './systems/level/level-system';
93
111
  export { EXPLODED_GAP, getLevelPresentationY, presentLevelsForCapture, snapLevelsToTruePositions, } from './systems/level/level-utils';
94
- export { getRoofMaterialArray, levelWallCladdingRef } from './systems/roof/roof-materials';
112
+ export { ROOF_GABLE_LEFT_MATERIAL_INDEX, ROOF_GABLE_RIGHT_MATERIAL_INDEX, ROOF_HEEL_MATERIAL_INDEX, ROOF_RENDER_MATERIAL_COUNT, } from './systems/roof/roof-material-slots';
113
+ export { getRoofMaterialArray, levelWallCladdingRef, levelWallFaceRef, } from './systems/roof/roof-materials';
95
114
  // Generic roof-segment primitives. Kinds that compose CSG against
96
115
  // the roof shell (chimney's self-trim, dormer's virtual-segment cut)
97
116
  // read these through the public surface. No kind-specific helpers
98
117
  // belong here — those live in `@pascal-app/nodes/<kind>/`.
99
- export { clipDirectRoofGeometryAgainstSiblings, clipGeometryBySegmentTrim, generateRoofSegmentGeometry, getPendingRoofMergeCount, getRoofOuterSurfaceFrameAtPoint, getRoofSegmentBrushes, mapRoofGroupMaterialIndex, ROOF_MATERIAL_SLOT_COUNT, RoofSystem, remapRoofShellFaces, roofCsgDummyMats, } from './systems/roof/roof-system';
118
+ export { clipDirectRoofGeometryAgainstSiblings, clipGeometryBySegmentTrim, generateRoofSegmentGeometry, getPendingRoofMergeCount, getRoofOuterSurfaceFrameAtPoint, getRoofSegmentBrushes, mapRoofGroupMaterialIndex, ROOF_MATERIAL_SLOT_COUNT, RoofSystem, remapRoofShellFaces, roofCsgDummyMats, splitRoofWallBandFaces, } from './systems/roof/roof-system';
100
119
  export { ScanSystem } from './systems/scan/scan-system';
101
120
  // Pure slab geometry generator — composed into the registry-driven slab
102
121
  // definition's `def.geometry` in `@pascal-app/nodes`.
@@ -116,7 +135,8 @@ export { getMaterialsForWall, getVisibleWallMaterials, } from './systems/wall/wa
116
135
  // 800+ lines of CSG / mitering logic during Phase 3. These exports are
117
136
  // removed in Phase 6 when the legacy mount points are deleted.
118
137
  export { drainRebuiltWalls, generateExtrudedWall, getPendingWallRebuildCount, isWallInitialBuildActive, runWallBuildFrame, WallSystem, } from './systems/wall/wall-system';
119
- export { poseWindowMovingParts, WindowAnimationSystem, } from './systems/window/window-animation-system';
138
+ export { advanceWindowAnimations, poseWindowMovingParts, WindowAnimationSystem, } from './systems/window/window-animation-system';
139
+ export { restoreWindowRollerShutter } from './systems/window/window-roller-shutter';
120
140
  export { buildWindowPreviewMesh, WindowSystem } from './systems/window/window-system';
121
141
  export { ZoneSystem } from './systems/zone/zone-system';
122
142
  export { useImmersiveXRPresentation } from './xr/presentation-context';
@@ -1,4 +1,3 @@
1
- export declare const ASSETS_CDN_URL: string;
2
1
  /**
3
2
  * Resolves an asset URL to the appropriate format:
4
3
  * - If URL starts with http:// or https://, return as-is (external URL)
@@ -1 +1 @@
1
- {"version":3,"file":"asset-url.d.ts","sourceRoot":"","sources":["../../src/lib/asset-url.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,cAAc,QAAwE,CAAA;AAEnG;;;;;;GAMG;AACH,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAkB5F;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAoB3E"}
1
+ {"version":3,"file":"asset-url.d.ts","sourceRoot":"","sources":["../../src/lib/asset-url.ts"],"names":[],"mappings":"AAIA;;;;;;GAMG;AACH,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAkB5F;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAoB3E"}
@@ -1,5 +1,5 @@
1
1
  import { loadAssetUrl, resolveArtifactUrl } from '@pascal-app/core';
2
- export const ASSETS_CDN_URL = process.env.NEXT_PUBLIC_ASSETS_CDN_URL || 'https://editor.pascal.app';
2
+ import { getViewerConfig } from './viewer-config';
3
3
  /**
4
4
  * Resolves an asset URL to the appropriate format:
5
5
  * - If URL starts with http:// or https://, return as-is (external URL)
@@ -22,7 +22,7 @@ export async function resolveAssetUrl(url) {
22
22
  }
23
23
  // Absolute or relative path - prepend CDN URL
24
24
  const normalizedPath = url.startsWith('/') ? url : `/${url}`;
25
- return `${ASSETS_CDN_URL}${normalizedPath}`;
25
+ return `${getViewerConfig().assetsBaseUrl.replace(/\/$/, '')}${normalizedPath}`;
26
26
  }
27
27
  /**
28
28
  * Synchronous version for URLs that don't need IndexedDB resolution
@@ -46,5 +46,5 @@ export function resolveCdnUrl(url) {
46
46
  }
47
47
  // Absolute or relative path - prepend CDN URL
48
48
  const normalizedPath = url.startsWith('/') ? url : `/${url}`;
49
- return `${ASSETS_CDN_URL}${normalizedPath}`;
49
+ return `${getViewerConfig().assetsBaseUrl.replace(/\/$/, '')}${normalizedPath}`;
50
50
  }
@@ -0,0 +1,21 @@
1
+ import { MeshLambertNodeMaterial, MeshStandardNodeMaterial } from 'three/webgpu';
2
+ /** Neutral ground of the colored appearance, and the slightly fresher parcel inside the site. */
3
+ export declare const DAYLIGHT_GROUND = "#a1a1a1";
4
+ export declare const DAYLIGHT_PARCEL = "#afaeaa";
5
+ /**
6
+ * The ground around the parcel: faint squares that stay a few pixels wide at every distance (a
7
+ * mip-like ladder of square sizes, so no shimmer towards the horizon) over long diagonal bands.
8
+ * World-anchored; the horizon blend comes from the atmosphere's fog.
9
+ */
10
+ export declare function daylightGroundColor(base?: any): any;
11
+ /**
12
+ * A matte daylight ground material: Standard (lit by the sky environment) in rendered shading,
13
+ * Lambert in solid shading, where every surface is Lambert and the sky comes as a hemisphere light.
14
+ * With `horizon` (the atmosphere's horizon radiance), the lit ground blends into the sky with
15
+ * horizontal distance (250 m → 2.6 km) — on the lit output, so the lighting can't band it.
16
+ */
17
+ export declare function createDaylightGroundMaterial(solid: boolean, options?: {
18
+ color?: string;
19
+ horizon?: (direction: any) => any;
20
+ }): MeshLambertNodeMaterial | MeshStandardNodeMaterial;
21
+ //# sourceMappingURL=ground.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ground.d.ts","sourceRoot":"","sources":["../../../src/lib/daylight/ground.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAA;AAEhF,iGAAiG;AACjG,eAAO,MAAM,eAAe,YAAY,CAAA;AACxC,eAAO,MAAM,eAAe,YAAY,CAAA;AAKxC;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,GAAE,GAA4B,GAAG,GAAG,CAc3E;AAED;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,OAAO,EACd,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,KAAK,GAAG,CAAA;CAAO,GAClE,uBAAuB,GAAG,wBAAwB,CAgBpD"}
@@ -0,0 +1,53 @@
1
+ import { cameraPosition, clamp, color, exp2, floor, fract, fwidth, length, max, mix, normalize, output, positionWorld, sin, smoothstep, vec2, vec4, } from 'three/tsl';
2
+ import { MeshLambertNodeMaterial, MeshStandardNodeMaterial } from 'three/webgpu';
3
+ /** Neutral ground of the colored appearance, and the slightly fresher parcel inside the site. */
4
+ export const DAYLIGHT_GROUND = '#a1a1a1';
5
+ export const DAYLIGHT_PARCEL = '#afaeaa';
6
+ /** Horizontal distance (m) over which the ground fades into the horizon sky. */
7
+ const HORIZON_FADE_NEAR = 250;
8
+ const HORIZON_FADE_FAR = 2600;
9
+ /**
10
+ * The ground around the parcel: faint squares that stay a few pixels wide at every distance (a
11
+ * mip-like ladder of square sizes, so no shimmer towards the horizon) over long diagonal bands.
12
+ * World-anchored; the horizon blend comes from the atmosphere's fog.
13
+ */
14
+ export function daylightGroundColor(base = color(DAYLIGHT_GROUND)) {
15
+ const p = positionWorld.xz;
16
+ const texel = max(fwidth(p.x), fwidth(p.y));
17
+ const lod = clamp(texel.mul(1.7).mul(4).max(1e-6).log2(), 0, 8);
18
+ const l0 = lod.floor();
19
+ const squares = (level) => {
20
+ const scale = vec2(1.7).div(exp2(level));
21
+ // fract(sin) hash: three's `hash` casts to uint, which collapses every negative cell to one value.
22
+ const cell = floor(p.mul(scale)).add(vec2(level.mul(37), level.mul(11)));
23
+ return fract(sin(cell.dot(vec2(12.9898, 78.233))).mul(43758.5453)).sub(0.5);
24
+ };
25
+ const noise = mix(squares(l0), squares(l0.add(1)), lod.sub(l0)).mul(0.06);
26
+ const bands = sin(p.x.mul(0.31).add(p.y.mul(0.17))).mul(0.02);
27
+ return base.mul(noise.add(bands).add(1));
28
+ }
29
+ /**
30
+ * A matte daylight ground material: Standard (lit by the sky environment) in rendered shading,
31
+ * Lambert in solid shading, where every surface is Lambert and the sky comes as a hemisphere light.
32
+ * With `horizon` (the atmosphere's horizon radiance), the lit ground blends into the sky with
33
+ * horizontal distance (250 m → 2.6 km) — on the lit output, so the lighting can't band it.
34
+ */
35
+ export function createDaylightGroundMaterial(solid, options = {}) {
36
+ const material = solid
37
+ ? new MeshLambertNodeMaterial()
38
+ : new MeshStandardNodeMaterial({ roughness: 0.95, metalness: 0 });
39
+ // The grounds skip the room system (the dilated room map would light a strip of lawn); they
40
+ // still receive the window spill and exterior lamps at night.
41
+ material.userData.noRooms = true;
42
+ if (options.color)
43
+ material.color.set(options.color);
44
+ else
45
+ material.colorNode = daylightGroundColor();
46
+ if (options.horizon) {
47
+ const d = positionWorld.sub(cameraPosition);
48
+ const fade = smoothstep(HORIZON_FADE_NEAR, HORIZON_FADE_FAR, length(d.xz));
49
+ material.fog = false;
50
+ material.outputNode = vec4(mix(output.rgb, options.horizon(normalize(d)), fade), output.a);
51
+ }
52
+ return material;
53
+ }
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Where the sun is computed for. In order: the site's own geocoded point, a device location the
3
+ * user granted (cached by the host), a coarse guess from the browser's timezone, a mid-latitude
4
+ * default. Never prompts by itself: requesting the device location is a user action.
5
+ */
6
+ export type LatLng = {
7
+ lat: number;
8
+ lng: number;
9
+ };
10
+ export type LocationSource = 'site' | 'device' | 'timezone' | 'default';
11
+ type SiteLike = {
12
+ parcel?: {
13
+ originLngLat?: readonly [number, number] | null;
14
+ } | null;
15
+ dossier?: {
16
+ point?: {
17
+ lat?: number;
18
+ lng?: number;
19
+ } | null;
20
+ } | null;
21
+ };
22
+ export declare function siteLocation(site: SiteLike | null | undefined): LatLng | null;
23
+ export declare const DEFAULT_LOCATION: LatLng;
24
+ export declare function timezoneLocation(timeZone?: string): LatLng | null;
25
+ export declare function resolveLocation(site: SiteLike | null | undefined, device: LatLng | null | undefined): {
26
+ location: LatLng;
27
+ source: LocationSource;
28
+ };
29
+ /** Ask the browser for the device position (call from a user gesture). */
30
+ export declare function requestDeviceLocation(): Promise<LatLng>;
31
+ export {};
32
+ //# sourceMappingURL=location.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"location.d.ts","sourceRoot":"","sources":["../../../src/lib/daylight/location.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,MAAM,MAAM,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAA;AACjD,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAA;AAEvE,KAAK,QAAQ,GAAG;IACd,MAAM,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAA;IACnE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE;YAAE,GAAG,CAAC,EAAE,MAAM,CAAC;YAAC,GAAG,CAAC,EAAE,MAAM,CAAA;SAAE,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAA;CACnE,CAAA;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAQ7E;AA6BD,eAAO,MAAM,gBAAgB,EAAE,MAAmC,CAAA;AAElE,wBAAgB,gBAAgB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAUjE;AAED,wBAAgB,eAAe,CAC7B,IAAI,EAAE,QAAQ,GAAG,IAAI,GAAG,SAAS,EACjC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAChC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,cAAc,CAAA;CAAE,CAO9C;AAED,0EAA0E;AAC1E,wBAAgB,qBAAqB,IAAI,OAAO,CAAC,MAAM,CAAC,CAYvD"}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * Where the sun is computed for. In order: the site's own geocoded point, a device location the
3
+ * user granted (cached by the host), a coarse guess from the browser's timezone, a mid-latitude
4
+ * default. Never prompts by itself: requesting the device location is a user action.
5
+ */
6
+ export function siteLocation(site) {
7
+ const origin = site?.parcel?.originLngLat;
8
+ if (origin && Number.isFinite(origin[0]) && Number.isFinite(origin[1]))
9
+ return { lat: origin[1], lng: origin[0] };
10
+ const point = site?.dossier?.point;
11
+ if (point && Number.isFinite(point.lat) && Number.isFinite(point.lng))
12
+ return { lat: point.lat, lng: point.lng };
13
+ return null;
14
+ }
15
+ /** A representative city per common IANA zone — only to pick a plausible latitude/longitude. */
16
+ const ZONE_POINTS = {
17
+ 'America/New_York': { lat: 40.71, lng: -74.0 },
18
+ 'America/Chicago': { lat: 41.88, lng: -87.63 },
19
+ 'America/Denver': { lat: 39.74, lng: -104.99 },
20
+ 'America/Phoenix': { lat: 33.45, lng: -112.07 },
21
+ 'America/Los_Angeles': { lat: 34.05, lng: -118.24 },
22
+ 'America/Toronto': { lat: 43.65, lng: -79.38 },
23
+ 'America/Vancouver': { lat: 49.28, lng: -123.12 },
24
+ 'America/Mexico_City': { lat: 19.43, lng: -99.13 },
25
+ 'America/Sao_Paulo': { lat: -23.55, lng: -46.63 },
26
+ 'Europe/London': { lat: 51.51, lng: -0.13 },
27
+ 'Europe/Paris': { lat: 48.86, lng: 2.35 },
28
+ 'Europe/Berlin': { lat: 52.52, lng: 13.4 },
29
+ 'Europe/Madrid': { lat: 40.42, lng: -3.7 },
30
+ 'Europe/Rome': { lat: 41.9, lng: 12.5 },
31
+ 'Europe/Amsterdam': { lat: 52.37, lng: 4.9 },
32
+ 'Europe/Stockholm': { lat: 59.33, lng: 18.07 },
33
+ 'Asia/Tokyo': { lat: 35.68, lng: 139.69 },
34
+ 'Asia/Shanghai': { lat: 31.23, lng: 121.47 },
35
+ 'Asia/Singapore': { lat: 1.35, lng: 103.82 },
36
+ 'Asia/Dubai': { lat: 25.2, lng: 55.27 },
37
+ 'Asia/Kolkata': { lat: 19.08, lng: 72.88 },
38
+ 'Australia/Sydney': { lat: -33.87, lng: 151.21 },
39
+ 'Pacific/Auckland': { lat: -36.85, lng: 174.76 },
40
+ };
41
+ export const DEFAULT_LOCATION = { lat: 40.71, lng: -74.0 };
42
+ export function timezoneLocation(timeZone) {
43
+ let zone = timeZone;
44
+ if (!zone) {
45
+ try {
46
+ zone = Intl.DateTimeFormat().resolvedOptions().timeZone;
47
+ }
48
+ catch {
49
+ return null;
50
+ }
51
+ }
52
+ return (zone && ZONE_POINTS[zone]) || null;
53
+ }
54
+ export function resolveLocation(site, device) {
55
+ const fromSite = siteLocation(site);
56
+ if (fromSite)
57
+ return { location: fromSite, source: 'site' };
58
+ if (device)
59
+ return { location: device, source: 'device' };
60
+ const fromZone = timezoneLocation();
61
+ if (fromZone)
62
+ return { location: fromZone, source: 'timezone' };
63
+ return { location: DEFAULT_LOCATION, source: 'default' };
64
+ }
65
+ /** Ask the browser for the device position (call from a user gesture). */
66
+ export function requestDeviceLocation() {
67
+ return new Promise((resolve, reject) => {
68
+ if (typeof navigator === 'undefined' || !navigator.geolocation) {
69
+ reject(new Error('Geolocation is unavailable'));
70
+ return;
71
+ }
72
+ navigator.geolocation.getCurrentPosition((position) => resolve({ lat: position.coords.latitude, lng: position.coords.longitude }), (error) => reject(error), { enableHighAccuracy: false, maximumAge: 24 * 3_600_000, timeout: 10_000 });
73
+ });
74
+ }
@@ -0,0 +1,33 @@
1
+ import type { Vector3 } from 'three';
2
+ import type { SceneAtmosphereSource } from '../../components/viewer/scene-atmosphere';
3
+ /** Daylight-specific outputs the post-processing reads (white balance). */
4
+ export type DaylightAtmosphereSource = SceneAtmosphereSource & {
5
+ /** Linear RGB gains: eye-like partial chromatic adaptation to the current illuminant. */
6
+ whiteBalance: Vector3;
7
+ /** The key light's shadow (the sun, or the moon at night): map size per quality tier. */
8
+ shadow: {
9
+ mapSize: number;
10
+ bias: number;
11
+ normalBias: number;
12
+ radius: number;
13
+ };
14
+ /** Sun elevation in degrees (negative at night). */
15
+ elevation: number;
16
+ };
17
+ export declare function isDaylightAtmosphere(source: unknown): source is DaylightAtmosphereSource;
18
+ /** The colored appearance's grade, vignette and bloom (viewport and snapshots alike). */
19
+ export declare const DAYLIGHT_GRADE: {
20
+ contrast: number;
21
+ saturation: number;
22
+ vignette: number;
23
+ };
24
+ export declare const DAYLIGHT_BLOOM: {
25
+ strength: number;
26
+ radius: number;
27
+ softKnee: number;
28
+ };
29
+ /** The daylight look ignores the scene theme: its ink edges are always the light-backdrop ink. */
30
+ export declare const DAYLIGHT_INK_BACKDROP = "#d4d8dc";
31
+ /** Scene-referred daylight grade: white balance, contrast around mid-grey, saturation. */
32
+ export declare function daylightGradeRgb(rgb: any, whiteBalance: any): any;
33
+ //# sourceMappingURL=look.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"look.d.ts","sourceRoot":"","sources":["../../../src/lib/daylight/look.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAEpC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAA;AAErF,2EAA2E;AAC3E,MAAM,MAAM,wBAAwB,GAAG,qBAAqB,GAAG;IAC7D,yFAAyF;IACzF,YAAY,EAAE,OAAO,CAAA;IACrB,yFAAyF;IACzF,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;IAC7E,oDAAoD;IACpD,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,IAAI,wBAAwB,CAExF;AAED,yFAAyF;AACzF,eAAO,MAAM,cAAc;IAAK,QAAQ;IAAQ,UAAU;IAAQ,QAAQ;CAAQ,CAAA;AAClF,eAAO,MAAM,cAAc;IAAK,QAAQ;IAAQ,MAAM;IAAQ,QAAQ;CAAO,CAAA;AAC7E,kGAAkG;AAClG,eAAO,MAAM,qBAAqB,YAAY,CAAA;AAE9C,0FAA0F;AAC1F,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,GAAG,GAAG,CAKjE"}
@@ -0,0 +1,13 @@
1
+ import { saturation, vec3 } from 'three/tsl';
2
+ export function isDaylightAtmosphere(source) {
3
+ return Boolean(source && source.whiteBalance);
4
+ }
5
+ /** The colored appearance's grade, vignette and bloom (viewport and snapshots alike). */
6
+ export const DAYLIGHT_GRADE = { contrast: 1.06, saturation: 1.06, vignette: 0.12 };
7
+ export const DAYLIGHT_BLOOM = { strength: 0.12, radius: 0.18, softKnee: 0.4 };
8
+ /** The daylight look ignores the scene theme: its ink edges are always the light-backdrop ink. */
9
+ export const DAYLIGHT_INK_BACKDROP = '#d4d8dc';
10
+ /** Scene-referred daylight grade: white balance, contrast around mid-grey, saturation. */
11
+ export function daylightGradeRgb(rgb, whiteBalance) {
12
+ return saturation(rgb.max(0).mul(whiteBalance).div(0.18).pow(vec3(DAYLIGHT_GRADE.contrast)).mul(0.18), DAYLIGHT_GRADE.saturation);
13
+ }
@@ -0,0 +1,2 @@
1
+ export declare function installDaylightMaterialHooks(): void;
2
+ //# sourceMappingURL=material-hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"material-hooks.d.ts","sourceRoot":"","sources":["../../../src/lib/daylight/material-hooks.ts"],"names":[],"mappings":"AAmIA,wBAAgB,4BAA4B,IAAI,IAAI,CA4FnD"}