@myrmidon/gve-core 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +83 -0
- package/esm2022/lib/components/animation-timeline/animation-timeline.component.mjs +176 -0
- package/esm2022/lib/components/animation-tween/animation-tween.component.mjs +161 -0
- package/esm2022/lib/components/animation-vars/animation-vars.component.mjs +141 -0
- package/esm2022/lib/components/base-text-char/base-text-char.component.mjs +37 -0
- package/esm2022/lib/components/base-text-editor/base-text-editor.component.mjs +111 -0
- package/esm2022/lib/components/base-text-view/base-text-view.component.mjs +125 -0
- package/esm2022/lib/components/chain-operation-editor/chain-operation-editor.component.mjs +512 -0
- package/esm2022/lib/components/chain-result-view/chain-result-view.component.mjs +190 -0
- package/esm2022/lib/components/feature-editor/feature-editor.component.mjs +185 -0
- package/esm2022/lib/components/feature-set-editor/feature-set-editor.component.mjs +152 -0
- package/esm2022/lib/components/feature-set-view/feature-set-view.component.mjs +80 -0
- package/esm2022/lib/components/ln-heights-editor/ln-heights-editor.component.mjs +95 -0
- package/esm2022/lib/components/operation-source-editor/operation-source-editor.component.mjs +106 -0
- package/esm2022/lib/components/simple-tree/simple-tree.component.mjs +56 -0
- package/esm2022/lib/components/snapshot-editor/snapshot-editor.component.mjs +510 -0
- package/esm2022/lib/components/steps-map/steps-map.component.mjs +55 -0
- package/esm2022/lib/models.mjs +2 -0
- package/esm2022/lib/services/gve-api.service.mjs +52 -0
- package/esm2022/lib/services/settings.service.mjs +86 -0
- package/esm2022/lib/validators/svg-validators.mjs +28 -0
- package/esm2022/myrmidon-gve-core.mjs +5 -0
- package/esm2022/public-api.mjs +23 -0
- package/fesm2022/myrmidon-gve-core.mjs +2592 -0
- package/fesm2022/myrmidon-gve-core.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/components/animation-timeline/animation-timeline.component.d.ts +42 -0
- package/lib/components/animation-tween/animation-tween.component.d.ts +47 -0
- package/lib/components/animation-vars/animation-vars.component.d.ts +30 -0
- package/lib/components/base-text-char/base-text-char.component.d.ts +29 -0
- package/lib/components/base-text-editor/base-text-editor.component.d.ts +40 -0
- package/lib/components/base-text-view/base-text-view.component.d.ts +29 -0
- package/lib/components/chain-operation-editor/chain-operation-editor.component.d.ts +102 -0
- package/lib/components/chain-result-view/chain-result-view.component.d.ts +44 -0
- package/lib/components/feature-editor/feature-editor.component.d.ts +72 -0
- package/lib/components/feature-set-editor/feature-set-editor.component.d.ts +55 -0
- package/lib/components/feature-set-view/feature-set-view.component.d.ts +36 -0
- package/lib/components/ln-heights-editor/ln-heights-editor.component.d.ts +22 -0
- package/lib/components/operation-source-editor/operation-source-editor.component.d.ts +24 -0
- package/lib/components/simple-tree/simple-tree.component.d.ts +16 -0
- package/lib/components/snapshot-editor/snapshot-editor.component.d.ts +105 -0
- package/lib/components/steps-map/steps-map.component.d.ts +29 -0
- package/lib/models.d.ts +7 -0
- package/lib/services/gve-api.service.d.ts +57 -0
- package/lib/services/settings.service.d.ts +53 -0
- package/lib/validators/svg-validators.d.ts +4 -0
- package/package.json +45 -0
- package/public-api.d.ts +19 -0
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
3
|
+
import { MatButtonModule } from '@angular/material/button';
|
|
4
|
+
import { MatRippleModule } from '@angular/material/core';
|
|
5
|
+
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "@angular/common";
|
|
8
|
+
import * as i2 from "@angular/material/core";
|
|
9
|
+
/**
|
|
10
|
+
* A map of steps in a chain operation context.
|
|
11
|
+
*/
|
|
12
|
+
export class StepsMapComponent {
|
|
13
|
+
constructor() {
|
|
14
|
+
/**
|
|
15
|
+
* The font size of the steps text.
|
|
16
|
+
*/
|
|
17
|
+
this.textFontSize = '0.5em';
|
|
18
|
+
/**
|
|
19
|
+
* Emitted when the selectd step has changed.
|
|
20
|
+
*/
|
|
21
|
+
this.selectedStepChange = new EventEmitter();
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* The steps to display.
|
|
25
|
+
*/
|
|
26
|
+
get steps() {
|
|
27
|
+
return this._steps;
|
|
28
|
+
}
|
|
29
|
+
set steps(value) {
|
|
30
|
+
if (this._steps === value) {
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
this.selectedStep = undefined;
|
|
34
|
+
this._steps = value || undefined;
|
|
35
|
+
}
|
|
36
|
+
onSelectStep(step) {
|
|
37
|
+
this.selectedStep = step;
|
|
38
|
+
this.selectedStepChange.emit(step);
|
|
39
|
+
}
|
|
40
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: StepsMapComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
41
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.4", type: StepsMapComponent, isStandalone: true, selector: "gve-steps-map", inputs: { steps: "steps", selectedStep: "selectedStep", textFontSize: "textFontSize" }, outputs: { selectedStepChange: "selectedStepChange" }, ngImport: i0, template: "<div>\r\n @if (steps?.length) { @for (step of steps; track step.outputTag) {\r\n <div\r\n matRipple\r\n class=\"step form-row\"\r\n [ngClass]=\"{ selected: step === selectedStep }\"\r\n (click)=\"onSelectStep(step)\"\r\n >\r\n <div class=\"tag\">\r\n <span class=\"muted-tag\">{{ step.inputTag }} ▶ </span>\r\n {{ step.outputTag }}\r\n </div>\r\n <div class=\"text\" [style.fontSize]=\"textFontSize\">{{ step.result }}</div>\r\n </div>\r\n } }\r\n</div>\r\n", styles: [".form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}.selected{background-color:#fbfb9d}.step{border-top:1px solid rgb(68,114,253);border-bottom:1px solid rgb(68,114,253);border-right:1px solid rgb(68,114,253);border-radius:6px;margin:8px 0}.tag{background-color:#4472fd;color:#fff;border:1px solid rgb(68,114,253);border-radius:6px;padding:4px;cursor:pointer}.muted-tag{color:silver}.text{font-size:.5em}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: MatRippleModule }, { kind: "directive", type: i2.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "ngmodule", type: MatTooltipModule }] }); }
|
|
42
|
+
}
|
|
43
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: StepsMapComponent, decorators: [{
|
|
44
|
+
type: Component,
|
|
45
|
+
args: [{ selector: 'gve-steps-map', standalone: true, imports: [CommonModule, MatButtonModule, MatRippleModule, MatTooltipModule], template: "<div>\r\n @if (steps?.length) { @for (step of steps; track step.outputTag) {\r\n <div\r\n matRipple\r\n class=\"step form-row\"\r\n [ngClass]=\"{ selected: step === selectedStep }\"\r\n (click)=\"onSelectStep(step)\"\r\n >\r\n <div class=\"tag\">\r\n <span class=\"muted-tag\">{{ step.inputTag }} ▶ </span>\r\n {{ step.outputTag }}\r\n </div>\r\n <div class=\"text\" [style.fontSize]=\"textFontSize\">{{ step.result }}</div>\r\n </div>\r\n } }\r\n</div>\r\n", styles: [".form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}.selected{background-color:#fbfb9d}.step{border-top:1px solid rgb(68,114,253);border-bottom:1px solid rgb(68,114,253);border-right:1px solid rgb(68,114,253);border-radius:6px;margin:8px 0}.tag{background-color:#4472fd;color:#fff;border:1px solid rgb(68,114,253);border-radius:6px;padding:4px;cursor:pointer}.muted-tag{color:silver}.text{font-size:.5em}\n"] }]
|
|
46
|
+
}], propDecorators: { steps: [{
|
|
47
|
+
type: Input
|
|
48
|
+
}], selectedStep: [{
|
|
49
|
+
type: Input
|
|
50
|
+
}], textFontSize: [{
|
|
51
|
+
type: Input
|
|
52
|
+
}], selectedStepChange: [{
|
|
53
|
+
type: Output
|
|
54
|
+
}] } });
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcHMtbWFwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cm1pZG9uL2d2ZS1jb3JlL3NyYy9saWIvY29tcG9uZW50cy9zdGVwcy1tYXAvc3RlcHMtbWFwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cm1pZG9uL2d2ZS1jb3JlL3NyYy9saWIvY29tcG9uZW50cy9zdGVwcy1tYXAvc3RlcHMtbWFwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXZFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7QUFJN0Q7O0dBRUc7QUFRSCxNQUFNLE9BQU8saUJBQWlCO0lBUDlCO1FBK0JFOztXQUVHO1FBRUksaUJBQVksR0FBVyxPQUFPLENBQUM7UUFFdEM7O1dBRUc7UUFFSSx1QkFBa0IsR0FBRyxJQUFJLFlBQVksRUFBNkIsQ0FBQztLQU0zRTtJQXJDQzs7T0FFRztJQUNILElBQ1csS0FBSztRQUNkLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBQ0QsSUFBVyxLQUFLLENBQUMsS0FBcUQ7UUFDcEUsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQzFCLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFlBQVksR0FBRyxTQUFTLENBQUM7UUFDOUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLElBQUksU0FBUyxDQUFDO0lBQ25DLENBQUM7SUFvQk0sWUFBWSxDQUFDLElBQStCO1FBQ2pELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckMsQ0FBQzs4R0F2Q1UsaUJBQWlCO2tHQUFqQixpQkFBaUIsd05DbkI5QixzZkFnQkEsc2ZERFksWUFBWSw0SEFBRSxlQUFlLDhCQUFFLGVBQWUsa1NBQUUsZ0JBQWdCOzsyRkFJL0QsaUJBQWlCO2tCQVA3QixTQUFTOytCQUNFLGVBQWUsY0FDYixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsQ0FBQzs4QkFXaEUsS0FBSztzQkFEZixLQUFLO2dCQWdCQyxZQUFZO3NCQURsQixLQUFLO2dCQU9DLFlBQVk7c0JBRGxCLEtBQUs7Z0JBT0Msa0JBQWtCO3NCQUR4QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XHJcbmltcG9ydCB7IE1hdFJpcHBsZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XHJcblxyXG5pbXBvcnQgeyBDaGFpbk9wZXJhdGlvbkNvbnRleHRTdGVwIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZ3ZlLWFwaS5zZXJ2aWNlJztcclxuXHJcbi8qKlxyXG4gKiBBIG1hcCBvZiBzdGVwcyBpbiBhIGNoYWluIG9wZXJhdGlvbiBjb250ZXh0LlxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdndmUtc3RlcHMtbWFwJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIE1hdEJ1dHRvbk1vZHVsZSwgTWF0UmlwcGxlTW9kdWxlLCBNYXRUb29sdGlwTW9kdWxlXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vc3RlcHMtbWFwLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vc3RlcHMtbWFwLmNvbXBvbmVudC5jc3MnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU3RlcHNNYXBDb21wb25lbnQge1xyXG4gIHByaXZhdGUgX3N0ZXBzPzogQ2hhaW5PcGVyYXRpb25Db250ZXh0U3RlcFtdO1xyXG5cclxuICAvKipcclxuICAgKiBUaGUgc3RlcHMgdG8gZGlzcGxheS5cclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBnZXQgc3RlcHMoKTogQ2hhaW5PcGVyYXRpb25Db250ZXh0U3RlcFtdIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLl9zdGVwcztcclxuICB9XHJcbiAgcHVibGljIHNldCBzdGVwcyh2YWx1ZTogQ2hhaW5PcGVyYXRpb25Db250ZXh0U3RlcFtdIHwgdW5kZWZpbmVkIHwgbnVsbCkge1xyXG4gICAgaWYgKHRoaXMuX3N0ZXBzID09PSB2YWx1ZSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLnNlbGVjdGVkU3RlcCA9IHVuZGVmaW5lZDtcclxuICAgIHRoaXMuX3N0ZXBzID0gdmFsdWUgfHwgdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIHN0ZXAgdGhhdCBpcyBjdXJyZW50bHkgc2VsZWN0ZWQuXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2VsZWN0ZWRTdGVwOiBDaGFpbk9wZXJhdGlvbkNvbnRleHRTdGVwIHwgdW5kZWZpbmVkO1xyXG5cclxuICAvKipcclxuICAgKiBUaGUgZm9udCBzaXplIG9mIHRoZSBzdGVwcyB0ZXh0LlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHRleHRGb250U2l6ZTogc3RyaW5nID0gJzAuNWVtJztcclxuXHJcbiAgLyoqXHJcbiAgICogRW1pdHRlZCB3aGVuIHRoZSBzZWxlY3RkIHN0ZXAgaGFzIGNoYW5nZWQuXHJcbiAgICovXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIHNlbGVjdGVkU3RlcENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Q2hhaW5PcGVyYXRpb25Db250ZXh0U3RlcD4oKTtcclxuXHJcbiAgcHVibGljIG9uU2VsZWN0U3RlcChzdGVwOiBDaGFpbk9wZXJhdGlvbkNvbnRleHRTdGVwKSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkU3RlcCA9IHN0ZXA7XHJcbiAgICB0aGlzLnNlbGVjdGVkU3RlcENoYW5nZS5lbWl0KHN0ZXApO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2PlxyXG4gIEBpZiAoc3RlcHM/Lmxlbmd0aCkgeyBAZm9yIChzdGVwIG9mIHN0ZXBzOyB0cmFjayBzdGVwLm91dHB1dFRhZykge1xyXG4gIDxkaXZcclxuICAgIG1hdFJpcHBsZVxyXG4gICAgY2xhc3M9XCJzdGVwIGZvcm0tcm93XCJcclxuICAgIFtuZ0NsYXNzXT1cInsgc2VsZWN0ZWQ6IHN0ZXAgPT09IHNlbGVjdGVkU3RlcCB9XCJcclxuICAgIChjbGljayk9XCJvblNlbGVjdFN0ZXAoc3RlcClcIlxyXG4gID5cclxuICAgIDxkaXYgY2xhc3M9XCJ0YWdcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJtdXRlZC10YWdcIj57eyBzdGVwLmlucHV0VGFnIH19ICYjeDI1YjY7IDwvc3Bhbj5cclxuICAgICAge3sgc3RlcC5vdXRwdXRUYWcgfX1cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInRleHRcIiBbc3R5bGUuZm9udFNpemVdPVwidGV4dEZvbnRTaXplXCI+e3sgc3RlcC5yZXN1bHQgfX08L2Rpdj5cclxuICA8L2Rpdj5cclxuICB9IH1cclxuPC9kaXY+XHJcbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlybWlkb24vZ3ZlLWNvcmUvc3JjL2xpYi9tb2RlbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBBUEkgY2FsbCByZXN1bHQgd3JhcHBlci5cclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgUmVzdWx0V3JhcHBlcjxUPiB7XHJcbiAgcmVzdWx0PzogVDtcclxuICBlcnJvcj86IHN0cmluZztcclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { catchError } from 'rxjs';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/common/http";
|
|
5
|
+
import * as i2 from "@myrmidon/ng-tools";
|
|
6
|
+
/**
|
|
7
|
+
* Service to interact with the GVE API.
|
|
8
|
+
*/
|
|
9
|
+
export class GveApiService {
|
|
10
|
+
constructor(_http, _error, _env) {
|
|
11
|
+
this._http = _http;
|
|
12
|
+
this._error = _error;
|
|
13
|
+
this._env = _env;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Parse the specified text into operations. Each operation is a line
|
|
17
|
+
* of the text.
|
|
18
|
+
* @param text The text to parse.
|
|
19
|
+
* @returns The operations.
|
|
20
|
+
*/
|
|
21
|
+
parseOperations(text) {
|
|
22
|
+
return this._http
|
|
23
|
+
.post(`${this._env.get('apiUrl')}text/operations/parse`, {
|
|
24
|
+
text,
|
|
25
|
+
})
|
|
26
|
+
.pipe(catchError(this._error.handleError));
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Run operations on the specified text.
|
|
30
|
+
*
|
|
31
|
+
* @param text The base text.
|
|
32
|
+
* @param operations The operations to run.
|
|
33
|
+
* @returns Result wrapper.
|
|
34
|
+
*/
|
|
35
|
+
runOperations(text, operations) {
|
|
36
|
+
return this._http
|
|
37
|
+
.post(`${this._env.get('apiUrl')}text/operations/run`, {
|
|
38
|
+
text,
|
|
39
|
+
operations,
|
|
40
|
+
})
|
|
41
|
+
.pipe(catchError(this._error.handleError));
|
|
42
|
+
}
|
|
43
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: GveApiService, deps: [{ token: i1.HttpClient }, { token: i2.ErrorService }, { token: i2.EnvService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
44
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: GveApiService, providedIn: 'root' }); }
|
|
45
|
+
}
|
|
46
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: GveApiService, decorators: [{
|
|
47
|
+
type: Injectable,
|
|
48
|
+
args: [{
|
|
49
|
+
providedIn: 'root',
|
|
50
|
+
}]
|
|
51
|
+
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.ErrorService }, { type: i2.EnvService }] });
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3ZlLWFwaS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlybWlkb24vZ3ZlLWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9ndmUtYXBpLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQWMsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7O0FBcUM5Qzs7R0FFRztBQUlILE1BQU0sT0FBTyxhQUFhO0lBQ3hCLFlBQ1UsS0FBaUIsRUFDakIsTUFBb0IsRUFDcEIsSUFBZ0I7UUFGaEIsVUFBSyxHQUFMLEtBQUssQ0FBWTtRQUNqQixXQUFNLEdBQU4sTUFBTSxDQUFjO1FBQ3BCLFNBQUksR0FBSixJQUFJLENBQVk7SUFDdkIsQ0FBQztJQUVKOzs7OztPQUtHO0lBQ0ksZUFBZSxDQUNwQixJQUFZO1FBRVosT0FBTyxJQUFJLENBQUMsS0FBSzthQUNkLElBQUksQ0FDSCxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyx1QkFBdUIsRUFDakQ7WUFDRSxJQUFJO1NBQ0wsQ0FDRjthQUNBLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxhQUFhLENBQ2xCLElBQWdCLEVBQ2hCLFVBQWdDO1FBRWhDLE9BQU8sSUFBSSxDQUFDLEtBQUs7YUFDZCxJQUFJLENBQ0gsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMscUJBQXFCLEVBQy9DO1lBQ0UsSUFBSTtZQUNKLFVBQVU7U0FDWCxDQUNGO2FBQ0EsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDL0MsQ0FBQzs4R0E5Q1UsYUFBYTtrSEFBYixhQUFhLGNBRlosTUFBTTs7MkZBRVAsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBjYXRjaEVycm9yIH0gZnJvbSAncnhqcyc7XHJcblxyXG5pbXBvcnQgeyBFcnJvclNlcnZpY2UsIEVudlNlcnZpY2UgfSBmcm9tICdAbXlybWlkb24vbmctdG9vbHMnO1xyXG5cclxuaW1wb3J0IHtcclxuICBDaGFyQ2hhaW5PcGVyYXRpb24sXHJcbiAgQ2hhck5vZGUsXHJcbiAgT3BlcmF0aW9uRmVhdHVyZSxcclxufSBmcm9tICdAbXlybWlkb24vZ3ZlLXNuYXBzaG90LXZpZXcnO1xyXG5cclxuaW1wb3J0IHsgUmVzdWx0V3JhcHBlciB9IGZyb20gJy4uL21vZGVscyc7XHJcblxyXG4vKipcclxuICogRXhlY3V0aW9uIHN0ZXAgb2YgYSBjaGFyLWJhc2VkIGNoYWluIG9wZXJhdGlvbi5cclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ2hhaW5PcGVyYXRpb25Db250ZXh0U3RlcCB7XHJcbiAgb3BlcmF0aW9uOiBDaGFyQ2hhaW5PcGVyYXRpb247XHJcbiAgaW5wdXRUYWc6IHN0cmluZztcclxuICBvdXRwdXRUYWc6IHN0cmluZztcclxuICByZXN1bHQ/OiBzdHJpbmc7XHJcbiAgZmVhdHVyZVNldDoge1xyXG4gICAgZmVhdHVyZXM6IE9wZXJhdGlvbkZlYXR1cmVbXTtcclxuICAgIG5vZGVGZWF0dXJlczogUmVjb3JkPHN0cmluZywgT3BlcmF0aW9uRmVhdHVyZVtdPjtcclxuICB9O1xyXG4gIHJlZk5vZGVJZHM6IG51bWJlcltdO1xyXG59XHJcblxyXG4vKipcclxuICogUmVzdWx0IG9mIGV4ZWN1dGlvbiBvZiBhIGNoYXItYmFzZWQgY2hhaW4uXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIENoYXJDaGFpblJlc3VsdCB7XHJcbiAgc3RlcHM6IENoYWluT3BlcmF0aW9uQ29udGV4dFN0ZXBbXTtcclxuICBjaGFpbkR1bXA6IHN0cmluZztcclxuICBjaGFpblRhZ3M6IHN0cmluZ1tdO1xyXG4gIHRhZ2dlZE5vZGVzOiB7IFtrZXk6IHN0cmluZ106IENoYXJOb2RlW10gfTtcclxufVxyXG5cclxuLyoqXHJcbiAqIFNlcnZpY2UgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgR1ZFIEFQSS5cclxuICovXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBHdmVBcGlTZXJ2aWNlIHtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX2h0dHA6IEh0dHBDbGllbnQsXHJcbiAgICBwcml2YXRlIF9lcnJvcjogRXJyb3JTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfZW52OiBFbnZTZXJ2aWNlXHJcbiAgKSB7fVxyXG5cclxuICAvKipcclxuICAgKiBQYXJzZSB0aGUgc3BlY2lmaWVkIHRleHQgaW50byBvcGVyYXRpb25zLiBFYWNoIG9wZXJhdGlvbiBpcyBhIGxpbmVcclxuICAgKiBvZiB0aGUgdGV4dC5cclxuICAgKiBAcGFyYW0gdGV4dCBUaGUgdGV4dCB0byBwYXJzZS5cclxuICAgKiBAcmV0dXJucyBUaGUgb3BlcmF0aW9ucy5cclxuICAgKi9cclxuICBwdWJsaWMgcGFyc2VPcGVyYXRpb25zKFxyXG4gICAgdGV4dDogc3RyaW5nXHJcbiAgKTogT2JzZXJ2YWJsZTxSZXN1bHRXcmFwcGVyPENoYXJDaGFpbk9wZXJhdGlvbltdPj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHBcclxuICAgICAgLnBvc3Q8UmVzdWx0V3JhcHBlcjxDaGFyQ2hhaW5PcGVyYXRpb25bXT4+KFxyXG4gICAgICAgIGAke3RoaXMuX2Vudi5nZXQoJ2FwaVVybCcpfXRleHQvb3BlcmF0aW9ucy9wYXJzZWAsXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgdGV4dCxcclxuICAgICAgICB9XHJcbiAgICAgIClcclxuICAgICAgLnBpcGUoY2F0Y2hFcnJvcih0aGlzLl9lcnJvci5oYW5kbGVFcnJvcikpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUnVuIG9wZXJhdGlvbnMgb24gdGhlIHNwZWNpZmllZCB0ZXh0LlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHRleHQgVGhlIGJhc2UgdGV4dC5cclxuICAgKiBAcGFyYW0gb3BlcmF0aW9ucyBUaGUgb3BlcmF0aW9ucyB0byBydW4uXHJcbiAgICogQHJldHVybnMgUmVzdWx0IHdyYXBwZXIuXHJcbiAgICovXHJcbiAgcHVibGljIHJ1bk9wZXJhdGlvbnMoXHJcbiAgICB0ZXh0OiBDaGFyTm9kZVtdLFxyXG4gICAgb3BlcmF0aW9uczogQ2hhckNoYWluT3BlcmF0aW9uW11cclxuICApOiBPYnNlcnZhYmxlPFJlc3VsdFdyYXBwZXI8Q2hhckNoYWluUmVzdWx0Pj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHBcclxuICAgICAgLnBvc3Q8UmVzdWx0V3JhcHBlcjxDaGFyQ2hhaW5SZXN1bHQ+PihcclxuICAgICAgICBgJHt0aGlzLl9lbnYuZ2V0KCdhcGlVcmwnKX10ZXh0L29wZXJhdGlvbnMvcnVuYCxcclxuICAgICAgICB7XHJcbiAgICAgICAgICB0ZXh0LFxyXG4gICAgICAgICAgb3BlcmF0aW9ucyxcclxuICAgICAgICB9XHJcbiAgICAgIClcclxuICAgICAgLnBpcGUoY2F0Y2hFcnJvcih0aGlzLl9lcnJvci5oYW5kbGVFcnJvcikpO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
/**
|
|
4
|
+
* Service to store and retrieve dynamic settings.
|
|
5
|
+
*/
|
|
6
|
+
export class SettingsService {
|
|
7
|
+
constructor() {
|
|
8
|
+
this._cache = new Map();
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Scopes the key by prefixing it with the keyPrefix if any.
|
|
12
|
+
*
|
|
13
|
+
* @param key The key to scope.
|
|
14
|
+
* @returns The scoped key.
|
|
15
|
+
*/
|
|
16
|
+
getScopedKey(key) {
|
|
17
|
+
return this.keyPrefix ? this.keyPrefix + key : key;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Sets a setting's value.
|
|
21
|
+
*
|
|
22
|
+
* @param key The key.
|
|
23
|
+
* @param value The value.
|
|
24
|
+
* @param persist True to persist this setting in local storage.
|
|
25
|
+
*/
|
|
26
|
+
set(key, value, persist = false) {
|
|
27
|
+
key = this.getScopedKey(key);
|
|
28
|
+
this._cache.set(key, value);
|
|
29
|
+
if (persist && value) {
|
|
30
|
+
localStorage.setItem(key, JSON.stringify(value));
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Get a setting's value of type T.
|
|
35
|
+
*
|
|
36
|
+
* @param key The key.
|
|
37
|
+
* @param defaultValue The default value to get when the setting
|
|
38
|
+
* is not found in the store.
|
|
39
|
+
* @returns The value.
|
|
40
|
+
*/
|
|
41
|
+
get(key, defaultValue) {
|
|
42
|
+
key = this.getScopedKey(key);
|
|
43
|
+
// immediately return value from cache
|
|
44
|
+
if (this._cache.has(key)) {
|
|
45
|
+
return this._cache.get(key);
|
|
46
|
+
}
|
|
47
|
+
// try loading value from local storage
|
|
48
|
+
const value = localStorage.getItem(key);
|
|
49
|
+
if (value) {
|
|
50
|
+
const v = JSON.parse(value);
|
|
51
|
+
this._cache.set(key, v);
|
|
52
|
+
return value;
|
|
53
|
+
}
|
|
54
|
+
// not found, return default value
|
|
55
|
+
return defaultValue;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Check if a key exists in the store.
|
|
59
|
+
*
|
|
60
|
+
* @param key The key.
|
|
61
|
+
* @returns True if the key exists in the store.
|
|
62
|
+
*/
|
|
63
|
+
contains(key) {
|
|
64
|
+
key = this.getScopedKey(key);
|
|
65
|
+
return this._cache.has(key) || localStorage.getItem(key) !== null;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Remove a setting if present.
|
|
69
|
+
*
|
|
70
|
+
* @param key The key.
|
|
71
|
+
*/
|
|
72
|
+
remove(key) {
|
|
73
|
+
key = this.getScopedKey(key);
|
|
74
|
+
this._cache.delete(key);
|
|
75
|
+
localStorage.removeItem(key);
|
|
76
|
+
}
|
|
77
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: SettingsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
78
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: SettingsService, providedIn: 'root' }); }
|
|
79
|
+
}
|
|
80
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: SettingsService, decorators: [{
|
|
81
|
+
type: Injectable,
|
|
82
|
+
args: [{
|
|
83
|
+
providedIn: 'root',
|
|
84
|
+
}]
|
|
85
|
+
}] });
|
|
86
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3Muc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cm1pZG9uL2d2ZS1jb3JlL3NyYy9saWIvc2VydmljZXMvc2V0dGluZ3Muc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUUzQzs7R0FFRztBQUlILE1BQU0sT0FBTyxlQUFlO0lBSDVCO1FBSW1CLFdBQU0sR0FBcUIsSUFBSSxHQUFHLEVBQWUsQ0FBQztLQW9GcEU7SUExRUM7Ozs7O09BS0c7SUFDSyxZQUFZLENBQUMsR0FBVztRQUM5QixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7SUFDckQsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLEdBQUcsQ0FBQyxHQUFXLEVBQUUsS0FBVSxFQUFFLE9BQU8sR0FBRyxLQUFLO1FBQ2pELEdBQUcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzdCLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM1QixJQUFJLE9BQU8sSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNyQixZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDbkQsQ0FBQztJQUNILENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0ksR0FBRyxDQUFJLEdBQVcsRUFBRSxZQUFrQjtRQUMzQyxHQUFHLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUU3QixzQ0FBc0M7UUFDdEMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3pCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDOUIsQ0FBQztRQUVELHVDQUF1QztRQUN2QyxNQUFNLEtBQUssR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3hDLElBQUksS0FBSyxFQUFFLENBQUM7WUFDVixNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzVCLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUN4QixPQUFPLEtBQVUsQ0FBQztRQUNwQixDQUFDO1FBRUQsa0NBQWtDO1FBQ2xDLE9BQU8sWUFBWSxDQUFDO0lBQ3RCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLFFBQVEsQ0FBQyxHQUFXO1FBQ3pCLEdBQUcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzdCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksWUFBWSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLENBQUM7SUFDcEUsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsR0FBVztRQUN2QixHQUFHLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN4QixZQUFZLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQy9CLENBQUM7OEdBcEZVLGVBQWU7a0hBQWYsZUFBZSxjQUZkLE1BQU07OzJGQUVQLGVBQWU7a0JBSDNCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuLyoqXHJcbiAqIFNlcnZpY2UgdG8gc3RvcmUgYW5kIHJldHJpZXZlIGR5bmFtaWMgc2V0dGluZ3MuXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2V0dGluZ3NTZXJ2aWNlIHtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9jYWNoZTogTWFwPHN0cmluZywgYW55PiA9IG5ldyBNYXA8c3RyaW5nLCBhbnk+KCk7XHJcblxyXG4gIC8qKlxyXG4gICAqIFByZWZpeCB0byBzY29wZSB0aGUga2V5cy4gVGhpcyBwcmVmaXggaXMgdXNlZCBpbnRlcm5hbGx5IHRvIHNjb3BlIHRoZSBrZXlzXHJcbiAgICogc28gdGhhdCB0aGV5IGNhbm5vdCBjb25mbGljdCB3aXRoIG90aGVyIGtleXMgaW4gdGhlIGxvY2FsIHN0b3JhZ2UuXHJcbiAgICogVGhlIHByZWZpeCBpcyB0b3RhbGx5IHRyYW5zcGFyZW50IHRvIHRoZSB1c2VyIG9mIHRoZSBzZXJ2aWNlLCB3aG8gc2hvdWxkXHJcbiAgICogdXNlIHRoZSBrZXlzIHdpdGhvdXQgdGhlIHByZWZpeC5cclxuICAgKi9cclxuICBwdWJsaWMga2V5UHJlZml4Pzogc3RyaW5nO1xyXG5cclxuICAvKipcclxuICAgKiBTY29wZXMgdGhlIGtleSBieSBwcmVmaXhpbmcgaXQgd2l0aCB0aGUga2V5UHJlZml4IGlmIGFueS5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBrZXkgVGhlIGtleSB0byBzY29wZS5cclxuICAgKiBAcmV0dXJucyBUaGUgc2NvcGVkIGtleS5cclxuICAgKi9cclxuICBwcml2YXRlIGdldFNjb3BlZEtleShrZXk6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5rZXlQcmVmaXggPyB0aGlzLmtleVByZWZpeCArIGtleSA6IGtleTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHMgYSBzZXR0aW5nJ3MgdmFsdWUuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ga2V5IFRoZSBrZXkuXHJcbiAgICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZS5cclxuICAgKiBAcGFyYW0gcGVyc2lzdCBUcnVlIHRvIHBlcnNpc3QgdGhpcyBzZXR0aW5nIGluIGxvY2FsIHN0b3JhZ2UuXHJcbiAgICovXHJcbiAgcHVibGljIHNldChrZXk6IHN0cmluZywgdmFsdWU6IGFueSwgcGVyc2lzdCA9IGZhbHNlKSB7XHJcbiAgICBrZXkgPSB0aGlzLmdldFNjb3BlZEtleShrZXkpO1xyXG4gICAgdGhpcy5fY2FjaGUuc2V0KGtleSwgdmFsdWUpO1xyXG4gICAgaWYgKHBlcnNpc3QgJiYgdmFsdWUpIHtcclxuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oa2V5LCBKU09OLnN0cmluZ2lmeSh2YWx1ZSkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IGEgc2V0dGluZydzIHZhbHVlIG9mIHR5cGUgVC5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBrZXkgVGhlIGtleS5cclxuICAgKiBAcGFyYW0gZGVmYXVsdFZhbHVlIFRoZSBkZWZhdWx0IHZhbHVlIHRvIGdldCB3aGVuIHRoZSBzZXR0aW5nXHJcbiAgICogaXMgbm90IGZvdW5kIGluIHRoZSBzdG9yZS5cclxuICAgKiBAcmV0dXJucyBUaGUgdmFsdWUuXHJcbiAgICovXHJcbiAgcHVibGljIGdldDxUPihrZXk6IHN0cmluZywgZGVmYXVsdFZhbHVlPzogYW55KTogVCB7XHJcbiAgICBrZXkgPSB0aGlzLmdldFNjb3BlZEtleShrZXkpO1xyXG5cclxuICAgIC8vIGltbWVkaWF0ZWx5IHJldHVybiB2YWx1ZSBmcm9tIGNhY2hlXHJcbiAgICBpZiAodGhpcy5fY2FjaGUuaGFzKGtleSkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuX2NhY2hlLmdldChrZXkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIHRyeSBsb2FkaW5nIHZhbHVlIGZyb20gbG9jYWwgc3RvcmFnZVxyXG4gICAgY29uc3QgdmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpO1xyXG4gICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgIGNvbnN0IHYgPSBKU09OLnBhcnNlKHZhbHVlKTtcclxuICAgICAgdGhpcy5fY2FjaGUuc2V0KGtleSwgdik7XHJcbiAgICAgIHJldHVybiB2YWx1ZSBhcyBUO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIG5vdCBmb3VuZCwgcmV0dXJuIGRlZmF1bHQgdmFsdWVcclxuICAgIHJldHVybiBkZWZhdWx0VmFsdWU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDaGVjayBpZiBhIGtleSBleGlzdHMgaW4gdGhlIHN0b3JlLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIGtleSBUaGUga2V5LlxyXG4gICAqIEByZXR1cm5zIFRydWUgaWYgdGhlIGtleSBleGlzdHMgaW4gdGhlIHN0b3JlLlxyXG4gICAqL1xyXG4gIHB1YmxpYyBjb250YWlucyhrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAga2V5ID0gdGhpcy5nZXRTY29wZWRLZXkoa2V5KTtcclxuICAgIHJldHVybiB0aGlzLl9jYWNoZS5oYXMoa2V5KSB8fCBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpICE9PSBudWxsO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVtb3ZlIGEgc2V0dGluZyBpZiBwcmVzZW50LlxyXG4gICAqXHJcbiAgICogQHBhcmFtIGtleSBUaGUga2V5LlxyXG4gICAqL1xyXG4gIHB1YmxpYyByZW1vdmUoa2V5OiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGtleSA9IHRoaXMuZ2V0U2NvcGVkS2V5KGtleSk7XHJcbiAgICB0aGlzLl9jYWNoZS5kZWxldGUoa2V5KTtcclxuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGtleSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export class SvgValidators {
|
|
2
|
+
static rootGValidator() {
|
|
3
|
+
return (control) => {
|
|
4
|
+
if (!control.value) {
|
|
5
|
+
return null;
|
|
6
|
+
}
|
|
7
|
+
const parser = new DOMParser();
|
|
8
|
+
let error = null;
|
|
9
|
+
let svgRoot;
|
|
10
|
+
try {
|
|
11
|
+
const doc = parser.parseFromString(control.value, 'image/svg+xml');
|
|
12
|
+
svgRoot =
|
|
13
|
+
doc.documentElement.nodeName === 'svg' ? doc.documentElement : null;
|
|
14
|
+
}
|
|
15
|
+
catch (e) {
|
|
16
|
+
error = { svgInvalid: { value: control.value } };
|
|
17
|
+
}
|
|
18
|
+
if (!error && svgRoot) {
|
|
19
|
+
const gElements = svgRoot.getElementsByTagName('g');
|
|
20
|
+
if (gElements.length !== 1 || svgRoot.childNodes.length > 1) {
|
|
21
|
+
error = { svgInvalidRoot: { value: control.value } };
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return error;
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ZnLXZhbGlkYXRvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJtaWRvbi9ndmUtY29yZS9zcmMvbGliL3ZhbGlkYXRvcnMvc3ZnLXZhbGlkYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFPLGFBQWE7SUFDeEIsTUFBTSxDQUFDLGNBQWM7UUFDbkIsT0FBTyxDQUFDLE9BQXdCLEVBQWlDLEVBQUU7WUFDakUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDbkIsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDO1lBQ0QsTUFBTSxNQUFNLEdBQUcsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUMvQixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUM7WUFDakIsSUFBSSxPQUFPLENBQUM7WUFFWixJQUFJLENBQUM7Z0JBQ0gsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLGVBQWUsQ0FBQyxDQUFDO2dCQUNuRSxPQUFPO29CQUNMLEdBQUcsQ0FBQyxlQUFlLENBQUMsUUFBUSxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQ3hFLENBQUM7WUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUNYLEtBQUssR0FBRyxFQUFFLFVBQVUsRUFBRSxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUNuRCxDQUFDO1lBRUQsSUFBSSxDQUFDLEtBQUssSUFBSSxPQUFPLEVBQUUsQ0FBQztnQkFDdEIsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNwRCxJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUM1RCxLQUFLLEdBQUcsRUFBRSxjQUFjLEVBQUUsRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUM7Z0JBQ3ZELENBQUM7WUFDSCxDQUFDO1lBRUQsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDLENBQUM7SUFDSixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRvckZuIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuZXhwb3J0IGNsYXNzIFN2Z1ZhbGlkYXRvcnMge1xyXG4gIHN0YXRpYyByb290R1ZhbGlkYXRvcigpOiBWYWxpZGF0b3JGbiB7XHJcbiAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHsgW2tleTogc3RyaW5nXTogYW55IH0gfCBudWxsID0+IHtcclxuICAgICAgaWYgKCFjb250cm9sLnZhbHVlKSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgcGFyc2VyID0gbmV3IERPTVBhcnNlcigpO1xyXG4gICAgICBsZXQgZXJyb3IgPSBudWxsO1xyXG4gICAgICBsZXQgc3ZnUm9vdDtcclxuXHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgY29uc3QgZG9jID0gcGFyc2VyLnBhcnNlRnJvbVN0cmluZyhjb250cm9sLnZhbHVlLCAnaW1hZ2Uvc3ZnK3htbCcpO1xyXG4gICAgICAgIHN2Z1Jvb3QgPVxyXG4gICAgICAgICAgZG9jLmRvY3VtZW50RWxlbWVudC5ub2RlTmFtZSA9PT0gJ3N2ZycgPyBkb2MuZG9jdW1lbnRFbGVtZW50IDogbnVsbDtcclxuICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgIGVycm9yID0geyBzdmdJbnZhbGlkOiB7IHZhbHVlOiBjb250cm9sLnZhbHVlIH0gfTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKCFlcnJvciAmJiBzdmdSb290KSB7XHJcbiAgICAgICAgY29uc3QgZ0VsZW1lbnRzID0gc3ZnUm9vdC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnZycpO1xyXG4gICAgICAgIGlmIChnRWxlbWVudHMubGVuZ3RoICE9PSAxIHx8IHN2Z1Jvb3QuY2hpbGROb2Rlcy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICBlcnJvciA9IHsgc3ZnSW52YWxpZFJvb3Q6IHsgdmFsdWU6IGNvbnRyb2wudmFsdWUgfSB9O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIGVycm9yO1xyXG4gICAgfTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './public-api';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXlybWlkb24tZ3ZlLWNvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJtaWRvbi9ndmUtY29yZS9zcmMvbXlybWlkb24tZ3ZlLWNvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Public API Surface of gve-core
|
|
3
|
+
*/
|
|
4
|
+
export * from './lib/models';
|
|
5
|
+
export * from './lib/components/animation-timeline/animation-timeline.component';
|
|
6
|
+
export * from './lib/components/animation-tween/animation-tween.component';
|
|
7
|
+
export * from './lib/components/animation-vars/animation-vars.component';
|
|
8
|
+
export * from './lib/components/base-text-char/base-text-char.component';
|
|
9
|
+
export * from './lib/components/base-text-editor/base-text-editor.component';
|
|
10
|
+
export * from './lib/components/base-text-view/base-text-view.component';
|
|
11
|
+
export * from './lib/components/chain-operation-editor/chain-operation-editor.component';
|
|
12
|
+
export * from './lib/components/chain-result-view/chain-result-view.component';
|
|
13
|
+
export * from './lib/components/feature-editor/feature-editor.component';
|
|
14
|
+
export * from './lib/components/feature-set-editor/feature-set-editor.component';
|
|
15
|
+
export * from './lib/components/feature-set-view/feature-set-view.component';
|
|
16
|
+
export * from './lib/components/ln-heights-editor/ln-heights-editor.component';
|
|
17
|
+
export * from './lib/components/operation-source-editor/operation-source-editor.component';
|
|
18
|
+
export * from './lib/components/simple-tree/simple-tree.component';
|
|
19
|
+
export * from './lib/components/snapshot-editor/snapshot-editor.component';
|
|
20
|
+
export * from './lib/components/steps-map/steps-map.component';
|
|
21
|
+
export * from './lib/services/gve-api.service';
|
|
22
|
+
export * from './lib/services/settings.service';
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL215cm1pZG9uL2d2ZS1jb3JlL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxrRUFBa0UsQ0FBQztBQUNqRixjQUFjLDREQUE0RCxDQUFDO0FBQzNFLGNBQWMsMERBQTBELENBQUM7QUFDekUsY0FBYywwREFBMEQsQ0FBQztBQUN6RSxjQUFjLDhEQUE4RCxDQUFDO0FBQzdFLGNBQWMsMERBQTBELENBQUM7QUFDekUsY0FBYywwRUFBMEUsQ0FBQztBQUN6RixjQUFjLGdFQUFnRSxDQUFDO0FBQy9FLGNBQWMsMERBQTBELENBQUM7QUFDekUsY0FBYyxrRUFBa0UsQ0FBQztBQUNqRixjQUFjLDhEQUE4RCxDQUFDO0FBQzdFLGNBQWMsZ0VBQWdFLENBQUM7QUFDL0UsY0FBYyw0RUFBNEUsQ0FBQztBQUMzRixjQUFjLG9EQUFvRCxDQUFDO0FBQ25FLGNBQWMsNERBQTRELENBQUM7QUFDM0UsY0FBYyxnREFBZ0QsQ0FBQztBQUUvRCxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsaUNBQWlDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgZ3ZlLWNvcmVcclxuICovXHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbHMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2FuaW1hdGlvbi10aW1lbGluZS9hbmltYXRpb24tdGltZWxpbmUuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9hbmltYXRpb24tdHdlZW4vYW5pbWF0aW9uLXR3ZWVuLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvYW5pbWF0aW9uLXZhcnMvYW5pbWF0aW9uLXZhcnMuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9iYXNlLXRleHQtY2hhci9iYXNlLXRleHQtY2hhci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2Jhc2UtdGV4dC1lZGl0b3IvYmFzZS10ZXh0LWVkaXRvci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2Jhc2UtdGV4dC12aWV3L2Jhc2UtdGV4dC12aWV3LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvY2hhaW4tb3BlcmF0aW9uLWVkaXRvci9jaGFpbi1vcGVyYXRpb24tZWRpdG9yLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvY2hhaW4tcmVzdWx0LXZpZXcvY2hhaW4tcmVzdWx0LXZpZXcuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9mZWF0dXJlLWVkaXRvci9mZWF0dXJlLWVkaXRvci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2ZlYXR1cmUtc2V0LWVkaXRvci9mZWF0dXJlLXNldC1lZGl0b3IuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9mZWF0dXJlLXNldC12aWV3L2ZlYXR1cmUtc2V0LXZpZXcuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9sbi1oZWlnaHRzLWVkaXRvci9sbi1oZWlnaHRzLWVkaXRvci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL29wZXJhdGlvbi1zb3VyY2UtZWRpdG9yL29wZXJhdGlvbi1zb3VyY2UtZWRpdG9yLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvc2ltcGxlLXRyZWUvc2ltcGxlLXRyZWUuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9zbmFwc2hvdC1lZGl0b3Ivc25hcHNob3QtZWRpdG9yLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvc3RlcHMtbWFwL3N0ZXBzLW1hcC5jb21wb25lbnQnO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvZ3ZlLWFwaS5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvc2V0dGluZ3Muc2VydmljZSc7XHJcblxyXG4iXX0=
|