UNPKG

@lottiefiles/relottie-parse

Version:
68 lines (64 loc) 1.85 kB
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 };