@tolokoban/tgd 2.0.78 → 2.0.80

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 (142) hide show
  1. package/lib/dist/camera/camera.d.ts +14 -2
  2. package/lib/dist/camera/camera.d.ts.map +1 -1
  3. package/lib/dist/camera/camera.js +89 -8
  4. package/lib/dist/controller/camera/orbit.d.ts +3 -3
  5. package/lib/dist/controller/camera/orbit.d.ts.map +1 -1
  6. package/lib/dist/controller/camera/orbit.js +5 -6
  7. package/lib/dist/dataset/dataset.d.ts +8 -2
  8. package/lib/dist/dataset/dataset.d.ts.map +1 -1
  9. package/lib/dist/dataset/dataset.js +23 -14
  10. package/lib/dist/debug/console.d.ts +5 -0
  11. package/lib/dist/debug/console.d.ts.map +1 -1
  12. package/lib/dist/debug/console.js +22 -1
  13. package/lib/dist/geometry/box.d.ts +4 -2
  14. package/lib/dist/geometry/box.d.ts.map +1 -1
  15. package/lib/dist/geometry/box.js +26 -20
  16. package/lib/dist/geometry/index.d.ts +1 -0
  17. package/lib/dist/geometry/index.d.ts.map +1 -1
  18. package/lib/dist/geometry/index.js +2 -1
  19. package/lib/dist/geometry/sphere-ico.d.ts +19 -0
  20. package/lib/dist/geometry/sphere-ico.d.ts.map +1 -0
  21. package/lib/dist/geometry/sphere-ico.js +78 -0
  22. package/lib/dist/index.d.ts +1 -0
  23. package/lib/dist/index.d.ts.map +1 -1
  24. package/lib/dist/index.js +2 -1
  25. package/lib/dist/material/global.d.ts +3 -3
  26. package/lib/dist/material/global.d.ts.map +1 -1
  27. package/lib/dist/material/global.js +9 -9
  28. package/lib/dist/math/transfo.d.ts +4 -3
  29. package/lib/dist/math/transfo.d.ts.map +1 -1
  30. package/lib/dist/math/transfo.js +2 -2
  31. package/lib/dist/math/vec2.d.ts +3 -3
  32. package/lib/dist/math/vec2.d.ts.map +1 -1
  33. package/lib/dist/math/vec2.js +4 -4
  34. package/lib/dist/math/vec3.d.ts +5 -5
  35. package/lib/dist/math/vec3.d.ts.map +1 -1
  36. package/lib/dist/math/vec3.js +5 -4
  37. package/lib/dist/math/vec4.d.ts +4 -4
  38. package/lib/dist/math/vec4.d.ts.map +1 -1
  39. package/lib/dist/math/vec4.js +18 -17
  40. package/lib/dist/painter/debug/index.d.ts +1 -0
  41. package/lib/dist/painter/debug/index.d.ts.map +1 -1
  42. package/lib/dist/painter/debug/index.js +2 -1
  43. package/lib/dist/painter/debug/point/index.d.ts +2 -0
  44. package/lib/dist/painter/debug/point/index.d.ts.map +1 -0
  45. package/lib/dist/painter/debug/point/index.js +2 -0
  46. package/lib/dist/painter/debug/point/point.d.ts +17 -0
  47. package/lib/dist/painter/debug/point/point.d.ts.map +1 -0
  48. package/lib/dist/painter/debug/point/point.js +55 -0
  49. package/lib/dist/painter/debug/stencil/stencil.d.ts +1 -1
  50. package/lib/dist/painter/debug/stencil/stencil.d.ts.map +1 -1
  51. package/lib/dist/painter/debug/stencil/stencil.js +5 -5
  52. package/lib/dist/painter/group.d.ts +11 -3
  53. package/lib/dist/painter/group.d.ts.map +1 -1
  54. package/lib/dist/painter/group.js +24 -10
  55. package/lib/dist/painter/index.d.ts +2 -0
  56. package/lib/dist/painter/index.d.ts.map +1 -1
  57. package/lib/dist/painter/index.js +3 -1
  58. package/lib/dist/painter/lod/cache.d.ts +9 -0
  59. package/lib/dist/painter/lod/cache.d.ts.map +1 -0
  60. package/lib/dist/painter/lod/cache.js +60 -0
  61. package/lib/dist/painter/lod/index.d.ts +2 -0
  62. package/lib/dist/painter/lod/index.d.ts.map +1 -0
  63. package/lib/dist/painter/lod/index.js +2 -0
  64. package/lib/dist/painter/lod/lod.d.ts +61 -0
  65. package/lib/dist/painter/lod/lod.d.ts.map +1 -0
  66. package/lib/dist/painter/lod/lod.js +72 -0
  67. package/lib/dist/painter/lod/octree.d.ts +8 -0
  68. package/lib/dist/painter/lod/octree.d.ts.map +1 -0
  69. package/lib/dist/painter/lod/octree.js +61 -0
  70. package/lib/dist/painter/mesh/mesh/mesh.d.ts +6 -6
  71. package/lib/dist/painter/mesh/mesh/mesh.d.ts.map +1 -1
  72. package/lib/dist/painter/mesh/mesh/mesh.js +7 -6
  73. package/lib/dist/painter/node/node.d.ts +4 -3
  74. package/lib/dist/painter/node/node.d.ts.map +1 -1
  75. package/lib/dist/painter/node/node.js +27 -12
  76. package/lib/dist/painter/painter.d.ts +1 -0
  77. package/lib/dist/painter/painter.d.ts.map +1 -1
  78. package/lib/dist/painter/painter.js +4 -1
  79. package/lib/dist/painter/sprites/accessor.d.ts +13 -0
  80. package/lib/dist/painter/sprites/accessor.d.ts.map +1 -0
  81. package/lib/dist/painter/sprites/accessor.js +24 -0
  82. package/lib/dist/painter/sprites/index.d.ts +2 -0
  83. package/lib/dist/painter/sprites/index.d.ts.map +1 -0
  84. package/lib/dist/painter/sprites/index.js +2 -0
  85. package/lib/dist/painter/sprites/sprite.d.ts +31 -0
  86. package/lib/dist/painter/sprites/sprite.d.ts.map +1 -0
  87. package/lib/dist/painter/sprites/sprite.js +80 -0
  88. package/lib/dist/painter/sprites/sprites.d.ts +61 -0
  89. package/lib/dist/painter/sprites/sprites.d.ts.map +1 -0
  90. package/lib/dist/painter/sprites/sprites.js +259 -0
  91. package/lib/dist/painter/sprites/types.d.ts +38 -0
  92. package/lib/dist/painter/sprites/types.d.ts.map +1 -0
  93. package/lib/dist/painter/sprites/types.js +2 -0
  94. package/lib/dist/program/program.d.ts +2 -1
  95. package/lib/dist/program/program.d.ts.map +1 -1
  96. package/lib/dist/program/program.js +5 -1
  97. package/lib/dist/texture/texture-depth.d.ts.map +1 -1
  98. package/lib/dist/texture/texture-depth.js +2 -4
  99. package/lib/dist/texture/texture2d.d.ts +7 -1
  100. package/lib/dist/texture/texture2d.d.ts.map +1 -1
  101. package/lib/dist/texture/texture2d.js +14 -3
  102. package/lib/dist/texture/types.d.ts +9 -0
  103. package/lib/dist/texture/types.d.ts.map +1 -0
  104. package/lib/dist/texture/types.js +20 -0
  105. package/lib/dist/time/index.d.ts +2 -0
  106. package/lib/dist/time/index.d.ts.map +1 -0
  107. package/lib/dist/time/index.js +2 -0
  108. package/lib/dist/time/interval/index.d.ts +2 -0
  109. package/lib/dist/time/interval/index.d.ts.map +1 -0
  110. package/lib/dist/time/interval/index.js +2 -0
  111. package/lib/dist/time/interval/interval.d.ts +16 -0
  112. package/lib/dist/time/interval/interval.d.ts.map +1 -0
  113. package/lib/dist/time/interval/interval.js +24 -0
  114. package/lib/dist/types/gltf.d.ts +1 -1
  115. package/lib/dist/types/gltf.d.ts.map +1 -1
  116. package/lib/dist/types/gltf.js +2 -2
  117. package/lib/dist/types/guards.d.ts +86 -4
  118. package/lib/dist/types/guards.d.ts.map +1 -1
  119. package/lib/dist/types/guards.js +180 -44
  120. package/lib/dist/utils/canvas.js +1 -1
  121. package/lib/dist/vao/vao.d.ts +3 -3
  122. package/lib/dist/vao/vao.d.ts.map +1 -1
  123. package/lib/dist/vao/vao.js +1 -1
  124. package/package.json +1 -1
  125. package/lib/dist/material/bsdf.d.ts +0 -25
  126. package/lib/dist/material/bsdf.d.ts.map +0 -1
  127. package/lib/dist/material/bsdf.js +0 -98
  128. package/lib/dist/material/principled.d.ts +0 -25
  129. package/lib/dist/material/principled.d.ts.map +0 -1
  130. package/lib/dist/material/principled.js +0 -112
  131. package/lib/dist/material/solid.d.ts +0 -22
  132. package/lib/dist/material/solid.d.ts.map +0 -1
  133. package/lib/dist/material/solid.js +0 -20
  134. package/lib/dist/types/input-keyboard.d.ts +0 -8
  135. package/lib/dist/types/input-keyboard.d.ts.map +0 -1
  136. package/lib/dist/types/input-keyboard.js +0 -2
  137. package/lib/dist/utils/math.d.ts +0 -19
  138. package/lib/dist/utils/math.d.ts.map +0 -1
  139. package/lib/dist/utils/math.js +0 -59
  140. package/lib/dist/utils/math.test.d.ts +0 -2
  141. package/lib/dist/utils/math.test.d.ts.map +0 -1
  142. package/lib/dist/utils/math.test.js +0 -22
