@3driseai/3drise-core 1.0.20 → 1.0.22

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 (185) hide show
  1. package/dist/autoAnimate/composer.d.ts +6 -0
  2. package/dist/autoAnimate/composer.d.ts.map +1 -1
  3. package/dist/autoAnimate/composer.js +4 -3
  4. package/dist/autoAnimate/describeScene.js +1 -1
  5. package/dist/catalog/catalogInfo.d.ts +22 -0
  6. package/dist/catalog/catalogInfo.d.ts.map +1 -0
  7. package/dist/catalog/catalogInfo.js +204 -0
  8. package/dist/catalog/index.d.ts +3 -0
  9. package/dist/catalog/index.d.ts.map +1 -0
  10. package/dist/catalog/index.js +2 -0
  11. package/dist/catalog/objectCatalog.d.ts +33 -0
  12. package/dist/catalog/objectCatalog.d.ts.map +1 -0
  13. package/dist/catalog/objectCatalog.js +99 -0
  14. package/dist/data/allMaterials.js +2 -2
  15. package/dist/data/environmentDefaults.d.ts +10 -0
  16. package/dist/data/environmentDefaults.d.ts.map +1 -0
  17. package/dist/data/environmentDefaults.js +126 -0
  18. package/dist/data/gridsDefaults.d.ts +2 -0
  19. package/dist/data/gridsDefaults.d.ts.map +1 -1
  20. package/dist/data/gridsDefaults.js +186 -0
  21. package/dist/data/index.d.ts +4 -0
  22. package/dist/data/index.d.ts.map +1 -1
  23. package/dist/data/index.js +4 -0
  24. package/dist/data/landDefaults.d.ts +26 -0
  25. package/dist/data/landDefaults.d.ts.map +1 -0
  26. package/dist/data/landDefaults.js +76 -0
  27. package/dist/data/spaceDefaults.d.ts +10 -0
  28. package/dist/data/spaceDefaults.d.ts.map +1 -0
  29. package/dist/data/spaceDefaults.js +46 -0
  30. package/dist/data/textDefaults.d.ts +16 -0
  31. package/dist/data/textDefaults.d.ts.map +1 -0
  32. package/dist/data/textDefaults.js +199 -0
  33. package/dist/environment/oceanConfigs.d.ts +5 -4
  34. package/dist/environment/oceanConfigs.d.ts.map +1 -1
  35. package/dist/environment/oceanConfigs.js +2 -2
  36. package/dist/environment/terrainConfigs.d.ts +78 -0
  37. package/dist/environment/terrainConfigs.d.ts.map +1 -1
  38. package/dist/environment/terrainConfigs.js +72 -2
  39. package/dist/index.d.ts +3 -1
  40. package/dist/index.d.ts.map +1 -1
  41. package/dist/index.js +3 -1
  42. package/dist/properties/registry.d.ts +10 -1
  43. package/dist/properties/registry.d.ts.map +1 -1
  44. package/dist/properties/registry.js +60 -9
  45. package/dist/properties/tables/environmentProperties.d.ts +9 -0
  46. package/dist/properties/tables/environmentProperties.d.ts.map +1 -0
  47. package/dist/properties/tables/environmentProperties.js +127 -0
  48. package/dist/properties/tables/gridProperties.d.ts.map +1 -1
  49. package/dist/properties/tables/gridProperties.js +184 -82
  50. package/dist/properties/tables/index.d.ts +4 -1
  51. package/dist/properties/tables/index.d.ts.map +1 -1
  52. package/dist/properties/tables/index.js +4 -1
  53. package/dist/properties/tables/landProperties.d.ts +5 -0
  54. package/dist/properties/tables/landProperties.d.ts.map +1 -0
  55. package/dist/properties/tables/landProperties.js +24 -0
  56. package/dist/properties/tables/lightProperties.js +1 -1
  57. package/dist/properties/tables/materialBounds.js +1 -1
  58. package/dist/properties/tables/optionalProperties.d.ts +1 -2
  59. package/dist/properties/tables/optionalProperties.d.ts.map +1 -1
  60. package/dist/properties/tables/optionalProperties.js +21 -0
  61. package/dist/properties/tables/spaceProperties.d.ts +8 -0
  62. package/dist/properties/tables/spaceProperties.d.ts.map +1 -0
  63. package/dist/properties/tables/spaceProperties.js +42 -0
  64. package/dist/properties/tables/textProperties.d.ts +4 -0
  65. package/dist/properties/tables/textProperties.d.ts.map +1 -0
  66. package/dist/properties/tables/textProperties.js +361 -0
  67. package/dist/properties/types.d.ts +1 -1
  68. package/dist/properties/types.d.ts.map +1 -1
  69. package/dist/services/MaterialRegistry.d.ts.map +1 -1
  70. package/dist/services/MaterialRegistry.js +2 -0
  71. package/dist/services/SkySystemManager.d.ts +22 -0
  72. package/dist/services/SkySystemManager.d.ts.map +1 -1
  73. package/dist/services/SkySystemManager.js +50 -18
  74. package/dist/services/TextureResolver.d.ts.map +1 -1
  75. package/dist/services/TextureResolver.js +22 -0
  76. package/dist/services/index.d.ts +1 -1
  77. package/dist/services/index.d.ts.map +1 -1
  78. package/dist/services/index.js +1 -1
  79. package/dist/shaders/ApollonianGridMaterial.d.ts +70 -0
  80. package/dist/shaders/ApollonianGridMaterial.d.ts.map +1 -0
  81. package/dist/shaders/ApollonianGridMaterial.js +289 -0
  82. package/dist/shaders/ConformalGridMaterial.d.ts +91 -0
  83. package/dist/shaders/ConformalGridMaterial.d.ts.map +1 -0
  84. package/dist/shaders/ConformalGridMaterial.js +335 -0
  85. package/dist/shaders/HilbertGridMaterial.d.ts +79 -0
  86. package/dist/shaders/HilbertGridMaterial.d.ts.map +1 -0
  87. package/dist/shaders/HilbertGridMaterial.js +329 -0
  88. package/dist/shaders/LensingGridMaterial.d.ts +73 -0
  89. package/dist/shaders/LensingGridMaterial.d.ts.map +1 -0
  90. package/dist/shaders/LensingGridMaterial.js +253 -0
  91. package/dist/shaders/ParastichyGridMaterial.d.ts +76 -0
  92. package/dist/shaders/ParastichyGridMaterial.d.ts.map +1 -0
  93. package/dist/shaders/ParastichyGridMaterial.js +282 -0
  94. package/dist/shaders/PhyllotaxisGridMaterial.d.ts +85 -0
  95. package/dist/shaders/PhyllotaxisGridMaterial.d.ts.map +1 -0
  96. package/dist/shaders/PhyllotaxisGridMaterial.js +532 -0
  97. package/dist/shaders/SkyboxMaterial.js +3 -3
  98. package/dist/shaders/StarsMaterial.d.ts +5 -0
  99. package/dist/shaders/StarsMaterial.d.ts.map +1 -1
  100. package/dist/shaders/StarsMaterial.js +59 -57
  101. package/dist/shaders/TruchetGridMaterial.d.ts +76 -0
  102. package/dist/shaders/TruchetGridMaterial.d.ts.map +1 -0
  103. package/dist/shaders/TruchetGridMaterial.js +290 -0
  104. package/dist/shaders/index.d.ts +7 -0
  105. package/dist/shaders/index.d.ts.map +1 -1
  106. package/dist/shaders/index.js +7 -0
  107. package/dist/types/actions.d.ts +6 -5
  108. package/dist/types/actions.d.ts.map +1 -1
  109. package/dist/types/commands.d.ts +61 -0
  110. package/dist/types/commands.d.ts.map +1 -0
  111. package/dist/types/commands.js +1 -0
  112. package/dist/types/environment.d.ts +34 -1
  113. package/dist/types/environment.d.ts.map +1 -1
  114. package/dist/types/environment.js +15 -0
  115. package/dist/types/environmentObjects.d.ts +152 -0
  116. package/dist/types/environmentObjects.d.ts.map +1 -0
  117. package/dist/types/environmentObjects.js +10 -0
  118. package/dist/types/index.d.ts +5 -1
  119. package/dist/types/index.d.ts.map +1 -1
  120. package/dist/types/landObjects.d.ts +15 -0
  121. package/dist/types/landObjects.d.ts.map +1 -0
  122. package/dist/types/landObjects.js +1 -0
  123. package/dist/types/objectSettings.d.ts +187 -16
  124. package/dist/types/objectSettings.d.ts.map +1 -1
  125. package/dist/types/objectsConfigs.d.ts +0 -3
  126. package/dist/types/objectsConfigs.d.ts.map +1 -1
  127. package/dist/types/scene3d.d.ts +8 -5
  128. package/dist/types/scene3d.d.ts.map +1 -1
  129. package/dist/types/spaceObjects.d.ts +65 -0
  130. package/dist/types/spaceObjects.d.ts.map +1 -0
  131. package/dist/types/spaceObjects.js +11 -0
  132. package/dist/types/textObjects.d.ts +352 -0
  133. package/dist/types/textObjects.d.ts.map +1 -0
  134. package/dist/types/textObjects.js +14 -0
  135. package/dist/types/types.d.ts +3 -6
  136. package/dist/types/types.d.ts.map +1 -1
  137. package/dist/types/users.d.ts +3 -1
  138. package/dist/types/users.d.ts.map +1 -1
  139. package/dist/types/users.js +2 -0
  140. package/dist/ui/index.d.ts +5 -0
  141. package/dist/ui/index.d.ts.map +1 -0
  142. package/dist/ui/index.js +4 -0
  143. package/dist/ui/uiBindings.d.ts +45 -0
  144. package/dist/ui/uiBindings.d.ts.map +1 -0
  145. package/dist/ui/uiBindings.js +172 -0
  146. package/dist/ui/uiKeys.d.ts +14 -0
  147. package/dist/ui/uiKeys.d.ts.map +1 -0
  148. package/dist/ui/uiKeys.js +22 -0
  149. package/dist/ui/uiSanitize.d.ts +18 -0
  150. package/dist/ui/uiSanitize.d.ts.map +1 -0
  151. package/dist/ui/uiSanitize.js +251 -0
  152. package/dist/ui/uiSpec.d.ts +116 -0
  153. package/dist/ui/uiSpec.d.ts.map +1 -0
  154. package/dist/ui/uiSpec.js +173 -0
  155. package/dist/utils/environmentMigration.d.ts +3 -0
  156. package/dist/utils/environmentMigration.d.ts.map +1 -0
  157. package/dist/utils/environmentMigration.js +50 -0
  158. package/dist/utils/generativeAnimatable.d.ts +1 -1
  159. package/dist/utils/generativeAnimatable.d.ts.map +1 -1
  160. package/dist/utils/generativeAnimatable.js +12 -0
  161. package/dist/utils/getAnimatableProperties.d.ts +1 -1
  162. package/dist/utils/getAnimatableProperties.d.ts.map +1 -1
  163. package/dist/utils/getAnimatableProperties.js +1 -1
  164. package/dist/utils/gridMigration.d.ts +3 -0
  165. package/dist/utils/gridMigration.d.ts.map +1 -0
  166. package/dist/utils/gridMigration.js +34 -0
  167. package/dist/utils/index.d.ts +5 -0
  168. package/dist/utils/index.d.ts.map +1 -1
  169. package/dist/utils/index.js +5 -0
  170. package/dist/utils/objectEffects.d.ts +24 -2
  171. package/dist/utils/objectEffects.d.ts.map +1 -1
  172. package/dist/utils/objectEffects.js +29 -2
  173. package/dist/utils/objectMigration.d.ts +9 -0
  174. package/dist/utils/objectMigration.d.ts.map +1 -0
  175. package/dist/utils/objectMigration.js +12 -0
  176. package/dist/utils/skyPhase.d.ts +61 -0
  177. package/dist/utils/skyPhase.d.ts.map +1 -0
  178. package/dist/utils/skyPhase.js +93 -0
  179. package/dist/utils/spaceMigration.d.ts +3 -0
  180. package/dist/utils/spaceMigration.d.ts.map +1 -0
  181. package/dist/utils/spaceMigration.js +46 -0
  182. package/dist/utils/sunUtils.d.ts +26 -1
  183. package/dist/utils/sunUtils.d.ts.map +1 -1
  184. package/dist/utils/sunUtils.js +37 -6
  185. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/properties/registry.ts"],"names":[],"mappings":"AA8CA,OAAO,EACH,KAAK,gBAAgB,EAMxB,MAAM,6BAA6B,CAAC;AAOrC,OAAO,KAAK,EACR,iBAAiB,EAAE,cAAc,EAAE,eAAe,EAAE,YAAY,EAAkB,YAAY,EACjG,MAAM,SAAS,CAAC;AAMjB,0CAA0C;AAC1C,eAAO,MAAM,oBAAoB,+FAAgG,CAAC;AAUlI;;;GAGG;AACH,eAAO,MAAM,2BAA2B,aAAoD,CAAC;AAmB7F,4DAA4D;AAC5D,eAAO,MAAM,aAAa,GAAI,KAAK,MAAM,KAAG,MACiC,CAAC;AAE9E,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAOpE;AAID,kGAAkG;AAClG,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,GAAG,YAAY,GAAG,IAAI,CAaxE;AAgCD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,gBAAgB,EAAE,EAAE,MAAM,SAAK,EAAE,MAAM,GAAE,cAAyB,GAAG,YAAY,EAAE,CAExH;AAuLD,+EAA+E;AAC/E,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,GAAG,GAAG,YAAY,EAAE,CAIxF;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,GAAG,GAAG,OAAO,CAInG;AAED,yEAAyE;AACzE,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,GAAG,GAAG,YAAY,EAAE,CAE1F;AAED;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,EAAE,WAAW,CAAC,cAAc,CAAqE,CAAC;AAEnI,wFAAwF;AACxF,wBAAgB,aAAa,CAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,GAAG,GAAG,YAAY,EAAE,CAIrF;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAE9G;AAED,+CAA+C;AAC/C,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,GAAG,GAAG,iBAAiB,EAAE,CAE/F;AAED,wHAAwH;AACxH,eAAO,MAAM,cAAc,GAAI,OAAO,MAAM,KAAG,eAC+E,CAAC"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/properties/registry.ts"],"names":[],"mappings":"AAsDA,OAAO,EACH,KAAK,gBAAgB,EAMxB,MAAM,6BAA6B,CAAC;AAWrC,OAAO,KAAK,EACR,iBAAiB,EAAE,cAAc,EAAE,eAAe,EAAE,YAAY,EAAkB,YAAY,EACjG,MAAM,SAAS,CAAC;AAMjB,0CAA0C;AAC1C,eAAO,MAAM,oBAAoB,+FAAgG,CAAC;AAUlI;;;GAGG;AACH,eAAO,MAAM,2BAA2B,aAAoF,CAAC;AAE7H;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,GAAI,KAAK;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,GAAG,SAAS,KAAG,OAC2B,CAAC;AAmB9H,4DAA4D;AAC5D,eAAO,MAAM,aAAa,GAAI,KAAK,MAAM,KAAG,MACiC,CAAC;AAE9E,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAOpE;AAID,kGAAkG;AAClG,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,GAAG,YAAY,GAAG,IAAI,CAaxE;AAgCD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,gBAAgB,EAAE,EAAE,MAAM,SAAK,EAAE,MAAM,GAAE,cAAyB,GAAG,YAAY,EAAE,CAExH;AAwND,+EAA+E;AAC/E,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,GAAG,GAAG,YAAY,EAAE,CAIxF;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,GAAG,GAAG,OAAO,CAKnG;AAED,yEAAyE;AACzE,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,GAAG,GAAG,YAAY,EAAE,CAE1F;AAED;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,EAAE,WAAW,CAAC,cAAc,CAA6G,CAAC;AAE3K,wFAAwF;AACxF,wBAAgB,aAAa,CAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,GAAG,GAAG,YAAY,EAAE,CAIrF;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAE9G;AAED,+CAA+C;AAC/C,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,GAAG,GAAG,iBAAiB,EAAE,CAE/F;AAED,wHAAwH;AACxH,eAAO,MAAM,cAAc,GAAI,OAAO,MAAM,KAAG,eAC+E,CAAC"}
