2023-08-12 03:40:30 +00:00
|
|
|
// @ts-check
|
|
|
|
|
|
|
|
/** @enum {string} */
|
2023-09-16 19:06:58 +00:00
|
|
|
const types = [
|
2023-08-12 03:40:30 +00:00
|
|
|
"root",
|
|
|
|
|
|
|
|
"header",
|
|
|
|
"headerSignature",
|
|
|
|
"headerVersion",
|
2023-08-16 15:46:31 +00:00
|
|
|
|
|
|
|
"logicalScreenDescriptor",
|
|
|
|
"logicalScreenWidth",
|
|
|
|
"logicalScreenHeight",
|
|
|
|
"logicalScreenDescriptorPackedFields",
|
|
|
|
"logicalScreenBackgroundColorIndex",
|
|
|
|
"logicalScreenPixelAspectRatio",
|
2023-08-16 16:59:33 +00:00
|
|
|
|
|
|
|
"globalColorTable",
|
|
|
|
"globalColorTableColor",
|
2023-09-16 19:06:58 +00:00
|
|
|
|
|
|
|
"imageSection",
|
|
|
|
"imageDescriptor",
|
|
|
|
"imageSeparator",
|
|
|
|
"imageDescriptorLeftPosition",
|
|
|
|
"imageDescriptorTopPosition",
|
|
|
|
"imageDescriptorWidth",
|
|
|
|
"imageDescriptorHeight",
|
|
|
|
"imageDescriptorPackedFields",
|
|
|
|
|
|
|
|
"localColorTable",
|
|
|
|
"localColorTableColor",
|
|
|
|
|
|
|
|
"imageData",
|
|
|
|
"imageDataLzwMinimumCodeSize",
|
|
|
|
"imageDataSubBlock",
|
|
|
|
"imageDataSubBlockSize",
|
|
|
|
"imageDataSubBlockData",
|
|
|
|
"imageDataTerminator",
|
|
|
|
|
|
|
|
"extensionBlockIntroducer",
|
|
|
|
"extensionBlockSize",
|
|
|
|
|
|
|
|
"unknownExtensionBlock",
|
|
|
|
"unknownExtensionBlockLabel",
|
|
|
|
"unknownExtensionBlockData",
|
2023-11-09 15:20:48 +00:00
|
|
|
|
|
|
|
"gifTerminator",
|
2023-08-12 03:40:30 +00:00
|
|
|
].reduce((result, id) => {
|
|
|
|
result[id] = id;
|
|
|
|
return result;
|
|
|
|
}, Object.create(null));
|
2023-09-16 19:06:58 +00:00
|
|
|
|
|
|
|
// TODO: Revert this and just export the thing
|
|
|
|
export const GifNodeType = new Proxy(types, {
|
|
|
|
get(target, prop) {
|
|
|
|
const result = target[prop];
|
|
|
|
if (!result) {
|
|
|
|
throw new Error(`cannot get ${String(prop)}`);
|
|
|
|
}
|
|
|
|
return result;
|
|
|
|
},
|
|
|
|
});
|