UNPKG

@acrodata/gui

Version:

JSON powered GUI for configurable panels.

103 lines 10.8 kB
import { Directive, Input, Pipe } from '@angular/core'; import * as i0 from "@angular/core"; /** * Lightweight EJS template engine * * @param str template string * @param data data passed to the template * @returns * * ### Example * * ```ts * const people = ['geddy', 'neil', 'alex']; * const res = ejsTmpl('<%= people.join(", ") %>', {people: people}); * console.log(res); * // => 'geddy, neil, alex' * ``` * */ export function ejsTmpl(str, data) { const fn = new Function('obj', 'var p=[],print=function(){p.push.apply(p,arguments);};' + // Introduce the data as local variables using with(){} 'with(obj){p.push("' + // Convert the template into pure JavaScript str .replace(/[\r\t\n]/g, ' ') .split('<%') .join('\t') .replace(/((^|%>)[^\t]*)'/g, '$1\r') .replace(/\t=(.*?)%>/g, '",$1,"') .split('\t') .join('");') .split('%>') .join('p.push("') .split('\r') .join('"') + '");}return p.join("");'); // Provide some basic currying to the user return data ? fn(data) : fn; } export class GuiEjsPipe { transform(value, data = {}) { return ejsTmpl(value, data); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GuiEjsPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); } static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: GuiEjsPipe, isStandalone: true, name: "ejs" }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GuiEjsPipe, decorators: [{ type: Pipe, args: [{ name: 'ejs', standalone: true, }] }] }); export class GuiFlexDirective { constructor(el) { this.el = el; this.flex = 100; } ngOnInit() { this.el.nativeElement.style.flex = `1 1 ${this.flex}%`; this.el.nativeElement.style.maxWidth = `${this.flex}%`; } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GuiFlexDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); } static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: GuiFlexDirective, isStandalone: true, selector: "[flex]", inputs: { flex: "flex" }, ngImport: i0 }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GuiFlexDirective, decorators: [{ type: Directive, args: [{ selector: '[flex]', standalone: true, }] }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { flex: [{ type: Input }] } }); export function compareValues(a, b, operator) { switch (operator) { case '$eq': return a === b; case '$ne': return a !== b; case '$gt': return (a ?? 0) > (b ?? 0); case '$lt': return (a ?? 0) < (b ?? 0); case '$gte': return (a ?? 0) >= (b ?? 0); case '$lte': return (a ?? 0) <= (b ?? 0); case '$in': return Array.isArray(b) && b.includes(a); case '$nin': return Array.isArray(b) && !b.includes(a); default: return false; } } export function getValueByPath(obj, path) { return path.split('.').reduce((acc, key) => { return acc?.['children']?.[key] ? acc['children'][key] : acc?.[key]; }, obj); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3VpLXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvamVjdHMvZ3VpL2d1aS11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBVSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDOztBQUcxRjs7Ozs7Ozs7Ozs7Ozs7OztHQWdCRztBQUNILE1BQU0sVUFBVSxPQUFPLENBQUMsR0FBVyxFQUFFLElBQVM7SUFDNUMsTUFBTSxFQUFFLEdBQUcsSUFBSSxRQUFRLENBQ3JCLEtBQUssRUFDTCx3REFBd0Q7UUFDdEQsdURBQXVEO1FBQ3ZELG9CQUFvQjtRQUNwQiw0Q0FBNEM7UUFDNUMsR0FBRzthQUNBLE9BQU8sQ0FBQyxXQUFXLEVBQUUsR0FBRyxDQUFDO2FBQ3pCLEtBQUssQ0FBQyxJQUFJLENBQUM7YUFDWCxJQUFJLENBQUMsSUFBSSxDQUFDO2FBQ1YsT0FBTyxDQUFDLGtCQUFrQixFQUFFLE1BQU0sQ0FBQzthQUNuQyxPQUFPLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQzthQUNoQyxLQUFLLENBQUMsSUFBSSxDQUFDO2FBQ1gsSUFBSSxDQUFDLEtBQUssQ0FBQzthQUNYLEtBQUssQ0FBQyxJQUFJLENBQUM7YUFDWCxJQUFJLENBQUMsVUFBVSxDQUFDO2FBQ2hCLEtBQUssQ0FBQyxJQUFJLENBQUM7YUFDWCxJQUFJLENBQUMsR0FBRyxDQUFDO1FBQ1osd0JBQXdCLENBQzNCLENBQUM7SUFFRiwwQ0FBMEM7SUFDMUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQzlCLENBQUM7QUFNRCxNQUFNLE9BQU8sVUFBVTtJQUNyQixTQUFTLENBQUMsS0FBYSxFQUFFLElBQUksR0FBRyxFQUFFO1FBQ2hDLE9BQU8sT0FBTyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM5QixDQUFDOytHQUhVLFVBQVU7NkdBQVYsVUFBVTs7NEZBQVYsVUFBVTtrQkFKdEIsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsS0FBSztvQkFDWCxVQUFVLEVBQUUsSUFBSTtpQkFDakI7O0FBV0QsTUFBTSxPQUFPLGdCQUFnQjtJQUczQixZQUFvQixFQUFjO1FBQWQsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUZ6QixTQUFJLEdBQXVCLEdBQUcsQ0FBQztJQUVILENBQUM7SUFFdEMsUUFBUTtRQUNOLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsT0FBTyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUM7UUFDdkQsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQztJQUN6RCxDQUFDOytHQVJVLGdCQUFnQjttR0FBaEIsZ0JBQWdCOzs0RkFBaEIsZ0JBQWdCO2tCQUo1QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxRQUFRO29CQUNsQixVQUFVLEVBQUUsSUFBSTtpQkFDakI7K0VBRVUsSUFBSTtzQkFBWixLQUFLOztBQVVSLE1BQU0sVUFBVSxhQUFhLENBQUMsQ0FBa0IsRUFBRSxDQUFrQixFQUFFLFFBQXFCO0lBQ3pGLFFBQVEsUUFBUSxFQUFFLENBQUM7UUFDakIsS0FBSyxLQUFLO1lBQ1IsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pCLEtBQUssS0FBSztZQUNSLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqQixLQUFLLEtBQUs7WUFDUixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQzdCLEtBQUssS0FBSztZQUNSLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDN0IsS0FBSyxNQUFNO1lBQ1QsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUM5QixLQUFLLE1BQU07WUFDVCxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQzlCLEtBQUssS0FBSztZQUNSLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNDLEtBQUssTUFBTTtZQUNULE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUM7WUFDRSxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0FBQ0gsQ0FBQztBQUVELE1BQU0sVUFBVSxjQUFjLENBQUMsR0FBd0IsRUFBRSxJQUFZO0lBQ25FLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFvQyxFQUFFLEdBQUcsRUFBRSxFQUFFO1FBQzFFLE9BQU8sR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN0RSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDVixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBJbnB1dCwgT25Jbml0LCBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBHdWlEZWZhdWx0VmFsdWUsIEd1aU9wZXJhdG9yIH0gZnJvbSAnLi9pbnRlcmZhY2UnO1xuXG4vKipcbiAqIExpZ2h0d2VpZ2h0IEVKUyB0ZW1wbGF0ZSBlbmdpbmVcbiAqXG4gKiBAcGFyYW0gc3RyICB0ZW1wbGF0ZSBzdHJpbmdcbiAqIEBwYXJhbSBkYXRhIGRhdGEgcGFzc2VkIHRvIHRoZSB0ZW1wbGF0ZVxuICogQHJldHVybnNcbiAqXG4gKiAjIyMgRXhhbXBsZVxuICpcbiAqIGBgYHRzXG4gKiBjb25zdCBwZW9wbGUgPSBbJ2dlZGR5JywgJ25laWwnLCAnYWxleCddO1xuICogY29uc3QgcmVzID0gZWpzVG1wbCgnPCU9IHBlb3BsZS5qb2luKFwiLCBcIikgJT4nLCB7cGVvcGxlOiBwZW9wbGV9KTtcbiAqIGNvbnNvbGUubG9nKHJlcyk7XG4gKiAvLyA9PiAnZ2VkZHksIG5laWwsIGFsZXgnXG4gKiBgYGBcbiAqXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlanNUbXBsKHN0cjogc3RyaW5nLCBkYXRhOiBhbnkpIHtcbiAgY29uc3QgZm4gPSBuZXcgRnVuY3Rpb24oXG4gICAgJ29iaicsXG4gICAgJ3ZhciBwPVtdLHByaW50PWZ1bmN0aW9uKCl7cC5wdXNoLmFwcGx5KHAsYXJndW1lbnRzKTt9OycgK1xuICAgICAgLy8gSW50cm9kdWNlIHRoZSBkYXRhIGFzIGxvY2FsIHZhcmlhYmxlcyB1c2luZyB3aXRoKCl7fVxuICAgICAgJ3dpdGgob2JqKXtwLnB1c2goXCInICtcbiAgICAgIC8vIENvbnZlcnQgdGhlIHRlbXBsYXRlIGludG8gcHVyZSBKYXZhU2NyaXB0XG4gICAgICBzdHJcbiAgICAgICAgLnJlcGxhY2UoL1tcXHJcXHRcXG5dL2csICcgJylcbiAgICAgICAgLnNwbGl0KCc8JScpXG4gICAgICAgIC5qb2luKCdcXHQnKVxuICAgICAgICAucmVwbGFjZSgvKChefCU+KVteXFx0XSopJy9nLCAnJDFcXHInKVxuICAgICAgICAucmVwbGFjZSgvXFx0PSguKj8pJT4vZywgJ1wiLCQxLFwiJylcbiAgICAgICAgLnNwbGl0KCdcXHQnKVxuICAgICAgICAuam9pbignXCIpOycpXG4gICAgICAgIC5zcGxpdCgnJT4nKVxuICAgICAgICAuam9pbigncC5wdXNoKFwiJylcbiAgICAgICAgLnNwbGl0KCdcXHInKVxuICAgICAgICAuam9pbignXCInKSArXG4gICAgICAnXCIpO31yZXR1cm4gcC5qb2luKFwiXCIpOydcbiAgKTtcblxuICAvLyBQcm92aWRlIHNvbWUgYmFzaWMgY3VycnlpbmcgdG8gdGhlIHVzZXJcbiAgcmV0dXJuIGRhdGEgPyBmbihkYXRhKSA6IGZuO1xufVxuXG5AUGlwZSh7XG4gIG5hbWU6ICdlanMnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBHdWlFanNQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHRyYW5zZm9ybSh2YWx1ZTogc3RyaW5nLCBkYXRhID0ge30pOiBzdHJpbmcge1xuICAgIHJldHVybiBlanNUbXBsKHZhbHVlLCBkYXRhKTtcbiAgfVxufVxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbZmxleF0nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBHdWlGbGV4RGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgZmxleDogbnVtYmVyIHwgdW5kZWZpbmVkID0gMTAwO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWw6IEVsZW1lbnRSZWYpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnN0eWxlLmZsZXggPSBgMSAxICR7dGhpcy5mbGV4fSVgO1xuICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5zdHlsZS5tYXhXaWR0aCA9IGAke3RoaXMuZmxleH0lYDtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tcGFyZVZhbHVlcyhhOiBHdWlEZWZhdWx0VmFsdWUsIGI6IEd1aURlZmF1bHRWYWx1ZSwgb3BlcmF0b3I6IEd1aU9wZXJhdG9yKSB7XG4gIHN3aXRjaCAob3BlcmF0b3IpIHtcbiAgICBjYXNlICckZXEnOlxuICAgICAgcmV0dXJuIGEgPT09IGI7XG4gICAgY2FzZSAnJG5lJzpcbiAgICAgIHJldHVybiBhICE9PSBiO1xuICAgIGNhc2UgJyRndCc6XG4gICAgICByZXR1cm4gKGEgPz8gMCkgPiAoYiA/PyAwKTtcbiAgICBjYXNlICckbHQnOlxuICAgICAgcmV0dXJuIChhID8/IDApIDwgKGIgPz8gMCk7XG4gICAgY2FzZSAnJGd0ZSc6XG4gICAgICByZXR1cm4gKGEgPz8gMCkgPj0gKGIgPz8gMCk7XG4gICAgY2FzZSAnJGx0ZSc6XG4gICAgICByZXR1cm4gKGEgPz8gMCkgPD0gKGIgPz8gMCk7XG4gICAgY2FzZSAnJGluJzpcbiAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KGIpICYmIGIuaW5jbHVkZXMoYSk7XG4gICAgY2FzZSAnJG5pbic6XG4gICAgICByZXR1cm4gQXJyYXkuaXNBcnJheShiKSAmJiAhYi5pbmNsdWRlcyhhKTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRWYWx1ZUJ5UGF0aChvYmo6IFJlY29yZDxzdHJpbmcsIGFueT4sIHBhdGg6IHN0cmluZykge1xuICByZXR1cm4gcGF0aC5zcGxpdCgnLicpLnJlZHVjZSgoYWNjOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkLCBrZXkpID0+IHtcbiAgICByZXR1cm4gYWNjPy5bJ2NoaWxkcmVuJ10/LltrZXldID8gYWNjWydjaGlsZHJlbiddW2tleV0gOiBhY2M/LltrZXldO1xuICB9LCBvYmopO1xufVxuIl19