@babylonjs/smart-filters 0.6.2-alpha → 0.7.0-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.
Files changed (68) hide show
  1. package/dist/blocks/aggregateBlock.d.ts +5 -3
  2. package/dist/blocks/aggregateBlock.d.ts.map +1 -1
  3. package/dist/blocks/aggregateBlock.js +23 -11
  4. package/dist/blocks/aggregateBlock.js.map +1 -1
  5. package/dist/blocks/customAggregateBlock.d.ts +31 -0
  6. package/dist/blocks/customAggregateBlock.d.ts.map +1 -0
  7. package/dist/blocks/customAggregateBlock.js +55 -0
  8. package/dist/blocks/customAggregateBlock.js.map +1 -0
  9. package/dist/blocks/customShaderBlock.d.ts +3 -2
  10. package/dist/blocks/customShaderBlock.d.ts.map +1 -1
  11. package/dist/blocks/customShaderBlock.js +46 -10
  12. package/dist/blocks/customShaderBlock.js.map +1 -1
  13. package/dist/connection/connectionPoint.js +1 -1
  14. package/dist/connection/connectionPoint.js.map +1 -1
  15. package/dist/index.d.ts +2 -1
  16. package/dist/index.d.ts.map +1 -1
  17. package/dist/index.js +2 -1
  18. package/dist/index.js.map +1 -1
  19. package/dist/serialization/importCustomBlockDefinition.d.ts +15 -0
  20. package/dist/serialization/importCustomBlockDefinition.d.ts.map +1 -0
  21. package/dist/serialization/{importCustomShaderBlockDefinition.js → importCustomBlockDefinition.js} +25 -13
  22. package/dist/serialization/importCustomBlockDefinition.js.map +1 -0
  23. package/dist/serialization/index.d.ts +1 -0
  24. package/dist/serialization/index.d.ts.map +1 -1
  25. package/dist/serialization/index.js +1 -0
  26. package/dist/serialization/index.js.map +1 -1
  27. package/dist/serialization/serializedBlockDefinition.d.ts +9 -4
  28. package/dist/serialization/serializedBlockDefinition.d.ts.map +1 -1
  29. package/dist/serialization/serializedShaderBlockDefinition.d.ts +7 -0
  30. package/dist/serialization/serializedShaderBlockDefinition.d.ts.map +1 -0
  31. package/dist/serialization/serializedShaderBlockDefinition.js +2 -0
  32. package/dist/serialization/serializedShaderBlockDefinition.js.map +1 -0
  33. package/dist/serialization/smartFilterDeserializer.d.ts +1 -1
  34. package/dist/serialization/smartFilterDeserializer.d.ts.map +1 -1
  35. package/dist/serialization/smartFilterDeserializer.js +1 -1
  36. package/dist/serialization/smartFilterDeserializer.js.map +1 -1
  37. package/dist/serialization/smartFilterSerializer.d.ts.map +1 -1
  38. package/dist/serialization/smartFilterSerializer.js +4 -1
  39. package/dist/serialization/smartFilterSerializer.js.map +1 -1
  40. package/dist/serialization/v1/{blockSerialization.types.d.ts → shaderBlockSerialization.types.d.ts} +15 -3
  41. package/dist/serialization/v1/shaderBlockSerialization.types.d.ts.map +1 -0
  42. package/dist/serialization/v1/{blockSerialization.types.js → shaderBlockSerialization.types.js} +1 -1
  43. package/dist/serialization/v1/shaderBlockSerialization.types.js.map +1 -0
  44. package/dist/serialization/v1/smartFilterSerialization.types.d.ts +4 -1
  45. package/dist/serialization/v1/smartFilterSerialization.types.d.ts.map +1 -1
  46. package/dist/utils/buildTools/shaderConverter.d.ts +5 -0
  47. package/dist/utils/buildTools/shaderConverter.d.ts.map +1 -1
  48. package/dist/utils/buildTools/shaderConverter.js.map +1 -1
  49. package/package.json +1 -1
  50. package/src/blocks/aggregateBlock.ts +27 -13
  51. package/src/blocks/customAggregateBlock.ts +85 -0
  52. package/src/blocks/customShaderBlock.ts +84 -19
  53. package/src/connection/connectionPoint.ts +1 -1
  54. package/src/index.ts +2 -1
  55. package/src/serialization/{importCustomShaderBlockDefinition.ts → importCustomBlockDefinition.ts} +26 -12
  56. package/src/serialization/index.ts +1 -0
  57. package/src/serialization/serializedBlockDefinition.ts +9 -4
  58. package/src/serialization/serializedShaderBlockDefinition.ts +7 -0
  59. package/src/serialization/smartFilterDeserializer.ts +3 -2
  60. package/src/serialization/smartFilterSerializer.ts +4 -1
  61. package/src/serialization/v1/{blockSerialization.types.ts → shaderBlockSerialization.types.ts} +17 -2
  62. package/src/serialization/v1/smartFilterSerialization.types.ts +6 -1
  63. package/src/utils/buildTools/shaderConverter.ts +6 -0
  64. package/dist/serialization/importCustomShaderBlockDefinition.d.ts +0 -11
  65. package/dist/serialization/importCustomShaderBlockDefinition.d.ts.map +0 -1
  66. package/dist/serialization/importCustomShaderBlockDefinition.js.map +0 -1
  67. package/dist/serialization/v1/blockSerialization.types.d.ts.map +0 -1
  68. package/dist/serialization/v1/blockSerialization.types.js.map +0 -1
