@lottiefiles/relottie-parse
Version:
Parse Lottie JSON format to LAST
33 lines (31 loc) • 1.18 kB
JavaScript
import { DEFAULT_OPTIONS } from './chunk-AXYTFAL7.js';
import { Slots } from './chunk-OZZ2WDEQ.js';
import { traverseJsonExit, traverseJsonEnter } from './chunk-IIN7RTEO.js';
import { Stack } from './chunk-VD77DRXR.js';
import { parse as parse$1, traverse } from '@humanwhocodes/momoa';
import { is } from 'unist-util-is';
function parse(document, file, settings = {}) {
const jsonAst = parse$1(document);
const options = { ...DEFAULT_OPTIONS, ...settings.parse };
const stack = new Stack();
const info = { hasExpressions: false, slots: new Slots(file, options) };
traverse(jsonAst, {
enter(node, parent) {
traverseJsonEnter(node, parent, stack, file, options);
},
exit(node, parent) {
traverseJsonExit(node, parent, stack, file, options, info);
}
});
info.slots?.mutateNodeTitles();
const tree = stack.pop();
if (is(tree, "root")) {
tree.hasExpressions = info.hasExpressions || false;
return tree;
} else {
file.fail(`Stack's last item has to be "root" but it's "${tree ? tree.type : "unknown"}"`, tree);
}
}
export { parse };
//# sourceMappingURL=chunk-OPTVZGMO.js.map
//# sourceMappingURL=chunk-OPTVZGMO.js.map