@@ -2,13 +2,21 @@ import { LIGHTS_ANIMATABLE } from '../data/lightsDefaults.js';
2
2
  import { GENERATIVE_PARTICLES_ANIMATABLE } from '../data/particlesDefaults.js';
3
3
  import { EFFECTS_ANIMATABLE } from '../data/effectsDefaults.js';
4
4
  import { GRIDS_ANIMATABLE } from '../data/gridsDefaults.js';
5
+ import { ENVIRONMENT_OBJECTS_ANIMATABLE } from '../data/environmentDefaults.js';
6
+ import { LAND_OBJECTS_ANIMATABLE } from '../data/landDefaults.js';
7
+ import { SPACE_OBJECTS_ANIMATABLE } from '../data/spaceDefaults.js';
8
+ import { TEXT_OBJECTS_ANIMATABLE, isTextObjectConfig } from '../data/textDefaults.js';
5
9
  import { CLOUD_ANIMATABLE_PROPERTIES } from '../environment/cloudConfigs.js';
6
- import { skyOptionalProperties, cloudDeckOptionalProperties, cirrusOptionalProperties, oceanSurfaceOptionalProperties, terrainOptionalProperties, rainOptionalProperties, cloudsOptionalProperties, textOptionalProperties, plainOptionalProperties, pathOptionalProperties, edgesOptionalProperties, } from './tables/optionalProperties.js';
10
+ import { skyOptionalProperties, skyStarsOptionalProperties, cloudDeckOptionalProperties, cirrusOptionalProperties, oceanSurfaceOptionalProperties, terrainOptionalProperties, rainOptionalProperties, cloudsOptionalProperties, textOptionalProperties, plainOptionalProperties, pathOptionalProperties, edgesOptionalProperties, } from './tables/optionalProperties.js';
7
11
  import { SHAPE_CONTROLS, MODE_CONTROLS } from './tables/geometryProperties.js';
