@babylonjs/smart-filters 0.3.5-alpha → 0.3.7-alpha

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.
@@ -1,6 +1,6 @@
1
1
  import { SmartFilter } from "../smartFilter.js";
2
2
  import type { ThinEngine } from "@babylonjs/core/Engines/thinEngine";
3
- import type { DeserializeBlockV1 } from "./v1/serialization.types";
3
+ import type { DeserializeBlockV1, OptionalBlockDeserializerV1 } from "./v1/serialization.types";
4
4
  /**
5
5
  * Deserializes serialized SmartFilters. The caller passes in a map of block deserializers it wants to use,
6
6
  * which allows the caller to provide custom deserializers for blocks beyond the core blocks.
@@ -11,8 +11,9 @@ export declare class SmartFilterDeserializer {
11
11
  /**
12
12
  * Creates a new SmartFilterDeserializer
13
13
  * @param blockDeserializers - The map of block serializers to use, beyond those for the core blocks
14
+ * @param customInputBlockDeserializer - An optional custom deserializer for InputBlocks - if supplied and it returns null, the default deserializer will be used
14
15
  */
15
- constructor(blockDeserializers: Map<string, DeserializeBlockV1>);
16
+ constructor(blockDeserializers: Map<string, DeserializeBlockV1>, customInputBlockDeserializer?: OptionalBlockDeserializerV1);
16
17
  /**
17
18
  * Deserializes a SmartFilter from a JSON object - can be safely called multiple times and has no side effects within the class.
18
19
  * @param engine - The ThinEngine to pass to the new SmartFilter
@@ -1 +1 @@
1
- {"version":3,"file":"smartFilterDeserializer.d.ts","sourceRoot":"","sources":["../../src/serialization/smartFilterDeserializer.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAErE,OAAO,KAAK,EACR,kBAAkB,EAIrB,MAAM,0BAA0B,CAAC;AAGlC;;;;GAIG;AACH,qBAAa,uBAAuB;IAChC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAA8C;IAEpF;;;OAGG;gBACgB,kBAAkB,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC;IAetE;;;;;OAKG;IACU,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC;YAQ1E,cAAc;CAiF/B"}
1
+ {"version":3,"file":"smartFilterDeserializer.d.ts","sourceRoot":"","sources":["../../src/serialization/smartFilterDeserializer.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAErE,OAAO,KAAK,EACR,kBAAkB,EAGlB,2BAA2B,EAE9B,MAAM,0BAA0B,CAAC;AAGlC;;;;GAIG;AACH,qBAAa,uBAAuB;IAChC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAA8C;IAEpF;;;;OAIG;gBAEC,kBAAkB,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,EACnD,4BAA4B,CAAC,EAAE,2BAA2B;IA0B9D;;;;;OAKG;IACU,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC;YAQ1E,cAAc;CAiF/B"}
@@ -12,12 +12,20 @@ export class SmartFilterDeserializer {
12
12
  /**
13
13
  * Creates a new SmartFilterDeserializer
14
14
  * @param blockDeserializers - The map of block serializers to use, beyond those for the core blocks
15
+ * @param customInputBlockDeserializer - An optional custom deserializer for InputBlocks - if supplied and it returns null, the default deserializer will be used
15
16
  */
