@babylonjs/smart-filters 1.0.12 → 8.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (259) hide show
  1. package/dist/blockFoundation/aggregateBlock.d.ts +3 -3
  2. package/dist/blockFoundation/aggregateBlock.d.ts.map +1 -1
  3. package/dist/blockFoundation/aggregateBlock.js +1 -2
  4. package/dist/blockFoundation/aggregateBlock.js.map +1 -1
  5. package/dist/blockFoundation/baseBlock.d.ts +2 -2
  6. package/dist/blockFoundation/baseBlock.d.ts.map +1 -1
  7. package/dist/blockFoundation/baseBlock.js +5 -6
  8. package/dist/blockFoundation/baseBlock.js.map +1 -1
  9. package/dist/blockFoundation/customAggregateBlock.d.ts.map +1 -1
  10. package/dist/blockFoundation/customAggregateBlock.js +2 -2
  11. package/dist/blockFoundation/customAggregateBlock.js.map +1 -1
  12. package/dist/blockFoundation/customShaderBlock.d.ts.map +1 -1
  13. package/dist/blockFoundation/customShaderBlock.js +4 -6
  14. package/dist/blockFoundation/customShaderBlock.js.map +1 -1
  15. package/dist/blockFoundation/disableableShaderBlock.d.ts.map +1 -1
  16. package/dist/blockFoundation/disableableShaderBlock.js +4 -4
  17. package/dist/blockFoundation/disableableShaderBlock.js.map +1 -1
  18. package/dist/blockFoundation/index.js +0 -2
  19. package/dist/blockFoundation/index.js.map +1 -1
  20. package/dist/blockFoundation/inputBlock.d.ts +8 -8
  21. package/dist/blockFoundation/inputBlock.d.ts.map +1 -1
  22. package/dist/blockFoundation/inputBlock.deserializer.d.ts +1 -1
  23. package/dist/blockFoundation/inputBlock.deserializer.d.ts.map +1 -1
  24. package/dist/blockFoundation/inputBlock.deserializer.js +1 -1
  25. package/dist/blockFoundation/inputBlock.deserializer.js.map +1 -1
  26. package/dist/blockFoundation/inputBlock.js +7 -7
  27. package/dist/blockFoundation/inputBlock.js.map +1 -1
  28. package/dist/blockFoundation/inputBlock.serialization.types.d.ts.map +1 -1
  29. package/dist/blockFoundation/inputBlock.serializer.d.ts +1 -1
  30. package/dist/blockFoundation/inputBlock.serializer.js +26 -28
  31. package/dist/blockFoundation/inputBlock.serializer.js.map +1 -1
  32. package/dist/blockFoundation/outputBlock.d.ts +4 -9
  33. package/dist/blockFoundation/outputBlock.d.ts.map +1 -1
  34. package/dist/blockFoundation/outputBlock.js +13 -14
  35. package/dist/blockFoundation/outputBlock.js.map +1 -1
  36. package/dist/blockFoundation/shaderBlock.d.ts +4 -4
  37. package/dist/blockFoundation/shaderBlock.d.ts.map +1 -1
  38. package/dist/blockFoundation/shaderBlock.js +13 -19
  39. package/dist/blockFoundation/shaderBlock.js.map +1 -1
  40. package/dist/blockFoundation/textureOptions.d.ts +1 -1
  41. package/dist/blockFoundation/textureOptions.js +1 -1
  42. package/dist/command/command.d.ts +1 -1
  43. package/dist/command/command.js +1 -1
  44. package/dist/command/commandBuffer.d.ts +1 -1
  45. package/dist/command/commandBuffer.d.ts.map +1 -1
  46. package/dist/command/commandBuffer.js +2 -2
  47. package/dist/command/commandBufferDebugger.d.ts +2 -2
  48. package/dist/command/commandBufferDebugger.d.ts.map +1 -1
  49. package/dist/command/commandBufferDebugger.js +1 -1
  50. package/dist/command/commandBufferDebugger.js.map +1 -1
  51. package/dist/command/index.d.ts +3 -1
  52. package/dist/command/index.d.ts.map +1 -1
  53. package/dist/command/index.js +5 -1
  54. package/dist/command/index.js.map +1 -1
  55. package/dist/connection/connectionPoint.d.ts +3 -3
  56. package/dist/connection/connectionPoint.d.ts.map +1 -1
  57. package/dist/connection/connectionPoint.js +2 -2
  58. package/dist/connection/connectionPoint.js.map +1 -1
  59. package/dist/connection/connectionPointCompatibilityState.d.ts +1 -1
  60. package/dist/connection/connectionPointCompatibilityState.js +1 -1
  61. package/dist/connection/connectionPointType.d.ts +3 -3
  62. package/dist/connection/connectionPointType.d.ts.map +1 -1
  63. package/dist/connection/connectionPointWithDefault.d.ts +3 -3
  64. package/dist/connection/connectionPointWithDefault.d.ts.map +1 -1
  65. package/dist/connection/connectionPointWithDefault.js.map +1 -1
  66. package/dist/connection/index.d.ts +2 -1
  67. package/dist/connection/index.d.ts.map +1 -1
  68. package/dist/connection/index.js +3 -3
  69. package/dist/connection/index.js.map +1 -1
  70. package/dist/editorUtils/editableInPropertyPage.d.ts +2 -2
  71. package/dist/editorUtils/editableInPropertyPage.d.ts.map +1 -1
  72. package/dist/editorUtils/editableInPropertyPage.js +2 -2
  73. package/dist/editorUtils/editableInPropertyPage.js.map +1 -1
  74. package/dist/editorUtils/index.d.ts +1 -0
  75. package/dist/editorUtils/index.d.ts.map +1 -1
  76. package/dist/editorUtils/index.js +2 -0
  77. package/dist/editorUtils/index.js.map +1 -1
  78. package/dist/index.d.ts.map +1 -1
  79. package/dist/index.js +1 -1
  80. package/dist/index.js.map +1 -1
  81. package/dist/optimization/dependencyGraph.js.map +1 -1
  82. package/dist/optimization/optimizedShaderBlock.d.ts +4 -4
  83. package/dist/optimization/optimizedShaderBlock.d.ts.map +1 -1
  84. package/dist/optimization/optimizedShaderBlock.js.map +1 -1
  85. package/dist/optimization/smartFilterOptimizer.d.ts +2 -2
  86. package/dist/optimization/smartFilterOptimizer.d.ts.map +1 -1
  87. package/dist/optimization/smartFilterOptimizer.js +34 -57
  88. package/dist/optimization/smartFilterOptimizer.js.map +1 -1
  89. package/dist/runtime/index.d.ts +2 -1
  90. package/dist/runtime/index.d.ts.map +1 -1
  91. package/dist/runtime/index.js +3 -3
  92. package/dist/runtime/index.js.map +1 -1
  93. package/dist/runtime/renderTargetGenerator.d.ts +1 -1
  94. package/dist/runtime/renderTargetGenerator.d.ts.map +1 -1
  95. package/dist/runtime/renderTargetGenerator.js +5 -7
  96. package/dist/runtime/renderTargetGenerator.js.map +1 -1
  97. package/dist/runtime/shaderRuntime.d.ts +7 -7
  98. package/dist/runtime/shaderRuntime.d.ts.map +1 -1
  99. package/dist/runtime/shaderRuntime.js +7 -8
  100. package/dist/runtime/shaderRuntime.js.map +1 -1
  101. package/dist/runtime/smartFilterRuntime.d.ts +3 -3
  102. package/dist/runtime/smartFilterRuntime.d.ts.map +1 -1
  103. package/dist/runtime/smartFilterRuntime.js.map +1 -1
  104. package/dist/runtime/strongRef.d.ts +1 -1
  105. package/dist/runtime/strongRef.js +1 -1
  106. package/dist/serialization/importCustomBlockDefinition.d.ts +1 -1
  107. package/dist/serialization/importCustomBlockDefinition.js +8 -9
  108. package/dist/serialization/importCustomBlockDefinition.js.map +1 -1
  109. package/dist/serialization/index.d.ts +1 -0
  110. package/dist/serialization/index.d.ts.map +1 -1
  111. package/dist/serialization/index.js +3 -0
  112. package/dist/serialization/index.js.map +1 -1
  113. package/dist/serialization/serializedBlockDefinition.d.ts +2 -2
  114. package/dist/serialization/serializedBlockDefinition.d.ts.map +1 -1
  115. package/dist/serialization/serializedShaderBlockDefinition.d.ts +1 -1
  116. package/dist/serialization/serializedShaderBlockDefinition.d.ts.map +1 -1
  117. package/dist/serialization/serializedSmartFilter.d.ts +1 -1
  118. package/dist/serialization/serializedSmartFilter.d.ts.map +1 -1
  119. package/dist/serialization/smartFilterDeserializer.d.ts +6 -6
  120. package/dist/serialization/smartFilterDeserializer.d.ts.map +1 -1
  121. package/dist/serialization/smartFilterDeserializer.js +14 -12
  122. package/dist/serialization/smartFilterDeserializer.js.map +1 -1
  123. package/dist/serialization/smartFilterSerializer.d.ts +2 -2
  124. package/dist/serialization/smartFilterSerializer.d.ts.map +1 -1
  125. package/dist/serialization/smartFilterSerializer.js +10 -13
  126. package/dist/serialization/smartFilterSerializer.js.map +1 -1
  127. package/dist/serialization/v1/defaultBlockSerializer.d.ts +2 -2
  128. package/dist/serialization/v1/defaultBlockSerializer.d.ts.map +1 -1
  129. package/dist/serialization/v1/defaultBlockSerializer.js +3 -1
  130. package/dist/serialization/v1/defaultBlockSerializer.js.map +1 -1
  131. package/dist/serialization/v1/index.d.ts +1 -0
  132. package/dist/serialization/v1/index.d.ts.map +1 -1
  133. package/dist/serialization/v1/index.js +2 -0
  134. package/dist/serialization/v1/index.js.map +1 -1
  135. package/dist/serialization/v1/shaderBlockSerialization.types.d.ts +3 -3
  136. package/dist/serialization/v1/shaderBlockSerialization.types.d.ts.map +1 -1
  137. package/dist/serialization/v1/smartFilterSerialization.types.d.ts +5 -2
  138. package/dist/serialization/v1/smartFilterSerialization.types.d.ts.map +1 -1
  139. package/dist/smartFilter.d.ts +8 -8
  140. package/dist/smartFilter.d.ts.map +1 -1
  141. package/dist/smartFilter.js +6 -7
  142. package/dist/smartFilter.js.map +1 -1
  143. package/dist/utils/buildTools/buildShaders.d.ts +3 -2
  144. package/dist/utils/buildTools/buildShaders.d.ts.map +1 -1
  145. package/dist/utils/buildTools/buildShaders.js +7 -6
  146. package/dist/utils/buildTools/buildShaders.js.map +1 -1
  147. package/dist/utils/buildTools/convertGlslIntoBlock.d.ts +4 -2
  148. package/dist/utils/buildTools/convertGlslIntoBlock.d.ts.map +1 -1
  149. package/dist/utils/buildTools/convertGlslIntoBlock.js +136 -141
  150. package/dist/utils/buildTools/convertGlslIntoBlock.js.map +1 -1
  151. package/dist/utils/buildTools/convertGlslIntoShaderProgram.d.ts +4 -4
  152. package/dist/utils/buildTools/convertGlslIntoShaderProgram.d.ts.map +1 -1
  153. package/dist/utils/buildTools/convertGlslIntoShaderProgram.js +55 -48
  154. package/dist/utils/buildTools/convertGlslIntoShaderProgram.js.map +1 -1
  155. package/dist/utils/buildTools/convertShaders.d.ts +8 -5
  156. package/dist/utils/buildTools/convertShaders.d.ts.map +1 -1
  157. package/dist/utils/buildTools/convertShaders.js +38 -14
  158. package/dist/utils/buildTools/convertShaders.js.map +1 -1
  159. package/dist/utils/buildTools/shaderConverter.d.ts +4 -4
  160. package/dist/utils/buildTools/shaderConverter.d.ts.map +1 -1
  161. package/dist/utils/buildTools/shaderConverter.js +17 -21
  162. package/dist/utils/buildTools/shaderConverter.js.map +1 -1
  163. package/dist/utils/buildTools/watchShaders.d.ts +3 -2
  164. package/dist/utils/buildTools/watchShaders.d.ts.map +1 -1
  165. package/dist/utils/buildTools/watchShaders.js +10 -8
  166. package/dist/utils/buildTools/watchShaders.js.map +1 -1
  167. package/dist/utils/index.d.ts +1 -0
  168. package/dist/utils/index.d.ts.map +1 -1
  169. package/dist/utils/index.js +2 -1
  170. package/dist/utils/index.js.map +1 -1
  171. package/dist/utils/renderTargetUtils.d.ts +3 -3
  172. package/dist/utils/renderTargetUtils.d.ts.map +1 -1
  173. package/dist/utils/renderTargetUtils.js +4 -4
  174. package/dist/utils/renderTargetUtils.js.map +1 -1
  175. package/dist/utils/shaderCodeUtils.d.ts +8 -8
  176. package/dist/utils/shaderCodeUtils.d.ts.map +1 -1
  177. package/dist/utils/shaderCodeUtils.js +16 -28
  178. package/dist/utils/shaderCodeUtils.js.map +1 -1
  179. package/dist/utils/textureLoaders.d.ts +2 -2
  180. package/dist/utils/textureLoaders.d.ts.map +1 -1
  181. package/dist/utils/textureLoaders.js +2 -3
  182. package/dist/utils/textureLoaders.js.map +1 -1
  183. package/dist/utils/textureUtils.d.ts +5 -5
  184. package/dist/utils/textureUtils.d.ts.map +1 -1
  185. package/dist/utils/textureUtils.js +1 -1
  186. package/dist/utils/textureUtils.js.map +1 -1
  187. package/dist/version.d.ts +2 -2
  188. package/dist/version.js +2 -2
  189. package/license.md +21 -21
  190. package/package.json +14 -9
  191. package/src/blockFoundation/aggregateBlock.ts +148 -151
  192. package/src/blockFoundation/baseBlock.ts +339 -364
  193. package/src/blockFoundation/customAggregateBlock.ts +88 -104
  194. package/src/blockFoundation/customShaderBlock.ts +312 -326
  195. package/src/blockFoundation/disableableShaderBlock.ts +91 -100
  196. package/src/blockFoundation/index.ts +9 -9
  197. package/src/blockFoundation/inputBlock.deserializer.ts +72 -97
  198. package/src/blockFoundation/inputBlock.serialization.types.ts +126 -132
  199. package/src/blockFoundation/inputBlock.serializer.ts +150 -150
  200. package/src/blockFoundation/inputBlock.ts +181 -192
  201. package/src/blockFoundation/outputBlock.ts +144 -151
  202. package/src/blockFoundation/shaderBlock.ts +156 -163
  203. package/src/blockFoundation/textureOptions.ts +57 -57
  204. package/src/command/command.ts +59 -59
  205. package/src/command/commandBuffer.ts +71 -71
  206. package/src/command/commandBufferDebugger.ts +14 -14
  207. package/src/command/index.ts +7 -3
  208. package/src/connection/connectionPoint.ts +205 -214
  209. package/src/connection/connectionPointCompatibilityState.ts +31 -31
  210. package/src/connection/connectionPointType.ts +45 -45
  211. package/src/connection/connectionPointWithDefault.ts +27 -35
  212. package/src/connection/index.ts +8 -9
  213. package/src/editorUtils/editableInPropertyPage.ts +106 -106
  214. package/src/editorUtils/index.ts +3 -1
  215. package/src/index.ts +16 -15
  216. package/src/optimization/dependencyGraph.ts +96 -96
  217. package/src/optimization/index.ts +1 -1
  218. package/src/optimization/optimizedShaderBlock.ts +131 -134
  219. package/src/optimization/smartFilterOptimizer.ts +757 -825
  220. package/src/runtime/index.ts +8 -6
  221. package/src/runtime/renderTargetGenerator.ts +222 -248
  222. package/src/runtime/shaderRuntime.ts +174 -173
  223. package/src/runtime/smartFilterRuntime.ts +112 -112
  224. package/src/runtime/strongRef.ts +18 -18
  225. package/src/serialization/importCustomBlockDefinition.ts +86 -86
  226. package/src/serialization/index.ts +10 -7
  227. package/src/serialization/serializedBlockDefinition.ts +12 -12
  228. package/src/serialization/serializedShaderBlockDefinition.ts +7 -7
  229. package/src/serialization/serializedSmartFilter.ts +6 -6
  230. package/src/serialization/smartFilterDeserializer.ts +190 -214
  231. package/src/serialization/smartFilterSerializer.ts +110 -121
  232. package/src/serialization/v1/defaultBlockSerializer.ts +21 -19
  233. package/src/serialization/v1/index.ts +4 -2
  234. package/src/serialization/v1/shaderBlockSerialization.types.ts +85 -85
  235. package/src/serialization/v1/smartFilterSerialization.types.ts +129 -129
  236. package/src/smartFilter.ts +255 -260
  237. package/src/utils/buildTools/buildShaders.ts +14 -13
  238. package/src/utils/buildTools/convertGlslIntoBlock.ts +370 -385
  239. package/src/utils/buildTools/convertGlslIntoShaderProgram.ts +173 -172
  240. package/src/utils/buildTools/convertShaders.ts +65 -43
  241. package/src/utils/buildTools/recordVersionNumber.js +17 -0
  242. package/src/utils/buildTools/shaderConverter.ts +466 -478
  243. package/src/utils/buildTools/watchShaders.ts +44 -42
  244. package/src/utils/index.ts +4 -2
  245. package/src/utils/renderTargetUtils.ts +30 -35
  246. package/src/utils/shaderCodeUtils.ts +192 -207
  247. package/src/utils/textureLoaders.ts +31 -43
  248. package/src/utils/textureUtils.ts +28 -32
  249. package/src/version.ts +2 -2
  250. package/dist/utils/buildTools/determineVersion.d.ts +0 -36
  251. package/dist/utils/buildTools/determineVersion.d.ts.map +0 -1
  252. package/dist/utils/buildTools/determineVersion.js +0 -109
  253. package/dist/utils/buildTools/determineVersion.js.map +0 -1
  254. package/dist/utils/buildTools/versionUp.d.ts +0 -2
  255. package/dist/utils/buildTools/versionUp.d.ts.map +0 -1
  256. package/dist/utils/buildTools/versionUp.js +0 -53
  257. package/dist/utils/buildTools/versionUp.js.map +0 -1
  258. package/src/utils/buildTools/determineVersion.ts +0 -128
  259. package/src/utils/buildTools/versionUp.ts +0 -61