8
12
  import { LIGHT_PROPERTIES, SHADOW_PROPERTIES } from './tables/lightProperties.js';
9
13
  import { PARTICLES_PROPERTIES } from './tables/particlesProperties.js';
10
14
  import { EFFECT_PROPERTIES } from './tables/effectsProperties.js';
11
15
  import { GRID_PROPERTIES } from './tables/gridProperties.js';
16
+ import { ENVIRONMENT_PROPERTIES } from './tables/environmentProperties.js';
17
+ import { LAND_PROPERTIES } from './tables/landProperties.js';
18
+ import { SPACE_PROPERTIES } from './tables/spaceProperties.js';
19
+ import { TEXT_PROPERTIES } from './tables/textProperties.js';
12
20
  import { MATERIAL_PROPERTY_BOUNDS } from './tables/materialBounds.js';
13
21
  // =============================================================================
14
22
  // Data owned here (was inline in getAnimatableProperties / the timeline)
@@ -26,7 +34,13 @@ const MATERIAL_STRUCTURAL = new Set([
26
34
  * Objects that own their shader: their materialSettings (if any) never reach the
27
35
  * renderer, so they have no material properties. They animate through config.
28
36
  */
29
- export const SELF_MANAGED_MATERIAL_TYPES = new Set(['effect', 'grid', 'light', 'particles']);
37
+ export const SELF_MANAGED_MATERIAL_TYPES = new Set(['effect', 'grid', 'light', 'particles', 'environment', 'space', 'land']);
38
+ /**
39
+ * True when the object draws with its own shaders: a whole object type from the set above, or a text look.
40
+ * Object type 'text' also hosts the legacy bitmap / 3D text, which keeps its material, so text is decided per
41
+ * object (config.type), not by type. Use this, never the set alone, wherever the material panel is decided.
42
+ */
43
+ export const selfManagesMaterial = (obj) => !!obj && (SELF_MANAGED_MATERIAL_TYPES.has(obj.type) || (obj.type === 'text' && isTextObjectConfig(obj.config)));
30
44
  const CAMERA_SPECS = [
31
45
  { key: 'position', name: 'position', label: 'Position', kind: 'vec3', domain: 'camera', animatable: true },
32
46
  { key: 'controls.target', name: 'target', label: 'Target', kind: 'vec3', domain: 'camera', animatable: true },
@@ -188,6 +202,13 @@ function controlSpecs(controls, prefix, group) {
188
202
  return spec;
189
203
  });
190
204
  }
205
+ /** Environment families animate by the environment rule (numbers and colours unless the schema opts out). */
206
+ const envFamily = (domain, list, prefix) => ({
207
+ domain,
208
+ list,
209
+ prefix,
210
+ animatable: new Map(list.filter(envAnimatable).map(p => [p.name, p.label ?? propertyLabel(p.name)])),
211
+ });
191
212
  const tableOf = (rows) => new Map((rows ?? []).map(r => [r.value, r.label]));
192
213
  /** The config family of an object: by object type, else by config.type (as getAnimatableProperties does). */
193
214
  function familyOf(obj) {
@@ -197,6 +218,19 @@ function familyOf(obj) {
197
218
  const particles = () => ({ domain: 'particles', list: PARTICLES_PROPERTIES[t] ?? [], animatable: tableOf(GENERATIVE_PARTICLES_ANIMATABLE[t]) });
198
219
  const effect = () => ({ domain: 'effect', list: EFFECT_PROPERTIES[t] ?? [], animatable: tableOf(EFFECTS_ANIMATABLE[t]) });
199
220
  const grid = () => ({ domain: 'grid', list: GRID_PROPERTIES[t] ?? [], animatable: tableOf(GRIDS_ANIMATABLE[t]) });
221
+ const environment = () => ({ domain: 'environment', list: ENVIRONMENT_PROPERTIES[t] ?? [], animatable: tableOf(ENVIRONMENT_OBJECTS_ANIMATABLE[t]) });
222
+ const space = () => ({ domain: 'space', list: SPACE_PROPERTIES[t] ?? [], animatable: tableOf(SPACE_OBJECTS_ANIMATABLE[t]) });
223
+ const land = () => ({ domain: 'land', list: LAND_PROPERTIES[t] ?? [], animatable: tableOf(LAND_OBJECTS_ANIMATABLE[t]) });
224
+ const text = () => ({ domain: 'text', list: TEXT_PROPERTIES[t] ?? [], animatable: tableOf(TEXT_OBJECTS_ANIMATABLE[t]) });
225
+ // Environment elements seen through the object view, so the Animation and
226
+ // MouseMove panels (getAnimatableProperties) work on them like on any object.
227
+ // The sky is flat — no config block — so it is keyed before the config.type gate.
228
+ if (type === 'sky')
229
+ return envFamily('sky', skyOptionalProperties, '');
230
+ if (type === 'ocean' && obj?.config)
231
+ return envFamily('ocean', oceanSurfaceOptionalProperties(obj.config.waterType, obj.config.host), 'config.');
232
+ if (type === 'terrain' && obj?.config)
233
+ return envFamily('terrain', terrainOptionalProperties(obj.config.terrainType), 'config.');
200
234
  if (t) {
201
235
  if (type === 'light')
202
236
  return light();
@@ -206,6 +240,18 @@ function familyOf(obj) {
206
240
  return effect();
207
241
  if (type === 'grid')
208
242
  return grid();
243
+ // Before the rain branch: the rain *object* is a family member; the branch below is the scene-level rain element.
244
+ if (type === 'environment' && ENVIRONMENT_OBJECTS_ANIMATABLE[t])
245
+ return environment();
246
+ // Space objects only under their own object type: their keys ('stars', 'earth'…) are too generic to match by config.type alone.
247
+ if (type === 'space' && SPACE_OBJECTS_ANIMATABLE[t])
248
+ return space();
249
+ // Land objects only under their own object type: their keys are landform names ('hills'…).
250
+ if (type === 'land' && LAND_OBJECTS_ANIMATABLE[t])
251
+ return land();
252
+ // Text looks only under the text object type, and only with a config.type: the legacy 2d / 3d text (no config.type) falls through to its own list below.
253
+ if (type === 'text' && TEXT_OBJECTS_ANIMATABLE[t])
254
+ return text();
209
255
  if (t === 'rain')
210
256
  return { domain: 'rain', list: rainOptionalProperties, animatable: new Map(RAIN_ANIMATABLE_KEYS.map(k => [k, propertyLabel(k)])) };
211
257
  if (t === 'clouds')
@@ -239,11 +285,11 @@ function configSpecs(obj) {
239
285
  const family = familyOf(obj);
240
286
  if (!family)
241
287
  return [];
242
- const { domain, list, animatable } = family;
288
+ const { domain, list, animatable, prefix = 'config.' } = family;
243
289
  const out = [];
244
290
  const seen = new Set();
245
291
  for (const p of list) {
246
- const spec = fromOptional(p, 'config.', domain, !!animatable?.has(p.name));
292
+ const spec = fromOptional(p, prefix, domain, !!animatable?.has(p.name));
247
293
  out.push(spec);
248
294
  seen.add(p.name);
249
295
  }
@@ -252,7 +298,7 @@ function configSpecs(obj) {
252
298
  if (seen.has(name))
253
299
  continue;
254
300
  const kind = kindOfValue(name, obj?.config?.[name]) ?? 'number';
255
- out.push({ key: `config.${name}`, name, label: label || propertyLabel(name), kind, domain, animatable: true });
301
+ out.push({ key: `${prefix}${name}`, name, label: label || propertyLabel(name), kind, domain, animatable: true });
256
302
  }
257
303
  if (domain === 'light') {
258
304
  for (const p of SHADOW_PROPERTIES[obj.config.type] ?? []) {
@@ -264,7 +310,7 @@ function configSpecs(obj) {
264
310
  function objectSpecs(obj) {
265
311
  if (!obj)
266
312
  return [];
267
- const ownsMaterial = !SELF_MANAGED_MATERIAL_TYPES.has(obj.type);
313
+ const ownsMaterial = !selfManagesMaterial(obj);
268
314
  return [
269
315
  ...TRANSFORM_SPECS,
270
316
  ...(ownsMaterial ? materialSpecs(obj.materialSettings, 'materialSettings.', 'material') : []),
@@ -278,7 +324,10 @@ function objectSpecs(obj) {
278
324
  function environmentSpecs(element, settings) {
279
325
  switch (element) {
280
326
  case 'sky':
281
- return envSpecs(skyOptionalProperties, '', 'sky');
327
+ return [
328
+ ...envSpecs(skyOptionalProperties, '', 'sky'),
329
+ ...envSpecs(skyStarsOptionalProperties, 'stars.', 'stars'),
330
+ ];
282
331
  case 'clouds':
283
332
  return [
284
333
  ...envSpecs(cloudDeckOptionalProperties(settings?.config?.deckType), 'config.', 'clouds'),
@@ -312,6 +361,8 @@ export function isPropertyLive(element, spec, settings) {
312
361
  return settings?.edgesSettings?.enabled !== false;
313
362
  if (element === 'clouds')
314
363
  return spec.domain === 'cirrus' ? !!settings?.cirrus?.enabled : !!settings?.config?.enabled;
364
+ if (spec.domain === 'stars')
365
+ return settings?.stars?.visible !== false;
315
366
  return true;
316
367
  }
317
368
  /** Properties that can be driven per frame on this element right now. */
@@ -320,11 +371,11 @@ export function getAnimatableSpecs(element, settings) {
320
371
  }
321
372
  /**
322
373
  * Object config families the animation timeline keys. The V2 applier drives
323
- * `config.*` through the object's live config handle, which these four register;
374
+ * `config.*` through the object's live config handle, which these seven register;
324
375
  * rain and the legacy cloud object have per-frame knobs for the keyframe /
325
376
  * mouse-move systems only.
326
377
  */
327
- export const TRACK_CONFIG_DOMAINS = new Set(['light', 'particles', 'effect', 'grid']);
378
+ export const TRACK_CONFIG_DOMAINS = new Set(['light', 'particles', 'effect', 'grid', 'environment', 'space', 'land', 'text']);
328
379
  /** What an animation clip can key on this element (timeline track picker, AI clips). */
329
380
  export function getTrackSpecs(element, settings) {
330
381
  const specs = getAnimatableSpecs(element, settings);
@@ -0,0 +1,9 @@
1
+ import type { OptionalProperty } from './optionalProperties';
2
+ import type { EnvironmentObjectType } from '../../types/environmentObjects';
3
+ export declare const snowEnvironmentProperties: OptionalProperty[];
4
+ export declare const sandstormEnvironmentProperties: OptionalProperty[];
5
+ export declare const rainbowEnvironmentProperties: OptionalProperty[];
6
+ export declare const tornadoEnvironmentProperties: OptionalProperty[];
7
+ export declare const thunderstormEnvironmentProperties: OptionalProperty[];
8
+ export declare const ENVIRONMENT_PROPERTIES: Record<EnvironmentObjectType, OptionalProperty[]>;
9
+ //# sourceMappingURL=environmentProperties.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"environmentProperties.d.ts","sourceRoot":"","sources":["../../../src/properties/tables/environmentProperties.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAO5E,eAAO,MAAM,yBAAyB,EAAE,gBAAgB,EAuBvD,CAAC;AAEF,eAAO,MAAM,8BAA8B,EAAE,gBAAgB,EAsB5D,CAAC;AAEF,eAAO,MAAM,4BAA4B,EAAE,gBAAgB,EAU1D,CAAC;AAEF,eAAO,MAAM,4BAA4B,EAAE,gBAAgB,EAyB1D,CAAC;AAEF,eAAO,MAAM,iCAAiC,EAAE,gBAAgB,EAqB/D,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,qBAAqB,EAAE,gBAAgB,EAAE,CAgBpF,CAAC"}
@@ -0,0 +1,127 @@
1
+ // =============================================================================
2
+ // ENVIRONMENT OBJECTS OPTIONAL PROPERTIES (generated: gen_family.mjs)
3
+ // Order: selects, base, variant, wind, colours, pointer (pointer* -> Pointer tab).
4
+ // =============================================================================
5
+ export const snowEnvironmentProperties = [
6
+ { name: 'quality', description: 'Detail level: scales the number of flakes (rebuilds)', type: 'select', options: ['low', 'medium', 'high'], optionLabels: ['Low', 'Medium', 'High'] },
7
+ { name: 'intensity', description: 'Overall brightness of the snow', type: 'number', min: 0, max: 2, step: 0.01 },
8
+ { name: 'speed', description: 'Time scale of the whole fall: flakes, gusts and eddies', type: 'number', min: 0, max: 3, step: 0.01 },
9
+ { name: 'opacity', description: 'Overall opacity', type: 'number', min: 0, max: 1, step: 0.01 },
10
+ { name: 'density', description: 'How heavily it snows (rebuilds)', type: 'number', min: 0.1, max: 3, step: 0.05 },
11
+ { name: 'flakeSize', description: 'Mean flake diameter; bigger flakes fall faster', type: 'number', min: 0.01, max: 0.12, step: 0.001, unit: 'm' },
12
+ { name: 'flutter', description: 'Side-to-side spiral of the falling flakes', type: 'number', min: 0, max: 1, step: 0.01 },
13
+ { name: 'tumble', description: 'How much the crystals rock and flip as they fall', type: 'number', min: 0, max: 1, step: 0.01 },
14
+ { name: 'glint', description: 'Sparkle of sunlight off the tumbling crystals', type: 'number', min: 0, max: 2, step: 0.01 },
15
+ { name: 'windStrength', description: 'Mean wind (1 = 8 m/s)', type: 'number', min: 0, max: 1, step: 0.01 },
16
+ { name: 'windDirection', description: 'Compass direction the wind blows toward', type: 'number', min: 0, max: 360, step: 1, unit: '°' },
17
+ { name: 'turbulence', description: 'Swirling eddies on top of the wind', type: 'number', min: 0, max: 1, step: 0.01 },
18
+ { name: 'gustiness', description: 'Strength of the gust waves that sweep downwind', type: 'number', min: 0, max: 1, step: 0.01 },
19
+ { name: 'bands', description: 'How strongly the gusts gather the snow into sweeping curtains', type: 'number', min: 0, max: 1, step: 0.01 },
20
+ { name: 'seed', description: 'Random layout of the flakes (rebuilds)', type: 'number', min: 1, max: 999, step: 1 },
21
+ { name: 'followCamera', description: 'Keep snowing around the camera wherever it goes, ignoring the sides of the volume', type: 'boolean' },
22
+ { name: 'color', description: 'Colour of the snow, lit by the sun and the sky', type: 'color' },
23
+ { name: 'shadeColor', description: 'Sky-lit shade on the side away from the sun', type: 'color' },
24
+ { name: 'pointerMode', description: 'What the cursor is: off, a gust of air, a shelter the snow slides off, or a warm hand that melts it', type: 'select', options: ['none', 'gust', 'shelter', 'warmth'], optionLabels: ['Off', 'Gust', 'Shelter', 'Warmth'] },
25
+ { name: 'pointerStrength', description: 'Force of the gust, width of the clearing, heat of the hand', type: 'number', min: 0, max: 3, step: 0.01 },
26
+ { name: 'pointerRadius', description: 'Reach of the cursor (1 = 2 m)', type: 'number', min: 0.2, max: 3, step: 0.01 },
27
+ { name: 'pointerColor', description: 'Warm glow of the melting droplets (Warmth)', type: 'color' },
28
+ ];
29
+ export const sandstormEnvironmentProperties = [
30
+ { name: 'quality', description: 'Detail level: scales the counts and the volume samples (rebuilds)', type: 'select', options: ['low', 'medium', 'high'], optionLabels: ['Low', 'Medium', 'High'] },
31
+ { name: 'intensity', description: 'Overall brightness', type: 'number', min: 0, max: 2, step: 0.01 },
32
+ { name: 'speed', description: 'Time scale of the storm: billows, gust fronts and grains', type: 'number', min: 0, max: 3, step: 0.01 },
33
+ { name: 'opacity', description: 'Overall opacity', type: 'number', min: 0, max: 1, step: 0.01 },
34
+ { name: 'density', description: 'How thick the dust is (rebuilds)', type: 'number', min: 0.1, max: 3, step: 0.05 },
35
+ { name: 'height', description: 'Scale height of the dust, as a share of the volume height', type: 'number', min: 0.05, max: 1, step: 0.01 },
36
+ { name: 'walls', description: 'Strength of the gust fronts: towering walls of dust rolling downwind', type: 'number', min: 0, max: 1, step: 0.01 },
37
+ { name: 'haze', description: 'Fine dust hanging everywhere between the walls', type: 'number', min: 0, max: 1, step: 0.01 },
38
+ { name: 'grains', description: 'Sand grains hopping along the ground', type: 'number', min: 0, max: 2, step: 0.01 },
39
+ { name: 'grainSize', description: 'Size and hop length of the grains', type: 'number', min: 0.3, max: 3, step: 0.01 },
40
+ { name: 'windStrength', description: 'Mean wind (1 = 8 m/s)', type: 'number', min: 0, max: 1, step: 0.01 },
41
+ { name: 'windDirection', description: 'Compass direction the wind blows toward', type: 'number', min: 0, max: 360, step: 1, unit: '°' },
42
+ { name: 'turbulence', description: 'How strongly the billows are warped and torn', type: 'number', min: 0, max: 1, step: 0.01 },
43
+ { name: 'seed', description: 'Random layout (rebuilds)', type: 'number', min: 1, max: 999, step: 1 },
44
+ { name: 'followCamera', description: 'Keep the weather around the camera wherever it goes, ignoring the sides of the volume', type: 'boolean' },
45
+ { name: 'color', description: 'Colour of the dust (its albedo: thick dust tints everything behind it)', type: 'color' },
46
+ { name: 'shadeColor', description: 'Sky-lit colour of the dust in shadow', type: 'color' },
47
+ { name: 'pointerMode', description: 'What the cursor is: off, a windbreak with still air behind it, a dust devil, or a gust', type: 'select', options: ['none', 'windbreak', 'devil', 'gust'], optionLabels: ['Off', 'Windbreak', 'Dust devil', 'Gust'] },
48
+ { name: 'pointerStrength', description: 'How still the lee, how strong the devil, how hard the gust', type: 'number', min: 0, max: 3, step: 0.01 },
49
+ { name: 'pointerRadius', description: 'Reach of the cursor (1 = 3 m)', type: 'number', min: 0.2, max: 3, step: 0.01 },
50
+ { name: 'pointerColor', description: 'Glow of the dust lifted by the dust devil', type: 'color' },
51
+ ];
52
+ export const rainbowEnvironmentProperties = [
53
+ { name: 'intensity', description: 'Brightness of the bow', type: 'number', min: 0, max: 2, step: 0.01 },
54
+ { name: 'opacity', description: 'Overall opacity', type: 'number', min: 0, max: 1, step: 0.01 },
55
+ { name: 'dropSize', description: 'Raindrop diameter: big drops give a narrow, vivid bow; small ones pale fringes inside it; fog drops a white fogbow', type: 'number', min: 0.03, max: 3, step: 0.01, unit: 'mm' },
56
+ { name: 'secondary', description: 'Strength of the secondary bow outside the primary (reversed colours, ~51°); 0 = a single rainbow', type: 'number', min: 0, max: 1, step: 0.01 },
57
+ { name: 'color', description: 'Tint of the bow (white = the pure spectrum)', type: 'color' },
58
+ { name: 'pointerMode', description: 'What the cursor is: off, a mist spray that brightens the bow, a clearing that wipes it, or a polarising filter that fades it as it turns', type: 'select', options: ['none', 'spray', 'clear', 'polarizer'], optionLabels: ['Off', 'Mist spray', 'Clearing', 'Polarising filter'] },
59
+ { name: 'pointerStrength', description: 'Brightness of the sprayed stretch, depth of the clearing, strength of the filter', type: 'number', min: 0, max: 3, step: 0.01 },
60
+ { name: 'pointerRadius', description: 'Reach of the spray or clearing (1 = 6 m)', type: 'number', min: 0.2, max: 3, step: 0.01 },
61
+ { name: 'pointerColor', description: 'Tint of the bow in the sprayed mist', type: 'color' },
62
+ ];
63
+ export const tornadoEnvironmentProperties = [
64
+ { name: 'quality', description: 'Detail level: scales the counts and the volume samples (rebuilds)', type: 'select', options: ['low', 'medium', 'high'], optionLabels: ['Low', 'Medium', 'High'] },
65
+ { name: 'intensity', description: 'Overall brightness', type: 'number', min: 0, max: 2, step: 0.01 },
66
+ { name: 'speed', description: 'Time scale of the whole vortex', type: 'number', min: 0, max: 3, step: 0.01 },
67
+ { name: 'opacity', description: 'Overall opacity', type: 'number', min: 0, max: 1, step: 0.01 },
68
+ { name: 'density', description: 'How opaque the funnel and dust are (rebuilds)', type: 'number', min: 0.1, max: 3, step: 0.05 },
69
+ { name: 'rotation', description: 'Spin rate of the vortex', type: 'number', min: 0, max: 3, step: 0.01 },
70
+ { name: 'coreRadius', description: 'Radius of the core, and so the width of the funnel', type: 'number', min: 0.3, max: 3, step: 0.01 },
71
+ { name: 'reach', description: 'How far down the condensation funnel reaches (1 = touchdown)', type: 'number', min: 0, max: 1, step: 0.01 },
72
+ { name: 'wander', description: 'How much the axis wanders and bends like a rope', type: 'number', min: 0, max: 1, step: 0.01 },
73
+ { name: 'lift', description: 'Updraft: how fast the streaks and dust climb', type: 'number', min: 0, max: 3, step: 0.01 },
74
+ { name: 'dust', description: 'Ground dust drawn in and swirled up around the funnel', type: 'number', min: 0, max: 2, step: 0.01 },
75
+ { name: 'dustSpread', description: 'How far out the dust swirls', type: 'number', min: 0.2, max: 3, step: 0.01 },
76
+ { name: 'windStrength', description: 'Mean wind (1 = 8 m/s)', type: 'number', min: 0, max: 1, step: 0.01 },
77
+ { name: 'windDirection', description: 'Compass direction the wind blows toward', type: 'number', min: 0, max: 360, step: 1, unit: '°' },
78
+ { name: 'turbulence', description: 'Raggedness of the flow', type: 'number', min: 0, max: 1, step: 0.01 },
79
+ { name: 'seed', description: 'Random layout (rebuilds)', type: 'number', min: 1, max: 999, step: 1 },
80
+ { name: 'followCamera', description: 'Keep the volume centred on the camera horizontally', type: 'boolean' },
81
+ { name: 'color', description: 'Colour of the condensation funnel', type: 'color' },
82
+ { name: 'shadeColor', description: 'Storm-light colour in shadow', type: 'color' },
83
+ { name: 'dustColor', description: 'Colour of the swirling dust', type: 'color' },
84
+ { name: 'pointerMode', description: 'What the cursor does: off, steers the foot of the tornado, feeds its inflow, or bends it with a gust', type: 'select', options: ['none', 'steer', 'feed', 'gust'], optionLabels: ['Off', 'Steer', 'Feed', 'Gust'] },
85
+ { name: 'pointerStrength', description: 'How far it steers, how much it feeds, how hard it bends', type: 'number', min: 0, max: 3, step: 0.01 },
86
+ { name: 'pointerRadius', description: 'Height span of the bend (Gust)', type: 'number', min: 0.2, max: 3, step: 0.01 },
87
+ { name: 'pointerColor', description: 'Colour of the dust the cursor feeds in', type: 'color' },
88
+ ];
89
+ export const thunderstormEnvironmentProperties = [
90
+ { name: 'quality', description: 'Detail level: scales the counts and the volume samples (rebuilds)', type: 'select', options: ['low', 'medium', 'high'], optionLabels: ['Low', 'Medium', 'High'] },
91
+ { name: 'intensity', description: 'Overall brightness', type: 'number', min: 0, max: 2, step: 0.01 },
92
+ { name: 'speed', description: 'Time scale of the drifting curtains and the flashes', type: 'number', min: 0, max: 3, step: 0.01 },
93
+ { name: 'opacity', description: 'Overall opacity', type: 'number', min: 0, max: 1, step: 0.01 },
94
+ { name: 'density', description: 'How thick the storm curtains are (rebuilds)', type: 'number', min: 0.1, max: 3, step: 0.05 },
95
+ { name: 'shafts', description: 'Visibility of the dark storm curtains', type: 'number', min: 0, max: 1, step: 0.01 },
96
+ { name: 'flashRate', description: 'Lightning flashes per minute (random intervals)', type: 'number', min: 0, max: 30, step: 0.1 },
97
+ { name: 'flashIntensity', description: 'Brightness of a flash, on the curtains and on the scene', type: 'number', min: 0, max: 3, step: 0.01 },
98
+ { name: 'windStrength', description: 'Mean wind (1 = 8 m/s)', type: 'number', min: 0, max: 1, step: 0.01 },
99
+ { name: 'windDirection', description: 'Compass direction the wind blows toward', type: 'number', min: 0, max: 360, step: 1, unit: '°' },
100
+ { name: 'turbulence', description: 'How ragged the curtains are', type: 'number', min: 0, max: 1, step: 0.01 },
101
+ { name: 'seed', description: 'Random layout (rebuilds)', type: 'number', min: 1, max: 999, step: 1 },
102
+ { name: 'followCamera', description: 'Keep the weather around the camera wherever it goes, ignoring the sides of the volume', type: 'boolean' },
103
+ { name: 'color', description: 'Colour of the curtains in the light', type: 'color' },
104
+ { name: 'shadeColor', description: 'Storm-dark tint of the curtains', type: 'color' },
105
+ { name: 'flashColor', description: 'Colour of the lightning', type: 'color' },
106
+ { name: 'pointerMode', description: 'What the cursor is: off, calls a strike where you sweep, or a clearing swept through the murk', type: 'select', options: ['none', 'strike', 'clear'], optionLabels: ['Off', 'Call a strike', 'Clearing'] },
107
+ { name: 'pointerStrength', description: 'How easily a sweep calls a strike, how deep the clearing', type: 'number', min: 0, max: 3, step: 0.01 },
108
+ { name: 'pointerRadius', description: 'Reach of the clearing (1 = 2 m)', type: 'number', min: 0.2, max: 3, step: 0.01 },
109
+ { name: 'pointerColor', description: 'Colour of the strikes the cursor calls', type: 'color' },
110
+ ];
111
+ export const ENVIRONMENT_PROPERTIES = {
112
+ snow: snowEnvironmentProperties,
113
+ sandstorm: sandstormEnvironmentProperties,
114
+ rainbow: rainbowEnvironmentProperties,
115
+ tornado: tornadoEnvironmentProperties,
116
+ thunderstorm: thunderstormEnvironmentProperties,
117
+ rain: [
118
+ { name: 'color', description: 'Colour of the drops', type: 'color' },
119
+ { name: 'size', description: 'Streak size', type: 'number', min: 0.01, max: 1, step: 0.01 },
120
+ { name: 'opacity', description: 'Opacity of the drops', type: 'number', min: 0, max: 1, step: 0.01 },
121
+ { name: 'speed', description: 'Fall speed', type: 'number', min: 0.1, max: 5, step: 0.1, unit: 'x' },
122
+ { name: 'density', description: 'How many drops fill the volume (rebuilds)', type: 'number', min: 1, max: 200, step: 1 },
123
+ { name: 'windStrength', description: 'How hard the wind pushes the drops sideways', type: 'number', min: 0, max: 1, step: 0.01 },
124
+ { name: 'windDirection', description: 'Compass direction the wind blows toward', type: 'number', min: 0, max: 360, step: 1, unit: '°' },
125
+ { name: 'turbulence', description: 'Random sway of the drops', type: 'number', min: 0, max: 1, step: 0.01 },
126
+ ],
127
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"gridProperties.d.ts","sourceRoot":"","sources":["../../../src/properties/tables/gridProperties.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAiB7D,4CAA4C;AAC5C,eAAO,MAAM,uBAAuB,EAAE,gBAAgB,EAwBrD,CAAC;AAmFF,sFAAsF;AACtF,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,EAAE,CAE9D,CAAC"}
1
+ {"version":3,"file":"gridProperties.d.ts","sourceRoot":"","sources":["../../../src/properties/tables/gridProperties.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAiB7D,4CAA4C;AAC5C,eAAO,MAAM,uBAAuB,EAAE,gBAAgB,EAsBrD,CAAC;AA8LF,sFAAsF;AACtF,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,EAAE,CAE9D,CAAC"}