@flighthq/spritesheet-formats 0.3.0 → 0.3.1-next.1041.35b950c
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/spritesheetDetect.d.ts +4 -0
- package/dist/spritesheetDetect.d.ts.map +1 -1
- package/dist/spritesheetDetect.js +44 -15
- package/dist/spritesheetDetect.js.map +1 -1
- package/package.json +7 -6
- package/src/spritesheetDetect.test.ts +41 -0
package/dist/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { detectSpritesheetFormat, getSpritesheetFormat, parseAsepriteSpritesheet, parseAsepriteSpritesheetDocument, parseCocosPlistSpritesheet, parseCocosPlistSpritesheetDocument, parseLibgdxAtlasSpritesheet, parseSpritesheet, parseStarlingSpritesheet, parseStarlingSpritesheetDocument, parseTexturePackerSpritesheet, parseTexturePackerSpritesheetDocument, registerSpritesheetFormat, serializeAsepriteSpritesheet, serializeCocosPlistSpritesheet, serializeStarlingSpritesheet, serializeTexturePackerSpritesheet, } from './contract';
|
|
1
|
+
export { detectSpritesheetFormat, getSpritesheetFormat, getSpritesheetFormatKinds, parseAsepriteSpritesheet, parseAsepriteSpritesheetDocument, parseCocosPlistSpritesheet, parseCocosPlistSpritesheetDocument, parseLibgdxAtlasSpritesheet, parseSpritesheet, parseStarlingSpritesheet, parseStarlingSpritesheetDocument, parseTexturePackerSpritesheet, parseTexturePackerSpritesheetDocument, registerSpritesheetFormat, serializeAsepriteSpritesheet, serializeCocosPlistSpritesheet, serializeStarlingSpritesheet, serializeTexturePackerSpritesheet, unregisterSpritesheetFormat, } from './contract';
|
|
2
2
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,oBAAoB,EACpB,wBAAwB,EACxB,gCAAgC,EAChC,0BAA0B,EAC1B,kCAAkC,EAClC,2BAA2B,EAC3B,gBAAgB,EAChB,wBAAwB,EACxB,gCAAgC,EAChC,6BAA6B,EAC7B,qCAAqC,EACrC,yBAAyB,EACzB,4BAA4B,EAC5B,8BAA8B,EAC9B,4BAA4B,EAC5B,iCAAiC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,oBAAoB,EACpB,yBAAyB,EACzB,wBAAwB,EACxB,gCAAgC,EAChC,0BAA0B,EAC1B,kCAAkC,EAClC,2BAA2B,EAC3B,gBAAgB,EAChB,wBAAwB,EACxB,gCAAgC,EAChC,6BAA6B,EAC7B,qCAAqC,EACrC,yBAAyB,EACzB,4BAA4B,EAC5B,8BAA8B,EAC9B,4BAA4B,EAC5B,iCAAiC,EACjC,2BAA2B,GAC5B,MAAM,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { detectSpritesheetFormat, getSpritesheetFormat, parseAsepriteSpritesheet, parseAsepriteSpritesheetDocument, parseCocosPlistSpritesheet, parseCocosPlistSpritesheetDocument, parseLibgdxAtlasSpritesheet, parseSpritesheet, parseStarlingSpritesheet, parseStarlingSpritesheetDocument, parseTexturePackerSpritesheet, parseTexturePackerSpritesheetDocument, registerSpritesheetFormat, serializeAsepriteSpritesheet, serializeCocosPlistSpritesheet, serializeStarlingSpritesheet, serializeTexturePackerSpritesheet, } from './contract';
|
|
1
|
+
export { detectSpritesheetFormat, getSpritesheetFormat, getSpritesheetFormatKinds, parseAsepriteSpritesheet, parseAsepriteSpritesheetDocument, parseCocosPlistSpritesheet, parseCocosPlistSpritesheetDocument, parseLibgdxAtlasSpritesheet, parseSpritesheet, parseStarlingSpritesheet, parseStarlingSpritesheetDocument, parseTexturePackerSpritesheet, parseTexturePackerSpritesheetDocument, registerSpritesheetFormat, serializeAsepriteSpritesheet, serializeCocosPlistSpritesheet, serializeStarlingSpritesheet, serializeTexturePackerSpritesheet, unregisterSpritesheetFormat, } from './contract';
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,oBAAoB,EACpB,wBAAwB,EACxB,gCAAgC,EAChC,0BAA0B,EAC1B,kCAAkC,EAClC,2BAA2B,EAC3B,gBAAgB,EAChB,wBAAwB,EACxB,gCAAgC,EAChC,6BAA6B,EAC7B,qCAAqC,EACrC,yBAAyB,EACzB,4BAA4B,EAC5B,8BAA8B,EAC9B,4BAA4B,EAC5B,iCAAiC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,oBAAoB,EACpB,yBAAyB,EACzB,wBAAwB,EACxB,gCAAgC,EAChC,0BAA0B,EAC1B,kCAAkC,EAClC,2BAA2B,EAC3B,gBAAgB,EAChB,wBAAwB,EACxB,gCAAgC,EAChC,6BAA6B,EAC7B,qCAAqC,EACrC,yBAAyB,EACzB,4BAA4B,EAC5B,8BAA8B,EAC9B,4BAA4B,EAC5B,iCAAiC,EACjC,2BAA2B,GAC5B,MAAM,YAAY,CAAC"}
|
|
@@ -14,6 +14,8 @@ export declare function getSpritesheetFormat(kind: SpritesheetFormatKind): Reado
|
|
|
14
14
|
detect: (text: string) => boolean;
|
|
15
15
|
parse: (text: string, options: SpritesheetParseOptions) => SpritesheetData;
|
|
16
16
|
}> | null;
|
|
17
|
+
/** Return a sorted snapshot of every bound spritesheet-format kind. */
|
|
18
|
+
export declare function getSpritesheetFormatKinds(): readonly SpritesheetFormatKind[];
|
|
17
19
|
/** Parse a spritesheet text document to a SpritesheetData, auto-detecting the format.
|
|
18
20
|
*
|
|
19
21
|
* Accepts an optional `formatKind` override — useful when the format is known in advance
|
|
@@ -30,4 +32,6 @@ export declare function registerSpritesheetFormat(kind: SpritesheetFormatKind, e
|
|
|
30
32
|
detect: (text: string) => boolean;
|
|
31
33
|
parse: (text: string, options: SpritesheetParseOptions) => SpritesheetData;
|
|
32
34
|
}): void;
|
|
35
|
+
/** Remove a format binding, including a caller override of a built-in kind. */
|
|
36
|
+
export declare function unregisterSpritesheetFormat(kind: SpritesheetFormatKind): void;
|
|
33
37
|
//# sourceMappingURL=spritesheetDetect.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spritesheetDetect.d.ts","sourceRoot":"","sources":["../src/spritesheetDetect.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"spritesheetDetect.d.ts","sourceRoot":"","sources":["../src/spritesheetDetect.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,KAAK,EAAc,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AA2F3G;;;gFAGgF;AAChF,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,qBAAqB,GAAG,IAAI,CAKlF;AAED;;;;sFAIsF;AACtF,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,qBAAqB,GAAG,QAAQ,CAAC;IAC1E,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IAClC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,uBAAuB,KAAK,eAAe,CAAC;CAC5E,CAAC,GAAG,IAAI,CAER;AAED,uEAAuE;AACvE,wBAAgB,yBAAyB,IAAI,SAAS,qBAAqB,EAAE,CAI5E;AAED;;;;;4FAK4F;AAC5F,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,EACZ,UAAU,CAAC,EAAE,qBAAqB,EAClC,OAAO,CAAC,EAAE,uBAAuB,GAChC,eAAe,GAAG,IAAI,CAOxB;AAED;;;;iEAIiE;AACjE,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,qBAAqB,EAC3B,KAAK,EAAE;IACL,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IAClC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,uBAAuB,KAAK,eAAe,CAAC;CAC5E,GACA,IAAI,CAEN;AAED,+EAA+E;AAC/E,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,qBAAqB,GAAG,IAAI,CAE7E"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
+
import { createKeyedTable, getRegistryTableEntry, getRegistryTableKeys, withRegistryTableEntry, withoutRegistryTableEntry, } from '@flighthq/registry/contract';
|
|
1
2
|
import { SpritesheetFormatKindAseprite as ASEPRITE, SpritesheetFormatKindCocosPlist as COCOS_PLIST, SpritesheetFormatKindLibgdxAtlas as LIBGDX_ATLAS, SpritesheetFormatKindStarling as STARLING, SpritesheetFormatKindTexturePacker as TEXTURE_PACKER, } from '@flighthq/types/contract';
|
|
2
3
|
import { parseAsepriteSpritesheet } from './asepriteParse';
|
|
3
4
|
import { parseCocosPlistSpritesheet } from './cocosPlistParse';
|
|
4
5
|
import { parseLibgdxAtlasSpritesheet } from './libgdxAtlasParse';
|
|
5
6
|
import { parseStarlingSpritesheet } from './starlingParse';
|
|
6
7
|
import { parseTexturePackerSpritesheet } from './texturePackerParse';
|
|
7
|
-
let _registry = null;
|
|
8
8
|
function detectTexturePacker(text) {
|
|
9
9
|
if (text.trimStart()[0] !== '{')
|
|
10
10
|
return false;
|
|
@@ -46,37 +46,36 @@ function detectLibgdxAtlas(text) {
|
|
|
46
46
|
function getRegistry() {
|
|
47
47
|
if (_registry !== null)
|
|
48
48
|
return _registry;
|
|
49
|
-
_registry =
|
|
50
|
-
|
|
49
|
+
_registry = createKeyedTable('SpritesheetFormat', 'Unclaimed');
|
|
50
|
+
bindSpritesheetFormat(ASEPRITE, {
|
|
51
51
|
detect: detectAseprite,
|
|
52
52
|
parse: (text) => parseAsepriteSpritesheet(text),
|
|
53
53
|
});
|
|
54
|
-
|
|
54
|
+
bindSpritesheetFormat(COCOS_PLIST, {
|
|
55
55
|
detect: detectCocosPlist,
|
|
56
56
|
parse: (text) => parseCocosPlistSpritesheet(text),
|
|
57
57
|
});
|
|
58
|
-
|
|
58
|
+
bindSpritesheetFormat(TEXTURE_PACKER, {
|
|
59
59
|
detect: detectTexturePacker,
|
|
60
60
|
parse: (text) => parseTexturePackerSpritesheet(text),
|
|
61
61
|
});
|
|
62
|
-
|
|
62
|
+
bindSpritesheetFormat(STARLING, {
|
|
63
63
|
detect: detectStarling,
|
|
64
64
|
parse: (text, opts) => parseStarlingSpritesheet(text, { frameDuration: opts.frameDuration }),
|
|
65
65
|
});
|
|
66
|
-
|
|
66
|
+
bindSpritesheetFormat(LIBGDX_ATLAS, {
|
|
67
67
|
detect: detectLibgdxAtlas,
|
|
68
68
|
parse: (text, opts) => parseLibgdxAtlasSpritesheet(text, { frameDuration: opts.frameDuration }),
|
|
69
69
|
});
|
|
70
70
|
return _registry;
|
|
71
71
|
}
|
|
72
|
-
// ─── Public API ──────────────────────────────────────────────────────────────
|
|
73
72
|
/** Detect the format kind of a spritesheet text document.
|
|
74
73
|
*
|
|
75
74
|
* Returns the `SpritesheetFormatKind` of the first registered format whose
|
|
76
75
|
* `detect` function returns `true`, or `null` when no format is recognized. */
|
|
77
76
|
export function detectSpritesheetFormat(text) {
|
|
78
|
-
for (const [kind,
|
|
79
|
-
if (entry.detect(text))
|
|
77
|
+
for (const [kind, registered] of getSpritesheetFormatsInDetectionOrder()) {
|
|
78
|
+
if (registered.entry.detect(text))
|
|
80
79
|
return kind;
|
|
81
80
|
}
|
|
82
81
|
return null;
|
|
@@ -87,7 +86,13 @@ export function detectSpritesheetFormat(text) {
|
|
|
87
86
|
* format with that kind has been registered. Useful for introspecting which formats
|
|
88
87
|
* are in the registry or for building meta-dispatch logic on top of the registry. */
|
|
89
88
|
export function getSpritesheetFormat(kind) {
|
|
90
|
-
return getRegistry()
|
|
89
|
+
return getRegistryTableEntry(getRegistry(), kind)?.entry ?? null;
|
|
90
|
+
}
|
|
91
|
+
/** Return a sorted snapshot of every bound spritesheet-format kind. */
|
|
92
|
+
export function getSpritesheetFormatKinds() {
|
|
93
|
+
const kinds = [];
|
|
94
|
+
getRegistryTableKeys(kinds, getRegistry());
|
|
95
|
+
return kinds;
|
|
91
96
|
}
|
|
92
97
|
/** Parse a spritesheet text document to a SpritesheetData, auto-detecting the format.
|
|
93
98
|
*
|
|
@@ -100,10 +105,10 @@ export function parseSpritesheet(text, formatKind, options) {
|
|
|
100
105
|
const kind = formatKind ?? detectSpritesheetFormat(text);
|
|
101
106
|
if (!kind)
|
|
102
107
|
return null;
|
|
103
|
-
const
|
|
104
|
-
if (
|
|
108
|
+
const registered = getRegistryTableEntry(getRegistry(), kind);
|
|
109
|
+
if (registered === null)
|
|
105
110
|
return null;
|
|
106
|
-
return entry.parse(text, opts);
|
|
111
|
+
return registered.entry.parse(text, opts);
|
|
107
112
|
}
|
|
108
113
|
/** Register a custom spritesheet format for use with `detectSpritesheetFormat` and `parseSpritesheet`.
|
|
109
114
|
*
|
|
@@ -111,6 +116,30 @@ export function parseSpritesheet(text, formatKind, options) {
|
|
|
111
116
|
* the same `SpritesheetFormatKind`. Third-party formats should use a vendor-prefixed kind
|
|
112
117
|
* (e.g. `'acme.MyAtlas'`) to avoid colliding with built-ins. */
|
|
113
118
|
export function registerSpritesheetFormat(kind, entry) {
|
|
114
|
-
|
|
119
|
+
bindSpritesheetFormat(kind, entry);
|
|
120
|
+
}
|
|
121
|
+
/** Remove a format binding, including a caller override of a built-in kind. */
|
|
122
|
+
export function unregisterSpritesheetFormat(kind) {
|
|
123
|
+
_registry = withoutRegistryTableEntry(getRegistry(), kind);
|
|
124
|
+
}
|
|
125
|
+
function bindSpritesheetFormat(kind, entry) {
|
|
126
|
+
const registry = getRegistry();
|
|
127
|
+
const current = getRegistryTableEntry(registry, kind);
|
|
128
|
+
_registry = withRegistryTableEntry(registry, kind, {
|
|
129
|
+
entry,
|
|
130
|
+
order: current?.order ?? _nextFormatOrder++,
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
function getSpritesheetFormatsInDetectionOrder() {
|
|
134
|
+
const formats = [];
|
|
135
|
+
for (const kind of getSpritesheetFormatKinds()) {
|
|
136
|
+
const registered = getRegistryTableEntry(getRegistry(), kind);
|
|
137
|
+
if (registered !== null)
|
|
138
|
+
formats.push([kind, registered]);
|
|
139
|
+
}
|
|
140
|
+
formats.sort((a, b) => a[1].order - b[1].order);
|
|
141
|
+
return formats;
|
|
115
142
|
}
|
|
143
|
+
let _registry = null;
|
|
144
|
+
let _nextFormatOrder = 0;
|
|
116
145
|
//# sourceMappingURL=spritesheetDetect.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spritesheetDetect.js","sourceRoot":"","sources":["../src/spritesheetDetect.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"spritesheetDetect.js","sourceRoot":"","sources":["../src/spritesheetDetect.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@flighthq/spritesheet-formats",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.1-next.1041.35b950c",
|
|
4
4
|
"author": "Joshua Granick and other contributors",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -38,11 +38,12 @@
|
|
|
38
38
|
"clean:dist": "tsx ../../scripts/clean-package-dist.ts"
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@flighthq/
|
|
42
|
-
"@flighthq/textureatlas
|
|
43
|
-
"@flighthq/
|
|
44
|
-
"@flighthq/
|
|
45
|
-
"@flighthq/
|
|
41
|
+
"@flighthq/registry": "0.3.1-next.1041.35b950c",
|
|
42
|
+
"@flighthq/textureatlas": "0.3.1-next.1041.35b950c",
|
|
43
|
+
"@flighthq/textureatlas-formats": "0.3.1-next.1041.35b950c",
|
|
44
|
+
"@flighthq/spritesheet": "0.3.1-next.1041.35b950c",
|
|
45
|
+
"@flighthq/types": "0.3.1-next.1041.35b950c",
|
|
46
|
+
"@flighthq/xml": "0.3.1-next.1041.35b950c"
|
|
46
47
|
},
|
|
47
48
|
"devDependencies": {
|
|
48
49
|
"typescript": "^5.3.0"
|
|
@@ -10,8 +10,10 @@ import type { SpritesheetParseOptions } from '@flighthq/types/contract';
|
|
|
10
10
|
import {
|
|
11
11
|
detectSpritesheetFormat,
|
|
12
12
|
getSpritesheetFormat,
|
|
13
|
+
getSpritesheetFormatKinds,
|
|
13
14
|
parseSpritesheet,
|
|
14
15
|
registerSpritesheetFormat,
|
|
16
|
+
unregisterSpritesheetFormat,
|
|
15
17
|
} from './spritesheetDetect';
|
|
16
18
|
|
|
17
19
|
const TEXTURE_PACKER_JSON = JSON.stringify({
|
|
@@ -125,11 +127,34 @@ describe('getSpritesheetFormat', () => {
|
|
|
125
127
|
parse: () => ({ animations: [], frames: [], imageFile: '', imageHeight: 0, imageWidth: 0, scale: 1 }),
|
|
126
128
|
});
|
|
127
129
|
const entry = getSpritesheetFormat(kind);
|
|
130
|
+
unregisterSpritesheetFormat(kind);
|
|
128
131
|
expect(entry).not.toBeNull();
|
|
129
132
|
expect(entry?.detect).toBe(detect);
|
|
130
133
|
});
|
|
131
134
|
});
|
|
132
135
|
|
|
136
|
+
describe('getSpritesheetFormatKinds', () => {
|
|
137
|
+
it('enumerates sorted bound kinds and stops naming one after it is unregistered', () => {
|
|
138
|
+
const kind = 'test.Enumeration';
|
|
139
|
+
registerSpritesheetFormat(kind, {
|
|
140
|
+
detect: () => false,
|
|
141
|
+
parse: () => ({ animations: [], frames: [], imageFile: '', imageHeight: 0, imageWidth: 0, scale: 1 }),
|
|
142
|
+
});
|
|
143
|
+
expect(getSpritesheetFormatKinds()).toEqual([
|
|
144
|
+
SpritesheetFormatKindAseprite,
|
|
145
|
+
SpritesheetFormatKindCocosPlist,
|
|
146
|
+
SpritesheetFormatKindLibgdxAtlas,
|
|
147
|
+
SpritesheetFormatKindStarling,
|
|
148
|
+
SpritesheetFormatKindTexturePacker,
|
|
149
|
+
kind,
|
|
150
|
+
]);
|
|
151
|
+
|
|
152
|
+
unregisterSpritesheetFormat(kind);
|
|
153
|
+
|
|
154
|
+
expect(getSpritesheetFormatKinds()).not.toContain(kind);
|
|
155
|
+
});
|
|
156
|
+
});
|
|
157
|
+
|
|
133
158
|
describe('parseSpritesheet', () => {
|
|
134
159
|
it('auto-detects and parses TexturePacker JSON', () => {
|
|
135
160
|
const data = parseSpritesheet(TEXTURE_PACKER_JSON);
|
|
@@ -212,6 +237,7 @@ describe('registerSpritesheetFormat', () => {
|
|
|
212
237
|
|
|
213
238
|
expect(detectSpritesheetFormat('CUSTOM: data here')).toBe(customKind);
|
|
214
239
|
const data = parseSpritesheet('CUSTOM: data here');
|
|
240
|
+
unregisterSpritesheetFormat(customKind);
|
|
215
241
|
expect(data?.imageFile).toBe('custom.png');
|
|
216
242
|
});
|
|
217
243
|
});
|
|
@@ -242,3 +268,18 @@ describe('registry ordering', () => {
|
|
|
242
268
|
expect(data).not.toBeNull();
|
|
243
269
|
});
|
|
244
270
|
});
|
|
271
|
+
|
|
272
|
+
describe('unregisterSpritesheetFormat', () => {
|
|
273
|
+
it('removes a format from detection and direct resolution', () => {
|
|
274
|
+
const kind = 'test.RemovedFormat';
|
|
275
|
+
registerSpritesheetFormat(kind, {
|
|
276
|
+
detect: (text) => text.startsWith('REMOVED:'),
|
|
277
|
+
parse: () => ({ animations: [], frames: [], imageFile: '', imageHeight: 0, imageWidth: 0, scale: 1 }),
|
|
278
|
+
});
|
|
279
|
+
|
|
280
|
+
unregisterSpritesheetFormat(kind);
|
|
281
|
+
|
|
282
|
+
expect(detectSpritesheetFormat('REMOVED: data')).toBeNull();
|
|
283
|
+
expect(getSpritesheetFormat(kind)).toBeNull();
|
|
284
|
+
});
|
|
285
|
+
});
|