@plattar/plattar-ar-adapter
Version:
Plattar AR Adapter for interfacing with Google & Apple WebAR
129 lines (128 loc) • 5.46 kB
TypeScript
import { Scene } from "@plattar/plattar-api";
export type SceneProductDataMetaType = "sceneproduct" | "scenemodel" | "product";
export interface SceneProductData {
scene_product_id: string;
product_variation_id: string;
meta_data: SceneProductDataMeta;
}
export interface SceneProductDataMeta {
augment: boolean;
type: SceneProductDataMetaType;
}
export interface DecodedConfiguratorState {
readonly scene: Scene;
readonly state: ConfiguratorState;
}
/**
* Manages a Configuration State of multiple Products with multiple Variations
* Allows easily changing
*/
export declare class ConfiguratorState {
private readonly _state;
private readonly _mappedVariationIDValues;
private readonly _mappedVariationSKUValues;
constructor(state?: string | null | undefined);
/**
* Modifyes the SceneProduct that this Variation SKU belongs to and changes for
* purposes of Configuration
*/
setVariationSKU(productVariationSKU: string): void;
/**
* Modifyes the SceneProduct that this Variation belongs to and changes for
* purposes of Configuration
*/
setVariationID(productVariationID: string): void;
/**
* Adds a new Scene Product/Variation combo with meta-data into the Configurator State
*
* @param sceneProductID - The Scene Product ID to be used (as defined in Plattar CMS)
* @param productVariationID - The Product Variation ID to be used (as defined in Plattar CMS)
* @param metaData - Arbitrary meta-data that can be used against certain operaions
*/
setSceneProduct(sceneProductID: string, productVariationID: string, metaData?: SceneProductDataMeta | null | undefined): void;
/**
* Adds a new SceneModel with meta-data into the Configurator State. Note that the SceneProductDataMeta will
* override the isSceneModel variable and assign to "true" automatically
*
* @param SceneModelID - The SceneModel ID to add
* @param metaData - Arbitrary meta-data that can be used against certain operaions
*/
setSceneModel(SceneModelID: string, metaData?: SceneProductDataMeta | null | undefined): void;
/**
* Adds a new Product with meta-data into the Configurator State
*
* @param productID - The Product ID to add
* @param metaData - Arbitrary meta-data that can be used against certain operaions
*/
setProduct(productID: string, productVariationID: string, metaData?: SceneProductDataMeta | null | undefined): void;
/**
* Adds a new Scene Product/Variation combo with meta-data into the Configurator State
*
* @param sceneProductID - The Scene Product ID to be used (as defined in Plattar CMS)
* @param productVariationID - The Product Variation ID to be used (as defined in Plattar CMS)
* @param metaData - Arbitrary meta-data that can be used against certain operaions
*/
addSceneProduct(sceneProductID: string, productVariationID: string, metaData?: SceneProductDataMeta | null | undefined): void;
/**
* Search and return the data index reference for the provided Scene Product ID
* if not found, will return null
* @param sceneProductID
*/
findSceneProductIndex(sceneProductID: string): any[] | null;
/**
* Search and return the data for the provided Scene Product ID
* if not found, will return null
* @param sceneProductID
*/
findSceneProduct(sceneProductID: string): SceneProductData | null;
/**
* Iterate over the internal state data
*/
forEach(callback: (data: SceneProductData) => void): void;
/**
* Compose and return an array of all internal objects
*/
array(): Array<SceneProductData>;
/**
* @returns Returns the first reference of data in the stack, otherwise returns null
*/
first(): SceneProductData | null;
/**
* @returns Returns the first reference of data in the stack that matches a type, otherwise returns null
*/
firstOfType(type: SceneProductDataMetaType): SceneProductData | null;
firstActiveOfType(type: SceneProductDataMetaType): SceneProductData | null;
get length(): number;
/**
* Decodes and returns an instance of ConfiguratorState from a previously
* encoded state
* @param state - The previously encoded state as a Base64 String
* @returns - ConfiguratorState instance
*/
static decode(state: string): ConfiguratorState;
/**
* Decodes a previously generated state
* @param sceneID
* @param state
* @returns
*/
static decodeState(sceneID?: string | null | undefined, state?: string | null | undefined): Promise<DecodedConfiguratorState>;
/**
* Generates a new ConfiguratorState instance from all SceneProducts and default
* variations from the provided Scene ID
* @param sceneID - the Scene ID to generate
* @returns - Promise that resolves into a ConfiguratorState instance
*/
static decodeScene(sceneID?: string | null | undefined): Promise<DecodedConfiguratorState>;
/**
* Encode and return the internal ConfiguratorState as a Base64 String
* @returns - Base64 String
*/
encode(): string;
encodeSceneGraphID(): Promise<string>;
/**
* Compiles and returns the Dynamic Scene Graph (Updated for 2025 for DynamicAR)
* NOTE: Eventually this structure should replace ConfiguratorState
*/
get sceneGraph(): any;
}