@codexo/exojs-tiled 0.12.0 → 0.14.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 (45) hide show
  1. package/README.md +134 -71
  2. package/dist/esm/TiledLayer.d.ts +72 -0
  3. package/dist/esm/TiledLayer.js +117 -0
  4. package/dist/esm/TiledLayer.js.map +1 -0
  5. package/dist/esm/TiledMap.d.ts +57 -72
  6. package/dist/esm/TiledMap.js +362 -23
  7. package/dist/esm/TiledMap.js.map +1 -1
  8. package/dist/esm/TiledObject.d.ts +32 -0
  9. package/dist/esm/TiledObject.js +54 -0
  10. package/dist/esm/TiledObject.js.map +1 -0
  11. package/dist/esm/TiledTileset.d.ts +59 -0
  12. package/dist/esm/TiledTileset.js +70 -0
  13. package/dist/esm/TiledTileset.js.map +1 -0
  14. package/dist/esm/data.d.ts +217 -0
  15. package/dist/esm/gid.d.ts +13 -0
  16. package/dist/esm/gid.js +28 -0
  17. package/dist/esm/gid.js.map +1 -0
  18. package/dist/esm/index.js +8 -1
  19. package/dist/esm/index.js.map +1 -1
  20. package/dist/esm/loadTiledMap.d.ts +9 -0
  21. package/dist/esm/loadTiledMap.js +68 -0
  22. package/dist/esm/loadTiledMap.js.map +1 -0
  23. package/dist/esm/public.d.ts +42 -3
  24. package/dist/esm/register.js +7 -0
  25. package/dist/esm/register.js.map +1 -1
  26. package/dist/esm/tiledBuildInfo.js +2 -2
  27. package/dist/esm/tiledExtension.d.ts +10 -0
  28. package/dist/esm/tiledExtension.js +19 -48
  29. package/dist/esm/tiledExtension.js.map +1 -1
  30. package/dist/esm/tiledMapBinding.d.ts +19 -0
  31. package/dist/esm/tiledMapBinding.js +31 -0
  32. package/dist/esm/tiledMapBinding.js.map +1 -0
  33. package/dist/esm/tiledOptions.d.ts +31 -0
  34. package/dist/esm/tiledOptions.js +16 -0
  35. package/dist/esm/tiledOptions.js.map +1 -0
  36. package/dist/esm/tiledRuntimeMapBinding.d.ts +29 -0
  37. package/dist/esm/tiledRuntimeMapBinding.js +42 -0
  38. package/dist/esm/tiledRuntimeMapBinding.js.map +1 -0
  39. package/dist/esm/url.d.ts +18 -0
  40. package/dist/esm/url.js +41 -0
  41. package/dist/esm/url.js.map +1 -0
  42. package/dist/esm/validate.d.ts +49 -0
  43. package/dist/esm/validate.js +511 -0
  44. package/dist/esm/validate.js.map +1 -0
  45. package/package.json +11 -3
