UNPKG

@megaads/wm

Version:

To install the library, use npm:

179 lines (155 loc) 5.49 kB
import { CircularTextInputElement, DynamicImageElement, ImagePlaceHolderElement, TextInputElement, VectorElement } from "./types"; export function parseFloatAttr(object: any) { for (const k in object) { if (!isNaN(object[k]) && ['string', 'number'].includes(typeof object[k]) && isNumeric(object[k])) { object[k] = parseFloat(object[k]); } } return object; } export function isNumeric(value: any) { return !isNaN(value - parseFloat(value)); } export function getRenderConfigTextBoxCircular(element: CircularTextInputElement) { element.uid = 'E' + element.id + '_' + element.elementId; element.config = parseFloatAttr(element.config); try { let text = ' '; if (typeof element.config.textConfig != 'undefined' && element.config.textConfig.text) { text = element.config.textConfig.text; } // @ts-ignore let textConfig = Object.assign({}, element.config.textConfig); let hideText = false; if (text == ' ') { hideText = true; } if (textConfig.prefix) { text = textConfig.prefix + text; } if (textConfig.suffix) { text = text + textConfig.suffix; } if (textConfig.caps) { text = text.toUpperCase(); } textConfig.text = text; textConfig.angle = element.config.rotation; return { drawType: 'text_circular', config: { uid: element.uid, centerX: element.config.centerX, centerY: element.config.centerY, angle: element.config.rotation, editable: element.config.editable, breakWords: false, strokeUniform: true, textConfig: textConfig, disabled: hideText } }; } catch (e) {} } export function getRenderConfigTextBox(element: TextInputElement) { element.uid = 'E' + element.id + '_' + element.elementId; element.config = parseFloatAttr(element.config); try { let text = ' '; if (typeof element.config.textConfig != 'undefined' && element.config.textConfig.text) { text = element.config.textConfig.text; } // @ts-ignore let textConfig = Object.assign({}, element.config.textConfig); let hideText = false; if (text == ' ') { hideText = true; } if (textConfig.prefix) { text = textConfig.prefix + text; } if (textConfig.suffix) { text = text + textConfig.suffix; } if (textConfig.caps) { text = text.toUpperCase(); } textConfig.text = text; return { drawType: 'text', config: { uid: element.uid, centerX: element.config.centerX, centerY: element.config.centerY, width: element.config.sWidth, height: element.config.sHeight, s_width: element.config.sWidth, s_height: element.config.sHeight, angle: element.config.rotation, editable: element.config.editable, multiline: element.config.multiline, breakWords: element.config.breakWords, strokeUniform: true, textConfig: textConfig, disabled: hideText } }; } catch (e) {} } export function getRenderConfigImage(element: DynamicImageElement | ImagePlaceHolderElement) { element.uid = 'E' + element.id + '_' + element.elementId; element.config = parseFloatAttr(element.config); let imageUrl = element.config.imageUrl; if (element.config.staticPath) { imageUrl = element.config.staticPath; } if (!imageUrl) { imageUrl = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII='; } return { drawType: 'image', config: { uid: element.uid, element_id: element.elementId, src: imageUrl, s_width: element.config.sWidth, s_height: element.config.sHeight, centerX: element.config.centerX, centerY: element.config.centerY, angle: element.config.rotation, locked: element.config.locked, evented: element.config.evented, maskPath: element.config.maskPath, coverMaskArea: element.config.coverMaskArea, } } } export function getRenderConfigVectorEps(element: VectorElement) { element.uid = 'E' + element.id + '_' + element.elementId; element.config = parseFloatAttr(element.config); let vectorUrl = element.config.imageUrl; if (!vectorUrl) { vectorUrl = 'https://upload.wikimedia.org/wikipedia/commons/9/9e/Blank.svg'; } return { drawType: 'vector', config: { uid: element.uid, element_id: element.elementId, src: vectorUrl, s_width: element.config.sWidth, s_height: element.config.sHeight, centerX: element.config.centerX, centerY: element.config.centerY, angle: element.config.rotation, locked: element.config.locked, evented: element.config.evented } } }