@3driseai/3drise-core 1.0.19 → 1.0.20

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 (131) hide show
  1. package/dist/animations/index.d.ts +2 -0
  2. package/dist/animations/index.d.ts.map +1 -0
  3. package/dist/animations/index.js +1 -0
  4. package/dist/animations/trackGenerators.d.ts +140 -0
  5. package/dist/animations/trackGenerators.d.ts.map +1 -0
  6. package/dist/animations/trackGenerators.js +443 -0
  7. package/dist/autoAnimate/bounds.d.ts +7 -0
  8. package/dist/autoAnimate/bounds.d.ts.map +1 -0
  9. package/dist/autoAnimate/bounds.js +23 -0
  10. package/dist/autoAnimate/composer.d.ts +30 -0
  11. package/dist/autoAnimate/composer.d.ts.map +1 -0
  12. package/dist/autoAnimate/composer.js +251 -0
  13. package/dist/autoAnimate/describeScene.d.ts +105 -0
  14. package/dist/autoAnimate/describeScene.d.ts.map +1 -0
  15. package/dist/autoAnimate/describeScene.js +165 -0
  16. package/dist/autoAnimate/draft.d.ts +59 -0
  17. package/dist/autoAnimate/draft.d.ts.map +1 -0
  18. package/dist/autoAnimate/draft.js +2 -0
  19. package/dist/autoAnimate/index.d.ts +14 -0
  20. package/dist/autoAnimate/index.d.ts.map +1 -0
  21. package/dist/autoAnimate/index.js +9 -0
  22. package/dist/autoAnimate/recipes.d.ts +87 -0
  23. package/dist/autoAnimate/recipes.d.ts.map +1 -0
  24. package/dist/autoAnimate/recipes.js +224 -0
  25. package/dist/autoAnimate/rng.d.ts +10 -0
  26. package/dist/autoAnimate/rng.d.ts.map +1 -0
  27. package/dist/autoAnimate/rng.js +16 -0
  28. package/dist/autoAnimate/sceneAnalyzer.d.ts +7 -0
  29. package/dist/autoAnimate/sceneAnalyzer.d.ts.map +1 -0
  30. package/dist/autoAnimate/sceneAnalyzer.js +291 -0
  31. package/dist/autoAnimate/types.d.ts +124 -0
  32. package/dist/autoAnimate/types.d.ts.map +1 -0
  33. package/dist/autoAnimate/types.js +1 -0
  34. package/dist/autoAnimate/validator.d.ts +10 -0
  35. package/dist/autoAnimate/validator.d.ts.map +1 -0
  36. package/dist/autoAnimate/validator.js +59 -0
  37. package/dist/data/effectsDefaults.d.ts +4 -0
  38. package/dist/data/effectsDefaults.d.ts.map +1 -1
  39. package/dist/data/effectsDefaults.js +393 -2
  40. package/dist/data/gridsDefaults.d.ts +5 -0
  41. package/dist/data/gridsDefaults.d.ts.map +1 -0
  42. package/dist/data/gridsDefaults.js +290 -0
  43. package/dist/data/index.d.ts +1 -0
  44. package/dist/data/index.d.ts.map +1 -1
  45. package/dist/data/index.js +1 -0
  46. package/dist/data/particlesDefaults.d.ts +3 -1
  47. package/dist/data/particlesDefaults.d.ts.map +1 -1
  48. package/dist/data/particlesDefaults.js +78 -0
  49. package/dist/environment/cloudConfigs.d.ts +313 -0
  50. package/dist/environment/cloudConfigs.d.ts.map +1 -0
  51. package/dist/environment/cloudConfigs.js +342 -0
  52. package/dist/environment/index.d.ts +5 -0
  53. package/dist/environment/index.d.ts.map +1 -0
  54. package/dist/environment/index.js +6 -0
  55. package/dist/environment/landscapeConfigs.d.ts +220 -0
  56. package/dist/environment/landscapeConfigs.d.ts.map +1 -0
  57. package/dist/environment/landscapeConfigs.js +256 -0
  58. package/dist/environment/oceanConfigs.d.ts +293 -0
  59. package/dist/environment/oceanConfigs.d.ts.map +1 -0
  60. package/dist/environment/oceanConfigs.js +380 -0
  61. package/dist/environment/terrainConfigs.d.ts +254 -0
  62. package/dist/environment/terrainConfigs.d.ts.map +1 -0
  63. package/dist/environment/terrainConfigs.js +292 -0
  64. package/dist/index.d.ts +4 -0
  65. package/dist/index.d.ts.map +1 -1
  66. package/dist/index.js +4 -0
  67. package/dist/properties/index.d.ts +4 -0
  68. package/dist/properties/index.d.ts.map +1 -0
  69. package/dist/properties/index.js +3 -0
  70. package/dist/properties/registry.d.ts +44 -0
  71. package/dist/properties/registry.d.ts.map +1 -0
  72. package/dist/properties/registry.js +343 -0
  73. package/dist/properties/tables/effectsProperties.d.ts +40 -0
  74. package/dist/properties/tables/effectsProperties.d.ts.map +1 -0
  75. package/dist/properties/tables/effectsProperties.js +512 -0
  76. package/dist/properties/tables/geometryProperties.d.ts +38 -0
  77. package/dist/properties/tables/geometryProperties.d.ts.map +1 -0
  78. package/dist/properties/tables/geometryProperties.js +91 -0
  79. package/dist/properties/tables/getPropertyConfig.d.ts +3 -0
  80. package/dist/properties/tables/getPropertyConfig.d.ts.map +1 -0
  81. package/dist/properties/tables/getPropertyConfig.js +16 -0
  82. package/dist/properties/tables/gridProperties.d.ts +6 -0
  83. package/dist/properties/tables/gridProperties.d.ts.map +1 -0
  84. package/dist/properties/tables/gridProperties.js +121 -0
  85. package/dist/properties/tables/index.d.ts +9 -0
  86. package/dist/properties/tables/index.d.ts.map +1 -0
  87. package/dist/properties/tables/index.js +8 -0
  88. package/dist/properties/tables/lightProperties.d.ts +14 -0
  89. package/dist/properties/tables/lightProperties.d.ts.map +1 -0
  90. package/dist/properties/tables/lightProperties.js +263 -0
  91. package/dist/properties/tables/materialBounds.d.ts +33 -0
  92. package/dist/properties/tables/materialBounds.d.ts.map +1 -0
  93. package/dist/properties/tables/materialBounds.js +180 -0
  94. package/dist/properties/tables/optionalProperties.d.ts +83 -0
  95. package/dist/properties/tables/optionalProperties.d.ts.map +1 -0
  96. package/dist/properties/tables/optionalProperties.js +710 -0
  97. package/dist/properties/tables/particlesProperties.d.ts +17 -0
  98. package/dist/properties/tables/particlesProperties.d.ts.map +1 -0
  99. package/dist/properties/tables/particlesProperties.js +334 -0
  100. package/dist/properties/types.d.ts +43 -0
  101. package/dist/properties/types.d.ts.map +1 -0
  102. package/dist/properties/types.js +12 -0
  103. package/dist/services/ShadersLibrary.d.ts +1 -1
  104. package/dist/services/ShadersLibrary.d.ts.map +1 -1
  105. package/dist/shaders/WallpaperGridMaterial.d.ts.map +1 -1
  106. package/dist/shaders/WallpaperGridMaterial.js +6 -1
  107. package/dist/three/GalleryLayoutV.d.ts.map +1 -1
  108. package/dist/three/GalleryLayoutV.js +0 -10
  109. package/dist/three/SceneBuilderV.d.ts.map +1 -1
  110. package/dist/three/SceneBuilderV.js +1 -7
  111. package/dist/types/generativeEffects.d.ts +0 -4
  112. package/dist/types/generativeEffects.d.ts.map +1 -1
  113. package/dist/types/generativeParticles.d.ts +175 -2
  114. package/dist/types/generativeParticles.d.ts.map +1 -1
  115. package/dist/types/objectSettings.d.ts +45 -4
  116. package/dist/types/objectSettings.d.ts.map +1 -1
  117. package/dist/types/scene3d.d.ts +3 -3
  118. package/dist/types/scene3d.d.ts.map +1 -1
  119. package/dist/utils/generativeAnimatable.d.ts +1 -1
  120. package/dist/utils/generativeAnimatable.d.ts.map +1 -1
  121. package/dist/utils/generativeAnimatable.js +7 -1
  122. package/dist/utils/getAnimatableProperties.d.ts +12 -1
  123. package/dist/utils/getAnimatableProperties.d.ts.map +1 -1
  124. package/dist/utils/getAnimatableProperties.js +35 -138
  125. package/dist/utils/index.d.ts +1 -0
  126. package/dist/utils/index.d.ts.map +1 -1
  127. package/dist/utils/index.js +1 -0
  128. package/dist/utils/objectEffects.d.ts +6 -0
  129. package/dist/utils/objectEffects.d.ts.map +1 -0
  130. package/dist/utils/objectEffects.js +5 -0
  131. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"getAnimatableProperties.d.ts","sourceRoot":"","sources":["../../src/utils/getAnimatableProperties.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE7G,MAAM,MAAM,gBAAgB,GAAG,WAAW,GAAG,UAAU,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;AAE9G,MAAM,WAAW,kBAAkB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC7B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACnC,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACvC,aAAa,CAAC,EAAE;QACZ,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;KAC1C,CAAC;IACF,MAAM,CAAC,EAAE,CAAC;QACN,IAAI,CAAC,EAAE,MAAM,CAAC;KACjB,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;IACzB,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,SAAS,CAAC,EAAE,qBAAqB,GAAG,oBAAoB,CAAC;CAC5D;AAuED,4CAA4C;AAC5C,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAKrD;AAwCD,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,MAAM,EAAE,gBAAgB,GAAG,kBAAkB,EAAE,CAuBlH;AACD;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI,CAsBhH"}