@@ -1,22 +1,34 @@
1
1
  import { ConnectionPointType } from "../connection/connectionPointType.js";
2
2
  import { hasGlslHeader, parseFragmentShader } from "../utils/buildTools/shaderConverter.js";
3
3
  import type { SerializedBlockDefinition } from "./serializedBlockDefinition.js";
4
- import type { SerializedInputConnectionPointV1 } from "./v1/blockSerialization.types.js";
4
+ import type { SerializedShaderBlockDefinition } from "./serializedShaderBlockDefinition.js";
5
+ import type { InputAutoBindV1, SerializedInputConnectionPointV1 } from "./v1/shaderBlockSerialization.types.js";
5
6
 
6
7
  /**
7
- * Imports a serialized custom shader block definition. Supports importing a JSON string
8
- * of an SerializedBlockDefinition object, or a glsl shader with the required annotations
9
- * so it can be converted to a SerializedBlockDefinition object.
10
- * See readme.md for more information.
11
- * @param serializedBlockDefinition - The serialized block definition - either a SerializedBlockDefinition object in a JSON string, or an annotated glsl shader
8
+ * Imports a serialized custom block definition. Supports either serialized CustomShaderBlock definitions or
9
+ * CustomAggregateBlock definitions.
10
+ *
11
+ * CustomShaderBlock definitions can be supplied either as serialized SerializedBlockDefinition object
12
+ * or a glsl shader with the required annotations (see readme.md for details).
13
+ *
14
+ * CustomAggregateBlock definitions must be supplied as serialized SerializedBlockDefinition object.
15
+ *
16
+ * @param serializedData - The serialized data
12
17
  * @returns The serialized block definition
13
18
  */