16
- constructor(blockDeserializers) {
17
+ constructor(blockDeserializers, customInputBlockDeserializer) {
17
18
  this._blockDeserializersV1 = new Map();
18
19
  this._blockDeserializersV1 = blockDeserializers;
19
- // Add in the core block deserializers - they are not delay loaded, so they are wrapped in Promise.resolve()
20
- this._blockDeserializersV1.set(InputBlock.ClassName, (smartFilter, serializedBlock) => Promise.resolve(inputBlockDeserializer(smartFilter, serializedBlock)));
20
+ this._blockDeserializersV1.set(InputBlock.ClassName, async (smartFilter, serializedBlock, engine) => {
21
+ if (customInputBlockDeserializer) {
22
+ const customDeserializerResult = await customInputBlockDeserializer(smartFilter, serializedBlock, engine);
23
+ if (customDeserializerResult !== null) {
24
+ return customDeserializerResult;
25
+ }
26
+ }
27
+ return inputBlockDeserializer(smartFilter, serializedBlock);
28
+ });
21
29
  this._blockDeserializersV1.set(OutputBlock.ClassName, (smartFilter) => Promise.resolve(smartFilter.output.ownerBlock));
22
30
  }
23
31
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"smartFilterDeserializer.js","sourceRoot":"","sources":["../../src/serialization/smartFilterDeserializer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"smartFilterDeserializer.js","sourceRoot":"","sources":["../../src/serialization/smartFilterDeserializer.ts"],"names":[],"mappings":"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"}
@@ -80,4 +80,8 @@ export interface IBlockSerializerV1 {
80
80
  * A function that deserializes a block from a V1 serialized block object
81
81
  */
82
82
  export type DeserializeBlockV1 = (smartFilter: SmartFilter, serializedBlock: ISerializedBlockV1, engine: ThinEngine) => Promise<BaseBlock>;
83
+ /**
84
+ * A function that optionally deserializes a block from a V1 serialized block object, returning null if it cannot
85
+ */
86
+ export type OptionalBlockDeserializerV1 = (smartFilter: SmartFilter, serializedBlock: ISerializedBlockV1, engine: ThinEngine) => Promise<Nullable<BaseBlock>>;
83
87
  //# sourceMappingURL=serialization.types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"serialization.types.d.ts","sourceRoot":"","sources":["../../../src/serialization/v1/serialization.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gFAAgF,CAAC;AAElH;;;;GAIG;AAEH;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG;IAClC,yCAAyC;IACzC,OAAO,EAAE,CAAC,CAAC;IAEX,2BAA2B;IAC3B,IAAI,EAAE,MAAM,CAAC;IAEb,+BAA+B;IAC/B,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAE3B,0CAA0C;IAC1C,UAAU,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC;IAElC,4BAA4B;IAC5B,MAAM,EAAE,kBAAkB,EAAE,CAAC;IAE7B,iCAAiC;IACjC,WAAW,EAAE,uBAAuB,EAAE,CAAC;CAC1C,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAC/B,4BAA4B;IAC5B,IAAI,EAAE,MAAM,CAAC;IAEb,qGAAqG;IACrG,QAAQ,EAAE,MAAM,CAAC;IAEjB,kCAAkC;IAClC,SAAS,EAAE,MAAM,CAAC;IAElB,iCAAiC;IACjC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAE3B,qCAAqC;IACrC,IAAI,EAAE,GAAG,CAAC;CACb;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACpC,0DAA0D;IAC1D,WAAW,EAAE,MAAM,CAAC;IAEpB,yDAAyD;IACzD,qBAAqB,EAAE,MAAM,CAAC;IAE9B,4DAA4D;IAC5D,UAAU,EAAE,MAAM,CAAC;IAEnB,wDAAwD;IACxD,oBAAoB,EAAE,MAAM,CAAC;CAChC;AAED;;;;GAIG;AAEH;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,SAAS,KAAK,kBAAkB,CAAC;AAExE;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAC/B,oEAAoE;IACpE,SAAS,EAAE,MAAM,CAAC;IAElB,6CAA6C;IAC7C,SAAS,EAAE,gBAAgB,CAAC;CAC/B;AAED;;;;GAIG;AAEH;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAC7B,WAAW,EAAE,WAAW,EACxB,eAAe,EAAE,kBAAkB,EACnC,MAAM,EAAE,UAAU,KACjB,OAAO,CAAC,SAAS,CAAC,CAAC"}
1
+ {"version":3,"file":"serialization.types.d.ts","sourceRoot":"","sources":["../../../src/serialization/v1/serialization.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gFAAgF,CAAC;AAElH;;;;GAIG;AAEH;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG;IAClC,yCAAyC;IACzC,OAAO,EAAE,CAAC,CAAC;IAEX,2BAA2B;IAC3B,IAAI,EAAE,MAAM,CAAC;IAEb,+BAA+B;IAC/B,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAE3B,0CAA0C;IAC1C,UAAU,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC;IAElC,4BAA4B;IAC5B,MAAM,EAAE,kBAAkB,EAAE,CAAC;IAE7B,iCAAiC;IACjC,WAAW,EAAE,uBAAuB,EAAE,CAAC;CAC1C,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAC/B,4BAA4B;IAC5B,IAAI,EAAE,MAAM,CAAC;IAEb,qGAAqG;IACrG,QAAQ,EAAE,MAAM,CAAC;IAEjB,kCAAkC;IAClC,SAAS,EAAE,MAAM,CAAC;IAElB,iCAAiC;IACjC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAE3B,qCAAqC;IACrC,IAAI,EAAE,GAAG,CAAC;CACb;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACpC,0DAA0D;IAC1D,WAAW,EAAE,MAAM,CAAC;IAEpB,yDAAyD;IACzD,qBAAqB,EAAE,MAAM,CAAC;IAE9B,4DAA4D;IAC5D,UAAU,EAAE,MAAM,CAAC;IAEnB,wDAAwD;IACxD,oBAAoB,EAAE,MAAM,CAAC;CAChC;AAED;;;;GAIG;AAEH;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,SAAS,KAAK,kBAAkB,CAAC;AAExE;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAC/B,oEAAoE;IACpE,SAAS,EAAE,MAAM,CAAC;IAElB,6CAA6C;IAC7C,SAAS,EAAE,gBAAgB,CAAC;CAC/B;AAED;;;;GAIG;AAEH;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAC7B,WAAW,EAAE,WAAW,EACxB,eAAe,EAAE,kBAAkB,EACnC,MAAM,EAAE,UAAU,KACjB,OAAO,CAAC,SAAS,CAAC,CAAC;AAExB;;GAEG;AACH,MAAM,MAAM,2BAA2B,GAAG,CACtC,WAAW,EAAE,WAAW,EACxB,eAAe,EAAE,kBAAkB,EACnC,MAAM,EAAE,UAAU,KACjB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@babylonjs/smart-filters",
3
- "version": "0.3.5-alpha",
3
+ "version": "0.3.7-alpha",
4
4
  "description": "Babylon.js Smart Filter core",
5
5
  "author": {
6
6
  "name": "Sebastien VANDENBERGHE"
@@ -9,6 +9,7 @@ import type {
9
9
  DeserializeBlockV1,
10
10
  ISerializedBlockV1,
11
11
  ISerializedConnectionV1,
12
+ OptionalBlockDeserializerV1,
12
13
  SerializedSmartFilterV1,
13
14
  } from "./v1/serialization.types";
14
15
  import { UniqueIdGenerator } from "../utils/uniqueIdGenerator.js";
@@ -24,15 +25,29 @@ export class SmartFilterDeserializer {
24
25
  /**
25
26
  * Creates a new SmartFilterDeserializer
26
27
  * @param blockDeserializers - The map of block serializers to use, beyond those for the core blocks
28
+ * @param customInputBlockDeserializer - An optional custom deserializer for InputBlocks - if supplied and it returns null, the default deserializer will be used
27
29
  */
28
- public constructor(blockDeserializers: Map<string, DeserializeBlockV1>) {
30
+ public constructor(
31
+ blockDeserializers: Map<string, DeserializeBlockV1>,
32
+ customInputBlockDeserializer?: OptionalBlockDeserializerV1
33
+ ) {
29
34
  this._blockDeserializersV1 = blockDeserializers;
30
35
 
31
- // Add in the core block deserializers - they are not delay loaded, so they are wrapped in Promise.resolve()
32
36
  this._blockDeserializersV1.set(
33
37
  InputBlock.ClassName,
34
- (smartFilter: SmartFilter, serializedBlock: ISerializedBlockV1) =>
35
- Promise.resolve(inputBlockDeserializer(smartFilter, serializedBlock))
38
+ async (smartFilter: SmartFilter, serializedBlock: ISerializedBlockV1, engine: ThinEngine) => {
39
+ if (customInputBlockDeserializer) {
40
+ const customDeserializerResult = await customInputBlockDeserializer(
41
+ smartFilter,
42
+ serializedBlock,
43
+ engine
44
+ );
45
+ if (customDeserializerResult !== null) {
46
+ return customDeserializerResult;
47
+ }
48
+ }
49
+ return inputBlockDeserializer(smartFilter, serializedBlock);
50
+ }
36
51
  );
37
52
 
38
53
  this._blockDeserializersV1.set(OutputBlock.ClassName, (smartFilter: SmartFilter) =>
@@ -106,3 +106,12 @@ export type DeserializeBlockV1 = (
106
106
  serializedBlock: ISerializedBlockV1,
107
107
  engine: ThinEngine
108
108
  ) => Promise<BaseBlock>;
109
+
110
+ /**
111
+ * A function that optionally deserializes a block from a V1 serialized block object, returning null if it cannot
112
+ */
113
+ export type OptionalBlockDeserializerV1 = (
114
+ smartFilter: SmartFilter,
115
+ serializedBlock: ISerializedBlockV1,
116
+ engine: ThinEngine
117
+ ) => Promise<Nullable<BaseBlock>>;