@acrodata/gui
Version:
JSON powered GUI for configurable panels.
103 lines • 10.8 kB
JavaScript
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