import { IObject } from "@daybrush/utils"; import { NameType, KeyValueChildren, FrameEvents } from "./types"; import OrderMap from "order-map"; import EventEmitter from "@scena/event-emitter"; /** * Animation's Frame */ declare class Frame extends EventEmitter { properties: IObject; orderMap: OrderMap; /** * @param - properties * @example const frame = new Scene.Frame({ display: "none" transform: { translate: "50px", scale: "5, 5", } }); */ constructor(properties?: string | Record); /** * get property value * @param {...Number|String|PropertyObject} args - property name or value * @example frame.get("display") // => "none", "block", .... frame.get("transform", "translate") // => "10px,10px" */ get(...args: NameType[]): any; /** * get properties orders * @param - property names * @example frame.getOrders(["display"]) // => [] frame.getOrders(["transform"]) // => ["translate", "scale"] */ getOrders(names: NameType[]): NameType[] | undefined; /** * set properties orders * @param - property names * @param - orders * @example frame.getOrders(["transform"]) // => ["translate", "scale"] frame.setOrders(["transform"], ["scale", "tralsate"]) */ setOrders(names: NameType[], orders: NameType[]): NameType[]; /** * get properties order object * @example console.log(frame.getOrderObject()); */ getOrderObject(): Record; /** * set properties orders object * @param - properties orders object * @example frame.setOrderObject({ "": ["transform"], "transform": ["scale", "tralsate"], }); */ setOrderObject(obj: IObject): void; /** * get property keys * @param - property names * @example frame.gets("display") // => [] frame.gets("transform") // => ["translate"] */ getKeys(...args: NameType[]): string[]; /** * get properties array * @param - property names * @example frame.gets("display") // => [] frame.gets("transform") // => [{ key: "translate", value: "10px, 10px", children: [] }] */ gets(...args: NameType[]): KeyValueChildren[]; raw(...args: NameType[]): IObject; /** * remove property value * @param {...String} args - property name * @return {Frame} An instance itself * @example frame.remove("display") */ remove(...args: NameType[]): this; /** * set property * @param {...Number|String|PropertyObject} args - property names or values * @return {Frame} An instance itself * @example // one parameter frame.set({ display: "none", transform: { translate: "10px, 10px", scale: "1", }, filter: { brightness: "50%", grayscale: "100%" } }); // two parameters frame.set("transform", { translate: "10px, 10px", scale: "1", }); // three parameters frame.set("transform", "translate", "50px"); */ set(...args: any[]): this; /** * Gets the names of properties. * @return the names of properties. * @example // one parameter frame.set({ display: "none", transform: { translate: "10px, 10px", scale: "1", }, }); // [["display"], ["transform", "translate"], ["transform", "scale"]] console.log(frame.getNames()); */ getNames(): string[][]; /** * check that has property. * @param {...String} args - property name * @example frame.has("property", "display") // => true or false */ has(...args: NameType[]): boolean; /** * clone frame. * @return {Frame} An instance of clone * @example frame.clone(); */ clone(): Frame; /** * merge one frame to other frame. * @param - target frame. * @return {Frame} An instance itself * @example frame.merge(frame2); */ merge(frame: Frame): this; /** * Specifies an css object that coverted the frame. * @param - If you want to return camel case name like css property or react, use the following parameter * @return {object} cssObject */ toCSSObject(useCamelCase?: boolean): IObject; /** * Specifies an css text that coverted the frame. * @return {string} cssText */ toCSSText(): string; /** * Specifies an css text that coverted the frame. * Use `toCSSText()` method. * @deprecated * @return {string} cssText */ toCSS(): string; /** * Remove All Properties * @return {Frame} An instance itself */ clear(): this; private _set; private _setByPath; private _update; } export default Frame;