@3driseai/3drise-viewer 0.1.41 → 0.1.43

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 (414) hide show
  1. package/dist/animationsV2/ClipsRuntime.d.ts +16 -1
  2. package/dist/animationsV2/ClipsRuntime.d.ts.map +1 -1
  3. package/dist/animationsV2/ClipsRuntime.js +144 -25
  4. package/dist/animationsV2/appliers.d.ts +9 -0
  5. package/dist/animationsV2/appliers.d.ts.map +1 -1
  6. package/dist/animationsV2/appliers.js +62 -2
  7. package/dist/animationsV2/clipUtils.d.ts +30 -0
  8. package/dist/animationsV2/clipUtils.d.ts.map +1 -1
  9. package/dist/animationsV2/clipUtils.js +163 -17
  10. package/dist/animationsV2/elementSettings.d.ts +5 -0
  11. package/dist/animationsV2/elementSettings.d.ts.map +1 -1
  12. package/dist/animationsV2/elementSettings.js +6 -3
  13. package/dist/animationsV2/sequenceUtils.js +4 -4
  14. package/dist/animationsV2/types.d.ts +23 -0
  15. package/dist/animationsV2/types.d.ts.map +1 -1
  16. package/dist/api/sceneHandle.js +2 -2
  17. package/dist/components/CreatedObject.d.ts +3 -0
  18. package/dist/components/CreatedObject.d.ts.map +1 -1
  19. package/dist/components/CreatedObject.js +6 -2
  20. package/dist/components/CustomPrimitive.d.ts.map +1 -1
  21. package/dist/components/CustomPrimitive.js +1 -10
  22. package/dist/components/EnvironmentManager.d.ts.map +1 -1
  23. package/dist/components/EnvironmentManager.js +11 -5
  24. package/dist/components/GeometryShape.d.ts +5 -2
  25. package/dist/components/GeometryShape.d.ts.map +1 -1
  26. package/dist/components/GeometryShape.js +71 -10
  27. package/dist/components/LandObject.d.ts.map +1 -1
  28. package/dist/components/LandObject.js +1 -1
  29. package/dist/components/LayoutInstances.d.ts +2 -1
  30. package/dist/components/LayoutInstances.d.ts.map +1 -1
  31. package/dist/components/LayoutInstances.js +39 -6
  32. package/dist/components/LightObject.d.ts.map +1 -1
  33. package/dist/components/LightObject.js +3 -0
  34. package/dist/components/ObjectNode.d.ts.map +1 -1
  35. package/dist/components/ObjectNode.js +62 -13
  36. package/dist/components/OceanBuilder.d.ts +2 -0
  37. package/dist/components/OceanBuilder.d.ts.map +1 -1
  38. package/dist/components/OceanBuilder.js +2 -1
  39. package/dist/components/RenderEffects.d.ts +8 -0
  40. package/dist/components/RenderEffects.d.ts.map +1 -0
  41. package/dist/components/RenderEffects.js +120 -0
  42. package/dist/components/SceneBuilder.d.ts.map +1 -1
  43. package/dist/components/SceneBuilder.js +18 -9
  44. package/dist/components/SportsObject.d.ts +9 -0
  45. package/dist/components/SportsObject.d.ts.map +1 -0
  46. package/dist/components/SportsObject.js +20 -0
  47. package/dist/components/UrbanObject.d.ts +9 -0
  48. package/dist/components/UrbanObject.d.ts.map +1 -0
  49. package/dist/components/UrbanObject.js +28 -0
  50. package/dist/components/VegetationObject.d.ts +9 -0
  51. package/dist/components/VegetationObject.d.ts.map +1 -0
  52. package/dist/components/VegetationObject.js +26 -0
  53. package/dist/components/WaterObject.d.ts +15 -0
  54. package/dist/components/WaterObject.d.ts.map +1 -0
  55. package/dist/components/WaterObject.js +29 -0
  56. package/dist/components/index.d.ts +7 -2
  57. package/dist/components/index.d.ts.map +1 -1
  58. package/dist/components/index.js +6 -1
  59. package/dist/components/land/LandPatch.d.ts +3 -1
  60. package/dist/components/land/LandPatch.d.ts.map +1 -1
  61. package/dist/components/land/LandPatch.js +80 -7
  62. package/dist/components/layout/InstancedLayout.d.ts +19 -0
  63. package/dist/components/layout/InstancedLayout.d.ts.map +1 -0
  64. package/dist/components/layout/InstancedLayout.js +154 -0
  65. package/dist/components/layout/LayoutGrounds.d.ts +19 -0
  66. package/dist/components/layout/LayoutGrounds.d.ts.map +1 -0
  67. package/dist/components/layout/LayoutGrounds.js +104 -0
  68. package/dist/components/layout/LinkProxies.d.ts +5 -0
  69. package/dist/components/layout/LinkProxies.d.ts.map +1 -0
  70. package/dist/components/layout/LinkProxies.js +51 -0
  71. package/dist/components/layout/LinkedSource.d.ts +14 -0
  72. package/dist/components/layout/LinkedSource.d.ts.map +1 -0
  73. package/dist/components/layout/LinkedSource.js +129 -0
  74. package/dist/components/projector/Projector.d.ts +14 -0
  75. package/dist/components/projector/Projector.d.ts.map +1 -0
  76. package/dist/components/projector/Projector.js +44 -0
  77. package/dist/components/projector/index.d.ts +4 -0
  78. package/dist/components/projector/index.d.ts.map +1 -0
  79. package/dist/components/projector/index.js +2 -0
  80. package/dist/components/projector/projectorCore.d.ts +19 -0
  81. package/dist/components/projector/projectorCore.d.ts.map +1 -0
  82. package/dist/components/projector/projectorCore.js +545 -0
  83. package/dist/components/sports/SportsBall.d.ts +9 -0
  84. package/dist/components/sports/SportsBall.d.ts.map +1 -0
  85. package/dist/components/sports/SportsBall.js +23 -0
  86. package/dist/components/sports/SportsCourt.d.ts +9 -0
  87. package/dist/components/sports/SportsCourt.d.ts.map +1 -0
  88. package/dist/components/sports/SportsCourt.js +23 -0
  89. package/dist/components/sports/SportsEquipment.d.ts +9 -0
  90. package/dist/components/sports/SportsEquipment.d.ts.map +1 -0
  91. package/dist/components/sports/SportsEquipment.js +23 -0
  92. package/dist/components/sports/SportsGoal.d.ts +9 -0
  93. package/dist/components/sports/SportsGoal.d.ts.map +1 -0
  94. package/dist/components/sports/SportsGoal.js +23 -0
  95. package/dist/components/sports/core/ball.d.ts +166 -0
  96. package/dist/components/sports/core/ball.d.ts.map +1 -0
  97. package/dist/components/sports/core/ball.js +402 -0
  98. package/dist/components/sports/core/court.d.ts +442 -0
  99. package/dist/components/sports/core/court.d.ts.map +1 -0
  100. package/dist/components/sports/core/court.js +658 -0
  101. package/dist/components/sports/core/equipment.d.ts +103 -0
  102. package/dist/components/sports/core/equipment.d.ts.map +1 -0
  103. package/dist/components/sports/core/equipment.js +403 -0
  104. package/dist/components/sports/core/goal.d.ts +98 -0
  105. package/dist/components/sports/core/goal.d.ts.map +1 -0
  106. package/dist/components/sports/core/goal.js +44 -0
  107. package/dist/components/sports/index.d.ts +11 -0
  108. package/dist/components/sports/index.d.ts.map +1 -0
  109. package/dist/components/sports/index.js +8 -0
  110. package/dist/components/sports/sportsCore.d.ts +195 -0
  111. package/dist/components/sports/sportsCore.d.ts.map +1 -0
  112. package/dist/components/sports/sportsCore.js +758 -0
  113. package/dist/components/sports/useSportsInstance.d.ts +35 -0
  114. package/dist/components/sports/useSportsInstance.d.ts.map +1 -0
  115. package/dist/components/sports/useSportsInstance.js +47 -0
  116. package/dist/components/terrain/TerrainSurface.d.ts.map +1 -1
  117. package/dist/components/terrain/TerrainSurface.js +14 -0
  118. package/dist/components/urban/UrbanBlock.d.ts +9 -0
  119. package/dist/components/urban/UrbanBlock.d.ts.map +1 -0
  120. package/dist/components/urban/UrbanBlock.js +23 -0
  121. package/dist/components/urban/UrbanBuilding.d.ts +9 -0
  122. package/dist/components/urban/UrbanBuilding.d.ts.map +1 -0
  123. package/dist/components/urban/UrbanBuilding.js +23 -0
  124. package/dist/components/urban/UrbanJunction.d.ts +9 -0
  125. package/dist/components/urban/UrbanJunction.d.ts.map +1 -0
  126. package/dist/components/urban/UrbanJunction.js +23 -0
  127. package/dist/components/urban/UrbanPark.d.ts +9 -0
  128. package/dist/components/urban/UrbanPark.d.ts.map +1 -0
  129. package/dist/components/urban/UrbanPark.js +23 -0
  130. package/dist/components/urban/UrbanParkingLot.d.ts +9 -0
  131. package/dist/components/urban/UrbanParkingLot.d.ts.map +1 -0
  132. package/dist/components/urban/UrbanParkingLot.js +23 -0
  133. package/dist/components/urban/UrbanPlaza.d.ts +9 -0
  134. package/dist/components/urban/UrbanPlaza.d.ts.map +1 -0
  135. package/dist/components/urban/UrbanPlaza.js +23 -0
  136. package/dist/components/urban/UrbanRoad.d.ts +9 -0
  137. package/dist/components/urban/UrbanRoad.d.ts.map +1 -0
  138. package/dist/components/urban/UrbanRoad.js +23 -0
  139. package/dist/components/urban/UrbanSignage.d.ts +9 -0
  140. package/dist/components/urban/UrbanSignage.d.ts.map +1 -0
  141. package/dist/components/urban/UrbanSignage.js +23 -0
  142. package/dist/components/urban/UrbanSkyline.d.ts +9 -0
  143. package/dist/components/urban/UrbanSkyline.d.ts.map +1 -0
  144. package/dist/components/urban/UrbanSkyline.js +23 -0
  145. package/dist/components/urban/UrbanStreetFurniture.d.ts +9 -0
  146. package/dist/components/urban/UrbanStreetFurniture.d.ts.map +1 -0
  147. package/dist/components/urban/UrbanStreetFurniture.js +23 -0
  148. package/dist/components/urban/UrbanStreetGrid.d.ts +9 -0
  149. package/dist/components/urban/UrbanStreetGrid.d.ts.map +1 -0
  150. package/dist/components/urban/UrbanStreetGrid.js +34 -0
  151. package/dist/components/urban/UrbanTraffic.d.ts +9 -0
  152. package/dist/components/urban/UrbanTraffic.d.ts.map +1 -0
  153. package/dist/components/urban/UrbanTraffic.js +23 -0
  154. package/dist/components/urban/core/block.d.ts +119 -0
  155. package/dist/components/urban/core/block.d.ts.map +1 -0
  156. package/dist/components/urban/core/block.js +266 -0
  157. package/dist/components/urban/core/building.d.ts +128 -0
  158. package/dist/components/urban/core/building.d.ts.map +1 -0
  159. package/dist/components/urban/core/building.js +741 -0
  160. package/dist/components/urban/core/junction.d.ts +152 -0
  161. package/dist/components/urban/core/junction.d.ts.map +1 -0
  162. package/dist/components/urban/core/junction.js +617 -0
  163. package/dist/components/urban/core/park.d.ts +67 -0
  164. package/dist/components/urban/core/park.d.ts.map +1 -0
  165. package/dist/components/urban/core/park.js +176 -0
  166. package/dist/components/urban/core/parkingLot.d.ts +82 -0
  167. package/dist/components/urban/core/parkingLot.d.ts.map +1 -0
  168. package/dist/components/urban/core/parkingLot.js +284 -0
  169. package/dist/components/urban/core/plaza.d.ts +24 -0
  170. package/dist/components/urban/core/plaza.d.ts.map +1 -0
  171. package/dist/components/urban/core/plaza.js +243 -0
  172. package/dist/components/urban/core/road.d.ts +113 -0
  173. package/dist/components/urban/core/road.d.ts.map +1 -0
  174. package/dist/components/urban/core/road.js +347 -0
  175. package/dist/components/urban/core/signage.d.ts +83 -0
  176. package/dist/components/urban/core/signage.d.ts.map +1 -0
  177. package/dist/components/urban/core/signage.js +209 -0
  178. package/dist/components/urban/core/skyline.d.ts +100 -0
  179. package/dist/components/urban/core/skyline.d.ts.map +1 -0
  180. package/dist/components/urban/core/skyline.js +89 -0
  181. package/dist/components/urban/core/streetFurniture.d.ts +75 -0
  182. package/dist/components/urban/core/streetFurniture.d.ts.map +1 -0
  183. package/dist/components/urban/core/streetFurniture.js +193 -0
  184. package/dist/components/urban/core/streetGrid.d.ts +134 -0
  185. package/dist/components/urban/core/streetGrid.d.ts.map +1 -0
  186. package/dist/components/urban/core/streetGrid.js +422 -0
  187. package/dist/components/urban/core/traffic.d.ts +125 -0
  188. package/dist/components/urban/core/traffic.d.ts.map +1 -0
  189. package/dist/components/urban/core/traffic.js +305 -0
  190. package/dist/components/urban/index.d.ts +29 -0
  191. package/dist/components/urban/index.d.ts.map +1 -0
  192. package/dist/components/urban/index.js +16 -0
  193. package/dist/components/urban/textureSetResolver.d.ts +8 -0
  194. package/dist/components/urban/textureSetResolver.d.ts.map +1 -0
  195. package/dist/components/urban/textureSetResolver.js +16 -0
  196. package/dist/components/urban/urbanCore.d.ts +262 -0
  197. package/dist/components/urban/urbanCore.d.ts.map +1 -0
  198. package/dist/components/urban/urbanCore.js +928 -0
  199. package/dist/components/urban/useUrbanInstance.d.ts +53 -0
  200. package/dist/components/urban/useUrbanInstance.d.ts.map +1 -0
  201. package/dist/components/urban/useUrbanInstance.js +100 -0
  202. package/dist/components/vegetation/VegetationBush.d.ts +9 -0
  203. package/dist/components/vegetation/VegetationBush.d.ts.map +1 -0
  204. package/dist/components/vegetation/VegetationBush.js +23 -0
  205. package/dist/components/vegetation/VegetationCrops.d.ts +9 -0
  206. package/dist/components/vegetation/VegetationCrops.d.ts.map +1 -0
  207. package/dist/components/vegetation/VegetationCrops.js +23 -0
  208. package/dist/components/vegetation/VegetationFlowers.d.ts +9 -0
  209. package/dist/components/vegetation/VegetationFlowers.d.ts.map +1 -0
  210. package/dist/components/vegetation/VegetationFlowers.js +23 -0
  211. package/dist/components/vegetation/VegetationForest.d.ts +9 -0
  212. package/dist/components/vegetation/VegetationForest.d.ts.map +1 -0
  213. package/dist/components/vegetation/VegetationForest.js +23 -0
  214. package/dist/components/vegetation/VegetationFruit.d.ts +9 -0
  215. package/dist/components/vegetation/VegetationFruit.d.ts.map +1 -0
  216. package/dist/components/vegetation/VegetationFruit.js +23 -0
  217. package/dist/components/vegetation/VegetationGrass.d.ts +9 -0
  218. package/dist/components/vegetation/VegetationGrass.d.ts.map +1 -0
  219. package/dist/components/vegetation/VegetationGrass.js +23 -0
  220. package/dist/components/vegetation/VegetationHedge.d.ts +9 -0
  221. package/dist/components/vegetation/VegetationHedge.d.ts.map +1 -0
  222. package/dist/components/vegetation/VegetationHedge.js +23 -0
  223. package/dist/components/vegetation/VegetationIvy.d.ts +9 -0
  224. package/dist/components/vegetation/VegetationIvy.d.ts.map +1 -0
  225. package/dist/components/vegetation/VegetationIvy.js +23 -0
  226. package/dist/components/vegetation/VegetationTree.d.ts +9 -0
  227. package/dist/components/vegetation/VegetationTree.d.ts.map +1 -0
  228. package/dist/components/vegetation/VegetationTree.js +23 -0
  229. package/dist/components/vegetation/VegetationVegetable.d.ts +9 -0
  230. package/dist/components/vegetation/VegetationVegetable.d.ts.map +1 -0
  231. package/dist/components/vegetation/VegetationVegetable.js +23 -0
  232. package/dist/components/vegetation/core/bush.d.ts +1256 -0
  233. package/dist/components/vegetation/core/bush.d.ts.map +1 -0
  234. package/dist/components/vegetation/core/bush.js +376 -0
  235. package/dist/components/vegetation/core/crops.d.ts +1033 -0
  236. package/dist/components/vegetation/core/crops.d.ts.map +1 -0
  237. package/dist/components/vegetation/core/crops.js +378 -0
  238. package/dist/components/vegetation/core/flowers.d.ts +648 -0
  239. package/dist/components/vegetation/core/flowers.d.ts.map +1 -0
  240. package/dist/components/vegetation/core/flowers.js +225 -0
  241. package/dist/components/vegetation/core/forest.d.ts +138 -0
  242. package/dist/components/vegetation/core/forest.d.ts.map +1 -0
  243. package/dist/components/vegetation/core/forest.js +310 -0
  244. package/dist/components/vegetation/core/fruit.d.ts +99 -0
  245. package/dist/components/vegetation/core/fruit.d.ts.map +1 -0
  246. package/dist/components/vegetation/core/fruit.js +77 -0
  247. package/dist/components/vegetation/core/grass.d.ts +103 -0
  248. package/dist/components/vegetation/core/grass.d.ts.map +1 -0
  249. package/dist/components/vegetation/core/grass.js +102 -0
  250. package/dist/components/vegetation/core/hedge.d.ts +193 -0
  251. package/dist/components/vegetation/core/hedge.d.ts.map +1 -0
  252. package/dist/components/vegetation/core/hedge.js +243 -0
  253. package/dist/components/vegetation/core/ivy.d.ts +213 -0
  254. package/dist/components/vegetation/core/ivy.d.ts.map +1 -0
  255. package/dist/components/vegetation/core/ivy.js +173 -0
  256. package/dist/components/vegetation/core/tree.d.ts +1117 -0
  257. package/dist/components/vegetation/core/tree.d.ts.map +1 -0
  258. package/dist/components/vegetation/core/tree.js +408 -0
  259. package/dist/components/vegetation/core/vegetable.d.ts +99 -0
  260. package/dist/components/vegetation/core/vegetable.d.ts.map +1 -0
  261. package/dist/components/vegetation/core/vegetable.js +76 -0
  262. package/dist/components/vegetation/index.d.ts +23 -0
  263. package/dist/components/vegetation/index.d.ts.map +1 -0
  264. package/dist/components/vegetation/index.js +14 -0
  265. package/dist/components/vegetation/produceCore.d.ts +929 -0
  266. package/dist/components/vegetation/produceCore.d.ts.map +1 -0
  267. package/dist/components/vegetation/produceCore.js +723 -0
  268. package/dist/components/vegetation/useVegetationInstance.d.ts +39 -0
  269. package/dist/components/vegetation/useVegetationInstance.d.ts.map +1 -0
  270. package/dist/components/vegetation/useVegetationInstance.js +45 -0
  271. package/dist/components/vegetation/vegetationCore.d.ts +412 -0
  272. package/dist/components/vegetation/vegetationCore.d.ts.map +1 -0
  273. package/dist/components/vegetation/vegetationCore.js +1728 -0
  274. package/dist/components/volumetricClouds/VolumetricCloudsPass.d.ts +5 -0
  275. package/dist/components/volumetricClouds/VolumetricCloudsPass.d.ts.map +1 -1
  276. package/dist/components/volumetricClouds/VolumetricCloudsPass.js +39 -13
  277. package/dist/components/water/OceanSurface.d.ts.map +1 -1
  278. package/dist/components/water/OceanSurface.js +3 -2
  279. package/dist/components/water/WaterBody.d.ts.map +1 -1
  280. package/dist/components/water/WaterBody.js +31 -10
  281. package/dist/components/water/WaterFountain.d.ts +9 -0
  282. package/dist/components/water/WaterFountain.d.ts.map +1 -0
  283. package/dist/components/water/WaterFountain.js +24 -0
  284. package/dist/components/water/WaterStream.d.ts +9 -0
  285. package/dist/components/water/WaterStream.d.ts.map +1 -0
  286. package/dist/components/water/WaterStream.js +24 -0
  287. package/dist/components/water/WaterWaterfall.d.ts +9 -0
  288. package/dist/components/water/WaterWaterfall.d.ts.map +1 -0
  289. package/dist/components/water/WaterWaterfall.js +24 -0
  290. package/dist/components/water/core/fountain.d.ts +70 -0
  291. package/dist/components/water/core/fountain.d.ts.map +1 -0
  292. package/dist/components/water/core/fountain.js +619 -0
  293. package/dist/components/water/core/stream.d.ts +72 -0
  294. package/dist/components/water/core/stream.d.ts.map +1 -0
  295. package/dist/components/water/core/stream.js +167 -0
  296. package/dist/components/water/core/waterfall.d.ts +78 -0
  297. package/dist/components/water/core/waterfall.d.ts.map +1 -0
  298. package/dist/components/water/core/waterfall.js +325 -0
  299. package/dist/components/water/index.d.ts +8 -0
  300. package/dist/components/water/index.d.ts.map +1 -1
  301. package/dist/components/water/index.js +7 -0
  302. package/dist/components/water/types.d.ts +3 -0
  303. package/dist/components/water/types.d.ts.map +1 -1
  304. package/dist/components/water/useWaterInstance.d.ts +43 -0
  305. package/dist/components/water/useWaterInstance.d.ts.map +1 -0
  306. package/dist/components/water/useWaterInstance.js +89 -0
  307. package/dist/components/water/waterCore.d.ts +179 -0
  308. package/dist/components/water/waterCore.d.ts.map +1 -0
  309. package/dist/components/water/waterCore.js +516 -0
  310. package/dist/constants.d.ts.map +1 -1
  311. package/dist/constants.js +9 -1
  312. package/dist/hooks/index.d.ts +7 -2
  313. package/dist/hooks/index.d.ts.map +1 -1
  314. package/dist/hooks/index.js +5 -2
  315. package/dist/hooks/useActionPatch.d.ts +23 -0
  316. package/dist/hooks/useActionPatch.d.ts.map +1 -0
  317. package/dist/hooks/useActionPatch.js +38 -0
  318. package/dist/hooks/useCloudSun.d.ts.map +1 -1
  319. package/dist/hooks/useCloudSun.js +3 -2
  320. package/dist/hooks/useCommittedInstance.d.ts +6 -0
  321. package/dist/hooks/useCommittedInstance.d.ts.map +1 -0
  322. package/dist/hooks/useCommittedInstance.js +42 -0
  323. package/dist/hooks/useConfigLive.d.ts +1 -1
  324. package/dist/hooks/useConfigLive.d.ts.map +1 -1
  325. package/dist/hooks/useContinuousEffects.d.ts.map +1 -1
  326. package/dist/hooks/useContinuousEffects.js +36 -20
  327. package/dist/hooks/useGridLayout.d.ts +7 -0
  328. package/dist/hooks/useGridLayout.d.ts.map +1 -0
  329. package/dist/hooks/useGridLayout.js +10 -0
  330. package/dist/hooks/useInteractionEffects.d.ts.map +1 -1
  331. package/dist/hooks/useInteractionEffects.js +48 -9
  332. package/dist/hooks/useLightLive.d.ts.map +1 -1
  333. package/dist/hooks/useLightLive.js +2 -0
  334. package/dist/hooks/useLinkStatus.d.ts +7 -0
  335. package/dist/hooks/useLinkStatus.d.ts.map +1 -0
  336. package/dist/hooks/useLinkStatus.js +20 -0
  337. package/dist/hooks/useMaterialApplication.d.ts +6 -1
  338. package/dist/hooks/useMaterialApplication.d.ts.map +1 -1
  339. package/dist/hooks/useMaterialApplication.js +7 -2
  340. package/dist/hooks/useOceanMaterial.d.ts +11 -1
  341. package/dist/hooks/useOceanMaterial.d.ts.map +1 -1
  342. package/dist/hooks/useOceanMaterial.js +185 -27
  343. package/dist/hooks/usePathAnimation.d.ts +8 -0
  344. package/dist/hooks/usePathAnimation.d.ts.map +1 -1
  345. package/dist/hooks/usePathAnimation.js +140 -59
  346. package/dist/hooks/useResolvedLayout.d.ts +10 -0
  347. package/dist/hooks/useResolvedLayout.d.ts.map +1 -0
  348. package/dist/hooks/useResolvedLayout.js +17 -0
  349. package/dist/hooks/useTimeLighting.d.ts +36 -0
  350. package/dist/hooks/useTimeLighting.d.ts.map +1 -0
  351. package/dist/hooks/useTimeLighting.js +67 -0
  352. package/dist/index.d.ts +4 -0
  353. package/dist/index.d.ts.map +1 -1
  354. package/dist/index.js +4 -0
  355. package/dist/operations/catalogue/shaderLayers.d.ts.map +1 -1
  356. package/dist/operations/catalogue/shaderLayers.js +26 -3
  357. package/dist/render/renderLive.d.ts +11 -0
  358. package/dist/render/renderLive.d.ts.map +1 -0
  359. package/dist/render/renderLive.js +57 -0
  360. package/dist/shaders/glsl/oceanCore.glsl.d.ts +2 -2
  361. package/dist/shaders/glsl/oceanCore.glsl.d.ts.map +1 -1
  362. package/dist/shaders/glsl/oceanCore.glsl.js +35 -5
  363. package/dist/shaders/ocean/OceanSurfaceMaterial.d.ts +12 -0
  364. package/dist/shaders/ocean/OceanSurfaceMaterial.d.ts.map +1 -1
  365. package/dist/shaders/ocean/OceanSurfaceMaterial.js +55 -7
  366. package/dist/shaders/terrain/TerrainMaterial.d.ts.map +1 -1
  367. package/dist/shaders/terrain/TerrainMaterial.js +28 -0
  368. package/dist/triggers/kinds/change.js +1 -1
  369. package/dist/ui/UiLayers.d.ts +17 -1
  370. package/dist/ui/UiLayers.d.ts.map +1 -1
  371. package/dist/ui/UiLayers.js +76 -3
  372. package/dist/ui/index.d.ts +2 -2
  373. package/dist/ui/index.d.ts.map +1 -1
  374. package/dist/ui/index.js +1 -1
  375. package/dist/utils/composerHostedPass.d.ts +74 -0
  376. package/dist/utils/composerHostedPass.d.ts.map +1 -0
  377. package/dist/utils/composerHostedPass.js +63 -0
  378. package/dist/utils/geometryScript.d.ts +17 -0
  379. package/dist/utils/geometryScript.d.ts.map +1 -0
  380. package/dist/utils/geometryScript.js +92 -0
  381. package/dist/utils/geometryScript.worker.d.ts +2 -0
  382. package/dist/utils/geometryScript.worker.d.ts.map +1 -0
  383. package/dist/utils/geometryScript.worker.js +42 -0
  384. package/dist/utils/groundRegistry.d.ts +11 -0
  385. package/dist/utils/groundRegistry.d.ts.map +1 -0
  386. package/dist/utils/groundRegistry.js +39 -0
  387. package/dist/utils/instancingSupport.d.ts +9 -0
  388. package/dist/utils/instancingSupport.d.ts.map +1 -0
  389. package/dist/utils/instancingSupport.js +13 -0
  390. package/dist/utils/landPatch.d.ts +26 -5
  391. package/dist/utils/landPatch.d.ts.map +1 -1
  392. package/dist/utils/landPatch.js +124 -9
  393. package/dist/utils/layoutPlacement.d.ts +30 -0
  394. package/dist/utils/layoutPlacement.d.ts.map +1 -0
  395. package/dist/utils/layoutPlacement.js +113 -0
  396. package/dist/utils/linkRegistry.d.ts +15 -0
  397. package/dist/utils/linkRegistry.d.ts.map +1 -0
  398. package/dist/utils/linkRegistry.js +11 -0
  399. package/dist/utils/shapes.d.ts +28 -2
  400. package/dist/utils/shapes.d.ts.map +1 -1
  401. package/dist/utils/shapes.js +32 -3
  402. package/dist/utils/sharedParts.d.ts +61 -0
  403. package/dist/utils/sharedParts.d.ts.map +1 -0
  404. package/dist/utils/sharedParts.js +268 -0
  405. package/dist/utils/svgAsset.d.ts +6 -0
  406. package/dist/utils/svgAsset.d.ts.map +1 -0
  407. package/dist/utils/svgAsset.js +46 -0
  408. package/dist/utils/waterLight.d.ts +29 -0
  409. package/dist/utils/waterLight.d.ts.map +1 -0
  410. package/dist/utils/waterLight.js +67 -0
  411. package/dist/utils/waterReflection.d.ts +185 -0
  412. package/dist/utils/waterReflection.d.ts.map +1 -0
  413. package/dist/utils/waterReflection.js +616 -0
  414. package/package.json +4 -3