@@ -11,6 +11,15 @@ export function isString(data) {
11
11
  export function isNumber(data) {
12
12
  return typeof data === "number";
13
13
  }
14
+ export function isNull(data) {
15
+ return data === null;
16
+ }
17
+ export function isFunction(data) {
18
+ return typeof data === "function";
19
+ }
20
+ export function isUndefined(data) {
21
+ return data === undefined;
22
+ }
14
23
  export function isBoolean(data) {
15
24
  return typeof data === "boolean";
16
25
  }
@@ -19,9 +28,18 @@ export function isArrayBuffer(data) {
19
28
  return false;
20
29
  return data instanceof ArrayBuffer;
21
30
  }
31
+ export function isArrayBufferView(data) {
32
+ if (!data)
33
+ return false;
34
+ return ArrayBuffer.isView(data);
35
+ }
36
+ export function isBufferSource(data) {
37
+ return isArrayBuffer(data) || isArrayBufferView(data);
38
+ }
22
39
  export function isStringArray(data) {
23
40
  if (!Array.isArray(data))
24
41
  return false;
42
+ // eslint-disable-next-line no-restricted-syntax
25
43
  for (const item of data) {
26
44
  if (!isString(item))
27
45
  return false;
@@ -68,27 +86,41 @@ export function assertOptionalArrayBuffer(data, name = "data") {
68
86
  throw new TypeError(`${name} was expected to be an ArrayBuffer but we got ${typeof data}!`);
69
87
  }
70
88
  }
71
- export function isType(data, type) {
89
+ export function isType(data, type, logErrors = null) {
90
+ return isType$(data, type, logErrors);
91
+ }
92
+ export function isType$(data, type, logErrors = null) {
72
93
  try {
73
- assertType(data, type);
94
+ assertType$(data, type);
74
95
  return true;
75
96
  }
76
- catch (_a) {
97
+ catch (error) {
98
+ if (logErrors) {
99
+ console.error("[Invalid type]", logErrors);
100
+ console.error(data);
101
+ console.debug(error);
102
+ }
77
103
  return false;
78
104
  }
79
105
  }
80
106
  export function assertType(data, type, prefix = "data") {
107
+ return assertType$(data, type, prefix);
108
+ }
109
+ export function assertType$(data, type, prefix = "data") {
110
+ if (typeof type === "function")
111
+ return assertType$(data, type(), prefix);
81
112
  if (type === "unknown")
82
113
  return;
83
114
  if (type === "null") {
84
115
  if (data !== null) {
85
- throw new TypeError(`Expected ${prefix} to be null and not a ${typeof data}!`);
116
+ console.log("🚀 [index] data =", data, typeof data); // @FIXME: Remove this line written on 2024-10-18 at 13:22
117
+ throw new TypeError(`Expected ${prefix} to be a null and not a ${prettyTypeof(data)}!`);
86
118
  }
87
119
  return;
88
120
  }
89
121
  if (typeof type === "string") {
90
122
  if (typeof data !== type) {
91
- throw new TypeError(`Expected ${prefix} to be a ${type} and not a ${typeof data}!`);
123
+ throw new TypeError(`Expected ${prefix} to be a ${type} and not a ${prettyTypeof(data)}!`);
92
124
  }
93
125
  return;
94
126
  }
@@ -110,38 +142,48 @@ export function assertType(data, type, prefix = "data") {
110
142
  case "tuple":
111
143
  assertTypeTuple(data, prefix, type);
112
144
  return;
145
+ case "tuple...":
146
+ assertTypeTupleWithRest(data, prefix, type);
147
+ return;
113
148
  case "partial":
114
149
  assertTypePartial(data, prefix, type);
115
150
  return;
116
151
  case "literal":
117
152
  assertTypeLiteral(data, prefix, type);
118
153
  return;
154
+ case "custom":
155
+ assertTypeCustom(data, prefix, type);
156
+ return;
119
157
  default:
120
- if (kind.startsWith("array(")) {
121
- const size = Number.parseInt(kind.slice("array(".length, -1), 10);
122
- assertTypeArrayWithDimension(data, prefix, type, size);
123
- return;
124
- }
125
158
  throw new TypeError(`Don't know how to create a type guard for this kind of type: ${JSON.stringify(type)}`);
126
159
  }
127
160
  }
128
161
  if (typeof data !== "object")
129
- throw new TypeError(`Expected ${prefix} to be an object and not a ${typeof data}!`);
130
- const object = data;
162
+ throw new TypeError(`Expected ${prefix} to be an object and not a ${prettyTypeof(data)}!`);
163
+ const obj = data;
131
164
  for (const name of Object.keys(type)) {
132
165
  if (typeof name !== "string")
133
166
  continue;
134
- assertType(object[name], type[name], `${prefix}.${name}`);
167
+ assertType$(obj[name], type[name], `${prefix}.${name}`);
135
168
  }
136
169
  }
137
170
  function assertTypeTuple(data, prefix, [, ...types]) {
138
171
  assertArray(data);
139
- if (types.length !== data.length) {
140
- throw new TypeError(`Expected ${prefix} to have ${types.length} elements, not ${data.length}!`);
172
+ if (types.length > data.length) {
173
+ throw new TypeError(`Expected ${prefix}'s length to be at least ${types.length} and not ${data.length}!`);
174
+ }
175
+ for (let i = 0; i < types.length; i++) {
176
+ const type = types[i];
177
+ assertType$(data[i], type, `${prefix}[${i}]`);
141
178
  }
142
- for (const [index, type_] of types.entries()) {
143
- const type = type_;
144
- assertType(data[index], type, `${prefix}[$i]`);
179
+ }
180
+ function assertTypeTupleWithRest(data, prefix, [, ...types]) {
181
+ const last = types.length - 1;
182
+ const fixTypes = types.slice(0, last);
183
+ assertTypeTuple(data, prefix, ["tuple", ...fixTypes]);
184
+ const rest = types[last];
185
+ for (let i = last; i < data.length; i++) {
186
+ assertType$(data[i], rest, `${prefix}[${i}]`);
145
187
  }
146
188
  }
147
189
  function assertTypePartial(data, prefix, [, type]) {
@@ -151,35 +193,42 @@ function assertTypePartial(data, prefix, [, type]) {
151
193
  continue;
152
194
  const attrib = data[name];
153
195
  if (attrib !== undefined) {
154
- assertType(attrib, type[name], `${prefix}.${name}`);
196
+ assertType$(attrib, type[name], `${prefix}.${name}`);
155
197
  }
156
198
  }
157
199
  }
158
200
  function assertTypeArray(data, prefix, type) {
159
201
  if (!Array.isArray(data))
160
- throw new TypeError(`Expected ${prefix} to be an array and not a ${typeof data}!`);
161
- const [, subType] = type;
162
- for (const [index, datum] of data.entries()) {
163
- assertType(datum, subType, `${prefix}[${index}]`);
202
+ throw new TypeError(`Expected ${prefix} to be an array and not a ${prettyTypeof(data)}!`);
203
+ const [, subType, constraints] = type;
204
+ if (constraints) {
205
+ const len = data.length;
206
+ if (isNumber(constraints)) {
207
+ if (len !== constraints) {
208
+ throw new TypeError(`Expected ${prefix}'s length to be ${constraints} and not ${len}!`);
209
+ }
210
+ }
211
+ else {
212
+ const { min, max } = constraints;
213
+ if (isNumber(min) && len < min) {
214
+ throw new TypeError(`Expected ${prefix}'s MIN length to be ${min} and not ${len}!`);
215
+ }
216
+ if (isNumber(max) && len > max) {
217
+ throw new TypeError(`Expected ${prefix}'s MAX length to be ${max} and not ${len}!`);
218
+ }
219
+ }
164
220
  }
165
- }
166
- function assertTypeArrayWithDimension(data, prefix, type, size) {
167
- if (!Array.isArray(data))
168
- throw new TypeError(`Expected ${prefix} to be an array and not a ${typeof data}!`);
169
- if (data.length !== size)
170
- throw new TypeError(`${prefix} was expected to have a length of ${size}, but we got ${data.length}!`);
171
- const [, subType] = type;
172
- for (const [index, datum] of data.entries()) {
173
- assertType(datum, subType, `${prefix}[${index}]`);
221
+ for (let i = 0; i < data.length; i += 1) {
222
+ assertType$(data[i], subType, `${prefix}[${i}]`);
174
223
  }
175
224
  }
176
225
  function assertTypeMap(data, prefix, type) {
177
226
  if (!isObject(data))
178
- throw new TypeError(`Expected ${prefix} to be an object and not a ${typeof data}!`);
227
+ throw new TypeError(`Expected ${prefix} to be an object and not a ${prettyTypeof(data)}!`);
179
228
  const [, subType] = type;
180
229
  for (const key of Object.keys(data)) {
181
230
  if (typeof key === "string") {
182
- assertType(data[key], subType, `${prefix}[${key}]`);
231
+ assertType$(data[key], subType, `${prefix}[${key}]`);
183
232
  }
184
233
  }
185
234
  }
@@ -187,22 +236,24 @@ function assertTypeOptional(data, prefix, type) {
187
236
  if (data === undefined)
188
237
  return;
189
238
  const [, optionalType] = type;
190
- assertType(data, optionalType, prefix);
239
+ assertType$(data, optionalType, prefix);
191
240
  }
192
241
  function assertTypeAlternative(data, prefix, type) {
193
242
  const [, ...altTypes] = type;
194
- let lastException = new Error(`No type has been defined for this alternative: ${JSON.stringify(type)}!`);
243
+ if (altTypes.length === 0)
244
+ throw new TypeError(`No type has been defined for this alternative: ${JSON.stringify(type)}!`);
245
+ const exceptions = [];
195
246
  for (const altType of altTypes) {
196
247
  try {
197
- assertType(data, altType, prefix);
248
+ assertType$(data, altType, prefix);
198
249
  return;
199
250
  }
200
- catch (error) {
201
- if (error instanceof Error)
202
- lastException = error;
251
+ catch (ex) {
252
+ if (ex instanceof Error)
253
+ exceptions.push(ex);
203
254
  }
204
255
  }
205
- throw lastException;
256
+ throw new TypeError(`All alternatives failed!${exceptions.map((ex) => `\n${ex.message}`)}`);
206
257
  }
207
258
  function assertTypeLiteral(data, prefix, type) {
208
259
  const [, ...literals] = type;
@@ -211,7 +262,92 @@ function assertTypeLiteral(data, prefix, type) {
211
262
  return;
212
263
  }
213
264
  throw new TypeError(`Expected ${prefix} to be a literal (${literals
214
- .map(item => `"${item}"`)
215
- .join(" | ")})!`);
265
+ .map((item) => `"${item}"`)
266
+ .join(" | ")}) and not a ${prettyTypeof(data)}!`);
267
+ }
268
+ function assertTypeCustom(data, prefix, [, typeGuard]) {
269
+ // Custom type guard.
270
+ if (!typeGuard(data)) {
271
+ throw new TypeError(`Expected ${typeGuard.name}(${prefix}) to return true!`);
272
+ }
273
+ return;
274
+ }
275
+ /**
276
+ * Basically, this function checks a `data` against a `type` and returns a `defaultValue`
277
+ * if `data` is not of the expected type.
278
+ *
279
+ * But if the `defaultValue` is a function returning the expected `type`, then `ensureType`
280
+ * can be use to update old data that you have retrieved from local storage, for example.
281
+ *
282
+ * @example
283
+ * ```
284
+ * interface Complex { r: number, i: number }
285
+ * const complex = ensureType<Complex>(data, {r: "number", i: "number"}, { r: 1, i: 0 })
286
+ * ```
287
+ *
288
+ * @example
289
+ * ```
290
+ * interpace PersonVersion1 {
291
+ * name: string
292
+ * female: boolean
293
+ * }
294
+ * interpace PersonVersion2 {
295
+ * name: string
296
+ * gender: "male" | "female" | "nonbinary" | "unknown"
297
+ * }
298
+ *
299
+ * const data = JSON.parse(LocalStorate.getItem("person") ?? "null")
300
+ * const TypePersonVersion1 = {
301
+ * name: "string",
302
+ * female: "boolean"
303
+ * }
304
+ * const TypePersonVersion2 = {
305
+ * name: "string",
306
+ * gender: ["literal", "male", "female", "nonbinary", "unknown"]
307
+ * }
308
+ * const person = ensureType<PersonVersion2>(
309
+ * data,
310
+ * TypePersonVersion2,
311
+ * (value: unknown) => {
312
+ * if (isType<PersonVersion2>(value, TypePersonVersion2)) {
313
+ * return value
314
+ * }
315
+ * if (isType<PersonVersion1>(value, TypePersonVersion1)) {
316
+ * return {
317
+ * name: value.name,
318
+ * gender: value.female === true ? "female" : "unknown"
319
+ * }
320
+ * }
321
+ * return { name: "Anonymous", gender: "unknown" }
322
+ * }
323
+ * )
324
+ * ```
325
+ *
326
+ * @param data Value with unknown type.
327
+ * @param type The type to check against.
328
+ * @param defaultValue If the type doesn't check, we can return `defaultValue`, or call it if this is a function.
329
+ * @returns A value that is of the expected type.
330
+ */
331
+ export function ensureType(data, type, defaultValue) {
332
+ if (isType$(data, type))
333
+ return data;
334
+ return isType$(defaultValue, type) ? defaultValue : defaultValue(data);
335
+ }
336
+ export function ensureBoolean(data, defaultValue) {
337
+ return ensureType(data, "boolean", defaultValue);
338
+ }
339
+ export function ensureNumber(data, defaultValue) {
340
+ return ensureType(data, "number", defaultValue);
341
+ }
342
+ export function ensureString(data, defaultValue) {
343
+ return ensureType(data, "string", defaultValue);
344
+ }
345
+ function prettyTypeof(data) {
346
+ var _a;
347
+ if (data === null)
348
+ return "null";
349
+ if (typeof data === "function")
350
+ return `function ${(_a = data.name) !== null && _a !== void 0 ? _a : ""}()`;
351
+ return typeof data;
216
352
  }
217
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3VhcmRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R5cGVzL2d1YXJkcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLFVBQVUsUUFBUSxDQUFDLElBQWE7SUFDbEMsSUFBSSxDQUFDLElBQUk7UUFBRSxPQUFPLEtBQUssQ0FBQTtJQUN2QixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO1FBQUUsT0FBTyxLQUFLLENBQUE7SUFDckMsT0FBTyxPQUFPLElBQUksS0FBSyxRQUFRLENBQUE7QUFDbkMsQ0FBQztBQUVELE1BQU0sVUFBVSxRQUFRLENBQUMsSUFBYTtJQUNsQyxPQUFPLE9BQU8sSUFBSSxLQUFLLFFBQVEsQ0FBQTtBQUNuQyxDQUFDO0FBRUQsTUFBTSxVQUFVLFFBQVEsQ0FBQyxJQUFhO0lBQ2xDLE9BQU8sT0FBTyxJQUFJLEtBQUssUUFBUSxDQUFBO0FBQ25DLENBQUM7QUFFRCxNQUFNLFVBQVUsU0FBUyxDQUFDLElBQWE7SUFDbkMsT0FBTyxPQUFPLElBQUksS0FBSyxTQUFTLENBQUE7QUFDcEMsQ0FBQztBQUVELE1BQU0sVUFBVSxhQUFhLENBQUMsSUFBYTtJQUN2QyxJQUFJLENBQUMsSUFBSTtRQUFFLE9BQU8sS0FBSyxDQUFBO0lBQ3ZCLE9BQU8sSUFBSSxZQUFZLFdBQVcsQ0FBQTtBQUN0QyxDQUFDO0FBRUQsTUFBTSxVQUFVLGFBQWEsQ0FBQyxJQUFhO0lBQ3ZDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztRQUFFLE9BQU8sS0FBSyxDQUFBO0lBQ3RDLEtBQUssTUFBTSxJQUFJLElBQUksSUFBSSxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7WUFBRSxPQUFPLEtBQUssQ0FBQTtJQUNyQyxDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUE7QUFDZixDQUFDO0FBRUQsTUFBTSxVQUFVLFlBQVksQ0FDeEIsSUFBYSxF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
353
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3VhcmRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R5cGVzL2d1YXJkcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLFVBQVUsUUFBUSxDQUFDLElBQWE7SUFDbEMsSUFBSSxDQUFDLElBQUk7UUFBRSxPQUFPLEtBQUssQ0FBQTtJQUN2QixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO1FBQUUsT0FBTyxLQUFLLENBQUE7SUFDckMsT0FBTyxPQUFPLElBQUksS0FBSyxRQUFRLENBQUE7QUFDbkMsQ0FBQztBQUVELE1BQU0sVUFBVSxRQUFRLENBQUMsSUFBYTtJQUNsQyxPQUFPLE9BQU8sSUFBSSxLQUFLLFFBQVEsQ0FBQTtBQUNuQyxDQUFDO0FBRUQsTUFBTSxVQUFVLFFBQVEsQ0FBQyxJQUFhO0lBQ2xDLE9BQU8sT0FBTyxJQUFJLEtBQUssUUFBUSxDQUFBO0FBQ25DLENBQUM7QUFFRCxNQUFNLFVBQVUsTUFBTSxDQUFDLElBQWE7SUFDaEMsT0FBTyxJQUFJLEtBQUssSUFBSSxDQUFBO0FBQ3hCLENBQUM7QUFFRCxNQUFNLFVBQVUsVUFBVSxDQUFDLElBQWE7SUFDcEMsT0FBTyxPQUFPLElBQUksS0FBSyxVQUFVLENBQUE7QUFDckMsQ0FBQztBQUVELE1BQU0sVUFBVSxXQUFXLENBQUMsSUFBYTtJQUNyQyxPQUFPLElBQUksS0FBSyxTQUFTLENBQUE7QUFDN0IsQ0FBQztBQUVELE1BQU0sVUFBVSxTQUFTLENBQUMsSUFBYTtJQUNuQyxPQUFPLE9BQU8sSUFBSSxLQUFLLFNBQVMsQ0FBQTtBQUNwQyxDQUFDO0FBRUQsTUFBTSxVQUFVLGFBQWEsQ0FBQyxJQUFhO0lBQ3ZDLElBQUksQ0FBQyxJQUFJO1FBQUUsT0FBTyxLQUFLLENBQUE7SUFDdkIsT0FBTyxJQUFJLFlBQVksV0FBVyxDQUFBO0FBQ3RDLENBQUM7QUFFRCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsSUFBYTtJQUMzQyxJQUFJLENB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
@@ -97,7 +97,7 @@ function colorToString(color) {
97
97
  return color.toString();
98
98
  if (Array.isArray(color)) {
99
99
  const [r, g, b, a] = color;
100
- return new TgdColor(r, b, g, a !== null && a !== void 0 ? a : 1).toString();
100
+ return new TgdColor(r, g, b, a !== null && a !== void 0 ? a : 1).toString();
101
101
  }
102
102
  return new TgdColor(color.x, color.y, color.z, color instanceof TgdVec4 ? color.w : 1).toString();
103
103
  }
@@ -1,7 +1,7 @@
1
1
  import { TgdBuffer } from "../buffer";
2
- import { TgdDataset } from "../dataset";
3
- import { TgdProgram } from "../program";
4
- import { TgdTypeArrayForElements } from "../types";
2
+ import type { TgdDataset } from "../dataset";
3
+ import type { TgdProgram } from "../program";
4
+ import type { TgdTypeArrayForElements } from "../types";
5
5
  export declare class TgdVertexArray {
6
6
  readonly gl: WebGL2RenderingContext;
7
7
  private readonly program?;
@@ -1 +1 @@
1
- {"version":3,"file":"vao.d.ts","sourceRoot":"","sources":["../../src/vao/vao.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAA;AAEpD,qBAAa,cAAc;aAOH,EAAE,EAAE,sBAAsB;IAC1C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;IACzB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;IAC1B,OAAO,CAAC,QAAQ,CAAC;IATrB,SAAgB,GAAG,EAAE,sBAAsB,CAAA;IAE3C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAkB;IAC9C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAyB;gBAGhC,EAAE,EAAE,sBAAsB,EACzB,OAAO,CAAC,EAAE,UAAU,YAAA,EACpB,QAAQ,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,YAAA,EAC1C,QAAQ,CAAC,EAAE,uBAAuB,YAAA;IA8B9C;;;;OAIG;IACH,aAAa,CAAC,OAAO,EAAE,UAAU;IA6BjC,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE;IAyBjC,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAI/C,MAAM,CAAC,EAAE,MAAW,EAAE,GAAE,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAM;IAwBxD,KAAK,CAAC,OAAO,SAAmB;IAWhC,IAAI;IAIJ,MAAM;IAIN,MAAM;CAMT"}
1
+ {"version":3,"file":"vao.d.ts","sourceRoot":"","sources":["../../src/vao/vao.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAA;AAEzD,qBAAa,cAAc;aAOH,EAAE,EAAE,sBAAsB;IAC1C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;IACzB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;IAC1B,OAAO,CAAC,QAAQ,CAAC;IATrB,SAAgB,GAAG,EAAE,sBAAsB,CAAA;IAE3C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAkB;IAC9C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAyB;gBAGhC,EAAE,EAAE,sBAAsB,EACzB,OAAO,CAAC,EAAE,UAAU,YAAA,EACpB,QAAQ,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,YAAA,EAC1C,QAAQ,CAAC,EAAE,uBAAuB,YAAA;IA8B9C;;;;OAIG;IACH,aAAa,CAAC,OAAO,EAAE,UAAU;IA6BjC,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE;IAyBjC,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAI/C,MAAM,CAAC,EAAE,MAAW,EAAE,GAAE,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAM;IAwBxD,KAAK,CAAC,OAAO,SAAmB;IAWhC,IAAI;IAIJ,MAAM;IAIN,MAAM;CAMT"}
@@ -92,7 +92,7 @@ export class TgdVertexArray {
92
92
  var _a;
93
93
  const lines = [
94
94
  "function createVAO(",
95
- ` gl: WebGL2RenderingContext,`,
95
+ " gl: WebGL2RenderingContext,",
96
96
  ` prg: WebGLProgram${(_a = this.datasets) === null || _a === void 0 ? void 0 : _a.map((_ds, index) => `, data${index}: ArrayBuffer`).join("")}`,
97
97
  ") {",
98
98
  " const vao = gl.createVertexArray()",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tolokoban/tgd",
3
- "version": "2.0.78",
3
+ "version": "2.0.80",
4
4
  "description": "ToloGameDev library for WebGL2",
5
5
  "homepage": "https://tolokoban.github.io/tgd2",
6
6
  "main": "./lib/dist/index.js",
@@ -1,25 +0,0 @@
1
- import { ArrayNumber3, ArrayNumber4 } from "../types";
2
- import { TgdVec3, TgdVec4 } from "../math";
3
- import { TgdMaterial } from "./material";
4
- import { TgdLight } from "../light";
5
- import { TgdTexture2D, TgdTextureCube } from "../texture";
6
- export type TgdMaterialBSDFOptions = Partial<{
7
- color: TgdVec4 | ArrayNumber4 | TgdTexture2D;
8
- lights: TgdLight[];
9
- ambientColor: TgdVec3 | ArrayNumber3 | TgdTextureCube;
10
- ambientIntensity: number;
11
- specularExponent: number;
12
- specularIntensity: number;
13
- normalMap: TgdVec3 | ArrayNumber3 | TgdTexture2D;
14
- }>;
15
- export declare class TgdMaterialBSDF extends TgdMaterial {
16
- light: TgdLight;
17
- ambient: TgdLight;
18
- specularExponent: number;
19
- specularIntensity: number;
20
- private readonly texture;
21
- private readonly lightColor;
22
- private readonly ambientColor;
23
- constructor(options?: TgdMaterialBSDFOptions);
24
- }
25
- //# sourceMappingURL=bsdf.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bsdf.d.ts","sourceRoot":"","sources":["../../src/material/bsdf.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,YAAY,EACZ,YAAY,EAGf,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAExC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAG3D,MAAM,MAAM,sBAAsB,GAAG,OAAO,CAAC;IACzC,KAAK,EAAE,OAAO,GAAG,YAAY,GAAG,YAAY,CAAA;IAC5C,MAAM,EAAE,QAAQ,EAAE,CAAA;IAClB,YAAY,EAAE,OAAO,GAAG,YAAY,GAAG,cAAc,CAAA;IACrD,gBAAgB,EAAE,MAAM,CAAA;IACxB,gBAAgB,EAAE,MAAM,CAAA;IACxB,iBAAiB,EAAE,MAAM,CAAA;IACzB,SAAS,EAAE,OAAO,GAAG,YAAY,GAAG,YAAY,CAAA;CACnD,CAAC,CAAA;AAIF,qBAAa,eAAgB,SAAQ,WAAW;IACrC,KAAK,WAAiB;IACtB,OAAO,WAAuD;IAC9D,gBAAgB,SAAK;IACrB,iBAAiB,SAAI;IAE5B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgB;IAC3C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAgB;gBAEjC,OAAO,GAAE,sBAA2B;CAyFnD"}
@@ -1,98 +0,0 @@
1
- import { TgdVec3, TgdVec4 } from "./../math/index.js";
2
- import { TgdMaterial } from "./material.js";
3
- import { TgdLight } from "./../light/index.js";
4
- import { TgdTexture2D } from "./../texture/index.js";
5
- const DEFAULT_COLOR = new TgdVec4(0.8, 0.6, 0.1, 1);
6
- export class TgdMaterialBSDF extends TgdMaterial {
7
- constructor(options = {}) {
8
- var _a;
9
- const color = options.color instanceof TgdTexture2D
10
- ? options.color
11
- : new TgdVec4((_a = options.color) !== null && _a !== void 0 ? _a : DEFAULT_COLOR);
12
- const hasTexture = !(color instanceof TgdVec4);
13
- const uniforms = {
14
- uniLight: "vec3",
15
- uniLightDir: "vec3",
16
- uniAmbient: "vec3",
17
- uniSpecularExponent: "float",
18
- uniSpecularIntensity: "float",
19
- uniModelViewMatrix: "mat4",
20
- };
21
- const fragmentShaderCode = [
22
- `vec3 normal = ${options.lockLightsToCamera ? "mat3(uniModelViewMatrix) * " : ""}normalize(varNormal);`,
23
- `float light = 1.0 - dot(normal, uniLightDir);`,
24
- options.lockLightsToCamera
25
- ? "light = max(0.0, light - 1.0);"
26
- : "light *= .5;",
27
- hasTexture
28
- ? `vec4 color = texture(texDiffuse, varUV);`
29
- : `vec4 color = vec4(${color.join(", ")});`,
30
- `vec3 reflection = ${options.lockLightsToCamera ? "" : "mat3(uniModelViewMatrix) * "}reflect(uniLightDir, normal);`,
31
- `float spec = max(0.0, reflection.z);`,
32
- `spec = pow(spec, uniSpecularExponent) * uniSpecularIntensity;`,
33
- `color = vec4(`,
34
- ` color.rgb * (`,
35
- ` uniAmbient + uniLight * light`,
36
- ` ) + vec3(spec),`,
37
- ` 1.0`,
38
- `);`,
39
- `return color;`,
40
- ];
41
- const varyings = {
42
- varNormal: "vec3",
43
- };
44
- if (hasTexture) {
45
- varyings.varUV = "vec2";
46
- uniforms.texDiffuse = "sampler2D";
47
- }
48
- const vertexShaderCode = () => {
49
- const code = [
50
- `varNormal = mat3(uniTransfoMatrix) * ${this.attNormal};`,
51
- ];
52
- if (hasTexture) {
53
- code.push(`varUV = ${this.attUV};`);
54
- }
55
- return code;
56
- };
57
- super({
58
- uniforms,
59
- varyings,
60
- vertexShaderCode,
61
- fragmentShaderCode,
62
- setUniforms: (program) => {
63
- program.uniform3fv("uniLightDir", this.light.direction);
64
- this.lightColor.from(this.light.color).scale(this.light.color.w);
65
- program.uniform3fv("uniLight", this.lightColor);
66
- this.ambientColor
67
- .from(this.ambient.color)
68
- .scale(this.ambient.color.w);
69
- program.uniform3fv("uniAmbient", this.ambientColor);
70
- program.uniform1f("uniSpecularExponent", this.specularExponent);
71
- program.uniform1f("uniSpecularIntensity", this.specularIntensity);
72
- const { texture } = this;
73
- if (texture)
74
- texture.activate(0, program, "texDiffuse");
75
- },
76
- });
77
- this.light = new TgdLight();
78
- this.ambient = new TgdLight({ color: new TgdVec4(0.2, 0.1, 0, 0) });
79
- this.specularExponent = 20;
80
- this.specularIntensity = 1;
81
- this.lightColor = new TgdVec3();
82
- this.ambientColor = new TgdVec3();
83
- this.texture = hasTexture ? color : null;
84
- if (options.light) {
85
- this.light = options.light;
86
- }
87
- if (options.ambient) {
88
- this.ambient = options.ambient;
89
- }
90
- if (typeof options.specularExponent === "number") {
91
- this.specularExponent = options.specularExponent;
92
- }
93
- if (typeof options.specularIntensity === "number") {
94
- this.specularIntensity = options.specularIntensity;
95
- }
96
- }
97
- }
98
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnNkZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tYXRlcmlhbC9ic2RmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQzVDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFFeEMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUNyQyxPQUFPLEVBQUUsWUFBWSxFQUFrQixNQUFNLGNBQWMsQ0FBQTtBQWEzRCxNQUFNLGFBQWEsR0FBRyxJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQTtBQUVuRCxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxXQUFXO0lBVTVDLFlBQVksVUFBa0MsRUFBRTs7UUFDNUMsTUFBTSxLQUFLLEdBQ1AsT0FBTyxDQUFDLEtBQUssWUFBWSxZQUFZO1lBQ2pDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSztZQUNmLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxNQUFBLE9BQU8sQ0FBQyxLQUFLLG1DQUFJLGFBQWEsQ0FBQyxDQUFBO1FBQ3JELE1BQU0sVUFBVSxHQUFHLENBQUMsQ0FBQyxLQUFLLFlBQVksT0FBTyxDQUFDLENBQUE7UUFDOUMsTUFBTSxRQUFRLEdBQXlDO1lBQ25ELFFBQVEsRUFBRSxNQUFNO1lBQ2hCLFdBQVcsRUFBRSxNQUFNO1lBQ25CLFVBQVUsRUFBRSxNQUFNO1lBQ2xCLG1CQUFtQixFQUFFLE9BQU87WUFDNUIsb0JBQW9CLEVBQUUsT0FBTztZQUM3QixrQkFBa0IsRUFBRSxNQUFNO1NBQzdCLENBQUE7UUFDRCxNQUFNLGtCQUFrQixHQUFnQjtZQUNwQyxpQkFBaUIsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDLENBQUMsRUFBRSx1QkFBdUI7WUFDdkcsK0NB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
@@ -1,25 +0,0 @@
1
- import { ArrayNumber3, ArrayNumber4 } from "../types";
2
- import { TgdVec3, TgdVec4 } from "../math";
3
- import { TgdMaterial } from "./material";
4
- import { TgdLight } from "../light";
5
- import { TgdTexture2D, TgdTextureCube } from "../texture";
6
- export type TgdMaterialPrincipledOptions = Partial<{
7
- color: TgdVec4 | ArrayNumber4 | TgdTexture2D;
8
- lights: TgdLight[];
9
- ambientColor: TgdVec3 | ArrayNumber3 | TgdTextureCube;
10
- ambientIntensity: number;
11
- specularExponent: number;
12
- specularIntensity: number;
13
- normalMap: TgdTexture2D;
14
- }>;
15
- export declare class TgdMaterialPrincipled extends TgdMaterial {
16
- private readonly options;
17
- specularExponent: number;
18
- specularIntensity: number;
19
- private textureColor;
20
- private mustDeleteTextureColor;
21
- private textureAmbient;
22
- private mustDeleteTextureAmbient;
23
- constructor(options?: TgdMaterialPrincipledOptions);
24
- }
25
- //# sourceMappingURL=principled.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"principled.d.ts","sourceRoot":"","sources":["../../src/material/principled.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,YAAY,EACZ,YAAY,EAGf,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAExC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAK3D,MAAM,MAAM,4BAA4B,GAAG,OAAO,CAAC;IAC/C,KAAK,EAAE,OAAO,GAAG,YAAY,GAAG,YAAY,CAAA;IAC5C,MAAM,EAAE,QAAQ,EAAE,CAAA;IAClB,YAAY,EAAE,OAAO,GAAG,YAAY,GAAG,cAAc,CAAA;IACrD,gBAAgB,EAAE,MAAM,CAAA;IACxB,gBAAgB,EAAE,MAAM,CAAA;IACxB,iBAAiB,EAAE,MAAM,CAAA;IACzB,SAAS,EAAE,YAAY,CAAA;CAC1B,CAAC,CAAA;AAKF,qBAAa,qBAAsB,SAAQ,WAAW;IAStC,OAAO,CAAC,QAAQ,CAAC,OAAO;IAR7B,gBAAgB,SAAM;IACtB,iBAAiB,SAAI;IAE5B,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,sBAAsB,CAAQ;IACtC,OAAO,CAAC,cAAc,CAA8B;IACpD,OAAO,CAAC,wBAAwB,CAAQ;gBAEX,OAAO,GAAE,4BAAiC;CAgH1E"}