UNPKG

@senx/warpview-editor

Version:

WarpView Editor Elements

132 lines 14.5 kB
/* * Copyright 2020 SenX S.A.S. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import { Injectable } from '@angular/core'; import * as i0 from "@angular/core"; export class GTSLib { constructor() { this.color = ['#4D4D4D', '#5DA5DA', '#FAA43A', '#60BD68', '#F17CB0', '#B2912F', '#B276B2', '#DECF3F', '#F15854', '#607D8B']; } getColor(i) { return this.color[i % this.color.length]; } unique(arr) { const u = {}; const a = []; for (let i = 0, l = arr.length; i < l; ++i) { if (!u.hasOwnProperty(arr[i])) { a.push(arr[i]); u[arr[i]] = 1; } } return a; } hexToRgb(hex) { const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex); return result ? [ parseInt(result[1], 16), parseInt(result[2], 16), parseInt(result[3], 16) ] : null; } transparentize(color, alpha) { return 'rgba(' + this.hexToRgb(color).concat(alpha).join(',') + ')'; } isArray(value) { return value && typeof value === 'object' && value instanceof Array && typeof value.length === 'number' && typeof value.splice === 'function' && !(value.propertyIsEnumerable('length')); } isEmbeddedImage(item) { return !(typeof item !== 'string' || !/^data:image/.test(item)); } isEmbeddedImageObject(item) { return !((item === null) || (item.image === null) || (item.caption === null) || !this.isEmbeddedImage(item.image)); } gtsFromJSON(json, id) { return { gts: { c: json.c, l: json.l, a: json.a, v: json.v, id, }, }; } gtsFromJSONList(jsonList, prefixId) { const gtsList = []; let id; jsonList.forEach((item, i) => { let gts = item; if (item.gts) { gts = item.gts; } if ((prefixId !== undefined) && (prefixId !== '')) { id = prefixId + '-' + i; } else { id = '' + i; } if (this.isArray(gts)) { gtsList.push(this.gtsFromJSONList(gts, id)); } if (this.isGts(gts)) { gtsList.push(this.gtsFromJSON(gts, id)); } if (this.isEmbeddedImage(gts)) { gtsList.push({ image: gts, caption: 'Image', id, }); } if (this.isEmbeddedImageObject(gts)) { gtsList.push({ image: gts.image, caption: gts.caption, id, }); } }); return { content: gtsList, }; } flatDeep(arr1) { // tslint:disable-next-line:only-arrow-functions return arr1.reduce((acc, val) => { if (Array.isArray(val)) { acc.concat(this.flatDeep(val)); } else { acc.concat(val); } }, []); } isGts(item) { return !(!item || item.c === null || item.l === null || item.a === null || item.v === null || !this.isArray(item.v)); } isObject(item) { return (item && typeof item === 'object' && !Array.isArray(item)); } } GTSLib.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GTSLib, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); GTSLib.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GTSLib }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GTSLib, decorators: [{ type: Injectable }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3RzLmxpYi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3dhcnB2aWV3LWVkaXRvci1uZy9zcmMvbGliL21vZGVsL2d0cy5saWIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDOztBQUd6QyxNQUFNLE9BQU8sTUFBTTtJQURuQjtRQUdFLFVBQUssR0FBRyxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0tBb0h4SDtJQWxIQyxRQUFRLENBQUMsQ0FBQztRQUNSLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsTUFBTSxDQUFDLEdBQUc7UUFDUixNQUFNLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDYixNQUFNLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDYixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFO1lBQzFDLElBQUksQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUM3QixDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNmLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDZjtTQUNGO1FBQ0QsT0FBTyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRUQsUUFBUSxDQUFD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LENBQUMsQ0FBQyxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVELFFBQVEsQ0FBQyxJQUFJO1FBQ1gsT0FBTyxDQUFDLElBQUksSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDcEUsQ0FBQzs7b0dBcEhVLE1BQU07d0dBQU4sTUFBTTs0RkFBTixNQUFNO2tCQURsQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqICBDb3B5cmlnaHQgMjAyMCBTZW5YIFMuQS5TLlxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBHVFNMaWIge1xuXG4gIGNvbG9yID0gWycjNEQ0RDREJywgJyM1REE1REEnLCAnI0ZBQTQzQScsICcjNjBCRDY4JywgJyNGMTdDQjAnLCAnI0IyOTEyRicsICcjQjI3NkIyJywgJyNERUNGM0YnLCAnI0YxNTg1NCcsICcjNjA3RDhCJ107XG5cbiAgZ2V0Q29sb3IoaSkge1xuICAgIHJldHVybiB0aGlzLmNvbG9yW2kgJSB0aGlzLmNvbG9yLmxlbmd0aF07XG4gIH1cblxuICB1bmlxdWUoYXJyKSB7XG4gICAgY29uc3QgdSA9IHt9O1xuICAgIGNvbnN0IGEgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMCwgbCA9IGFyci5sZW5ndGg7IGkgPCBsOyArK2kpIHtcbiAgICAgIGlmICghdS5oYXNPd25Qcm9wZXJ0eShhcnJbaV0pKSB7XG4gICAgICAgIGEucHVzaChhcnJbaV0pO1xuICAgICAgICB1W2FycltpXV0gPSAxO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gYTtcbiAgfVxuXG4gIGhleFRvUmdiKGhleCkge1xuICAgIGNvbnN0IHJlc3VsdCA9IC9eIz8oW2EtZlxcZF17Mn0pKFthLWZcXGRdezJ9KShbYS1mXFxkXXsyfSkkL2kuZXhlYyhoZXgpO1xuICAgIHJldHVybiByZXN1bHQgPyBbXG4gICAgICBwYXJzZUludChyZXN1bHRbMV0sIDE2KSxcbiAgICAgIHBhcnNlSW50KHJlc3VsdFsyXSwgMTYpLFxuICAgICAgcGFyc2VJbnQocmVzdWx0WzNdLCAxNilcbiAgICBdIDogbnVsbDtcbiAgfVxuXG4gIHRyYW5zcGFyZW50aXplKGNvbG9yLCBhbHBoYTogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ3JnYmEoJyArIHRoaXMuaGV4VG9SZ2IoY29sb3IpLmNvbmNhdChhbHBoYSkuam9pbignLCcpICsgJyknO1xuICB9XG5cbiAgaXNBcnJheSh2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlIGluc3RhbmNlb2YgQXJyYXkgJiYgdHlwZW9mIHZhbHVlLmxlbmd0aCA9PT0gJ251bWJlcidcbiAgICAgICYmIHR5cGVvZiB2YWx1ZS5zcGxpY2UgPT09ICdmdW5jdGlvbicgJiYgISh2YWx1ZS5wcm9wZXJ0eUlzRW51bWVyYWJsZSgnbGVuZ3RoJykpO1xuICB9XG5cbiAgaXNFbWJlZGRlZEltYWdlKGl0ZW0pIHtcbiAgICByZXR1cm4gISh0eXBlb2YgaXRlbSAhPT0gJ3N0cmluZycgfHwgIS9eZGF0YTppbWFnZS8udGVzdChpdGVtKSk7XG4gIH1cblxuICBpc0VtYmVkZGVkSW1hZ2VPYmplY3QoaXRlbSkge1xuICAgIHJldHVybiAhKChpdGVtID09PSBudWxsKSB8fCAoaXRlbS5pbWFnZSA9PT0gbnVsbCkgfHxcbiAgICAgIChpdGVtLmNhcHRpb24gPT09IG51bGwpIHx8ICF0aGlzLmlzRW1iZWRkZWRJbWFnZShpdGVtLmltYWdlKSk7XG4gIH1cblxuICBndHNGcm9tSlNPTihqc29uLCBpZCkge1xuICAgIHJldHVybiB7XG4gICAgICBndHM6IHtcbiAgICAgICAgYzoganNvbi5jLFxuICAgICAgICBsOiBqc29uLmwsXG4gICAgICAgIGE6IGpzb24uYSxcbiAgICAgICAgdjoganNvbi52LFxuICAgICAgICBpZCxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIGd0c0Zyb21KU09OTGlzdChqc29uTGlzdCwgcHJlZml4SWQpIHtcbiAgICBjb25zdCBndHNMaXN0ID0gW107XG4gICAgbGV0IGlkO1xuICAgIGpzb25MaXN0LmZvckVhY2goKGl0ZW0sIGkpID0+IHtcbiAgICAgIGxldCBndHMgPSBpdGVtO1xuICAgICAgaWYgKGl0ZW0uZ3RzKSB7XG4gICAgICAgIGd0cyA9IGl0ZW0uZ3RzO1xuICAgICAgfVxuICAgICAgaWYgKChwcmVmaXhJZCAhPT0gdW5kZWZpbmVkKSAmJiAocHJlZml4SWQgIT09ICcnKSkge1xuICAgICAgICBpZCA9IHByZWZpeElkICsgJy0nICsgaTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlkID0gJycgKyBpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuaXNBcnJheShndHMpKSB7XG4gICAgICAgIGd0c0xpc3QucHVzaCh0aGlzLmd0c0Zyb21KU09OTGlzdChndHMsIGlkKSk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5pc0d0cyhndHMpKSB7XG4gICAgICAgIGd0c0xpc3QucHVzaCh0aGlzLmd0c0Zyb21KU09OKGd0cywgaWQpKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmlzRW1iZWRkZWRJbWFnZShndHMpKSB7XG4gICAgICAgIGd0c0xpc3QucHVzaCh7XG4gICAgICAgICAgaW1hZ2U6IGd0cyxcbiAgICAgICAgICBjYXB0aW9uOiAnSW1hZ2UnLFxuICAgICAgICAgIGlkLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmlzRW1iZWRkZWRJbWFnZU9iamVjdChndHMpKSB7XG4gICAgICAgIGd0c0xpc3QucHVzaCh7XG4gICAgICAgICAgaW1hZ2U6IGd0cy5pbWFnZSxcbiAgICAgICAgICBjYXB0aW9uOiBndHMuY2FwdGlvbixcbiAgICAgICAgICBpZCxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbnRlbnQ6IGd0c0xpc3QsXG4gICAgfTtcbiAgfVxuXG4gIGZsYXREZWVwKGFycjEpIHtcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6b25seS1hcnJvdy1mdW5jdGlvbnNcbiAgICByZXR1cm4gYXJyMS5yZWR1Y2UoKGFjYywgdmFsKSA9PiB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWwpKSB7XG4gICAgICAgIGFjYy5jb25jYXQodGhpcy5mbGF0RGVlcCh2YWwpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFjYy5jb25jYXQodmFsKTtcbiAgICAgIH1cbiAgICB9LCBbXSk7XG4gIH1cblxuICBpc0d0cyhpdGVtKSB7XG4gICAgcmV0dXJuICEoIWl0ZW0gfHwgaXRlbS5jID09PSBudWxsIHx8IGl0ZW0ubCA9PT0gbnVsbCB8fFxuICAgICAgaXRlbS5hID09PSBudWxsIHx8IGl0ZW0udiA9PT0gbnVsbCB8fCAhdGhpcy5pc0FycmF5KGl0ZW0udikpO1xuICB9XG5cbiAgaXNPYmplY3QoaXRlbSkge1xuICAgIHJldHVybiAoaXRlbSAmJiB0eXBlb2YgaXRlbSA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkoaXRlbSkpO1xuICB9XG5cbn1cbiJdfQ==