@@ -64,6 +64,8 @@ declare class ClipsRuntime {
64
64
  private clock;
65
65
  /** Blend seconds of the driver that last wrote each property (for its blend-out). */
66
66
  private blendOf;
67
+ /** The driver that last wrote each property (Proposal.driver). */
68
+ private writer;
67
69
  /** Next tick writes every winner even if unchanged (an edited clip). */
68
70
  private forceWrite;
69
71
  /** Diagnostics: keys written last tick, and keys written for the FIRST time last tick. */
@@ -98,7 +100,7 @@ declare class ClipsRuntime {
98
100
  /** Diagnostics: a write whose speed differs sharply from the previous frame's (a velocity discontinuity), per property. */
99
101
  private lastSpeed;
100
102
  private probeJump;
101
- /** Where a property is right now: the last value the runtime wrote, else the live / authored value. */
103
+ /** Where a property is right now: the live scene where it can be read, else the last value the runtime wrote, else the live / authored value. */
102
104
  private currentValue;
103
105
  /** Whether `setLiveValue` can write this path (it has an applier). */
104
106
  canSetLiveValue(state: string, path: string): boolean;
@@ -216,6 +218,19 @@ declare class ClipsRuntime {
216
218
  private releaseCues;
217
219
  /** Revert every lane the sequence switched on (stop / close). */
218
220
  private releaseActions;
221
+ /**
222
+ * Tracks with their "from current" keys replaced by the run's captured values. A value not
223
+ * captured yet is read now (the scene as it is, before this frame's writes) and kept for the
224
+ * run. `pending`: a target isn't mounted yet — the key's own value stands in this frame and
225
+ * the caller resolves again next tick.
226
+ */
227
+ private resolveCurrent;
228
+ /**
229
+ * A new run of a timeline that wrote before (a held clip played again): what it wrote may not
230
+ * be where the properties are any more (the visitor orbited the camera since), so its first
231
+ * write is a take-over again — it blends from the scene as it is.
232
+ */
233
+ private forgetWrites;
219
234
  /** Every driver's values for this frame, lowest priority first. */
220
235
  private proposals;
221
236
  private runRestores;
@@ -1 +1 @@
1
- {"version":3,"file":"ClipsRuntime.d.ts","sourceRoot":"","sources":["../../src/animationsV2/ClipsRuntime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ClipsRuntime.d.ts","sourceRoot":"","sources":["../../src/animationsV2/ClipsRuntime.ts"],"names":[],"mappings":"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"}
@@ -32,6 +32,15 @@
32
32
  // track on an element the layer just changed is re-written for a few frames, because
33
33
  // the re-render may have rebuilt what it writes to (a new material).
34
34
  //
35
+ // A facing position track (Track.face) also drives its object's rotation: the runtime sees it as
36
+ // one more track (clipUtils expandTracks), after the clip's own, so restore, take-over and the
37
+ // last-wins merge treat that rotation like any other track's.
38
+ //
39
+ // "From current" keys (Keyframe.current) take the property's value as the scene shows it when
40
+ // a run starts (a clip played from its start edge; a sequence entry the first time it becomes
41
+ // active in a run), captured once per run and held for it. Each instance keeps its captures and
42
+ // the tracks resolved with them; reverse / yoyo / loop / scrubbing inside the run reuse them.
43
+ //
35
44
  // Sequence cues switch actions (SceneActions) by time: each tick a sequence works
36
45
  // out which of its actions should be on at its current time and applies / reverts
37
46
  // only what changed. It reverts only what it applied itself — an action already on
@@ -41,15 +50,19 @@
41
50
  //
42
51
  import { SceneActions, expandMaterialVariant } from '@3driseai/3drise-core';
43
52
  import { logTrigger } from '../triggers/log.js';
44
- import { getAtPath, isSwitchTrack, sampleTrack } from './clipUtils.js';
53
+ import { expandTracks, faceSource, getAtPath, isSwitchTrack, sampleTrack, sampleTrackFacing } from './clipUtils.js';
45
54
  import { interpolateValue } from '@3driseai/3drise-core';
46
- import { applyValue, clearApplierCaches, isApplicable, isTargetMounted, releaseLive } from './appliers.js';
55
+ import { applyValue, clearApplierCaches, isApplicable, isTargetMounted, readSceneValue, releaseLive } from './appliers.js';
47
56
  import { readNodeValue, restoreNodeTrack } from './nodeTracks.js';
48
57
  import { cueStatesAt, entryLocalTime, isEntryActive, resolveSequence, cueCommand, clipCueSchedule, firedBetween, } from './sequenceUtils.js';
49
58
  /** Longest an autoplaying sequence waits for its targets. */
50
59
  const MAX_TARGET_WAIT_MS = 8000;
51
60
  /** A saved playback rate: positive and finite, else 1. */
52
61
  const rate = (s) => (typeof s === 'number' && Number.isFinite(s) && s > 0 ? s : 1);
62
+ /** A continuous track with at least one "from current" key. */
63
+ const hasCurrentKey = (t) => !isSwitchTrack(t) && t.keys.some(k => k.current);
64
+ /** A captured value that can stand in for the key's own (same kind, same length). */
65
+ const sameKind = (a, b) => typeof a === typeof b && Array.isArray(a) === Array.isArray(b) && (!Array.isArray(a) || a.length === b.length);
53
66
  /**
54
67
  * Blends: a property never jumps when a driver takes it over or lets it go. When a continuous
55
68
  * track first wins a property, the runtime remembers where the property IS (the last value it
@@ -115,6 +128,8 @@ class ClipsRuntime {
115
128
  clock = 0;
116
129
  /** Blend seconds of the driver that last wrote each property (for its blend-out). */
117
130
  blendOf = new Map();
131
+ /** The driver that last wrote each property (Proposal.driver). */
132
+ writer = new Map();
118
133
  /** Next tick writes every winner even if unchanged (an edited clip). */
119
134
  forceWrite = false;
120
135
  /** Diagnostics: keys written last tick, and keys written for the FIRST time last tick. */
@@ -159,6 +174,7 @@ class ClipsRuntime {
159
174
  this.dlog('setContext', ctx ? { camera: !!ctx.camera, controls: !!ctx.controls, getAction: !!ctx.getAction } : null);
160
175
  this.ctx = ctx;
161
176
  this.written.clear();
177
+ this.writer.clear();
162
178
  this.live.clear();
163
179
  clearApplierCaches();
164
180
  }
@@ -217,8 +233,15 @@ class ClipsRuntime {
217
233
  if (ratio > 2.5 || ratio < 0.4)
218
234
  this.dlog('JUMP', key, { from: prev, to: value, speedWas: +last.toFixed(4), speedNow: +speed.toFixed(4), dt: +dt.toFixed(4), at: this.clock.toFixed(3) });
219
235
  }
220
- /** Where a property is right now: the last value the runtime wrote, else the live / authored value. */
236
+ /** Where a property is right now: the live scene where it can be read, else the last value the runtime wrote, else the live / authored value. */
221
237
  currentValue(state, path, node) {
238
+ // The live scene first: what the runtime last wrote goes stale as soon as something else
239
+ // moves the property (the visitor orbiting a held camera, a drag, an effect).
240
+ if (this.ctx) {
241
+ const seen = readSceneValue(this.ctx, state, path, node);
242
+ if (seen !== undefined)
243
+ return seen;
244
+ }
222
245
  const key = targetKey(state, node, path);
223
246
  const out = this.blendOuts.get(key);
224
247
  if (out) {
@@ -274,10 +297,10 @@ class ClipsRuntime {
274
297
  }
275
298
  };
276
299
  for (const inst of this.clips.values())
277
- add(inst.clip.tracks);
300
+ add(expandTracks(inst.clip.tracks));
278
301
  for (const inst of this.sequences.values())
279
302
  for (const e of inst.schedule.entries)
280
- add(e.clip.tracks);
303
+ add(expandTracks(e.clip.tracks));
281
304
  }
282
305
  return this.taken.has(`${state}|${node ?? ''}|${property}`);
283
306
  }
@@ -307,6 +330,7 @@ class ClipsRuntime {
307
330
  this.blendOuts.clear();
308
331
  this.blendOf.clear();
309
332
  this.written.clear();
333
+ this.writer.clear();
310
334
  this.laid.clear();
311
335
  this.rewrite.clear();
312
336
  this.clashed.clear();
@@ -324,10 +348,16 @@ class ClipsRuntime {
324
348
  time = 0;
325
349
  if (direction === -1 && time <= 0)
326
350
  time = clip.duration;
351
+ // A run from the start edge reads its "from current" keys afresh; anything else (resume,
352
+ // the reverse leg of a toggle, play after a scrub) keeps the run's captures.
353
+ const fresh = !existing || (direction === 1 && time === 0);
327
354
  this.clips.set(clip.id, {
328
355
  clip, time, speed: opts.speed ?? 1, direction, playing: true, order: ++this.order,
329
356
  cueState: existing?.cueState ?? new Map(), owned: existing?.owned ?? new Map(), cueTime: undefined,
357
+ captured: fresh || !existing ? new Map() : existing.captured,
330
358
  });
359
+ if (fresh)
360
+ this.forgetWrites('clip:' + clip.id);
331
361
  this.emit({ type: 'start', kind: 'clip', id: clip.id });
332
362
  this.bumpState();
333
363
  }
@@ -351,7 +381,7 @@ class ClipsRuntime {
351
381
  if (!inst)
352
382
  return;
353
383
  this.clips.delete(clipId);
354
- this.pendingRestore.push(...inst.clip.tracks);
384
+ this.pendingRestore.push(...expandTracks(inst.clip.tracks));
355
385
  this.releaseCues(inst.owned, 'clip', clipId);
356
386
  inst.cueState.clear();
357
387
  this.bumpState();
@@ -361,13 +391,15 @@ class ClipsRuntime {
361
391
  const inst = this.clips.get(clip.id);
362
392
  const time = Math.min(clip.duration, Math.max(0, t));
363
393
  if (inst) {
394
+ if (inst.clip !== clip)
395
+ inst.tracks = undefined;
364
396
  inst.clip = clip;
365
397
  inst.time = time;
366
398
  inst.cueTime = undefined;
367
399
  this.bump();
368
400
  }
369
401
  else {
370
- this.clips.set(clip.id, { clip, time, speed: 1, direction: 1, playing: false, order: ++this.order, cueState: new Map(), owned: new Map() });
402
+ this.clips.set(clip.id, { clip, time, speed: 1, direction: 1, playing: false, order: ++this.order, cueState: new Map(), owned: new Map(), captured: new Map() });
371
403
  this.bumpState();
372
404
  }
373
405
  }
@@ -376,10 +408,12 @@ class ClipsRuntime {
376
408
  const inst = this.clips.get(clip.id);
377
409
  if (!inst)
378
410
  return;
379
- const removed = inst.clip.tracks.filter(t => !clip.tracks.some(n => n.id === t.id));
411
+ const next = expandTracks(clip.tracks);
412
+ const removed = expandTracks(inst.clip.tracks).filter(t => !next.some(n => n.id === t.id));
380
413
  if (removed.length)
381
414
  this.pendingRestore.push(...removed);
382
415
  inst.clip = clip;
416
+ inst.tracks = undefined; // re-resolved next tick (captures kept; new current keys capture then)
383
417
  inst.time = Math.min(inst.time, clip.duration);
384
418
  this.forceWrite = true; // values may have changed under the same time (the written marks stay: no spurious blend-ins)
385
419
  this.bumpState();
@@ -402,7 +436,8 @@ class ClipsRuntime {
402
436
  isActive(clipId) { return this.clips.has(clipId); }
403
437
  /** Value of a track at the clip's current time (the panel's value column). */
404
438
  sampleAt(clip, track) {
405
- return sampleTrack(track, this.getTime(clip.id));
439
+ const resolved = this.clips.get(clip.id)?.tracks?.find(t => t.id === track.id);
440
+ return sampleTrack(resolved ?? track, this.getTime(clip.id));
406
441
  }
407
442
  // --- sequences ------------------------------------------------------------------
408
443
  /**
@@ -420,7 +455,12 @@ class ClipsRuntime {
420
455
  time = 0;
421
456
  if (!driven && direction === -1 && time <= 0)
422
457
  time = schedule.duration;
458
+ // A run from the sequence's own start edge reads its "from current" keys afresh (see play()).
459
+ const startEdge = seq.reverse ? schedule.duration : 0;
460
+ const fresh = !existing || (!driven && time === startEdge);
423
461
  this.sequences.set(seq.id, {
462
+ captured: fresh || !existing ? new Map() : (existing.captured),
463
+ entryTracks: new Map(),
424
464
  driven,
425
465
  target: time,
426
466
  seq,
@@ -441,6 +481,8 @@ class ClipsRuntime {
441
481
  id: seq.id, driven, driver: seq.driver, time, duration: schedule.duration, entries: schedule.entries.length,
442
482
  steps: seq.steps.length, cues: schedule.cues.length, waitForTargets: !!opts.waitForTargets, replaced: !!existing,
443
483
  }, this.caller());
484
+ if (fresh)
485
+ this.forgetWrites('sequence:' + seq.id);
444
486
  this.emit({ type: 'start', kind: 'sequence', id: seq.id });
445
487
  this.bumpState();
446
488
  }
@@ -525,7 +567,7 @@ class ClipsRuntime {
525
567
  return;
526
568
  this.dlog('stopSequence', inst.seq.name, this.caller());
527
569
  this.sequences.delete(seqId);
528
- inst.schedule.entries.forEach(e => this.pendingRestore.push(...e.clip.tracks));
570
+ inst.schedule.entries.forEach(e => this.pendingRestore.push(...expandTracks(e.clip.tracks)));
529
571
  this.releaseActions(inst);
530
572
  this.bumpState();
531
573
  }
@@ -547,7 +589,7 @@ class ClipsRuntime {
547
589
  this.sequences.set(seq.id, {
548
590
  seq, schedule, time, target: time, driven: false,
549
591
  speed: 1, direction: 1, baseDirection: 1, playing: false, order: ++this.order, active: new Set(),
550
- cueState: new Map(), owned: new Map(),
592
+ cueState: new Map(), owned: new Map(), captured: new Map(), entryTracks: new Map(),
551
593
  });
552
594
  this.bumpState();
553
595
  return;
@@ -561,9 +603,10 @@ class ClipsRuntime {
561
603
  return;
562
604
  this.dlog('updateSequence', seq.name, { playing: inst.playing, time: inst.time }, this.caller());
563
605
  // Restore everything the old schedule drove; whatever is still driven re-writes this frame.
564
- inst.schedule.entries.forEach(e => this.pendingRestore.push(...e.clip.tracks));
606
+ inst.schedule.entries.forEach(e => this.pendingRestore.push(...expandTracks(e.clip.tracks)));
565
607
  inst.seq = seq;
566
608
  inst.schedule = resolveSequence(seq, clips);
609
+ inst.entryTracks.clear();
567
610
  inst.time = Math.min(inst.time, inst.schedule.duration);
568
611
  inst.target = Math.min(inst.target, inst.schedule.duration);
569
612
  // The driver can change while it runs (editing): a running sequence switches mode.
@@ -658,7 +701,7 @@ class ClipsRuntime {
658
701
  continue;
659
702
  const e = inst.schedule.entries.find(x => x.id === id);
660
703
  if (e)
661
- this.pendingRestore.push(...e.clip.tracks);
704
+ this.pendingRestore.push(...expandTracks(e.clip.tracks));
662
705
  }
663
706
  inst.active = now;
664
707
  }
@@ -723,7 +766,8 @@ class ClipsRuntime {
723
766
  continue;
724
767
  // A driver taking the property over: start it from where the property is, not from the key.
725
768
  let blend = this.blends.get(key);
726
- if (!this.written.has(key)) {
769
+ // A take-over: nothing wrote it yet (or it was handed back), or another clip / sequence wrote it last.
770
+ if (!this.written.has(key) || this.writer.get(key) !== p.driver) {
727
771
  const duration = p.blend ?? DEFAULT_BLEND;
728
772
  const from = this.currentValue(p.state, p.path, p.node);
729
773
  if (duration > 0 && from !== undefined && JSON.stringify(from) !== JSON.stringify(p.value)) {
@@ -747,8 +791,12 @@ class ClipsRuntime {
747
791
  value = mixValues(p.path, blend.from, p.value, smooth(u));
748
792
  }
749
793
  const json = JSON.stringify(value);
750
- if (!this.forceWrite && this.written.get(key) === json && !this.rewrite.has(p.state))
794
+ // Unchanged: nothing to write — but the property is this driver's now (else every frame
795
+ // would look like a take-over, restart the blend and pin the property where it was).
796
+ if (!this.forceWrite && this.written.get(key) === json && !this.rewrite.has(p.state)) {
797
+ this.writer.set(key, p.driver);
751
798
  continue;
799
+ }
752
800
  // Recorded only when it landed: a target that is not mounted yet (a model still
753
801
  // loading) is retried next frame instead of being skipped for good.
754
802
  if (this.debug) {
@@ -761,6 +809,7 @@ class ClipsRuntime {
761
809
  }
762
810
  if (applyValue(ctx, p.state, p.path, value, p.node)) {
763
811
  this.written.set(key, json);
812
+ this.writer.set(key, p.driver);
764
813
  this.blendOf.set(key, p.blend ?? DEFAULT_BLEND);
765
814
  }
766
815
  else if (this.debug)
@@ -791,7 +840,7 @@ class ClipsRuntime {
791
840
  missing.add(t.node ? `${t.state} › ${t.node}` : t.state);
792
841
  }
793
842
  }
794
- const ENV = ['camera', 'sky', 'clouds', 'ocean', 'terrain'];
843
+ const ENV = ['camera', 'sky', 'clouds', 'ocean', 'terrain', 'time', 'render'];
795
844
  const idsOf = (c) => (c?.kind === 'effect' ? c.effect?.targets ?? []
796
845
  : c?.kind === 'effectClip' ? c.use?.targets ?? []
797
846
  : c?.kind === 'change' ? (c.targets ?? []).map((t) => t?.state).filter((s) => s && !ENV.includes(s)) : []);
@@ -926,20 +975,87 @@ class ClipsRuntime {
926
975
  this.releaseCues(inst.owned, 'sequence', inst.seq.id);
927
976
  inst.cueState.clear();
928
977
  }
978
+ /**
979
+ * Tracks with their "from current" keys replaced by the run's captured values. A value not
980
+ * captured yet is read now (the scene as it is, before this frame's writes) and kept for the
981
+ * run. `pending`: a target isn't mounted yet — the key's own value stands in this frame and
982
+ * the caller resolves again next tick.
983
+ */
984
+ resolveCurrent(tracks, captured, prefix) {
985
+ if (!tracks.some(hasCurrentKey))
986
+ return { tracks, pending: false };
987
+ let pending = false;
988
+ const out = tracks.map((track) => {
989
+ if (!hasCurrentKey(track))
990
+ return track;
991
+ const id = prefix + track.id;
992
+ const fallback = track.keys.find(k => k.current).value;
993
+ let v = captured.get(id);
994
+ if (v === undefined) {
995
+ const read = this.currentValue(track.state, track.path, track.node);
996
+ if (read !== undefined && sameKind(read, fallback))
997
+ v = read;
998
+ else if (this.ctx && !isTargetMounted(this.ctx, track.state, track.node)) {
999
+ pending = true;
1000
+ return track;
1001
+ }
1002
+ else
1003
+ v = fallback; // nothing readable: the stored value, for the whole run
1004
+ captured.set(id, v);
1005
+ this.dlog('from current', track.state, track.node ?? '', track.path, v);
1006
+ }
1007
+ const value = v;
1008
+ return { ...track, keys: track.keys.map(k => (k.current ? { ...k, value } : k)) };
1009
+ });
1010
+ return { tracks: out, pending };
1011
+ }
1012
+ /**
1013
+ * A new run of a timeline that wrote before (a held clip played again): what it wrote may not
1014
+ * be where the properties are any more (the visitor orbited the camera since), so its first
1015
+ * write is a take-over again — it blends from the scene as it is.
1016
+ */
1017
+ forgetWrites(driver) {
1018
+ for (const [key, d] of this.writer)
1019
+ if (d === driver)
1020
+ this.writer.delete(key);
1021
+ }
929
1022
  /** Every driver's values for this frame, lowest priority first. */
930
1023
  *proposals() {
931
1024
  const drivers = [];
1025
+ const ctx = this.ctx;
1026
+ const authored = (state) => ctx?.getSettings(state);
932
1027
  for (const inst of this.clips.values()) {
933
- drivers.push({ order: inst.order, run: () => sampleTracks(inst.clip.tracks, inst.time, inst.clip.blend ?? DEFAULT_BLEND) });
1028
+ let tracks = inst.tracks;
1029
+ if (!tracks) {
1030
+ const r = this.resolveCurrent(inst.clip.tracks, inst.captured, '');
1031
+ if (!r.pending)
1032
+ inst.tracks = r.tracks;
1033
+ tracks = r.tracks;
1034
+ }
1035
+ const clipTracks = tracks;
1036
+ const driver = 'clip:' + inst.clip.id;
1037
+ drivers.push({ order: inst.order, run: () => sampleTracks(clipTracks, inst.time, inst.clip.blend ?? DEFAULT_BLEND, authored, driver) });
934
1038
  }
935
1039
  for (const inst of this.sequences.values()) {
1040
+ const driver = 'sequence:' + inst.seq.id;
1041
+ const entries = [];
1042
+ for (const e of inst.schedule.entries) {
1043
+ if (!inst.active.has(e.id))
1044
+ continue;
1045
+ let tracks = inst.entryTracks.get(e.id);
1046
+ if (!tracks) {
1047
+ const r = this.resolveCurrent(e.clip.tracks, inst.captured, e.id + '|');
1048
+ if (!r.pending)
1049
+ inst.entryTracks.set(e.id, r.tracks);
1050
+ tracks = r.tracks;
1051
+ }
1052
+ entries.push({ e, tracks });
1053
+ }
936
1054
  drivers.push({
937
1055
  order: inst.order,
938
1056
  run: function* () {
939
- for (const e of inst.schedule.entries) {
940
- if (!inst.active.has(e.id))
941
- continue;
942
- yield* sampleTracks(e.clip.tracks, entryLocalTime(e, inst.time), e.clip.blend ?? inst.seq.blend ?? DEFAULT_BLEND);
1057
+ for (const { e, tracks } of entries) {
1058
+ yield* sampleTracks(tracks, entryLocalTime(e, inst.time), e.clip.blend ?? inst.seq.blend ?? DEFAULT_BLEND, authored, driver);
943
1059
  }
944
1060
  },
945
1061
  });
@@ -961,6 +1077,7 @@ class ClipsRuntime {
961
1077
  done.add(key);
962
1078
  const last = this.written.get(key);
963
1079
  this.written.delete(key);
1080
+ this.writer.delete(key);
964
1081
  this.blends.delete(key);
965
1082
  if (track.node) {
966
1083
  // Node tracks restore their exact pre-animation snapshot (see nodeTracks).
@@ -1134,14 +1251,16 @@ class ClipsRuntime {
1134
1251
  }
1135
1252
  const round2 = (n) => Math.round(n * 100) / 100;
1136
1253
  const isDriven = (seq) => !!seq.driver && seq.driver !== 'time';
1137
- function* sampleTracks(tracks, t, blend) {
1138
- for (const track of tracks) {
1254
+ function* sampleTracks(tracks, t, blend, authored, driver) {
1255
+ for (const track of expandTracks(tracks)) {
1139
1256
  if (track.muted || track.keys.length === 0)
1140
1257
  continue;
1141
- const value = sampleTrack(track, t);
1258
+ // a facing track's rotation: from its position track's line, the authored rotation as the facing correction
1259
+ const source = faceSource(track);
1260
+ const value = source ? sampleTrackFacing(source, t, authored(track.state)?.meshSettings?.rotation) : sampleTrack(track, t);
1142
1261
  if (value === undefined)
1143
1262
  continue;
1144
- yield { state: track.state, node: track.node, path: track.path, value, discrete: isSwitchTrack(track), blend };
1263
+ yield { state: track.state, node: track.node, path: track.path, value, discrete: isSwitchTrack(track), blend, driver };
1145
1264
  }
1146
1265
  }
1147
1266
  const clipsRuntime = new ClipsRuntime();
@@ -26,4 +26,13 @@ export declare function applyValue(ctx: ApplyContext, state: string, path: strin
26
26
  export declare function isTargetMounted(ctx: ApplyContext, state: string, node?: string): boolean;
27
27
  /** Whether a (state, path) has an applier — used by the track picker. */
28
28
  export declare function isApplicable(state: string, path: string): boolean;
29
+ /**
30
+ * A property's value as the scene shows it right now — the camera where the visitor
31
+ * orbited it, an object where a clip or a drag left it — for the paths that can be read
32
+ * back from the live objects: camera position / fov / orbit target, an object's
33
+ * transform and visibility, its (first) material's numbers and colours, a model part's
34
+ * fields. Undefined for anything else (config handles, environment, effects): the
35
+ * runtime then falls back to what it last wrote, else the authored value.
36
+ */
37
+ export declare function readSceneValue(ctx: ApplyContext, state: string, path: string, node?: string): KeyValue | undefined;
29
38
  //# sourceMappingURL=appliers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"appliers.d.ts","sourceRoot":"","sources":["../../src/animationsV2/appliers.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAgB/C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAKxC,kFAAkF;AAClF,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAKrE;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACjC,qDAAqD;IACrD,QAAQ,EAAE,GAAG,CAAC;IACd,yFAAyF;IACzF,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,GAAG,CAAC;IACpC,0EAA0E;IAC1E,SAAS,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,cAAc,GAAG,SAAS,CAAC;CACxD;AAWD,wBAAgB,kBAAkB,IAAI,IAAI,CAIzC;AAkOD;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAMhE;AAED,uFAAuF;AACvF,mFAAmF;AACnF,wBAAgB,UAAU,CAAC,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAIlH;AAED,mFAAmF;AACnF,wBAAgB,eAAe,CAAC,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAKxF;AAED,yEAAyE;AACzE,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAEjE"}
1
+ {"version":3,"file":"appliers.d.ts","sourceRoot":"","sources":["../../src/animationsV2/appliers.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAgB/C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAMxC,kFAAkF;AAClF,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAKrE;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACjC,qDAAqD;IACrD,QAAQ,EAAE,GAAG,CAAC;IACd,yFAAyF;IACzF,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,GAAG,CAAC;IACpC,0EAA0E;IAC1E,SAAS,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,cAAc,GAAG,SAAS,CAAC;CACxD;AAWD,wBAAgB,kBAAkB,IAAI,IAAI,CAIzC;AAsOD;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAMhE;AAED,uFAAuF;AACvF,mFAAmF;AACnF,wBAAgB,UAAU,CAAC,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAIlH;AAED,mFAAmF;AACnF,wBAAgB,eAAe,CAAC,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAKxF;AAED,yEAAyE;AACzE,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAEjE;AAMD;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAiClH"}
@@ -7,9 +7,10 @@ import { createSunPosition } from '../utils/utils3d.js';
7
7
  import { sunAnglesFromDirection, skySystemManager } from '@3driseai/3drise-core';
8
8
  import { sunSystemLive, SUN_SYSTEM_LIVE_PATHS, TIME_PATHS } from './sunSystemLive.js';
9
9
  import { publishRenderedSky, sceneOf } from '../utils/renderedSky.js';
10
- import { applyNodeValue, clearNodeCaches, nodesFor } from './nodeTracks.js';
10
+ import { applyNodeValue, clearNodeCaches, nodesFor, readNodeValue } from './nodeTracks.js';
11
11
  import { setObjectEffectParam } from '../operations/objectEffects.js';
12
12
  import { setAnimationLive, transformAnimationIndex } from './animationLive.js';
13
+ import { applyRenderValue, RENDER_LIVE_PATHS } from '../render/renderLive.js';
13
14
  /** `effects.<effectId>.<param>` → [effectId, param] (null for any other path). */
14
15
  export function effectParamPath(path) {
15
16
  if (!path.startsWith('effects.'))
@@ -256,8 +257,11 @@ const applyTime = (_ctx, _state, path, value) => {
256
257
  }
257
258
  return false;
258
259
  };
260
+ /** Post-processing / exposure / HDR (renderLive). False when the effect is not mounted. */
261
+ const applyRender = (_ctx, _state, path, value) => applyRenderValue(path, value);
259
262
  const APPLIERS = [
260
263
  { match: (s) => s === 'camera', apply: applyCamera },
264
+ { match: (s, p) => s === 'render' && RENDER_LIVE_PATHS.includes(p), apply: applyRender },
261
265
  { match: (s, p) => s === 'time' && TIME_PATHS.includes(p), apply: applyTime },
262
266
  // Environment before the generic path families: the ocean's `config.*` is not an object's.
263
267
  { match: (s) => s === 'sky', apply: applySky },
@@ -301,7 +305,7 @@ export function applyValue(ctx, state, path, value, node) {
301
305
  export function isTargetMounted(ctx, state, node) {
302
306
  if (state === 'camera')
303
307
  return !!ctx.camera;
304
- if (state === 'sky' || state === 'clouds' || state === 'ocean' || state === 'terrain' || state === 'time')
308
+ if (state === 'sky' || state === 'clouds' || state === 'ocean' || state === 'terrain' || state === 'time' || state === 'render')
305
309
  return true;
306
310
  if (node)
307
311
  return nodesFor(state, node).length > 0;
@@ -311,3 +315,59 @@ export function isTargetMounted(ctx, state, node) {
311
315
  export function isApplicable(state, path) {
312
316
  return APPLIERS.some(a => a.match(state, path));
313
317
  }
318
+ // --- reading the live scene (the inverse of the appliers, where it can be read) -------
319
+ const vec3 = (v) => [v.x, v.y, v.z];
320
+ /**
321
+ * A property's value as the scene shows it right now — the camera where the visitor
322
+ * orbited it, an object where a clip or a drag left it — for the paths that can be read
323
+ * back from the live objects: camera position / fov / orbit target, an object's
324
+ * transform and visibility, its (first) material's numbers and colours, a model part's
325
+ * fields. Undefined for anything else (config handles, environment, effects): the
326
+ * runtime then falls back to what it last wrote, else the authored value.
327
+ */
328
+ export function readSceneValue(ctx, state, path, node) {
329
+ if (node)
330
+ return readNodeValue(state, node, path);
331
+ if (state === 'camera') {
332
+ const cam = ctx.camera;
333
+ if (!cam)
334
+ return undefined;
335
+ if (path === 'position')
336
+ return vec3(cam.position);
337
+ if (path === 'fov')
338
+ return cam.fov;
339
+ if (path === 'controls.target')
340
+ return ctx.controls?.target ? vec3(ctx.controls.target) : undefined;
341
+ return undefined;
342
+ }
343
+ if (path.startsWith('meshSettings.')) {
344
+ const obj = objectFor(state);
345
+ if (!obj)
346
+ return undefined;
347
+ const prop = path.slice('meshSettings.'.length);
348
+ if (prop === 'visible')
349
+ return !!obj.visible;
350
+ if (prop === 'position' || prop === 'rotation' || prop === 'scale')
351
+ return vec3(obj[prop]);
352
+ return undefined;
353
+ }
354
+ if (path.startsWith('materialSettings.')) {
355
+ const obj = objectFor(state);
356
+ if (!obj)
357
+ return undefined;
358
+ const key = path.slice('materialSettings.'.length);
359
+ let out;
360
+ traverseSkippingEdgesAndEffects(obj, true, (n) => {
361
+ if (out !== undefined || !n.material)
362
+ return;
363
+ const mat = Array.isArray(n.material) ? n.material[0] : n.material;
364
+ const v = mat?.[key];
365
+ if (typeof v === 'number')
366
+ out = v;
367
+ else if (v && v.isColor && typeof v.getHexString === 'function')
368
+ out = `#${v.getHexString()}`;
369
+ });
370
+ return out;
371
+ }
372
+ return undefined;
373
+ }
@@ -22,6 +22,32 @@ export declare const isSwitchTrack: (track: Pick<Track, "discrete" | "node" | "p
22
22
  * after the last: the last key's value. Keys must be sorted by t.
23
23
  */
24
24
  export declare function sampleTrack(track: Track, t: number): KeyValue | undefined;
25
+ /** A position track: an object's, or a model part's. The only tracks that can be curved. */
26
+ export declare const isPositionTrack: (track: Pick<Track, "node" | "path">) => boolean;
27
+ /** An object's position track that turns the object to face its travel (drives its rotation). */
28
+ export declare const isFacingTrack: (track: Pick<Track, "node" | "path" | "face">) => boolean;
29
+ /** Drawn as one line through its keys instead of straight segments. */
30
+ export declare const isCurvedTrack: (track: Track) => boolean;
31
+ /**
32
+ * The rotation (Euler XYZ, radians) of an object facing its travel along the track at t: +Z along
33
+ * the line, pitching with the slope, no roll (core pathLineHeading — the path animation's own), with
34
+ * `rest` (the object's authored rotation) on top as its facing correction. Each angle is taken
35
+ * nearest to `rest`, so gliding in from the authored rotation never spins the long way round.
36
+ * Undefined when the track has no line.
37
+ */
38
+ export declare function sampleTrackFacing(track: Track, t: number, rest?: readonly number[] | null): [number, number, number] | undefined;
39
+ /** The rotation a facing track drives: a track of its own for the runtime (restore, take-over, conflicts). */
40
+ export interface FaceTrack extends Track {
41
+ faceOf: Track;
42
+ }
43
+ /** The facing track a position track drives, or undefined. */
44
+ export declare const faceSource: (track: Track) => Track | undefined;
45
+ /**
46
+ * A clip's tracks as the runtime drives them: each facing position track adds its object's
47
+ * rotation, AFTER all the clip's own tracks — so inside the clip it wins over a rotation track on
48
+ * the same object (later proposals win). Cached per tracks array (no allocation per frame).
49
+ */
50
+ export declare function expandTracks(tracks: readonly Track[]): Track[];
25
51
  export declare const sortKeys: (keys: Keyframe[]) => Keyframe[];
26
52
  /** Add a key at t, or replace the value of a key already on that frame. */
27
53
  export declare function upsertKey(track: Track, t: number, value: KeyValue, fps: number): Track;
@@ -35,6 +61,10 @@ export declare function moveKeys(clip: AnimationClip, selection: Set<string>, dt
35
61
  export declare function copyKeys(clip: AnimationClip, selection: Set<string>, dt: number, ids: Map<string, string>): AnimationClip;
36
62
  export declare function deleteKeys(clip: AnimationClip, selection: Set<string>): AnimationClip;
37
63
  export declare function setKeysEase(clip: AnimationClip, selection: Set<string>, ease: EaseName): AnimationClip;
64
+ /** Whether a track's keys can be "from current" (Keyframe.current): eased tracks only. */
65
+ export declare const canKeyFromCurrent: (track: Pick<Track, "discrete" | "node" | "path">) => boolean;
66
+ /** Mark the selected keys "from current" (on) or back to their own value (off). Switch tracks are left alone. */
67
+ export declare function setKeysCurrent(clip: AnimationClip, selection: Set<string>, on: boolean): AnimationClip;
38
68
  export declare function setKeyValue(clip: AnimationClip, keyId: string, value: KeyValue): AnimationClip;
39
69
  export declare function findKey(clip: AnimationClip, keyId: string): {
40
70
  track: Track;
@@ -1 +1 @@
1
- {"version":3,"file":"clipUtils.d.ts","sourceRoot":"","sources":["../../src/animationsV2/clipUtils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAOlF,eAAO,MAAM,GAAG,GAAI,QAAQ,MAAM,WAAqF,CAAC;AAExH,uFAAuF;AACvF,wBAAgB,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,GAAG,CAOrD;AAMD,eAAO,MAAM,cAAc,GAAI,GAAG,MAAM,EAAE,KAAK,MAAM,WAAwB,CAAC;AAC9E,eAAO,MAAM,cAAc,GAAI,OAAO,MAAM,EAAE,KAAK,MAAM,WAAgB,CAAC;AAC1E,eAAO,MAAM,WAAW,GAAI,GAAG,MAAM,EAAE,KAAK,MAAM,WAAgD,CAAC;AAEnG,gFAAgF;AAChF,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAKvD;AAaD,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,GAAG,SAAS,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAK1E;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,aAAa,GAAI,OAAO,IAAI,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC,KAAG,OACL,CAAC;AAE7E;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAyBzE;AAMD,eAAO,MAAM,QAAQ,GAAI,MAAM,QAAQ,EAAE,eAAwC,CAAC;AAElF,2EAA2E;AAC3E,wBAAgB,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,KAAK,CAOtF;AAED,0FAA0F;AAC1F,wBAAgB,QAAQ,CAAC,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,aAAa,CAc9G;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,aAAa,CAkBzH;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,aAAa,CAKrF;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,QAAQ,GAAG,aAAa,CAQtG;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,GAAG,aAAa,CAQ9F;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,GAAG,EAAE,QAAQ,CAAA;CAAE,GAAG,SAAS,CAMvG;AAED,oEAAoE;AACpE,wBAAgB,WAAW,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,EAAE,CAIzD;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,aAAa,CAEhE;AAED,4CAA4C;AAC5C,wBAAgB,SAAS,CAAC,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,aAAa,CAQvF"}
1
+ {"version":3,"file":"clipUtils.d.ts","sourceRoot":"","sources":["../../src/animationsV2/clipUtils.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAOlF,eAAO,MAAM,GAAG,GAAI,QAAQ,MAAM,WAAqF,CAAC;AAExH,uFAAuF;AACvF,wBAAgB,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,GAAG,CAOrD;AAMD,eAAO,MAAM,cAAc,GAAI,GAAG,MAAM,EAAE,KAAK,MAAM,WAAwB,CAAC;AAC9E,eAAO,MAAM,cAAc,GAAI,OAAO,MAAM,EAAE,KAAK,MAAM,WAAgB,CAAC;AAC1E,eAAO,MAAM,WAAW,GAAI,GAAG,MAAM,EAAE,KAAK,MAAM,WAAgD,CAAC;AAEnG,gFAAgF;AAChF,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAKvD;AAaD,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,GAAG,SAAS,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAK1E;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,aAAa,GAAI,OAAO,IAAI,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC,KAAG,OACL,CAAC;AAmB7E;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAsBzE;AAYD,4FAA4F;AAC5F,eAAO,MAAM,eAAe,GAAI,OAAO,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,KAAG,OACW,CAAC;AAElF,iGAAiG;AACjG,eAAO,MAAM,aAAa,GAAI,OAAO,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,KAAG,OACN,CAAC;AAExE,uEAAuE;AACvE,eAAO,MAAM,aAAa,GAAI,OAAO,KAAK,KAAG,OACiE,CAAC;AA2C/G;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAahI;AAED,8GAA8G;AAC9G,MAAM,WAAW,SAAU,SAAQ,KAAK;IAAG,MAAM,EAAE,KAAK,CAAA;CAAE;AAI1D,8DAA8D;AAC9D,eAAO,MAAM,UAAU,GAAI,OAAO,KAAK,KAAG,KAAK,GAAG,SAAwC,CAAC;AAE3F;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,SAAS,KAAK,EAAE,GAAG,KAAK,EAAE,CAa9D;AAMD,eAAO,MAAM,QAAQ,GAAI,MAAM,QAAQ,EAAE,eAAwC,CAAC;AAElF,2EAA2E;AAC3E,wBAAgB,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,KAAK,CAOtF;AAED,0FAA0F;AAC1F,wBAAgB,QAAQ,CAAC,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,aAAa,CAc9G;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,aAAa,CAkBzH;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,aAAa,CAKrF;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,QAAQ,GAAG,aAAa,CAQtG;AAED,0FAA0F;AAC1F,eAAO,MAAM,iBAAiB,GAAI,OAAO,IAAI,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC,KAAG,OAAgC,CAAC;AAEtH,iHAAiH;AACjH,wBAAgB,cAAc,CAAC,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,OAAO,GAAG,aAAa,CAatG;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,GAAG,aAAa,CAQ9F;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,GAAG,EAAE,QAAQ,CAAA;CAAE,GAAG,SAAS,CAMvG;AAED,oEAAoE;AACpE,wBAAgB,WAAW,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,EAAE,CAIzD;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,aAAa,CAEhE;AAED,4CAA4C;AAC5C,wBAAgB,SAAS,CAAC,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,aAAa,CAQvF"}