@genart-api/adapter-layer
Version:
GenArtAPI platform adapter for layer.com
69 lines (68 loc) • 2.23 kB
TypeScript
export interface LayerParamChangeEvent extends CustomEvent {
detail: {
id: string;
value: boolean | string | number | ColorResult;
};
}
export type LayerEvent = "layer:play" | "layer:pause" | "layer:reset" | "layer:preview" | "layer:parameters" | "layer:paramchange";
export type ParameterOption = {
value: string;
label?: string;
};
export type Parameter = NumberParameter | BooleanParameter | ColorParameter | ListParameter | HashParameter;
export type BaseParameter = {
id: string;
name: string;
kind: "NUMBER" | "BOOLEAN" | "COLOR" | "LIST" | "HASH";
description?: string;
customization_level?: "ARTIST" | "CURATOR" | "VIEWER";
default?: any;
};
export type ColorParameter = BaseParameter & {
kind: "COLOR";
default?: string;
};
export type BooleanParameter = BaseParameter & {
kind: "BOOLEAN";
default?: boolean;
};
export type NumberParameter = BaseParameter & {
kind: "NUMBER";
min?: number | string;
max?: number | string;
step?: number | string;
default?: number | string;
};
export type ListParameter = BaseParameter & {
kind: "LIST";
options: Array<ParameterOption | string>;
default?: string;
};
export type HashParameter = BaseParameter & {
kind: "HASH";
default?: string;
minLength?: number;
maxLength?: number;
pattern?: "BASE64" | "HEX" | "ALPHABETICAL" | "ALPHANUMERIC";
};
export interface ColorResult {
readonly rgb: [number, number, number] | null;
readonly hsl: [number, number, number] | null;
readonly hex: string | null;
}
export type LayerSDK = {
canvas: HTMLCanvasElement | null;
previewEnabled: boolean;
debug: boolean;
readonly uuid: string;
readonly width: number;
readonly height: number;
readonly prng: () => number;
readonly controlled: boolean;
readonly parameters: Readonly<Record<string, boolean | string | number | ColorResult>>;
params(...params: Parameter[]): Promise<LayerSDK["parameters"]>;
preview(video: Blob, thumbnail?: Blob): LayerSDK;
registerCanvas(canvasElement: HTMLCanvasElement): LayerSDK;
startFPSOverlay(targetFPS?: number, fill?: boolean): LayerSDK;
stopFPSOverlay(): LayerSDK;
};