@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.
- package/dist/serialization/smartFilterDeserializer.d.ts +3 -2
- package/dist/serialization/smartFilterDeserializer.d.ts.map +1 -1
- package/dist/serialization/smartFilterDeserializer.js +11 -3
- package/dist/serialization/smartFilterDeserializer.js.map +1 -1
- package/dist/serialization/v1/serialization.types.d.ts +4 -0
- package/dist/serialization/v1/serialization.types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/serialization/smartFilterDeserializer.ts +19 -4
- package/src/serialization/v1/serialization.types.ts +9 -0
|
@@ -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,
|
|
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
|
-
|
|
20
|
-
|
|
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":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;
|
|
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
|
@@ -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(
|
|
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
|
-
|
|
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>>;
|