1
+ {"version":3,"file":"getAnimatableProperties.d.ts","sourceRoot":"","sources":["../../src/utils/getAnimatableProperties.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE7G,OAAO,KAAK,EAAE,YAAY,EAAgB,MAAM,qBAAqB,CAAC;AAEtE,MAAM,MAAM,gBAAgB,GAAG,WAAW,GAAG,UAAU,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,WAAW,GAAG,QAAQ,GAAG,MAAM,CAAC;AAElI,MAAM,WAAW,kBAAkB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,iGAAiG;IACjG,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC7B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACnC,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACvC,aAAa,CAAC,EAAE;QACZ,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;KAC1C,CAAC;IACF,MAAM,CAAC,EAAE,CAAC;QACN,IAAI,CAAC,EAAE,MAAM,CAAC;KACjB,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;IACzB,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,SAAS,CAAC,EAAE,qBAAqB,GAAG,oBAAoB,CAAC;CAC5D;AAmBD,4CAA4C;AAC5C,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAKrD;AAUD,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,MAAM,EAAE,gBAAgB,GAAG,kBAAkB,EAAE,CAMlH;AAKD;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI,CAUhH"}
@@ -1,72 +1,20 @@
1
- import { getGenerativeAnimatable } from "./generativeAnimatable.js";
1
+ import { getAnimatableSpecs, getPropertySpecs } from "../properties/registry.js";
2
2
  // =============================================================================
3
- // getAnimatableProperties — canonical per-domain property discovery
3
+ // getAnimatableProperties — per-domain view of the property registry
4
4
  // =============================================================================
5
5
  //
6
- // Single source of truth for "what properties can the animations / mouseMove
7
- // system target on a given domain?". Both *PropsSection (keyframe animations UI)
8
- // and *MouseMoveSection (mouse-move UI) read from here, so the two systems
9
- // never drift.
6
+ // What the keyframe Animation tab, the MouseMove tab and analyzeScene can drive on
7
+ // one domain of an object. Since the property registry (src/properties) this is a
8
+ // filter over getAnimatableSpecs: the animatable rule lives there, once, for the
9
+ // timeline, mouse-move, the AI scene analysis and the controllers alike.
10
10
  //
11
- // Accepts any AnimatableTarget — CreatedObjectSettings, CloudsSettings, and
12
- // future env components (Sky/Ocean/...) all satisfy the structural interface.
11
+ // Values are domain-relative names ('position', 'roughness', 'intensity'), which is
12
+ // what the mouse-move / keyframe domains store.
13
13
  //
14
- // Domain rules:
15
- // - transform: hardcoded ['position', 'rotation', 'scale']
16
- // - material : keys of settings.materialSettings minus an excluded list
17
- // - edges : geometry props by edgesSettings.type + filtered material keys
18
- // - light : the generated LIGHTS_ANIMATABLE registry, by settings.config.type
19
- // - clouds : ['speed'] when settings.config.type === 'clouds'
14
+ // Transform keeps its three vectors: `visible` is a timeline step track, not
15
+ // something a pointer or a keyframe tween can drive.
20
16
  //
21
17
  // =============================================================================
22
- // CONSTANTS
23
- // =============================================================================
24
- const TRANSFORM_PROPS = [
25
- { value: 'position', label: 'Position' },
26
- { value: 'rotation', label: 'Rotation' },
27
- { value: 'scale', label: 'Scale' },
28
- ];
29
- const EXCLUDED_MATERIAL_KEYS = new Set([
30
- 'materialType', 'materialVariant', 'side',
31
- 'u_time', 'u_mouse',
32
- 'apply', 'visible', 'map', 'uHasTexture',
33
- ]);
34
- // Volumetric cloud deck properties. Only scalars that can be interpolated per
35
- // frame without rebuilding the density field: altitudes and feature sizes are
36
- // deliberately absent, because the vertical profile is measured as a fraction of
37
- // base-to-top, so animating an altitude restretches the whole field and the deck
38
- // appears to pump rather than move.
39
- const CLOUDS_PROPS = [
40
- { value: 'coverage', label: 'Coverage' },
41
- { value: 'density', label: 'Density' },
42
- { value: 'profile', label: 'Vertical profile' },
43
- { value: 'detailStrength', label: 'Detail erosion' },
44
- { value: 'curlStrength', label: 'Curl warp' },
45
- { value: 'shear', label: 'Wind shear' },
46
- { value: 'anvil', label: 'Anvil spread' },
47
- { value: 'precipitation', label: 'Precipitation' },
48
- { value: 'windBearing', label: 'Wind bearing' },
49
- { value: 'windSpeed', label: 'Wind speed' },
50
- { value: 'rise', label: 'Convective rise' },
51
- { value: 'churn', label: 'Detail churn' },
52
- { value: 'evolution', label: 'Formation / decay' },
53
- { value: 'extinction', label: 'Extinction' },
54
- { value: 'powder', label: 'Powder' },
55
- { value: 'silverLining', label: 'Silver lining' },
56
- { value: 'ambient', label: 'Ambient' },
57
- ];
58
- const RAIN_PROPS = [
59
- { value: 'color', label: 'Color' },
60
- { value: 'size', label: 'Size' },
61
- { value: 'opacity', label: 'Opacity' },
62
- { value: 'speed', label: 'Speed' },
63
- { value: 'windStrength', label: 'Wind Strength' },
64
- { value: 'windDirection', label: 'Wind Direction' },
65
- { value: 'turbulence', label: 'Turbulence' },
66
- ];
67
- // =============================================================================
68
- // HELPERS
69
- // =============================================================================
70
18
  /** camelCase / kebab-ish → "Title Case". */
71
19
  export function toAnimatableLabel(key) {
72
20
  return key
@@ -74,94 +22,43 @@ export function toAnimatableLabel(key) {
74
22
  .replace(/^./, s => s.toUpperCase())
75
23
  .trim();
76
24
  }
77
- function getMaterialProperties(materialSettings) {
78
- if (!materialSettings)
79
- return [];
80
- return Object.keys(materialSettings)
81
- .filter(k => !EXCLUDED_MATERIAL_KEYS.has(k))
82
- .map(k => ({ value: k, label: k }));
83
- }
84
- function getEdgesProperties(edgesSettings) {
85
- if (!edgesSettings)
86
- return [];
87
- const props = [];
88
- if (edgesSettings.type === 'tube')
89
- props.push({ value: 'tubeRadius', label: 'Tube Radius' });
90
- if (edgesSettings.type === 'cube')
91
- props.push({ value: 'cubeSize', label: 'Cube Size' });
92
- if (edgesSettings.materialSettings) {
93
- for (const k of Object.keys(edgesSettings.materialSettings)) {
94
- if (EXCLUDED_MATERIAL_KEYS.has(k))
95
- continue;
96
- props.push({ value: k, label: toAnimatableLabel(k) });
97
- }
98
- }
99
- return props;
100
- }
101
- function getCloudsProperties() {
102
- return [...CLOUDS_PROPS];
103
- }
104
- function getRainProperties() {
105
- return [...RAIN_PROPS];
106
- }
107
- function isCloudsConfig(config) {
108
- return config?.type === 'clouds';
109
- }
110
- function isRainConfig(config) {
111
- return config?.type === 'rain';
112
- }
113
- // =============================================================================
114
- // MAIN
115
- // =============================================================================
25
+ const toAnimatable = (s) => {
26
+ const out = { value: s.name, label: s.label, kind: s.kind };
27
+ if (s.min !== undefined)
28
+ out.min = s.min;
29
+ if (s.max !== undefined)
30
+ out.max = s.max;
31
+ if (s.step !== undefined)
32
+ out.step = s.step;
33
+ return out;
34
+ };
116
35
  export function getAnimatableProperties(settings, domain) {
117
- switch (domain) {
118
- case 'transform':
119
- return [...TRANSFORM_PROPS];
120
- case 'material':
121
- return getMaterialProperties(settings.materialSettings);
122
- case 'edges':
123
- return getEdgesProperties(settings.edgesSettings);
124
- // Lights read the same generated registry as the generative families, so a
125
- // new light type's knobs show up without touching this file.
126
- case 'light':
127
- return getGenerativeAnimatable('lights', settings.config);
128
- case 'clouds':
129
- return isCloudsConfig(settings.config) ? getCloudsProperties() : [];
130
- case 'rain':
131
- return isRainConfig(settings.config) ? getRainProperties() : [];
132
- // Generative families read their knobs from the generated registry, so the
133
- // panel always matches what the renderer can actually drive per frame.
134
- case 'particles':
135
- return getGenerativeAnimatable('particles', settings.config);
136
- default:
137
- return [];
138
- }
36
+ if (!settings)
37
+ return [];
38
+ return getAnimatableSpecs('object', settings)
39
+ .filter(s => s.domain === domain)
40
+ .filter(s => domain !== 'transform' || s.kind === 'vec3')
41
+ .map(toAnimatable);
139
42
  }
43
+ /** Domain priority when a name exists in more than one (edges before material: an edges key shadows the mesh's). */
44
+ const DETECT_ORDER = ['edges', 'light', 'effect', 'grid', 'particles', 'clouds', 'rain', 'material'];
140
45
  /**
141
46
  * Detect which domain a property name belongs to, for a given target. Used by
142
47
  * the runtime + UI to migrate flat MouseMove arrays into the new per-domain
143
48
  * shape, and to route the runtime's combined dispatch.
49
+ *
50
+ * Reads every registry property (not only animatable ones), so an entry saved
51
+ * before the animatable rule tightened still routes to its domain.
144
52
  */
145
53
  export function detectAnimatableDomain(settings, propertyName) {
146
54
  const head = propertyName.split('.')[0];
147
55
  if (head === 'position' || head === 'rotation' || head === 'scale') {
148
56
  return 'transform';
149
57
  }
150
- const edges = getEdgesProperties(settings.edgesSettings).map(p => p.value);
151
- if (edges.includes(propertyName))
152
- return 'edges';
153
- if (getGenerativeAnimatable('lights', settings.config).some(p => p.value === propertyName))
154
- return 'light';
155
- if (isCloudsConfig(settings.config)) {
156
- if (getCloudsProperties().some(p => p.value === propertyName))
157
- return 'clouds';
158
- }
159
- if (isRainConfig(settings.config)) {
160
- if (getRainProperties().some(p => p.value === propertyName))
161
- return 'rain';
58
+ const specs = getPropertySpecs('object', settings);
59
+ for (const domain of DETECT_ORDER) {
60
+ if (specs.some(s => s.domain === domain && s.name === propertyName))
61
+ return domain;
162
62
  }
163
- const material = getMaterialProperties(settings.materialSettings).map(p => p.value);
164
- if (material.includes(propertyName))
165
- return 'material';
166
63
  return null;
167
64
  }
@@ -38,4 +38,5 @@ export * from './MaterialCompiler';
38
38
  export * from './nodeOverrides';
39
39
  export * from './settingsPatch';
40
40
  export * from './actionKeys';
41
+ export * from './objectEffects';
41
42
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,yBAAyB,CAAC;AACxC,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,yBAAyB,CAAC;AACxC,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC"}
@@ -38,3 +38,4 @@ export * from './MaterialCompiler.js';
38
38
  export * from './nodeOverrides.js';
39
39
  export * from './settingsPatch.js';
40
40
  export * from './actionKeys.js';
41
+ export * from './objectEffects.js';
@@ -0,0 +1,6 @@
1
+ import type { ObjectEffect } from '../types/objectSettings';
2
+ /** The object effects of a stored object — entries of any older shape (generative effects) are dropped. */
3
+ export declare function objectEffectsOf(settings: {
4
+ effects?: unknown;
5
+ } | null | undefined): ObjectEffect[];
6
+ //# sourceMappingURL=objectEffects.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"objectEffects.d.ts","sourceRoot":"","sources":["../../src/utils/objectEffects.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAE5D,2GAA2G;AAC3G,wBAAgB,eAAe,CAAC,QAAQ,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,GAAG,SAAS,GAAG,YAAY,EAAE,CAGlG"}
@@ -0,0 +1,5 @@
1
+ /** The object effects of a stored object — entries of any older shape (generative effects) are dropped. */
2
+ export function objectEffectsOf(settings) {
3
+ const list = settings?.effects;
4
+ return Array.isArray(list) ? list.filter((e) => e && typeof e.operation === 'string' && typeof e.id === 'string') : [];
5
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@3driseai/3drise-core",
3
- "version": "1.0.19",
3
+ "version": "1.0.20",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",