@@ -1,9 +1,8 @@
1
- export { ConnectionPointDirection } from "./connectionPointDirection.js";
2
- export { ConnectionPointType } from "./connectionPointType.js";
3
- export { type ConnectionPointValue } from "./connectionPointType.js";
4
- export {
5
- ConnectionPointCompatibilityState,
6
- getCompatibilityIssueMessage,
7
- } from "./connectionPointCompatibilityState.js";
8
- export { ConnectionPoint } from "./connectionPoint.js";
9
- export { type RuntimeData } from "./connectionPoint.js";
1
+ export { ConnectionPointDirection } from "./connectionPointDirection.js";
2
+ export { ConnectionPointType } from "./connectionPointType.js";
3
+ export { type ConnectionPointValue } from "./connectionPointType.js";
4
+ export { ConnectionPointCompatibilityState, GetCompatibilityIssueMessage } from "./connectionPointCompatibilityState.js";
5
+ // Back compat for when camelCase was used
6
+ export { GetCompatibilityIssueMessage as getCompatibilityIssueMessage } from "./connectionPointCompatibilityState.js";
7
+ export { ConnectionPoint } from "./connectionPoint.js";
8
+ export { type RuntimeData } from "./connectionPoint.js";
@@ -1,106 +1,106 @@
1
- import type { Observable } from "@babylonjs/core/Misc/observable";
2
-
3
- /**
4
- * Enum defining the type of properties that can be edited in the property pages in the node editor
5
- */
6
- export enum PropertyTypeForEdition {
7
- /** property is a boolean */
8
- Boolean,
9
- /** property is a float */
10
- Float,
11
- /** property is a int */
12
- Int,
13
- /** property is a Vector2 */
14
- Vector2,
15
- /** property is a list of values */
16
- List,
17
- }
18
-
19
- /**
20
- * Interface that defines an option in a variable of type list
21
- */
22
- export interface IEditablePropertyListOption {
23
- /** label of the option */
24
- label: string;
25
- /** value of the option */
26
- value: number | string;
27
- }
28
-
29
- /**
30
- * Interface that defines the options available for an editable property
31
- */
32
- export interface IEditablePropertyOption {
33
- /** min value */
34
- min?: number;
35
- /** max value */
36
- max?: number;
37
- /** notifiers: indicates which actions to take when the property is changed */
38
- notifiers?: {
39
- /** the entity should be rebuilt */
40
- rebuild?: boolean;
41
- /** the preview should be updated */
42
- update?: boolean;
43
- /** the onPreviewCommandActivated observer of the preview manager should be triggered */
44
- activatePreviewCommand?: boolean;
45
- /** a callback to trigger */
46
- callback?: () => boolean | undefined | void;
47
- /** a callback to validate the property. Returns true if the property is ok, else false. If false, the rebuild/update/callback events won't be called */
48
- onValidation?: (block: any, propertyName: string) => boolean;
49
- };
50
- /** a list of the options for a property of type list */
51
- options?: IEditablePropertyListOption[] | Observable<IEditablePropertyListOption[]>;
52
- /** whether the options' values should be treated as strings */
53
- valuesAreStrings?: boolean;
54
- /** If supplied, the sub property to read/write */
55
- subPropertyName?: string;
56
- }
57
-
58
- /**
59
- * Interface that describes an editable property
60
- */
61
- export interface IPropertyDescriptionForEdition {
62
- /** name of the property */
63
- propertyName: string;
64
- /** display name of the property */
65
- displayName: string;
66
- /** type of the property */
67
- type: PropertyTypeForEdition;
68
- /** group of the property - all properties with the same group value will be displayed in a specific section */
69
- groupName: string;
70
- /** options for the property */
71
- options: IEditablePropertyOption;
72
- /** name of the class that contains the property */
73
- className: string;
74
- }
75
-
76
- /**
77
- * Decorator that flags a property in a node block as being editable
78
- * @param displayName - the display name of the property
79
- * @param propertyType - the type of the property
80
- * @param groupName - the group name of the property
81
- * @param options - the options of the property
82
- * @returns the decorator
83
- */
84
- export function editableInPropertyPage(
85
- displayName: string,
86
- propertyType: PropertyTypeForEdition = PropertyTypeForEdition.Boolean,
87
- groupName: string = "PROPERTIES",
88
- options?: IEditablePropertyOption
89
- ) {
90
- return (target: any, propertyKey: string) => {
91
- let propStore: IPropertyDescriptionForEdition[] = target._propStore;
92
- if (!propStore) {
93
- propStore = [];
94
- target._propStore = propStore;
95
- }
96
-
97
- propStore.push({
98
- propertyName: propertyKey,
99
- displayName: displayName,
100
- type: propertyType,
101
- groupName: groupName,
102
- options: options ?? {},
103
- className: target.constructor.name,
104
- });
105
- };
106
- }
1
+ import type { Observable } from "core/Misc/observable.js";
2
+
3
+ /**
4
+ * Enum defining the type of properties that can be edited in the property pages in the node editor
5
+ */
6
+ export enum PropertyTypeForEdition {
7
+ /** property is a boolean */
8
+ Boolean,
9
+ /** property is a float */
10
+ Float,
11
+ /** property is a int */
12
+ Int,
13
+ /** property is a Vector2 */
14
+ Vector2,
15
+ /** property is a list of values */
16
+ List,
17
+ }
18
+
19
+ /**
20
+ * Interface that defines an option in a variable of type list
21
+ */
22
+ export interface IEditablePropertyListOption {
23
+ /** label of the option */
24
+ label: string;
25
+ /** value of the option */
26
+ value: number | string;
27
+ }
28
+
29
+ /**
30
+ * Interface that defines the options available for an editable property
31
+ */
32
+ export interface IEditablePropertyOption {
33
+ /** min value */
34
+ min?: number;
35
+ /** max value */
36
+ max?: number;
37
+ /** notifiers: indicates which actions to take when the property is changed */
38
+ notifiers?: {
39
+ /** the entity should be rebuilt */
40
+ rebuild?: boolean;
41
+ /** the preview should be updated */
42
+ update?: boolean;
43
+ /** the onPreviewCommandActivated observer of the preview manager should be triggered */
44
+ activatePreviewCommand?: boolean;
45
+ /** a callback to trigger */
46
+ callback?: () => boolean | undefined | void;
47
+ /** a callback to validate the property. Returns true if the property is ok, else false. If false, the rebuild/update/callback events won't be called */
48
+ onValidation?: (block: any, propertyName: string) => boolean;
49
+ };
50
+ /** a list of the options for a property of type list */
51
+ options?: IEditablePropertyListOption[] | Observable<IEditablePropertyListOption[]>;
52
+ /** whether the options' values should be treated as strings */
53
+ valuesAreStrings?: boolean;
54
+ /** If supplied, the sub property to read/write */
55
+ subPropertyName?: string;
56
+ }
57
+
58
+ /**
59
+ * Interface that describes an editable property
60
+ */
61
+ export interface IPropertyDescriptionForEdition {
62
+ /** name of the property */
63
+ propertyName: string;
64
+ /** display name of the property */
65
+ displayName: string;
66
+ /** type of the property */
67
+ type: PropertyTypeForEdition;
68
+ /** group of the property - all properties with the same group value will be displayed in a specific section */
69
+ groupName: string;
70
+ /** options for the property */
71
+ options: IEditablePropertyOption;
72
+ /** name of the class that contains the property */
73
+ className: string;
74
+ }
75
+
76
+ /**
77
+ * Decorator that flags a property in a node block as being editable
78
+ * @param displayName - the display name of the property
79
+ * @param propertyType - the type of the property
80
+ * @param groupName - the group name of the property
81
+ * @param options - the options of the property
82
+ * @returns the decorator
83
+ */
84
+ export function EditableInPropertyPage(
85
+ displayName: string,
86
+ propertyType: PropertyTypeForEdition = PropertyTypeForEdition.Boolean,
87
+ groupName: string = "PROPERTIES",
88
+ options?: IEditablePropertyOption
89
+ ) {
90
+ return (target: any, propertyKey: string) => {
91
+ let propStore: IPropertyDescriptionForEdition[] = target._propStore;
92
+ if (!propStore) {
93
+ propStore = [];
94
+ target._propStore = propStore;
95
+ }
96
+
97
+ propStore.push({
98
+ propertyName: propertyKey,
99
+ displayName: displayName,
100
+ type: propertyType,
101
+ groupName: groupName,
102
+ options: options ?? {},
103
+ className: target.constructor.name,
104
+ });
105
+ };
106
+ }
@@ -1 +1,3 @@
1
- export * from "./editableInPropertyPage.js";
1
+ export * from "./editableInPropertyPage.js";
2
+ // Back compat for when camelCase was used
3
+ export { EditableInPropertyPage as editableInPropertyPage } from "./editableInPropertyPage.js";
package/src/index.ts CHANGED
@@ -1,15 +1,16 @@
1
- export * from "./command/index.js";
2
- export * from "./connection/index.js";
3
- export * from "./blockFoundation/index.js";
4
- export * from "./editorUtils/index.js";
5
- export * from "./optimization/index.js";
6
- export * from "./runtime/index.js";
7
- export * from "./serialization/index.js";
8
- export * from "./utils/index.js";
9
-
10
- export { type IDisposable } from "./IDisposable.js";
11
- export { SmartFilter, type InitializationData } from "./smartFilter.js";
12
- export * from "./version.js";
13
-
14
- // So that users of the Smart Filters core can easily modify the logger settings (e.g. to change the logging level)
15
- export { Logger } from "@babylonjs/core/Misc/logger.js";
1
+ /* eslint-disable import/no-internal-modules */
2
+ export * from "./command/index.js";
3
+ export * from "./connection/index.js";
4
+ export * from "./blockFoundation/index.js";
5
+ export * from "./editorUtils/index.js";
6
+ export * from "./optimization/index.js";
7
+ export * from "./runtime/index.js";
8
+ export * from "./serialization/index.js";
9
+ export * from "./utils/index.js";
10
+
11
+ export { type IDisposable } from "./IDisposable.js";
12
+ export { SmartFilter, type InitializationData } from "./smartFilter.js";
13
+ export * from "./version.js";
14
+
15
+ // So that users of the Smart Filters core can easily modify the logger settings (e.g. to change the logging level)
16
+ export { Logger } from "core/Misc/logger.js";
@@ -1,96 +1,96 @@
1
- import { Logger } from "@babylonjs/core/Misc/logger.js";
2
-
3
- /**
4
- * Implementation of a dependency graph.
5
- */
6
- export class DependencyGraph<T> {
7
- private _list: Set<T>;
8
- private _dependOn: Map<T, Set<T>>;
9
- private _requiredBy: Map<T, Set<T>>;
10
-
11
- /**
12
- * Creates a new instance of a dependency graph.
13
- */
14
- constructor() {
15
- this._list = new Set();
16
- this._dependOn = new Map();
17
- this._requiredBy = new Map();
18
- }
19
-
20
- /**
21
- * Adds an element to the graph.
22
- * @param element - The element to add to the graph.
23
- */
24
- public addElement(element: T) {
25
- if (this._list.has(element)) {
26
- throw new Error(`Element "${element}" already added to the graph!`);
27
- }
28
-
29
- this._list.add(element);
30
- }
31
-
32
- /**
33
- * Adds a dependency between two elements.
34
- * @param element - The element that depends on another element.
35
- * @param dependency - The element that is required by the element passed as the first parameter.
36
- */
37
- public addDependency(element: T, dependency: T) {
38
- if (!this._dependOn.has(element)) {
39
- this._dependOn.set(element, new Set());
40
- }
41
-
42
- if (!this._requiredBy.has(dependency)) {
43
- this._requiredBy.set(dependency, new Set());
44
- }
45
-
46
- this._dependOn.get(element)!.add(dependency);
47
- this._requiredBy.get(dependency)!.add(element);
48
- }
49
-
50
- /**
51
- * Walks through the graph and calls the callback for each element.
52
- * The elements that depend on other elements will be traversed after the elements they depend on.
53
- * Note: the graph will be modified during the walk, so don't call walk twice on the same graph!
54
- * @param callback - The callback to call for each element.
55
- */
56
- public walk(callback: (element: T) => void) {
57
- const toVisit: T[] = [];
58
-
59
- // Collect all elements that have no dependency
60
- for (const element of this._list) {
61
- if (!this._dependOn.get(element)) {
62
- toVisit.push(element);
63
- this._list.delete(element);
64
- }
65
- }
66
-
67
- // Loop over all elements that have no dependency
68
- while (toVisit.length > 0) {
69
- const element = toVisit.shift()!;
70
-
71
- callback(element);
72
-
73
- this._list.delete(element);
74
-
75
- const requiredBy = this._requiredBy.get(element);
76
- if (requiredBy) {
77
- for (const dependingElement of requiredBy) {
78
- const dependencies = this._dependOn.get(dependingElement);
79
-
80
- if (dependencies) {
81
- dependencies.delete(element);
82
-
83
- if (dependencies.size === 0) {
84
- toVisit.push(dependingElement);
85
- }
86
- }
87
- }
88
- }
89
- }
90
-
91
- if (this._list.size > 0) {
92
- Logger.Error(JSON.stringify(this._list));
93
- throw new Error("Circular dependency detected!");
94
- }
95
- }
96
- }
1
+ import { Logger } from "core/Misc/logger.js";
2
+
3
+ /**
4
+ * Implementation of a dependency graph.
5
+ */
6
+ export class DependencyGraph<T> {
7
+ private _list: Set<T>;
8
+ private _dependOn: Map<T, Set<T>>;
9
+ private _requiredBy: Map<T, Set<T>>;
10
+
11
+ /**
12
+ * Creates a new instance of a dependency graph.
13
+ */
14
+ constructor() {
15
+ this._list = new Set();
16
+ this._dependOn = new Map();
17
+ this._requiredBy = new Map();
18
+ }
19
+
20
+ /**
21
+ * Adds an element to the graph.
22
+ * @param element - The element to add to the graph.
23
+ */
24
+ public addElement(element: T) {
25
+ if (this._list.has(element)) {
26
+ throw new Error(`Element "${element}" already added to the graph!`);
27
+ }
28
+
29
+ this._list.add(element);
30
+ }
31
+
32
+ /**
33
+ * Adds a dependency between two elements.
34
+ * @param element - The element that depends on another element.
35
+ * @param dependency - The element that is required by the element passed as the first parameter.
36
+ */
37
+ public addDependency(element: T, dependency: T) {
38
+ if (!this._dependOn.has(element)) {
39
+ this._dependOn.set(element, new Set());
40
+ }
41
+
42
+ if (!this._requiredBy.has(dependency)) {
43
+ this._requiredBy.set(dependency, new Set());
44
+ }
45
+
46
+ this._dependOn.get(element)!.add(dependency);
47
+ this._requiredBy.get(dependency)!.add(element);
48
+ }
49
+
50
+ /**
51
+ * Walks through the graph and calls the callback for each element.
52
+ * The elements that depend on other elements will be traversed after the elements they depend on.
53
+ * Note: the graph will be modified during the walk, so don't call walk twice on the same graph!
54
+ * @param callback - The callback to call for each element.
55
+ */
56
+ public walk(callback: (element: T) => void) {
57
+ const toVisit: T[] = [];
58
+
59
+ // Collect all elements that have no dependency
60
+ for (const element of this._list) {
61
+ if (!this._dependOn.get(element)) {
62
+ toVisit.push(element);
63
+ this._list.delete(element);
64
+ }
65
+ }
66
+
67
+ // Loop over all elements that have no dependency
68
+ while (toVisit.length > 0) {
69
+ const element = toVisit.shift()!;
70
+
71
+ callback(element);
72
+
73
+ this._list.delete(element);
74
+
75
+ const requiredBy = this._requiredBy.get(element);
76
+ if (requiredBy) {
77
+ for (const dependingElement of requiredBy) {
78
+ const dependencies = this._dependOn.get(dependingElement);
79
+
80
+ if (dependencies) {
81
+ dependencies.delete(element);
82
+
83
+ if (dependencies.size === 0) {
84
+ toVisit.push(dependingElement);
85
+ }
86
+ }
87
+ }
88
+ }
89
+ }
90
+
91
+ if (this._list.size > 0) {
92
+ Logger.Error(JSON.stringify(this._list));
93
+ throw new Error("Circular dependency detected!");
94
+ }
95
+ }
96
+ }
@@ -1 +1 @@
1
- export { SmartFilterOptimizer } from "./smartFilterOptimizer.js";
1
+ export { SmartFilterOptimizer } from "./smartFilterOptimizer.js";