@lottiefiles/relottie-parse
Version:
Parse Lottie JSON format to LAST
68 lines (64 loc) • 1.85 kB
TypeScript
import { MemberNode } from '@humanwhocodes/momoa';
import { ObjectTitle, ElementTitle, Element, Attribute, ObjectNode } from '@lottiefiles/last';
import { VFile } from 'vfile';
import { ParseOptions } from './options.js';
/**
* Copyright 2024 Design Barn Inc.
*/
interface SlotPropertyInfo {
/**
* SlotProperty node in the JsonAST
*/
jsonNode: MemberNode;
/**
* SlotProperty node in the LottieAST
*/
node: Element;
}
declare type SlotIdParentTitle = ObjectTitle | ElementTitle;
declare class Slots {
/**
* SlotID.value to ParentTitle mapping
*/
idTitles: Map<string, SlotIdParentTitle>;
/**
* Copy of all the SlotProperty nodes
*/
slotProperties: SlotPropertyInfo[];
/**
* Parser's VFile instance
*/
private readonly _file;
/**
* Parser's options
*/
private readonly _options;
constructor(vfile: VFile, options: ParseOptions);
/**
* Mutates SlotProperty node titles based on the SlotID value and its parent title
*
* @returns void
*/
mutateNodeTitles(): void;
/**
* Collects SlotIdNode value and its parent title
*
* @param node - SlotID node
* @param parentNode - SlotID parent node
* @returns void
* @throws
* - collects vfile message if slotPropertyNode.value is not a string
* - collects vfile message if slotPropertyNode.value is already defined with a different title
*/
setIdTitle(node: Attribute, parentNode: ObjectNode): void;
/**
* Collects SlotProperty nodes
*
* @param node - SlotProperty node
* @param parent - SlotProperty parent node
* @param jsonNode - SlotProperty node in the JsonAST
* @returns void
*/
setNode(node: Element, parent: ObjectNode, jsonNode: MemberNode): void;
}
export { Slots };