UNPKG

@ng-flexy/layout

Version:

Flexy components and tools to build Angular 8+ applications

65 lines 9.29 kB
import { Inject, Injectable, Optional } from '@angular/core'; import { parseFormJson } from './layout-json-mapper.utils'; import { FLEXY_COMPONENTS_MAP } from '../layout-options.token'; import * as i0 from "@angular/core"; import * as i1 from "../layout-options.token"; export class FlexyLayoutJsonMapperService { constructor(componentMap) { this.componentMap = componentMap; } get supportedComponents() { return Object.keys(this.componentMap); } parse(json) { return this.map(parseFormJson(json)); } assignMap(map) { if (map) { Object.assign(this.componentMap, map); } } map(json, parentSchema = null) { console.log({ xx: this.componentMap }); const schema = []; if (json) { json.forEach((jsonItem, index) => { const schemaItem = this.mapItem(jsonItem, '' + index, parentSchema); if (jsonItem.children) { schemaItem.children = this.map(jsonItem.children); } schema.push(schemaItem); }); } return schema; } mapItem(jsonItem, id = '', parent = null) { const schemaItem = { attributes: jsonItem.attributes }; if (jsonItem.component) { const componentJsonItem = jsonItem; if (this.componentMap && this.componentMap[componentJsonItem.component]) { schemaItem.componentType = this.componentMap[componentJsonItem.component]; schemaItem.componentName = componentJsonItem.component; schemaItem.componentId = componentJsonItem.id; schemaItem.componentInputs = componentJsonItem.properties ? componentJsonItem.properties : {}; } else { console.error(`Component ${componentJsonItem.component} can't be mapped`); } } schemaItem.id = (parent && parent.id ? parent.id + '/' : '') + '' + (id ? id : Date.now()); schemaItem.parent = parent; return schemaItem; } } FlexyLayoutJsonMapperService.ɵprov = i0.ɵɵdefineInjectable({ factory: function FlexyLayoutJsonMapperService_Factory() { return new FlexyLayoutJsonMapperService(i0.ɵɵinject(i1.FLEXY_COMPONENTS_MAP, 8)); }, token: FlexyLayoutJsonMapperService, providedIn: "root" }); FlexyLayoutJsonMapperService.decorators = [ { type: Injectable, args: [{ providedIn: "root" },] } ]; FlexyLayoutJsonMapperService.ctorParameters = () => [ { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [FLEXY_COMPONENTS_MAP,] }] } ]; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LWpzb24tbWFwcGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9sYXlvdXQvc3JjL2xpYi9zZXJ2aWNlcy9sYXlvdXQtanNvbi1tYXBwZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFRN0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzNELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7QUFLL0QsTUFBTSxPQUFPLDRCQUE0QjtJQUt2QyxZQUE4RCxZQUFxQztRQUFyQyxpQkFBWSxHQUFaLFlBQVksQ0FBeUI7SUFDbkcsQ0FBQztJQUxELElBQUksbUJBQW1CO1FBQ3JCLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUtELEtBQUssQ0FBQyxJQUFxQjtRQUN6QixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELFNBQVMsQ0FBQyxHQUE0QjtRQUNwQyxJQUFJLEdBQUcsRUFBRTtZQUNQLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxHQUFHLENBQUMsQ0FBQztTQUN2QztJQUNILENBQUM7SUFFRCxHQUFHLENBQUMsSUFBNkIsRUFBRSxlQUFrQyxJQUFJO1FBQ3ZFLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBQyxDQUFDLENBQUE7UUFDcEMsTUFBTSxNQUFNLEdBQXdCLEVBQUUsQ0FBQztRQUN2QyxJQUFJLElBQUksRUFBRTtZQUNSLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLEVBQUUsS0FBSyxFQUFFLEVBQUU7Z0JBQy9CLE1BQU0sVUFBVSxHQUFzQixJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxFQUFFLEdBQUcsS0FBSyxFQUFFLFlBQVksQ0FBQyxDQUFDO2dCQUN2RixJQUFJLFFBQVEsQ0FBQyxRQUFRLEVBQUU7b0JBQ3JCLFVBQVUsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7aUJBQ25EO2dCQUNELE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDMUIsQ0FBQyxDQUFDLENBQUM7U0FDSjtRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxPQUFPLENBQUMsUUFBK0IsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLFNBQTRCLElBQUk7UUFDaEYsTUFBTSxVQUFVLEdBQXNCO1lBQ3BDLFVBQVUsRUFBRSxRQUFRLENBQUMsVUFBVTtTQUNoQyxDQUFDO1FBQ0YsSUFBSyxRQUEyQyxDQUFDLFNBQVMsRUFBRTtZQUMxRCxNQUFNLGlCQUFpQixHQUFHLFFBQTBDLENBQUM7WUFDckUsSUFBSSxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLEVBQUU7Z0JBQ3RFLFVBQXlDLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ3pHLFVBQXlDLENBQUMsYUFBYSxHQUFHLGlCQUFpQixDQUFDLFNBQVMsQ0FBQztnQkFDdEYsVUFBeUMsQ0FBQyxXQUFXLEdBQUcsaUJBQWlCLENBQUMsRUFBRSxDQUFDO2dCQUM3RSxVQUF5QyxDQUFDLGVBQWUsR0FBRyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2FBQy9IO2lCQUFNO2dCQUNMLE9BQU8sQ0FBQyxLQUFLLENBQUMsYUFBYSxpQkFBaUIsQ0FBQyxTQUFTLGtCQUFrQixDQUFDLENBQUM7YUFDM0U7U0FDRjtRQUVELFVBQVUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUMzRixVQUFVLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUUzQixPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDOzs7O1lBekRGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7OzRDQU1jLFFBQVEsWUFBSSxNQUFNLFNBQUMsb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmxleHlMYXlvdXRDb21wb25lbnRTY2hlbWEsIEZsZXh5TGF5b3V0U2NoZW1hIH0gZnJvbSAnLi4vbW9kZWwvbGF5b3V0LXNjaGVtYS5tb2RlbCc7XG5pbXBvcnQgeyBGbGV4eUxheW91dENvbXBvbmVudE1hcCB9IGZyb20gJy4uL21vZGVsL2NvbXBvbmVudC1tYXAubW9kZWwnO1xuaW1wb3J0IHtcbiAgRmxleHlMYXlvdXRDb21wb25lbnRKc29uU2NoZW1hLFxuICBGbGV4eUxheW91dEpzb24sXG4gIEZsZXh5TGF5b3V0SnNvblNjaGVtYVxufSBmcm9tICcuLi9tb2RlbC9sYXlvdXQtanNvbi1zY2hlbWEubW9kZWwnO1xuaW1wb3J0IHsgcGFyc2VGb3JtSnNvbiB9IGZyb20gJy4vbGF5b3V0LWpzb24tbWFwcGVyLnV0aWxzJztcbmltcG9ydCB7IEZMRVhZX0NPTVBPTkVOVFNfTUFQIH0gZnJvbSAnLi4vbGF5b3V0LW9wdGlvbnMudG9rZW4nO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46IFwicm9vdFwiXG59KVxuZXhwb3J0IGNsYXNzIEZsZXh5TGF5b3V0SnNvbk1hcHBlclNlcnZpY2Uge1xuICBnZXQgc3VwcG9ydGVkQ29tcG9uZW50cygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuY29tcG9uZW50TWFwKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIEBJbmplY3QoRkxFWFlfQ09NUE9ORU5UU19NQVApIHByaXZhdGUgY29tcG9uZW50TWFwOiBGbGV4eUxheW91dENvbXBvbmVudE1hcCkge1xuICB9XG5cbiAgcGFyc2UoanNvbjogRmxleHlMYXlvdXRKc29uKTogRmxleHlMYXlvdXRTY2hlbWFbXSB7XG4gICAgcmV0dXJuIHRoaXMubWFwKHBhcnNlRm9ybUpzb24oanNvbikpO1xuICB9XG5cbiAgYXNzaWduTWFwKG1hcDogRmxleHlMYXlvdXRDb21wb25lbnRNYXApIHtcbiAgICBpZiAobWFwKSB7XG4gICAgICBPYmplY3QuYXNzaWduKHRoaXMuY29tcG9uZW50TWFwLCBtYXApO1xuICAgIH1cbiAgfVxuXG4gIG1hcChqc29uOiBGbGV4eUxheW91dEpzb25TY2hlbWFbXSwgcGFyZW50U2NoZW1hOiBGbGV4eUxheW91dFNjaGVtYSA9IG51bGwpOiBGbGV4eUxheW91dFNjaGVtYVtdIHtcbiAgICBjb25zb2xlLmxvZyh7eHg6IHRoaXMuY29tcG9uZW50TWFwfSlcbiAgICBjb25zdCBzY2hlbWE6IEZsZXh5TGF5b3V0U2NoZW1hW10gPSBbXTtcbiAgICBpZiAoanNvbikge1xuICAgICAganNvbi5mb3JFYWNoKChqc29uSXRlbSwgaW5kZXgpID0+IHtcbiAgICAgICAgY29uc3Qgc2NoZW1hSXRlbTogRmxleHlMYXlvdXRTY2hlbWEgPSB0aGlzLm1hcEl0ZW0oanNvbkl0ZW0sICcnICsgaW5kZXgsIHBhcmVudFNjaGVtYSk7XG4gICAgICAgIGlmIChqc29uSXRlbS5jaGlsZHJlbikge1xuICAgICAgICAgIHNjaGVtYUl0ZW0uY2hpbGRyZW4gPSB0aGlzLm1hcChqc29uSXRlbS5jaGlsZHJlbik7XG4gICAgICAgIH1cbiAgICAgICAgc2NoZW1hLnB1c2goc2NoZW1hSXRlbSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gc2NoZW1hO1xuICB9XG5cbiAgbWFwSXRlbShqc29uSXRlbTogRmxleHlMYXlvdXRKc29uU2NoZW1hLCBpZCA9ICcnLCBwYXJlbnQ6IEZsZXh5TGF5b3V0U2NoZW1hID0gbnVsbCk6IEZsZXh5TGF5b3V0U2NoZW1hIHtcbiAgICBjb25zdCBzY2hlbWFJdGVtOiBGbGV4eUxheW91dFNjaGVtYSA9IHtcbiAgICAgIGF0dHJpYnV0ZXM6IGpzb25JdGVtLmF0dHJpYnV0ZXNcbiAgICB9O1xuICAgIGlmICgoanNvbkl0ZW0gYXMgRmxleHlMYXlvdXRDb21wb25lbnRKc29uU2NoZW1hKS5jb21wb25lbnQpIHtcbiAgICAgIGNvbnN0IGNvbXBvbmVudEpzb25JdGVtID0ganNvbkl0ZW0gYXMgRmxleHlMYXlvdXRDb21wb25lbnRKc29uU2NoZW1hO1xuICAgICAgaWYgKHRoaXMuY29tcG9uZW50TWFwICYmIHRoaXMuY29tcG9uZW50TWFwW2NvbXBvbmVudEpzb25JdGVtLmNvbXBvbmVudF0pIHtcbiAgICAgICAgKHNjaGVtYUl0ZW0gYXMgRmxleHlMYXlvdXRDb21wb25lbnRTY2hlbWEpLmNvbXBvbmVudFR5cGUgPSB0aGlzLmNvbXBvbmVudE1hcFtjb21wb25lbnRKc29uSXRlbS5jb21wb25lbnRdO1xuICAgICAgICAoc2NoZW1hSXRlbSBhcyBGbGV4eUxheW91dENvbXBvbmVudFNjaGVtYSkuY29tcG9uZW50TmFtZSA9IGNvbXBvbmVudEpzb25JdGVtLmNvbXBvbmVudDtcbiAgICAgICAgKHNjaGVtYUl0ZW0gYXMgRmxleHlMYXlvdXRDb21wb25lbnRTY2hlbWEpLmNvbXBvbmVudElkID0gY29tcG9uZW50SnNvbkl0ZW0uaWQ7XG4gICAgICAgIChzY2hlbWFJdGVtIGFzIEZsZXh5TGF5b3V0Q29tcG9uZW50U2NoZW1hKS5jb21wb25lbnRJbnB1dHMgPSBjb21wb25lbnRKc29uSXRlbS5wcm9wZXJ0aWVzID8gY29tcG9uZW50SnNvbkl0ZW0ucHJvcGVydGllcyA6IHt9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihgQ29tcG9uZW50ICR7Y29tcG9uZW50SnNvbkl0ZW0uY29tcG9uZW50fSBjYW4ndCBiZSBtYXBwZWRgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBzY2hlbWFJdGVtLmlkID0gKHBhcmVudCAmJiBwYXJlbnQuaWQgPyBwYXJlbnQuaWQgKyAnLycgOiAnJykgKyAnJyArIChpZCA/IGlkIDogRGF0ZS5ub3coKSk7XG4gICAgc2NoZW1hSXRlbS5wYXJlbnQgPSBwYXJlbnQ7XG5cbiAgICByZXR1cm4gc2NoZW1hSXRlbTtcbiAgfVxufVxuIl19