@@ -0,0 +1,511 @@
1
+ // Runtime validation for Tiled JSON (TMJ/TSJ) data. Every exported function
2
+ // takes `unknown` (the result of `JSON.parse`) and either returns a typed,
3
+ // validated `Tiled*Data` value or throws a {@link TiledFormatError}.
4
+ //
5
+ // There is no fall-through: an unrecognised shape, an unsupported encoding,
6
+ // or an out-of-range value is always a thrown error carrying the source URL
7
+ // and a JSON-path-like field path, never a silently-substituted default.
8
+ /**
9
+ * Thrown when a Tiled JSON document does not match the expected shape.
10
+ * `source` is the URL of the file being parsed; `path` is a JSON-path-like
11
+ * pointer (e.g. `layers[2].objects[0].properties[1].value`) to the offending
12
+ * value, or `''` for the document root.
13
+ */
14
+ class TiledFormatError extends Error {
15
+ source;
16
+ path;
17
+ constructor(source, path, message) {
18
+ super(`Invalid Tiled data in "${source}" at ${path === '' ? '<root>' : path}: ${message}`);
19
+ this.name = 'TiledFormatError';
20
+ this.source = source;
21
+ this.path = path;
22
+ }
23
+ }
24
+ // ── Primitive helpers ───────────────────────────────────────────────────────
25
+ function describeValue(value) {
26
+ if (value === null)
27
+ return 'null';
28
+ if (Array.isArray(value))
29
+ return 'an array';
30
+ return typeof value;
31
+ }
32
+ function joinPath(path, key) {
33
+ if (typeof key === 'number')
34
+ return `${path}[${key}]`;
35
+ return path === '' ? key : `${path}.${key}`;
36
+ }
37
+ function expectObject(value, source, path) {
38
+ if (typeof value !== 'object' || value === null || Array.isArray(value)) {
39
+ throw new TiledFormatError(source, path, `expected an object, got ${describeValue(value)}`);
40
+ }
41
+ return value;
42
+ }
43
+ function expectArray(value, source, path) {
44
+ if (!Array.isArray(value)) {
45
+ throw new TiledFormatError(source, path, `expected an array, got ${describeValue(value)}`);
46
+ }
47
+ return value;
48
+ }
49
+ function expectString(value, source, path) {
50
+ if (typeof value !== 'string') {
51
+ throw new TiledFormatError(source, path, `expected a string, got ${describeValue(value)}`);
52
+ }
53
+ return value;
54
+ }
55
+ function expectNumber(value, source, path) {
56
+ if (typeof value !== 'number' || !Number.isFinite(value)) {
57
+ throw new TiledFormatError(source, path, `expected a finite number, got ${describeValue(value)}`);
58
+ }
59
+ return value;
60
+ }
61
+ function expectInteger(value, source, path) {
62
+ const n = expectNumber(value, source, path);
63
+ if (!Number.isInteger(n)) {
64
+ throw new TiledFormatError(source, path, `expected an integer, got ${n}`);
65
+ }
66
+ return n;
67
+ }
68
+ function expectNonNegativeInteger(value, source, path) {
69
+ const n = expectInteger(value, source, path);
70
+ if (n < 0) {
71
+ throw new TiledFormatError(source, path, `expected a non-negative integer, got ${n}`);
72
+ }
73
+ return n;
74
+ }
75
+ function expectPositiveInteger(value, source, path) {
76
+ const n = expectInteger(value, source, path);
77
+ if (n <= 0) {
78
+ throw new TiledFormatError(source, path, `expected a positive integer, got ${n}`);
79
+ }
80
+ return n;
81
+ }
82
+ function expectBoolean(value, source, path) {
83
+ if (typeof value !== 'boolean') {
84
+ throw new TiledFormatError(source, path, `expected a boolean, got ${describeValue(value)}`);
85
+ }
86
+ return value;
87
+ }
88
+ function optionalString(obj, key, source, path) {
89
+ const value = obj[key];
90
+ return value === undefined ? undefined : expectString(value, source, joinPath(path, key));
91
+ }
92
+ function optionalNumber(obj, key, source, path) {
93
+ const value = obj[key];
94
+ return value === undefined ? undefined : expectNumber(value, source, joinPath(path, key));
95
+ }
96
+ function optionalInteger(obj, key, source, path) {
97
+ const value = obj[key];
98
+ return value === undefined ? undefined : expectInteger(value, source, joinPath(path, key));
99
+ }
100
+ function optionalNonNegativeInteger(obj, key, source, path) {
101
+ const value = obj[key];
102
+ return value === undefined ? undefined : expectNonNegativeInteger(value, source, joinPath(path, key));
103
+ }
104
+ function optionalBoolean(obj, key, source, path) {
105
+ const value = obj[key];
106
+ return value === undefined ? undefined : expectBoolean(value, source, joinPath(path, key));
107
+ }
108
+ function mapArray(value, source, path, fn) {
109
+ const arr = expectArray(value, source, path);
110
+ return arr.map((item, i) => fn(item, joinPath(path, i)));
111
+ }
112
+ function optionalMapArray(value, source, path, fn) {
113
+ return value === undefined ? undefined : mapArray(value, source, path, fn);
114
+ }
115
+ // ── Custom properties ───────────────────────────────────────────────────────
116
+ const PROPERTY_TYPES = ['string', 'int', 'float', 'bool', 'color', 'file', 'object', 'class'];
117
+ function validateTiledClassPropertyValue(raw, source, path) {
118
+ const obj = expectObject(raw, source, path);
119
+ const result = {};
120
+ for (const [key, value] of Object.entries(obj)) {
121
+ const memberPath = joinPath(path, key);
122
+ if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {
123
+ result[key] = value;
124
+ }
125
+ else if (typeof value === 'object' && value !== null && !Array.isArray(value)) {
126
+ result[key] = validateTiledClassPropertyValue(value, source, memberPath);
127
+ }
128
+ else {
129
+ throw new TiledFormatError(source, memberPath, `expected a string, number, boolean, or nested object, got ${describeValue(value)}`);
130
+ }
131
+ }
132
+ return result;
133
+ }
134
+ /** @internal */
135
+ function validateTiledPropertyData(raw, source, path) {
136
+ const obj = expectObject(raw, source, path);
137
+ const name = expectString(obj.name, source, joinPath(path, 'name'));
138
+ const typePath = joinPath(path, 'type');
139
+ const typeName = obj.type === undefined ? 'string' : expectString(obj.type, source, typePath);
140
+ if (!PROPERTY_TYPES.includes(typeName)) {
141
+ throw new TiledFormatError(source, typePath, `unknown property type "${typeName}"`);
142
+ }
143
+ const type = typeName;
144
+ const propertytype = optionalString(obj, 'propertytype', source, path);
145
+ const valuePath = joinPath(path, 'value');
146
+ let value;
147
+ switch (type) {
148
+ case 'string':
149
+ case 'color':
150
+ case 'file':
151
+ value = expectString(obj.value, source, valuePath);
152
+ break;
153
+ case 'int':
154
+ case 'float':
155
+ case 'object':
156
+ value = expectNumber(obj.value, source, valuePath);
157
+ break;
158
+ case 'bool':
159
+ value = expectBoolean(obj.value, source, valuePath);
160
+ break;
161
+ case 'class':
162
+ value = validateTiledClassPropertyValue(obj.value, source, valuePath);
163
+ break;
164
+ }
165
+ return { name, type, propertytype, value };
166
+ }
167
+ function validateTiledPropertiesArray(value, source, path) {
168
+ return optionalMapArray(value, source, path, (item, itemPath) => validateTiledPropertyData(item, source, itemPath));
169
+ }
170
+ // ── Points / animation frames ───────────────────────────────────────────────
171
+ function validateTiledPointData(raw, source, path) {
172
+ const obj = expectObject(raw, source, path);
173
+ return {
174
+ x: expectNumber(obj.x, source, joinPath(path, 'x')),
175
+ y: expectNumber(obj.y, source, joinPath(path, 'y')),
176
+ };
177
+ }
178
+ function validateTiledPointArray(value, source, path) {
179
+ return mapArray(value, source, path, (item, itemPath) => validateTiledPointData(item, source, itemPath));
180
+ }
181
+ /** @internal */
182
+ function validateTiledAnimationFrameData(raw, source, path) {
183
+ const obj = expectObject(raw, source, path);
184
+ return {
185
+ tileid: expectNonNegativeInteger(obj.tileid, source, joinPath(path, 'tileid')),
186
+ duration: expectNonNegativeInteger(obj.duration, source, joinPath(path, 'duration')),
187
+ };
188
+ }
189
+ // ── Text objects ─────────────────────────────────────────────────────────────
190
+ const HALIGN_VALUES = ['center', 'right', 'justify', 'left'];
191
+ const VALIGN_VALUES = ['center', 'bottom', 'top'];
192
+ function validateTiledTextData(raw, source, path) {
193
+ const obj = expectObject(raw, source, path);
194
+ const text = expectString(obj.text, source, joinPath(path, 'text'));
195
+ let halign;
196
+ if (obj.halign !== undefined) {
197
+ const value = expectString(obj.halign, source, joinPath(path, 'halign'));
198
+ if (!HALIGN_VALUES.includes(value)) {
199
+ throw new TiledFormatError(source, joinPath(path, 'halign'), `unknown horizontal alignment "${value}"`);
200
+ }
201
+ halign = value;
202
+ }
203
+ let valign;
204
+ if (obj.valign !== undefined) {
205
+ const value = expectString(obj.valign, source, joinPath(path, 'valign'));
206
+ if (!VALIGN_VALUES.includes(value)) {
207
+ throw new TiledFormatError(source, joinPath(path, 'valign'), `unknown vertical alignment "${value}"`);
208
+ }
209
+ valign = value;
210
+ }
211
+ return {
212
+ text,
213
+ bold: optionalBoolean(obj, 'bold', source, path),
214
+ color: optionalString(obj, 'color', source, path),
215
+ fontfamily: optionalString(obj, 'fontfamily', source, path),
216
+ halign,
217
+ italic: optionalBoolean(obj, 'italic', source, path),
218
+ kerning: optionalBoolean(obj, 'kerning', source, path),
219
+ pixelsize: optionalNonNegativeInteger(obj, 'pixelsize', source, path),
220
+ strikeout: optionalBoolean(obj, 'strikeout', source, path),
221
+ underline: optionalBoolean(obj, 'underline', source, path),
222
+ valign,
223
+ wrap: optionalBoolean(obj, 'wrap', source, path),
224
+ };
225
+ }
226
+ // ── Objects ──────────────────────────────────────────────────────────────────
227
+ /** @internal */
228
+ function validateTiledObjectData(raw, source, path) {
229
+ const obj = expectObject(raw, source, path);
230
+ return {
231
+ id: expectNonNegativeInteger(obj.id, source, joinPath(path, 'id')),
232
+ name: expectString(obj.name, source, joinPath(path, 'name')),
233
+ type: expectString(obj.type, source, joinPath(path, 'type')),
234
+ x: expectNumber(obj.x, source, joinPath(path, 'x')),
235
+ y: expectNumber(obj.y, source, joinPath(path, 'y')),
236
+ width: expectNumber(obj.width, source, joinPath(path, 'width')),
237
+ height: expectNumber(obj.height, source, joinPath(path, 'height')),
238
+ rotation: expectNumber(obj.rotation, source, joinPath(path, 'rotation')),
239
+ visible: expectBoolean(obj.visible, source, joinPath(path, 'visible')),
240
+ gid: optionalNonNegativeInteger(obj, 'gid', source, path),
241
+ point: optionalBoolean(obj, 'point', source, path),
242
+ ellipse: optionalBoolean(obj, 'ellipse', source, path),
243
+ polygon: obj.polygon === undefined ? undefined : validateTiledPointArray(obj.polygon, source, joinPath(path, 'polygon')),
244
+ polyline: obj.polyline === undefined ? undefined : validateTiledPointArray(obj.polyline, source, joinPath(path, 'polyline')),
245
+ text: obj.text === undefined ? undefined : validateTiledTextData(obj.text, source, joinPath(path, 'text')),
246
+ template: optionalString(obj, 'template', source, path),
247
+ properties: validateTiledPropertiesArray(obj.properties, source, joinPath(path, 'properties')),
248
+ };
249
+ }
250
+ // ── Layers ───────────────────────────────────────────────────────────────────
251
+ const LAYER_TYPES = ['tilelayer', 'objectgroup', 'imagelayer', 'group'];
252
+ const SUPPORTED_TILE_LAYER_ENCODINGS = new Set(['csv']);
253
+ const DRAW_ORDERS = ['topdown', 'index'];
254
+ function validateTiledLayerBase(obj, source, path) {
255
+ return {
256
+ id: expectNonNegativeInteger(obj.id, source, joinPath(path, 'id')),
257
+ name: expectString(obj.name, source, joinPath(path, 'name')),
258
+ class: optionalString(obj, 'class', source, path),
259
+ visible: expectBoolean(obj.visible, source, joinPath(path, 'visible')),
260
+ opacity: expectNumber(obj.opacity, source, joinPath(path, 'opacity')),
261
+ x: expectNumber(obj.x, source, joinPath(path, 'x')),
262
+ y: expectNumber(obj.y, source, joinPath(path, 'y')),
263
+ offsetx: optionalNumber(obj, 'offsetx', source, path),
264
+ offsety: optionalNumber(obj, 'offsety', source, path),
265
+ parallaxx: optionalNumber(obj, 'parallaxx', source, path),
266
+ parallaxy: optionalNumber(obj, 'parallaxy', source, path),
267
+ tintcolor: optionalString(obj, 'tintcolor', source, path),
268
+ properties: validateTiledPropertiesArray(obj.properties, source, joinPath(path, 'properties')),
269
+ };
270
+ }
271
+ function validateTiledGidArray(value, source, path) {
272
+ return mapArray(value, source, path, (item, itemPath) => expectNonNegativeInteger(item, source, itemPath));
273
+ }
274
+ function validateTiledChunkData(raw, source, path) {
275
+ const obj = expectObject(raw, source, path);
276
+ return {
277
+ x: expectInteger(obj.x, source, joinPath(path, 'x')),
278
+ y: expectInteger(obj.y, source, joinPath(path, 'y')),
279
+ width: expectPositiveInteger(obj.width, source, joinPath(path, 'width')),
280
+ height: expectPositiveInteger(obj.height, source, joinPath(path, 'height')),
281
+ data: validateTiledGidArray(obj.data, source, joinPath(path, 'data')),
282
+ };
283
+ }
284
+ function validateTiledTileLayerData(obj, base, source, path) {
285
+ if (obj.compression !== undefined) {
286
+ throw new TiledFormatError(source, joinPath(path, 'compression'), `compressed tile layer data is not supported (compression: ${JSON.stringify(obj.compression)})`);
287
+ }
288
+ const encoding = obj.encoding;
289
+ if (encoding !== undefined && !(typeof encoding === 'string' && SUPPORTED_TILE_LAYER_ENCODINGS.has(encoding))) {
290
+ throw new TiledFormatError(source, joinPath(path, 'encoding'), `unsupported tile layer encoding ${JSON.stringify(encoding)} (only plain CSV/array data is supported)`);
291
+ }
292
+ const width = expectNonNegativeInteger(obj.width, source, joinPath(path, 'width'));
293
+ const height = expectNonNegativeInteger(obj.height, source, joinPath(path, 'height'));
294
+ const hasData = obj.data !== undefined;
295
+ const hasChunks = obj.chunks !== undefined;
296
+ if (hasData === hasChunks) {
297
+ throw new TiledFormatError(source, path, hasData ? 'tile layer has both "data" and "chunks"' : 'tile layer has neither "data" nor "chunks"');
298
+ }
299
+ return {
300
+ ...base,
301
+ type: 'tilelayer',
302
+ width,
303
+ height,
304
+ data: hasData ? validateTiledGidArray(obj.data, source, joinPath(path, 'data')) : undefined,
305
+ chunks: hasChunks ? mapArray(obj.chunks, source, joinPath(path, 'chunks'), (item, itemPath) => validateTiledChunkData(item, source, itemPath)) : undefined,
306
+ };
307
+ }
308
+ function validateTiledObjectLayerData(obj, base, source, path) {
309
+ let draworder;
310
+ if (obj.draworder !== undefined) {
311
+ const value = expectString(obj.draworder, source, joinPath(path, 'draworder'));
312
+ if (!DRAW_ORDERS.includes(value)) {
313
+ throw new TiledFormatError(source, joinPath(path, 'draworder'), `unknown draw order "${value}"`);
314
+ }
315
+ draworder = value;
316
+ }
317
+ return {
318
+ ...base,
319
+ type: 'objectgroup',
320
+ draworder,
321
+ objects: mapArray(obj.objects, source, joinPath(path, 'objects'), (item, itemPath) => validateTiledObjectData(item, source, itemPath)),
322
+ };
323
+ }
324
+ function validateTiledImageLayerData(obj, base, source, path) {
325
+ return {
326
+ ...base,
327
+ type: 'imagelayer',
328
+ image: obj.image === undefined ? '' : expectString(obj.image, source, joinPath(path, 'image')),
329
+ repeatx: optionalBoolean(obj, 'repeatx', source, path),
330
+ repeaty: optionalBoolean(obj, 'repeaty', source, path),
331
+ };
332
+ }
333
+ function validateTiledGroupLayerData(obj, base, source, path) {
334
+ return {
335
+ ...base,
336
+ type: 'group',
337
+ layers: mapArray(obj.layers, source, joinPath(path, 'layers'), (item, itemPath) => validateTiledLayerData(item, source, itemPath)),
338
+ };
339
+ }
340
+ /** @internal */
341
+ function validateTiledLayerData(raw, source, path) {
342
+ const obj = expectObject(raw, source, path);
343
+ const type = expectString(obj.type, source, joinPath(path, 'type'));
344
+ const base = validateTiledLayerBase(obj, source, path);
345
+ switch (type) {
346
+ case 'tilelayer':
347
+ return validateTiledTileLayerData(obj, base, source, path);
348
+ case 'objectgroup':
349
+ return validateTiledObjectLayerData(obj, base, source, path);
350
+ case 'imagelayer':
351
+ return validateTiledImageLayerData(obj, base, source, path);
352
+ case 'group':
353
+ return validateTiledGroupLayerData(obj, base, source, path);
354
+ default: {
355
+ const known = LAYER_TYPES;
356
+ throw new TiledFormatError(source, joinPath(path, 'type'), `unknown layer type "${type}" (expected one of ${known.join(', ')})`);
357
+ }
358
+ }
359
+ }
360
+ /**
361
+ * Walks a layer tree and ensures every tile layer's `data`/`chunks` choice
362
+ * matches the map's `infinite` flag. Tiled itself is consistent across an
363
+ * entire map; a mismatch indicates a hand-edited or corrupt file.
364
+ * @internal
365
+ */
366
+ function checkTiledLayerInfiniteConsistency(layers, infinite, source, path) {
367
+ for (let i = 0; i < layers.length; i++) {
368
+ const layer = layers[i];
369
+ if (layer === undefined)
370
+ continue;
371
+ const layerPath = joinPath(path, i);
372
+ if (layer.type === 'tilelayer') {
373
+ const hasChunks = layer.chunks !== undefined;
374
+ if (hasChunks !== infinite) {
375
+ throw new TiledFormatError(source, layerPath, infinite ? 'tile layer is missing "chunks" on an infinite map' : 'tile layer has "chunks" on a finite map (expected "data")');
376
+ }
377
+ }
378
+ else if (layer.type === 'group') {
379
+ checkTiledLayerInfiniteConsistency(layer.layers, infinite, source, joinPath(layerPath, 'layers'));
380
+ }
381
+ }
382
+ }
383
+ // ── Tile definitions ─────────────────────────────────────────────────────────
384
+ /** @internal */
385
+ function validateTiledTileData(raw, source, path) {
386
+ const obj = expectObject(raw, source, path);
387
+ let objectgroup;
388
+ if (obj.objectgroup !== undefined) {
389
+ const objectgroupPath = joinPath(path, 'objectgroup');
390
+ const layer = validateTiledLayerData(obj.objectgroup, source, objectgroupPath);
391
+ if (layer.type !== 'objectgroup') {
392
+ throw new TiledFormatError(source, objectgroupPath, `expected an "objectgroup" layer, got "${layer.type}"`);
393
+ }
394
+ objectgroup = layer;
395
+ }
396
+ return {
397
+ id: expectNonNegativeInteger(obj.id, source, joinPath(path, 'id')),
398
+ type: optionalString(obj, 'type', source, path),
399
+ properties: validateTiledPropertiesArray(obj.properties, source, joinPath(path, 'properties')),
400
+ animation: optionalMapArray(obj.animation, source, joinPath(path, 'animation'), (item, itemPath) => validateTiledAnimationFrameData(item, source, itemPath)),
401
+ objectgroup,
402
+ image: optionalString(obj, 'image', source, path),
403
+ imagewidth: optionalNonNegativeInteger(obj, 'imagewidth', source, path),
404
+ imageheight: optionalNonNegativeInteger(obj, 'imageheight', source, path),
405
+ };
406
+ }
407
+ // ── Tilesets ─────────────────────────────────────────────────────────────────
408
+ function validateTiledVersion(value, source, path) {
409
+ if (typeof value !== 'string' && typeof value !== 'number') {
410
+ throw new TiledFormatError(source, path, `expected a string or number, got ${describeValue(value)}`);
411
+ }
412
+ return value;
413
+ }
414
+ /** @internal */
415
+ function validateTiledTilesetData(obj, source, path) {
416
+ return {
417
+ name: expectString(obj.name, source, joinPath(path, 'name')),
418
+ class: optionalString(obj, 'class', source, path),
419
+ tilewidth: expectPositiveInteger(obj.tilewidth, source, joinPath(path, 'tilewidth')),
420
+ tileheight: expectPositiveInteger(obj.tileheight, source, joinPath(path, 'tileheight')),
421
+ tilecount: expectNonNegativeInteger(obj.tilecount, source, joinPath(path, 'tilecount')),
422
+ columns: expectNonNegativeInteger(obj.columns, source, joinPath(path, 'columns')),
423
+ spacing: optionalNonNegativeInteger(obj, 'spacing', source, path),
424
+ margin: optionalNonNegativeInteger(obj, 'margin', source, path),
425
+ image: optionalString(obj, 'image', source, path),
426
+ imagewidth: optionalNonNegativeInteger(obj, 'imagewidth', source, path),
427
+ imageheight: optionalNonNegativeInteger(obj, 'imageheight', source, path),
428
+ tileoffset: obj.tileoffset === undefined ? undefined : validateTiledPointData(obj.tileoffset, source, joinPath(path, 'tileoffset')),
429
+ objectalignment: optionalString(obj, 'objectalignment', source, path),
430
+ tiles: optionalMapArray(obj.tiles, source, joinPath(path, 'tiles'), (item, itemPath) => validateTiledTileData(item, source, itemPath)),
431
+ properties: validateTiledPropertiesArray(obj.properties, source, joinPath(path, 'properties')),
432
+ tiledversion: optionalString(obj, 'tiledversion', source, path),
433
+ version: obj.version === undefined ? undefined : validateTiledVersion(obj.version, source, joinPath(path, 'version')),
434
+ };
435
+ }
436
+ /**
437
+ * Validates one entry of a map's `tilesets` array: either `{ firstgid,
438
+ * source }` (external `.tsj`) or `{ firstgid, ...embedded tileset fields }`.
439
+ * @internal
440
+ */
441
+ function validateTiledTilesetRefData(raw, source, path) {
442
+ const obj = expectObject(raw, source, path);
443
+ const firstgid = expectPositiveInteger(obj.firstgid, source, joinPath(path, 'firstgid'));
444
+ if ('source' in obj) {
445
+ return { firstgid, source: expectString(obj.source, source, joinPath(path, 'source')) };
446
+ }
447
+ return { ...validateTiledTilesetData(obj, source, path), firstgid };
448
+ }
449
+ // ── Map ──────────────────────────────────────────────────────────────────────
450
+ const ORIENTATIONS = ['orthogonal', 'isometric', 'staggered', 'hexagonal'];
451
+ const RENDER_ORDERS = ['right-down', 'right-up', 'left-down', 'left-up'];
452
+ /**
453
+ * Validates the root of a `.tmj` file. Throws {@link TiledFormatError} on
454
+ * any structural problem, including unsupported tile-layer encodings and
455
+ * `infinite`/`data`/`chunks` inconsistencies.
456
+ * @internal
457
+ */
458
+ function validateTiledMapData(raw, source) {
459
+ const obj = expectObject(raw, source, '');
460
+ const type = expectString(obj.type, source, 'type');
461
+ if (type !== 'map') {
462
+ throw new TiledFormatError(source, 'type', `expected "map", got "${type}"`);
463
+ }
464
+ const version = validateTiledVersion(obj.version, source, 'version');
465
+ const orientationValue = expectString(obj.orientation, source, 'orientation');
466
+ if (!ORIENTATIONS.includes(orientationValue)) {
467
+ throw new TiledFormatError(source, 'orientation', `unknown orientation "${orientationValue}" (expected one of ${ORIENTATIONS.join(', ')})`);
468
+ }
469
+ const orientation = orientationValue;
470
+ let renderorder;
471
+ if (obj.renderorder !== undefined) {
472
+ const value = expectString(obj.renderorder, source, 'renderorder');
473
+ if (!RENDER_ORDERS.includes(value)) {
474
+ throw new TiledFormatError(source, 'renderorder', `unknown render order "${value}" (expected one of ${RENDER_ORDERS.join(', ')})`);
475
+ }
476
+ renderorder = value;
477
+ }
478
+ const infinite = expectBoolean(obj.infinite, source, 'infinite');
479
+ const layers = mapArray(obj.layers, source, 'layers', (item, itemPath) => validateTiledLayerData(item, source, itemPath));
480
+ checkTiledLayerInfiniteConsistency(layers, infinite, source, 'layers');
481
+ return {
482
+ type: 'map',
483
+ version,
484
+ tiledversion: optionalString(obj, 'tiledversion', source, ''),
485
+ class: optionalString(obj, 'class', source, ''),
486
+ orientation,
487
+ renderorder,
488
+ width: expectNonNegativeInteger(obj.width, source, 'width'),
489
+ height: expectNonNegativeInteger(obj.height, source, 'height'),
490
+ tilewidth: expectPositiveInteger(obj.tilewidth, source, 'tilewidth'),
491
+ tileheight: expectPositiveInteger(obj.tileheight, source, 'tileheight'),
492
+ infinite,
493
+ compressionlevel: optionalInteger(obj, 'compressionlevel', source, ''),
494
+ nextlayerid: optionalNonNegativeInteger(obj, 'nextlayerid', source, ''),
495
+ nextobjectid: optionalNonNegativeInteger(obj, 'nextobjectid', source, ''),
496
+ backgroundcolor: optionalString(obj, 'backgroundcolor', source, ''),
497
+ layers,
498
+ tilesets: mapArray(obj.tilesets, source, 'tilesets', (item, itemPath) => validateTiledTilesetRefData(item, source, itemPath)),
499
+ properties: validateTiledPropertiesArray(obj.properties, source, 'properties'),
500
+ };
501
+ }
502
+ /**
503
+ * Validates a standalone `.tsj` tileset file's root object.
504
+ * @internal
505
+ */
506
+ function validateTiledTilesetFileData(raw, source) {
507
+ return validateTiledTilesetData(expectObject(raw, source, ''), source, '');
508
+ }
509
+
510
+ export { TiledFormatError, checkTiledLayerInfiniteConsistency, validateTiledAnimationFrameData, validateTiledLayerData, validateTiledMapData, validateTiledObjectData, validateTiledPropertyData, validateTiledTileData, validateTiledTilesetData, validateTiledTilesetFileData, validateTiledTilesetRefData };
511
+ //# sourceMappingURL=validate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.js","sources":["../../../src/validate.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAyBA;;;;;AAKG;AACG,MAAO,gBAAiB,SAAQ,KAAK,CAAA;AACzB,IAAA,MAAM;AACN,IAAA,IAAI;AAEpB,IAAA,WAAA,CAAmB,MAAc,EAAE,IAAY,EAAE,OAAe,EAAA;AAC9D,QAAA,KAAK,CAAC,CAAA,uBAAA,EAA0B,MAAM,QAAQ,IAAI,KAAK,EAAE,GAAG,QAAQ,GAAG,IAAI,KAAK,OAAO,CAAA,CAAE,CAAC;AAC1F,QAAA,IAAI,CAAC,IAAI,GAAG,kBAAkB;AAC9B,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;AACpB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;IAClB;AACD;AAED;AAEA,SAAS,aAAa,CAAC,KAAc,EAAA;IACnC,IAAI,KAAK,KAAK,IAAI;AAAE,QAAA,OAAO,MAAM;AACjC,IAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;AAAE,QAAA,OAAO,UAAU;IAC3C,OAAO,OAAO,KAAK;AACrB;AAEA,SAAS,QAAQ,CAAC,IAAY,EAAE,GAAoB,EAAA;IAClD,IAAI,OAAO,GAAG,KAAK,QAAQ;AAAE,QAAA,OAAO,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,GAAG,GAAG;AACrD,IAAA,OAAO,IAAI,KAAK,EAAE,GAAG,GAAG,GAAG,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,GAAG,EAAE;AAC7C;AAEA,SAAS,YAAY,CAAC,KAAc,EAAE,MAAc,EAAE,IAAY,EAAA;AAChE,IAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACvE,QAAA,MAAM,IAAI,gBAAgB,CAAC,MAAM,EAAE,IAAI,EAAE,CAAA,wBAAA,EAA2B,aAAa,CAAC,KAAK,CAAC,CAAA,CAAE,CAAC;IAC7F;AACA,IAAA,OAAO,KAAgC;AACzC;AAEA,SAAS,WAAW,CAAC,KAAc,EAAE,MAAc,EAAE,IAAY,EAAA;IAC/D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACzB,QAAA,MAAM,IAAI,gBAAgB,CAAC,MAAM,EAAE,IAAI,EAAE,CAAA,uBAAA,EAA0B,aAAa,CAAC,KAAK,CAAC,CAAA,CAAE,CAAC;IAC5F;AACA,IAAA,OAAO,KAAK;AACd;AAEA,SAAS,YAAY,CAAC,KAAc,EAAE,MAAc,EAAE,IAAY,EAAA;AAChE,IAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,QAAA,MAAM,IAAI,gBAAgB,CAAC,MAAM,EAAE,IAAI,EAAE,CAAA,uBAAA,EAA0B,aAAa,CAAC,KAAK,CAAC,CAAA,CAAE,CAAC;IAC5F;AACA,IAAA,OAAO,KAAK;AACd;AAEA,SAAS,YAAY,CAAC,KAAc,EAAE,MAAc,EAAE,IAAY,EAAA;AAChE,IAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AACxD,QAAA,MAAM,IAAI,gBAAgB,CAAC,MAAM,EAAE,IAAI,EAAE,CAAA,8BAAA,EAAiC,aAAa,CAAC,KAAK,CAAC,CAAA,CAAE,CAAC;IACnG;AACA,IAAA,OAAO,KAAK;AACd;AAEA,SAAS,aAAa,CAAC,KAAc,EAAE,MAAc,EAAE,IAAY,EAAA;IACjE,MAAM,CAAC,GAAG,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC;IAC3C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;QACxB,MAAM,IAAI,gBAAgB,CAAC,MAAM,EAAE,IAAI,EAAE,CAAA,yBAAA,EAA4B,CAAC,CAAA,CAAE,CAAC;IAC3E;AACA,IAAA,OAAO,CAAC;AACV;AAEA,SAAS,wBAAwB,CAAC,KAAc,EAAE,MAAc,EAAE,IAAY,EAAA;IAC5E,MAAM,CAAC,GAAG,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC;AAC5C,IAAA,IAAI,CAAC,GAAG,CAAC,EAAE;QACT,MAAM,IAAI,gBAAgB,CAAC,MAAM,EAAE,IAAI,EAAE,CAAA,qCAAA,EAAwC,CAAC,CAAA,CAAE,CAAC;IACvF;AACA,IAAA,OAAO,CAAC;AACV;AAEA,SAAS,qBAAqB,CAAC,KAAc,EAAE,MAAc,EAAE,IAAY,EAAA;IACzE,MAAM,CAAC,GAAG,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC;AAC5C,IAAA,IAAI,CAAC,IAAI,CAAC,EAAE;QACV,MAAM,IAAI,gBAAgB,CAAC,MAAM,EAAE,IAAI,EAAE,CAAA,iCAAA,EAAoC,CAAC,CAAA,CAAE,CAAC;IACnF;AACA,IAAA,OAAO,CAAC;AACV;AAEA,SAAS,aAAa,CAAC,KAAc,EAAE,MAAc,EAAE,IAAY,EAAA;AACjE,IAAA,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE;AAC9B,QAAA,MAAM,IAAI,gBAAgB,CAAC,MAAM,EAAE,IAAI,EAAE,CAAA,wBAAA,EAA2B,aAAa,CAAC,KAAK,CAAC,CAAA,CAAE,CAAC;IAC7F;AACA,IAAA,OAAO,KAAK;AACd;AAEA,SAAS,cAAc,CAAC,GAA4B,EAAE,GAAW,EAAE,MAAc,EAAE,IAAY,EAAA;AAC7F,IAAA,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC;IACtB,OAAO,KAAK,KAAK,SAAS,GAAG,SAAS,GAAG,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAC3F;AAEA,SAAS,cAAc,CAAC,GAA4B,EAAE,GAAW,EAAE,MAAc,EAAE,IAAY,EAAA;AAC7F,IAAA,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC;IACtB,OAAO,KAAK,KAAK,SAAS,GAAG,SAAS,GAAG,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAC3F;AAEA,SAAS,eAAe,CAAC,GAA4B,EAAE,GAAW,EAAE,MAAc,EAAE,IAAY,EAAA;AAC9F,IAAA,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC;IACtB,OAAO,KAAK,KAAK,SAAS,GAAG,SAAS,GAAG,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAC5F;AAEA,SAAS,0BAA0B,CAAC,GAA4B,EAAE,GAAW,EAAE,MAAc,EAAE,IAAY,EAAA;AACzG,IAAA,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC;IACtB,OAAO,KAAK,KAAK,SAAS,GAAG,SAAS,GAAG,wBAAwB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACvG;AAEA,SAAS,eAAe,CAAC,GAA4B,EAAE,GAAW,EAAE,MAAc,EAAE,IAAY,EAAA;AAC9F,IAAA,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC;IACtB,OAAO,KAAK,KAAK,SAAS,GAAG,SAAS,GAAG,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAC5F;AAEA,SAAS,QAAQ,CAAI,KAAc,EAAE,MAAc,EAAE,IAAY,EAAE,EAA0C,EAAA;IAC3G,MAAM,GAAG,GAAG,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC;IAC5C,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC1D;AAEA,SAAS,gBAAgB,CAAI,KAAc,EAAE,MAAc,EAAE,IAAY,EAAE,EAA0C,EAAA;IACnH,OAAO,KAAK,KAAK,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC;AAC5E;AAEA;AAEA,MAAM,cAAc,GAAiC,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC;AAE3H,SAAS,+BAA+B,CAAC,GAAY,EAAE,MAAc,EAAE,IAAY,EAAA;IACjF,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC;IAC3C,MAAM,MAAM,GAA4E,EAAE;AAC1F,IAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QAC9C,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC;AACtC,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE;AACxF,YAAA,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK;QACrB;AAAO,aAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAC/E,YAAA,MAAM,CAAC,GAAG,CAAC,GAAG,+BAA+B,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC;QAC1E;aAAO;AACL,YAAA,MAAM,IAAI,gBAAgB,CAAC,MAAM,EAAE,UAAU,EAAE,CAAA,0DAAA,EAA6D,aAAa,CAAC,KAAK,CAAC,CAAA,CAAE,CAAC;QACrI;IACF;AACA,IAAA,OAAO,MAAM;AACf;AAEA;SACgB,yBAAyB,CAAC,GAAY,EAAE,MAAc,EAAE,IAAY,EAAA;IAClF,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC;AAC3C,IAAA,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACnE,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACvC,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,KAAK,SAAS,GAAG,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC;IAE7F,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,QAA6B,CAAC,EAAE;QAC3D,MAAM,IAAI,gBAAgB,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAA,uBAAA,EAA0B,QAAQ,CAAA,CAAA,CAAG,CAAC;IACrF;IAEA,MAAM,IAAI,GAAG,QAA6B;AAC1C,IAAA,MAAM,YAAY,GAAG,cAAc,CAAC,GAAG,EAAE,cAAc,EAAE,MAAM,EAAE,IAAI,CAAC;IACtE,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;AACzC,IAAA,IAAI,KAAiC;IAErC,QAAQ,IAAI;AACV,QAAA,KAAK,QAAQ;AACb,QAAA,KAAK,OAAO;AACZ,QAAA,KAAK,MAAM;YACT,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC;YAClD;AACF,QAAA,KAAK,KAAK;AACV,QAAA,KAAK,OAAO;AACZ,QAAA,KAAK,QAAQ;YACX,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC;YAClD;AACF,QAAA,KAAK,MAAM;YACT,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC;YACnD;AACF,QAAA,KAAK,OAAO;YACV,KAAK,GAAG,+BAA+B,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC;YACrE;;IAGJ,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE;AAC5C;AAEA,SAAS,4BAA4B,CAAC,KAAc,EAAE,MAAc,EAAE,IAAY,EAAA;IAChF,OAAO,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,yBAAyB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;AACrH;AAEA;AAEA,SAAS,sBAAsB,CAAC,GAAY,EAAE,MAAc,EAAE,IAAY,EAAA;IACxE,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC;IAC3C,OAAO;AACL,QAAA,CAAC,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACnD,QAAA,CAAC,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;KACpD;AACH;AAEA,SAAS,uBAAuB,CAAC,KAAc,EAAE,MAAc,EAAE,IAAY,EAAA;IAC3E,OAAO,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;AAC1G;AAEA;SACgB,+BAA+B,CAAC,GAAY,EAAE,MAAc,EAAE,IAAY,EAAA;IACxF,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC;IAC3C,OAAO;AACL,QAAA,MAAM,EAAE,wBAAwB,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC9E,QAAA,QAAQ,EAAE,wBAAwB,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;KACrF;AACH;AAEA;AAEA,MAAM,aAAa,GAA2C,CAAC,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC;AACpG,MAAM,aAAa,GAA2C,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC;AAEzF,SAAS,qBAAqB,CAAC,GAAY,EAAE,MAAc,EAAE,IAAY,EAAA;IACvE,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC;AAC3C,IAAA,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAEnE,IAAA,IAAI,MAA+B;AACnC,IAAA,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE;AAC5B,QAAA,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACxE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAgC,CAAC,EAAE;AAC7D,YAAA,MAAM,IAAI,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAA,8BAAA,EAAiC,KAAK,CAAA,CAAA,CAAG,CAAC;QACzG;QACA,MAAM,GAAG,KAAgC;IAC3C;AAEA,IAAA,IAAI,MAA+B;AACnC,IAAA,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE;AAC5B,QAAA,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACxE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAgC,CAAC,EAAE;AAC7D,YAAA,MAAM,IAAI,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAA,4BAAA,EAA+B,KAAK,CAAA,CAAA,CAAG,CAAC;QACvG;QACA,MAAM,GAAG,KAAgC;IAC3C;IAEA,OAAO;QACL,IAAI;QACJ,IAAI,EAAE,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC;QAChD,KAAK,EAAE,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC;QACjD,UAAU,EAAE,cAAc,CAAC,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC;QAC3D,MAAM;QACN,MAAM,EAAE,eAAe,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC;QACpD,OAAO,EAAE,eAAe,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC;QACtD,SAAS,EAAE,0BAA0B,CAAC,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC;QACrE,SAAS,EAAE,eAAe,CAAC,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC;QAC1D,SAAS,EAAE,eAAe,CAAC,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC;QAC1D,MAAM;QACN,IAAI,EAAE,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC;KACjD;AACH;AAEA;AAEA;SACgB,uBAAuB,CAAC,GAAY,EAAE,MAAc,EAAE,IAAY,EAAA;IAChF,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC;IAE3C,OAAO;AACL,QAAA,EAAE,EAAE,wBAAwB,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAClE,QAAA,IAAI,EAAE,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC5D,QAAA,IAAI,EAAE,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC5D,QAAA,CAAC,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACnD,QAAA,CAAC,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACnD,QAAA,KAAK,EAAE,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC/D,QAAA,MAAM,EAAE,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAClE,QAAA,QAAQ,EAAE,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;AACxE,QAAA,OAAO,EAAE,aAAa,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACtE,GAAG,EAAE,0BAA0B,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC;QACzD,KAAK,EAAE,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC;QAClD,OAAO,EAAE,eAAe,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC;QACtD,OAAO,EAAE,GAAG,CAAC,OAAO,KAAK,SAAS,GAAG,SAAS,GAAG,uBAAuB,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACxH,QAAQ,EAAE,GAAG,CAAC,QAAQ,KAAK,SAAS,GAAG,SAAS,GAAG,uBAAuB,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAC5H,IAAI,EAAE,GAAG,CAAC,IAAI,KAAK,SAAS,GAAG,SAAS,GAAG,qBAAqB,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC1G,QAAQ,EAAE,cAAc,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC;AACvD,QAAA,UAAU,EAAE,4BAA4B,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;KAC/F;AACH;AAEA;AAEA,MAAM,WAAW,GAAG,CAAC,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,OAAO,CAAU;AAChF,MAAM,8BAA8B,GAAG,IAAI,GAAG,CAAS,CAAC,KAAK,CAAC,CAAC;AAC/D,MAAM,WAAW,GAAkE,CAAC,SAAS,EAAE,OAAO,CAAC;AAEvG,SAAS,sBAAsB,CAAC,GAA4B,EAAE,MAAc,EAAE,IAAY,EAAA;IACxF,OAAO;AACL,QAAA,EAAE,EAAE,wBAAwB,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAClE,QAAA,IAAI,EAAE,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC5D,KAAK,EAAE,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC;AACjD,QAAA,OAAO,EAAE,aAAa,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AACtE,QAAA,OAAO,EAAE,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AACrE,QAAA,CAAC,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACnD,QAAA,CAAC,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACnD,OAAO,EAAE,cAAc,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC;QACrD,OAAO,EAAE,cAAc,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC;QACrD,SAAS,EAAE,cAAc,CAAC,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC;QACzD,SAAS,EAAE,cAAc,CAAC,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC;QACzD,SAAS,EAAE,cAAc,CAAC,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC;AACzD,QAAA,UAAU,EAAE,4BAA4B,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;KAC/F;AACH;AAEA,SAAS,qBAAqB,CAAC,KAAc,EAAE,MAAc,EAAE,IAAY,EAAA;IACzE,OAAO,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;AAC5G;AAEA,SAAS,sBAAsB,CAAC,GAAY,EAAE,MAAc,EAAE,IAAY,EAAA;IACxE,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC;IAC3C,OAAO;AACL,QAAA,CAAC,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACpD,QAAA,CAAC,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACpD,QAAA,KAAK,EAAE,qBAAqB,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACxE,QAAA,MAAM,EAAE,qBAAqB,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC3E,QAAA,IAAI,EAAE,qBAAqB,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;KACtE;AACH;AAEA,SAAS,0BAA0B,CAAC,GAA4B,EAAE,IAAwB,EAAE,MAAc,EAAE,IAAY,EAAA;AACtH,IAAA,IAAI,GAAG,CAAC,WAAW,KAAK,SAAS,EAAE;QACjC,MAAM,IAAI,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,EAAE,CAAA,0DAAA,EAA6D,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA,CAAA,CAAG,CAAC;IACpK;AAEA,IAAA,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ;AAC7B,IAAA,IAAI,QAAQ,KAAK,SAAS,IAAI,EAAE,OAAO,QAAQ,KAAK,QAAQ,IAAI,8BAA8B,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE;QAC7G,MAAM,IAAI,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,CAAA,gCAAA,EAAmC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA,yCAAA,CAA2C,CAAC;IACxK;AAEA,IAAA,MAAM,KAAK,GAAG,wBAAwB,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAClF,IAAA,MAAM,MAAM,GAAG,wBAAwB,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAErF,IAAA,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,KAAK,SAAS;AACtC,IAAA,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,KAAK,SAAS;AAE1C,IAAA,IAAI,OAAO,KAAK,SAAS,EAAE;AACzB,QAAA,MAAM,IAAI,gBAAgB,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,yCAAyC,GAAG,4CAA4C,CAAC;IAC9I;IAEA,OAAO;AACL,QAAA,GAAG,IAAI;AACP,QAAA,IAAI,EAAE,WAAW;QACjB,KAAK;QACL,MAAM;QACN,IAAI,EAAE,OAAO,GAAG,qBAAqB,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS;AAC3F,QAAA,MAAM,EAAE,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,GAAG,SAAS;KAC3J;AACH;AAEA,SAAS,4BAA4B,CAAC,GAA4B,EAAE,IAAwB,EAAE,MAAc,EAAE,IAAY,EAAA;AACxH,IAAA,IAAI,SAA4C;AAChD,IAAA,IAAI,GAAG,CAAC,SAAS,KAAK,SAAS,EAAE;AAC/B,QAAA,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAC9E,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAuD,CAAC,EAAE;AAClF,YAAA,MAAM,IAAI,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,CAAA,oBAAA,EAAuB,KAAK,CAAA,CAAA,CAAG,CAAC;QAClG;QACA,SAAS,GAAG,KAA0C;IACxD;IAEA,OAAO;AACL,QAAA,GAAG,IAAI;AACP,QAAA,IAAI,EAAE,aAAa;QACnB,SAAS;AACT,QAAA,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;KACvI;AACH;AAEA,SAAS,2BAA2B,CAAC,GAA4B,EAAE,IAAwB,EAAE,MAAc,EAAE,IAAY,EAAA;IACvH,OAAO;AACL,QAAA,GAAG,IAAI;AACP,QAAA,IAAI,EAAE,YAAY;QAClB,KAAK,EAAE,GAAG,CAAC,KAAK,KAAK,SAAS,GAAG,EAAE,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC9F,OAAO,EAAE,eAAe,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC;QACtD,OAAO,EAAE,eAAe,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC;KACvD;AACH;AAEA,SAAS,2BAA2B,CAAC,GAA4B,EAAE,IAAwB,EAAE,MAAc,EAAE,IAAY,EAAA;IACvH,OAAO;AACL,QAAA,GAAG,IAAI;AACP,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;KACnI;AACH;AAEA;SACgB,sBAAsB,CAAC,GAAY,EAAE,MAAc,EAAE,IAAY,EAAA;IAC/E,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC;AAC3C,IAAA,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACnE,MAAM,IAAI,GAAG,sBAAsB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC;IAEtD,QAAQ,IAAI;AACV,QAAA,KAAK,WAAW;YACd,OAAO,0BAA0B,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC;AAC5D,QAAA,KAAK,aAAa;YAChB,OAAO,4BAA4B,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC;AAC9D,QAAA,KAAK,YAAY;YACf,OAAO,2BAA2B,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC;AAC7D,QAAA,KAAK,OAAO;YACV,OAAO,2BAA2B,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC;QAC7D,SAAS;YACP,MAAM,KAAK,GAAsB,WAAW;YAC5C,MAAM,IAAI,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAA,oBAAA,EAAuB,IAAI,CAAA,mBAAA,EAAsB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,CAAA,CAAG,CAAC;QAClI;;AAEJ;AAEA;;;;;AAKG;AACG,SAAU,kCAAkC,CAAC,MAAiC,EAAE,QAAiB,EAAE,MAAc,EAAE,IAAY,EAAA;AACnI,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACtC,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC;QACvB,IAAI,KAAK,KAAK,SAAS;YAAE;QACzB,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;AAEnC,QAAA,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE;AAC9B,YAAA,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,KAAK,SAAS;AAC5C,YAAA,IAAI,SAAS,KAAK,QAAQ,EAAE;AAC1B,gBAAA,MAAM,IAAI,gBAAgB,CACxB,MAAM,EACN,SAAS,EACT,QAAQ,GAAG,mDAAmD,GAAG,2DAA2D,CAC7H;YACH;QACF;AAAO,aAAA,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE;AACjC,YAAA,kCAAkC,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QACnG;IACF;AACF;AAEA;AAEA;SACgB,qBAAqB,CAAC,GAAY,EAAE,MAAc,EAAE,IAAY,EAAA;IAC9E,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC;AAE3C,IAAA,IAAI,WAA6C;AACjD,IAAA,IAAI,GAAG,CAAC,WAAW,KAAK,SAAS,EAAE;QACjC,MAAM,eAAe,GAAG,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;AACrD,QAAA,MAAM,KAAK,GAAG,sBAAsB,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,eAAe,CAAC;AAC9E,QAAA,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE;AAChC,YAAA,MAAM,IAAI,gBAAgB,CAAC,MAAM,EAAE,eAAe,EAAE,CAAA,sCAAA,EAAyC,KAAK,CAAC,IAAI,CAAA,CAAA,CAAG,CAAC;QAC7G;QACA,WAAW,GAAG,KAAK;IACrB;IAEA,OAAO;AACL,QAAA,EAAE,EAAE,wBAAwB,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAClE,IAAI,EAAE,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC;AAC/C,QAAA,UAAU,EAAE,4BAA4B,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;AAC9F,QAAA,SAAS,EAAE,gBAAgB,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,+BAA+B,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC5J,WAAW;QACX,KAAK,EAAE,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC;QACjD,UAAU,EAAE,0BAA0B,CAAC,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC;QACvE,WAAW,EAAE,0BAA0B,CAAC,GAAG,EAAE,aAAa,EAAE,MAAM,EAAE,IAAI,CAAC;KAC1E;AACH;AAEA;AAEA,SAAS,oBAAoB,CAAC,KAAc,EAAE,MAAc,EAAE,IAAY,EAAA;IACxE,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC1D,QAAA,MAAM,IAAI,gBAAgB,CAAC,MAAM,EAAE,IAAI,EAAE,CAAA,iCAAA,EAAoC,aAAa,CAAC,KAAK,CAAC,CAAA,CAAE,CAAC;IACtG;AACA,IAAA,OAAO,KAAK;AACd;AAEA;SACgB,wBAAwB,CAAC,GAA4B,EAAE,MAAc,EAAE,IAAY,EAAA;IACjG,OAAO;AACL,QAAA,IAAI,EAAE,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC5D,KAAK,EAAE,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC;AACjD,QAAA,SAAS,EAAE,qBAAqB,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;AACpF,QAAA,UAAU,EAAE,qBAAqB,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;AACvF,QAAA,SAAS,EAAE,wBAAwB,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;AACvF,QAAA,OAAO,EAAE,wBAAwB,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACjF,OAAO,EAAE,0BAA0B,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC;QACjE,MAAM,EAAE,0BAA0B,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC;QAC/D,KAAK,EAAE,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC;QACjD,UAAU,EAAE,0BAA0B,CAAC,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC;QACvE,WAAW,EAAE,0BAA0B,CAAC,GAAG,EAAE,aAAa,EAAE,MAAM,EAAE,IAAI,CAAC;QACzE,UAAU,EAAE,GAAG,CAAC,UAAU,KAAK,SAAS,GAAG,SAAS,GAAG,sBAAsB,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QACnI,eAAe,EAAE,cAAc,CAAC,GAAG,EAAE,iBAAiB,EAAE,MAAM,EAAE,IAAI,CAAC;AACrE,QAAA,KAAK,EAAE,gBAAgB,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;AACtI,QAAA,UAAU,EAAE,4BAA4B,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QAC9F,YAAY,EAAE,cAAc,CAAC,GAAG,EAAE,cAAc,EAAE,MAAM,EAAE,IAAI,CAAC;QAC/D,OAAO,EAAE,GAAG,CAAC,OAAO,KAAK,SAAS,GAAG,SAAS,GAAG,oBAAoB,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;KACtH;AACH;AAEA;;;;AAIG;SACa,2BAA2B,CAAC,GAAY,EAAE,MAAc,EAAE,IAAY,EAAA;IACpF,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC;AAC3C,IAAA,MAAM,QAAQ,GAAG,qBAAqB,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;AAExF,IAAA,IAAI,QAAQ,IAAI,GAAG,EAAE;QACnB,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,EAAE;IACzF;AAEA,IAAA,OAAO,EAAE,GAAG,wBAAwB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,QAAQ,EAAE;AACrE;AAEA;AAEA,MAAM,YAAY,GAAgC,CAAC,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,CAAC;AACvG,MAAM,aAAa,GAAgC,CAAC,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,CAAC;AAErG;;;;;AAKG;AACG,SAAU,oBAAoB,CAAC,GAAY,EAAE,MAAc,EAAA;IAC/D,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC;AAEzC,IAAA,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC;AACnD,IAAA,IAAI,IAAI,KAAK,KAAK,EAAE;QAClB,MAAM,IAAI,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,CAAA,qBAAA,EAAwB,IAAI,CAAA,CAAA,CAAG,CAAC;IAC7E;AAEA,IAAA,MAAM,OAAO,GAAG,oBAAoB,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC;AAEpE,IAAA,MAAM,gBAAgB,GAAG,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,aAAa,CAAC;IAC7E,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,gBAAoC,CAAC,EAAE;AAChE,QAAA,MAAM,IAAI,gBAAgB,CAAC,MAAM,EAAE,aAAa,EAAE,CAAA,qBAAA,EAAwB,gBAAgB,CAAA,mBAAA,EAAsB,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,CAAA,CAAG,CAAC;IAC7I;IACA,MAAM,WAAW,GAAG,gBAAoC;AAExD,IAAA,IAAI,WAAyC;AAC7C,IAAA,IAAI,GAAG,CAAC,WAAW,KAAK,SAAS,EAAE;AACjC,QAAA,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,aAAa,CAAC;QAClE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAyB,CAAC,EAAE;AACtD,YAAA,MAAM,IAAI,gBAAgB,CAAC,MAAM,EAAE,aAAa,EAAE,CAAA,sBAAA,EAAyB,KAAK,CAAA,mBAAA,EAAsB,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,CAAA,CAAG,CAAC;QACpI;QACA,WAAW,GAAG,KAAyB;IACzC;AAEA,IAAA,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC;AAChE,IAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IACzH,kCAAkC,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC;IAEtE,OAAO;AACL,QAAA,IAAI,EAAE,KAAK;QACX,OAAO;QACP,YAAY,EAAE,cAAc,CAAC,GAAG,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,CAAC;QAC7D,KAAK,EAAE,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC;QAC/C,WAAW;QACX,WAAW;QACX,KAAK,EAAE,wBAAwB,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC;QAC3D,MAAM,EAAE,wBAAwB,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC;QAC9D,SAAS,EAAE,qBAAqB,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC;QACpE,UAAU,EAAE,qBAAqB,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,CAAC;QACvE,QAAQ;QACR,gBAAgB,EAAE,eAAe,CAAC,GAAG,EAAE,kBAAkB,EAAE,MAAM,EAAE,EAAE,CAAC;QACtE,WAAW,EAAE,0BAA0B,CAAC,GAAG,EAAE,aAAa,EAAE,MAAM,EAAE,EAAE,CAAC;QACvE,YAAY,EAAE,0BAA0B,CAAC,GAAG,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,CAAC;QACzE,eAAe,EAAE,cAAc,CAAC,GAAG,EAAE,iBAAiB,EAAE,MAAM,EAAE,EAAE,CAAC;QACnE,MAAM;QACN,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,2BAA2B,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC7H,UAAU,EAAE,4BAA4B,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,CAAC;KAC/E;AACH;AAEA;;;AAGG;AACG,SAAU,4BAA4B,CAAC,GAAY,EAAE,MAAc,EAAA;AACvE,IAAA,OAAO,wBAAwB,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC;AAC5E;;;;"}
package/package.json CHANGED
@@ -1,7 +1,12 @@
1
1
  {
2
2
  "name": "@codexo/exojs-tiled",
3
- "version": "0.12.0",
3
+ "version": "0.14.0",
4
4
  "description": "Tiled map format asset extension for ExoJS.",
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "git+https://github.com/Exoridus/ExoJS.git",
8
+ "directory": "packages/exojs-tiled"
9
+ },
5
10
  "type": "module",
6
11
  "sideEffects": [
7
12
  "./dist/esm/register.js"
@@ -28,10 +33,13 @@
28
33
  "LICENSE"
29
34
  ],
30
35
  "peerDependencies": {
31
- "@codexo/exojs": "0.12.x"
36
+ "@codexo/exojs": "0.14.x"
37
+ },
38
+ "dependencies": {
39
+ "@codexo/exojs-tilemap": "0.14.0"
32
40
  },
33
41
  "devDependencies": {
34
- "@codexo/exojs": "0.12.0",
42
+ "@codexo/exojs": "0.14.0",
35
43
  "@codexo/exojs-config": "0.0.0"
36
44
  },
37
45
  "license": "MIT",