UNPKG

@aurigma/design-editor-iframe

Version:

Using this module you can embed Design Editor (a part of Customer's Canvas) to your page through the IFrame API.

119 lines (118 loc) 5.53 kB
import { IPdfMetadata } from "@aurigma/design-atoms-model/Product/Interfaces/IPdfMetadata"; import { Client } from "./PostMessage/Client"; import { ImageMetaData } from "@aurigma/design-atoms-model/Product/Items"; /** * Allows you to get and set the user ID and PDF metadata of a product at runtime. * @public */ export declare class RuntimeConfiguration { private _postMessageClient; /** @internal */ constructor(_postMessageClient: Client); /** * Reads PDF metadata of the current product. * @returns The `IPdfMetadata` structure with data to be saved in the hi-res output. * @example * ``` js * const data = await editor.configuration.getPdfMetadata() * .catch(error => console.error("Retrieving PDF metadata failed with exception: ", error)); * * console.info("getPdfMetadata returned: " + data.title); * ``` */ getPdfMetadata(): Promise<IPdfMetadata>; /** * Sets PDF metadata to the current product. * @param config - PDF metadata to be saved in the hi-res output. * @example * ``` js * editor.configuration.setPdfMetadata({ * author: "John Wood", * title: "Postcard template with flowers", * keywords: "red,flower,postcard" * }) * .catch(error => console.error("setPdfMetadata failed with exception: ", error)); * ``` */ setPdfMetadata(config: IPdfMetadata): Promise<void>; /** * Reads ID of the user working on the product. * @returns The user identifier. * @example * ``` js * let editor = await CustomersCanvas.IframeApi.loadEditor(iframe, productDefinition, config); * console.log(await editor.configuration.getUserId()); * ``` */ getUserId(): Promise<string>; /** * Loads metadata of an image. * @param url - The link to the image. * @param fromDesignImages - If `true`, gets metadata from the design gallery. * @returns Image properties. * @example * ``` js * // Get metadata of an image in the public gallery. * const metaData = await editor.configuration.getImageMetadata("public:backgrounds/azure.jpg"); * ``` */ getImageMetadata(url: string, fromDesignImages?: boolean): Promise<ImageMetaData>; /** * Sets a new user identifier and moves user files to this user's folders. * @remarks Before using this method, you must enable the {@link https://customerscanvas.com/dev/editors/design-editor-web-app/it-ops/config-backend/appsettings.html#SecureModeEnabled|secure mode} and {@link https://customerscanvas.com/dev/editors/design-editor-web-app/apis/auth-tokens.html|update an authentication token} by using the `additionalUserId` parameter with the new user identifier. * @param userId - The new user identifier that needs to be set for the product. * @example * ``` html * <html> * <head> * <title>Setting a new user ID</title> * <!-- The IFrame API script. IMPORTANT! Do not remove or change the ID. --> * <script id="CcIframeApiScript" type="text/javascript" src="https://example.com/Resources/Generated/IframeApi.js"> * </script> * </head> * <body> * <!-- The iframe to display the editor in. --> * <iframe id="editorFrame" width="100%" height="800px"></iframe> * <input type="button" value="Set User ID" onclick="setUserID()" /> * * <script> * let editor = null; * * document.addEventListener('DOMContentLoaded', async () => { * // Initialize product with an Invitation template. * const productDefinition = { surfaces: ["invitation"] }; * // Get the iframe element to display the editor in. * const iframe = document.getElementById("editorFrame"); * // Load the editor. * editor = await CustomersCanvas.IframeApi.loadEditor(iframe, productDefinition) * // If there was an error thrown when loading the editor. * .catch(e => console.log(e)); * }); * * // Set JohnWood as a new user ID. * async function setUserID() { * let userId = await editor.configuration.getUserId(); * // Get an active token for the current user. * let token = (await (await fetch("https://example.com/api/Auth/Users/" + userId + "/Tokens", * { * method: "GET", * headers: { "X-CustomersCanvasAPIKey": "UniqueSecurityKey" } * })).json()).tokens[0].tokenId; * * // Update the token for another user. * await fetch("https://example.com/api/Auth/Tokens/" + token + "?AdditionalUserId=JohnWood", { * method: "PUT", * headers: { "X-CustomersCanvasAPIKey": "UniqueSecurityKey" } * }); * * // Copy user files. * editor.configuration.setUserId("JohnWood") * .catch(e => console.log(e)); * } * </script> * </body> * </html> * ``` */ setUserId(userId: string): Promise<void>; }