14
- export function importCustomShaderBlockDefinition(serializedBlockDefinition: string): SerializedBlockDefinition {
15
- if (hasGlslHeader(serializedBlockDefinition)) {
16
- return importAnnotatedGlsl(serializedBlockDefinition);
19
+ export function importCustomBlockDefinition(serializedData: string): SerializedBlockDefinition {
20
+ if (hasGlslHeader(serializedData)) {
21
+ return importAnnotatedGlsl(serializedData);
17
22
  } else {
18
- // Assume this is a serialized SerializedBlockDefinition object
19
- return JSON.parse(serializedBlockDefinition);
23
+ // Assume this is a serialized JSON object
24
+ const blockDefinition = JSON.parse(serializedData);
25
+
26
+ // SmartFilters can be serialized without a blockType
27
+ // By convention, we use the SmartFilter name as the blockType when importing them as SerializedBlockDefinitions
28
+ if (blockDefinition.format === "smartFilter" && blockDefinition.name && !blockDefinition.blockType) {
29
+ blockDefinition.blockType = blockDefinition.name;
30
+ }
31
+ return blockDefinition;
20
32
  }
21
33
  }
22
34
 
@@ -27,7 +39,7 @@ export function importCustomShaderBlockDefinition(serializedBlockDefinition: str
27
39
  * @param fragmentShader - The contents of the .glsl fragment shader file
28
40
  * @returns The serialized block definition
29
41
  */
30
- function importAnnotatedGlsl(fragmentShader: string): SerializedBlockDefinition {
42
+ function importAnnotatedGlsl(fragmentShader: string): SerializedShaderBlockDefinition {
31
43
  const fragmentShaderInfo = parseFragmentShader(fragmentShader);
32
44
 
33
45
  if (!fragmentShaderInfo.blockType) {
@@ -66,6 +78,7 @@ function importAnnotatedGlsl(fragmentShader: string): SerializedBlockDefinition
66
78
  const inputConnectionPoint: SerializedInputConnectionPointV1 = {
67
79
  name: uniform.name,
68
80
  type,
81
+ autoBind: uniform.properties?.autoBind as InputAutoBindV1,
69
82
  };
70
83
  if (inputConnectionPoint.type !== ConnectionPointType.Texture && uniform.properties?.default !== undefined) {
71
84
  inputConnectionPoint.defaultValue = uniform.properties.default;
@@ -74,6 +87,7 @@ function importAnnotatedGlsl(fragmentShader: string): SerializedBlockDefinition
74
87
  }
75
88
 
76
89
  return {
90
+ format: "shaderBlockDefinition",
77
91
  formatVersion: 1,
78
92
  blockType: fragmentShaderInfo.blockType,
79
93
  shaderProgram: {
@@ -2,4 +2,5 @@ export * from "./v1/index.js";
2
2
  export * from "./serializedSmartFilter.js";
3
3
  export * from "./smartFilterDeserializer.js";
4
4
  export * from "./smartFilterSerializer.js";
5
+ export * from "./serializedShaderBlockDefinition.js";
5
6
  export * from "./serializedBlockDefinition.js";
@@ -1,7 +1,12 @@
1
- import type { SerializedBlockDefinitionV1 } from "./v1/blockSerialization.types";
1
+ import type { SerializedShaderBlockDefinition } from "./serializedShaderBlockDefinition";
2
+ import type { SerializedSmartFilter } from "./serializedSmartFilter";
2
3
 
3
4
  /**
4
- * Type union of all versions of serialized SmartFilter block definitions
5
- * A block definition is an object which is used to create a CustomShaderBlock instance.
5
+ * Type that represents any type of serialized block definition - shader or aggregate.
6
6
  */
7
- export type SerializedBlockDefinition = SerializedBlockDefinitionV1;
7
+ export type SerializedBlockDefinition = (SerializedShaderBlockDefinition | SerializedSmartFilter) & {
8
+ /**
9
+ * The type of block this is.
10
+ */
11
+ blockType: string;
12
+ };
@@ -0,0 +1,7 @@
1
+ import type { SerializedShaderBlockDefinitionV1 } from "./v1/shaderBlockSerialization.types";
2
+
3
+ /**
4
+ * Type union of all versions of serialized SmartFilter block definitions
5
+ * A block definition is an object which is used to create a CustomShaderBlock instance.
6
+ */
7
+ export type SerializedShaderBlockDefinition = SerializedShaderBlockDefinitionV1;
@@ -20,7 +20,8 @@ import type { Nullable } from "@babylonjs/core/types";
20
20
  export type BlockFactory = (
21
21
  smartFilter: SmartFilter,
22
22
  engine: ThinEngine,
23
- serializedBlock: ISerializedBlockV1
23
+ serializedBlock: ISerializedBlockV1,
24
+ smartFilterDeserializer: SmartFilterDeserializer
24
25
  ) => Promise<Nullable<BaseBlock>>;
25
26
 
26
27
  /**
@@ -182,7 +183,7 @@ export class SmartFilterDeserializer {
182
183
  break;
183
184
  default: {
184
185
  // If it's not an input or output block, use the provided block factory
185
- newBlock = await this._blockFactory(smartFilter, engine, serializedBlock);
186
+ newBlock = await this._blockFactory(smartFilter, engine, serializedBlock, this);
186
187
  if (!newBlock) {
187
188
  blockTypesWhichCouldNotBeDeserialized.push(serializedBlock.blockType);
188
189
  return;
@@ -12,6 +12,7 @@ import type {
12
12
  SerializedSmartFilterV1,
13
13
  } from "./v1/smartFilterSerialization.types";
14
14
  import { CustomShaderBlock } from "../blocks/customShaderBlock.js";
15
+ import { CustomAggregateBlock } from "../blocks/customAggregateBlock.js";
15
16
 
16
17
  /**
17
18
  * Determines if two serialized connection points are equivalent to each other
@@ -62,8 +63,9 @@ export class SmartFilterSerializer {
62
63
 
63
64
  const blocks = smartFilter.attachedBlocks.map((block: BaseBlock) => {
64
65
  // Serialize the block itself
66
+ const blockClassName = block.getClassName();
65
67
  const serializeFn =
66
- block.getClassName() === CustomShaderBlock.ClassName
68
+ blockClassName === CustomShaderBlock.ClassName || blockClassName === CustomAggregateBlock.ClassName
67
69
  ? defaultBlockSerializer
68
70
  : this._blockSerializers.get(block.blockType);
69
71
  if (!serializeFn) {
@@ -106,6 +108,7 @@ export class SmartFilterSerializer {
106
108
  });
107
109
 
108
110
  return {
111
+ format: "smartFilter",
109
112
  formatVersion: 1,
110
113
  name: smartFilter.name,
111
114
  comments: smartFilter.comments,
@@ -8,11 +8,16 @@ import type { AllConnectionPointTypes, ConnectionPointValue } from "../../connec
8
8
  import type { ShaderProgram } from "../../utils/shaderCodeUtils";
9
9
 
10
10
  /**
11
- * The V1 definition of a serialized block. A block definition is loaded by a CustomShaderBlock and defines how a
11
+ * The V1 definition of a serialized shader block. This block definition is loaded by a CustomShaderBlock and defines how a
12
12
  * blockType works. This should not be confused with an ISerializedBockV1, which is a serialized instance of a block in a
13
13
  * serialized SmartFilter graph. It is referenced by blockType in a serialized SmartFilter.
14
14
  */
15
- export type SerializedBlockDefinitionV1 = {
15
+ export type SerializedShaderBlockDefinitionV1 = {
16
+ /**
17
+ * Which type of serialized data this is.
18
+ */
19
+ format: "shaderBlockDefinition";
20
+
16
21
  /**
17
22
  * The version of the block definition format (format of the serialized data, not the version of the block definition itself).
18
23
  */
@@ -42,6 +47,11 @@ export type SerializedBlockDefinitionV1 = {
42
47
  disableOptimization: boolean;
43
48
  };
44
49
 
50
+ /**
51
+ * Possible V1 auto bind values for input connection points.
52
+ */
53
+ export type InputAutoBindV1 = "outputResolution";
54
+
45
55
  /**
46
56
  * A V1 input connection point of a serialized block definition.
47
57
  */
@@ -60,4 +70,9 @@ export type SerializedInputConnectionPointV1<U extends AllConnectionPointTypes =
60
70
  * The optional default value of the connection point.
61
71
  */
62
72
  defaultValue?: ConnectionPointValue<U>;
73
+
74
+ /**
75
+ * If supplied, the input will be automatically bound to this value, instead of creating an input connection point.
76
+ */
77
+ autoBind?: InputAutoBindV1;
63
78
  };
@@ -3,6 +3,7 @@ import type { BaseBlock } from "../../blocks/baseBlock.js";
3
3
  import type { SmartFilter } from "../../smartFilter.js";
4
4
  import type { ThinEngine } from "@babylonjs/core/Engines/thinEngine";
5
5
  import type { IEditorData } from "@babylonjs/shared-ui-components/nodeGraphSystem/interfaces/nodeLocationInfo.js";
6
+ import type { SmartFilterDeserializer } from "../smartFilterDeserializer.js";
6
7
 
7
8
  /**
8
9
  * ----------------------------------------------------------------------------
@@ -14,6 +15,9 @@ import type { IEditorData } from "@babylonjs/shared-ui-components/nodeGraphSyste
14
15
  * V1 Serialized Smart Filter
15
16
  */
16
17
  export type SerializedSmartFilterV1 = {
18
+ /** Which type of serialized data this is. */
19
+ format: "smartFilter";
20
+
17
21
  /** The format version of the serialized data (not the version of the SmartFilter itself).*/
18
22
  formatVersion: 1;
19
23
 
@@ -105,7 +109,8 @@ export interface IBlockSerializerV1 {
105
109
  export type DeserializeBlockV1 = (
106
110
  smartFilter: SmartFilter,
107
111
  serializedBlock: ISerializedBlockV1,
108
- engine: ThinEngine
112
+ engine: ThinEngine,
113
+ smartFilterDeserializer: SmartFilterDeserializer
109
114
  ) => Promise<BaseBlock>;
110
115
 
111
116
  /**
@@ -11,6 +11,12 @@ export type UniformMetadataProperties = {
11
11
  * If supplied, the default value to use for the corresponding input connection point
12
12
  */
13
13
  default?: any;
14
+
15
+ /**
16
+ * If supplied, the input will be automatically bound to this value, instead of creating an input connection point
17
+ * @see InputAutoBindV1 for possible values.
18
+ */
19
+ autoBind?: string;
14
20
  };
15
21
 
16
22
  /**
@@ -1,11 +0,0 @@
1
- import type { SerializedBlockDefinition } from "./serializedBlockDefinition.js";
2
- /**
3
- * Imports a serialized custom shader block definition. Supports importing a JSON string
4
- * of an SerializedBlockDefinition object, or a glsl shader with the required annotations
5
- * so it can be converted to a SerializedBlockDefinition object.
6
- * See readme.md for more information.
7
- * @param serializedBlockDefinition - The serialized block definition - either a SerializedBlockDefinition object in a JSON string, or an annotated glsl shader
8
- * @returns The serialized block definition
9
- */
10
- export declare function importCustomShaderBlockDefinition(serializedBlockDefinition: string): SerializedBlockDefinition;
11
- //# sourceMappingURL=importCustomShaderBlockDefinition.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"importCustomShaderBlockDefinition.d.ts","sourceRoot":"","sources":["../../src/serialization/importCustomShaderBlockDefinition.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAGhF;;;;;;;GAOG;AACH,wBAAgB,iCAAiC,CAAC,yBAAyB,EAAE,MAAM,GAAG,yBAAyB,CAO9G"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"importCustomShaderBlockDefinition.js","sourceRoot":"","sources":["../../src/serialization/importCustomShaderBlockDefinition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAI5F;;;;;;;GAOG;AACH,MAAM,UAAU,iCAAiC,CAAC,yBAAiC;IAC/E,IAAI,aAAa,CAAC,yBAAyB,CAAC,EAAE,CAAC;QAC3C,OAAO,mBAAmB,CAAC,yBAAyB,CAAC,CAAC;IAC1D,CAAC;SAAM,CAAC;QACJ,+DAA+D;QAC/D,OAAO,IAAI,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;IACjD,CAAC;AACL,CAAC;AAED;;;;;;GAMG;AACH,SAAS,mBAAmB,CAAC,cAAsB;;IAC/C,MAAM,kBAAkB,GAAG,mBAAmB,CAAC,cAAc,CAAC,CAAC;IAE/D,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IACjD,CAAC;IAED,wCAAwC;IACxC,MAAM,qBAAqB,GAAuC,EAAE,CAAC;IACrE,KAAK,MAAM,OAAO,IAAI,kBAAkB,CAAC,QAAQ,EAAE,CAAC;QAChD,iCAAiC;QACjC,IAAI,IAAyB,CAAC;QAC9B,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,OAAO;gBACR,IAAI,GAAG,mBAAmB,CAAC,KAAK,CAAC;gBACjC,MAAM;YACV,KAAK,WAAW;gBACZ,IAAI,GAAG,mBAAmB,CAAC,OAAO,CAAC;gBACnC,MAAM;YACV,KAAK,MAAM;gBACP,IAAI,GAAG,mBAAmB,CAAC,MAAM,CAAC;gBAClC,MAAM;YACV,KAAK,MAAM;gBACP,IAAI,GAAG,mBAAmB,CAAC,MAAM,CAAC;gBAClC,MAAM;YACV,KAAK,MAAM;gBACP,IAAI,GAAG,mBAAmB,CAAC,OAAO,CAAC;gBACnC,MAAM;YACV,KAAK,MAAM;gBACP,IAAI,GAAG,mBAAmB,CAAC,OAAO,CAAC;gBACnC,MAAM;YACV;gBACI,MAAM,IAAI,KAAK,CAAC,8BAA8B,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC;QACvE,CAAC;QAED,qCAAqC;QACrC,MAAM,oBAAoB,GAAqC;YAC3D,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,IAAI;SACP,CAAC;QACF,IAAI,oBAAoB,CAAC,IAAI,KAAK,mBAAmB,CAAC,OAAO,IAAI,CAAA,MAAA,OAAO,CAAC,UAAU,0CAAE,OAAO,MAAK,SAAS,EAAE,CAAC;YACzG,oBAAoB,CAAC,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC;QACnE,CAAC;QACD,qBAAqB,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACrD,CAAC;IAED,OAAO;QACH,aAAa,EAAE,CAAC;QAChB,SAAS,EAAE,kBAAkB,CAAC,SAAS;QACvC,aAAa,EAAE;YACX,QAAQ,EAAE,kBAAkB,CAAC,UAAU;SAC1C;QACD,qBAAqB;QACrB,mBAAmB,EAAE,CAAC,CAAC,kBAAkB,CAAC,mBAAmB;KAChE,CAAC;AACN,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"blockSerialization.types.d.ts","sourceRoot":"","sources":["../../../src/serialization/v1/blockSerialization.types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAC1G,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAEjE;;;;GAIG;AACH,MAAM,MAAM,2BAA2B,GAAG;IACtC;;OAEG;IACH,aAAa,EAAE,CAAC,CAAC;IAEjB;;;;;OAKG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,aAAa,EAAE,aAAa,CAAC;IAE7B;;OAEG;IACH,qBAAqB,EAAE,gCAAgC,EAAE,CAAC;IAE1D;;OAEG;IACH,mBAAmB,EAAE,OAAO,CAAC;CAChC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,gCAAgC,CAAC,CAAC,SAAS,uBAAuB,GAAG,uBAAuB,IAAI;IACxG;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,IAAI,EAAE,CAAC,CAAC;IAER;;OAEG;IACH,YAAY,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC;CAC1C,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"blockSerialization.types.js","sourceRoot":"","sources":["../../../src/serialization/v1/blockSerialization.types.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}