@esfaenza/es-diagrams 12.2.13 → 13.1.3
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/esfaenza-es-diagrams.d.ts +1 -5
- package/esm2020/esfaenza-es-diagrams.mjs +5 -0
- package/esm2020/lib/components/es-diagram.component.mjs +519 -0
- package/esm2020/lib/esdiagram.module.mjs +33 -0
- package/esm2020/lib/extensions/ReactiveExtensions.mjs +36 -0
- package/{esm2015/lib/extensions/ResizeSensor.js → esm2020/lib/extensions/ResizeSensor.mjs} +0 -0
- package/{esm2015/lib/models/EsDiagramModuleConfig.js → esm2020/lib/models/EsDiagramModuleConfig.mjs} +0 -0
- package/{esm2015/lib/models/component/contextmenu/ContextMenuCommand.js → esm2020/lib/models/component/contextmenu/ContextMenuCommand.mjs} +0 -0
- package/{esm2015/lib/models/component/contextmenu/ContextMenuOptions.js → esm2020/lib/models/component/contextmenu/ContextMenuOptions.mjs} +0 -0
- package/{esm2015/lib/models/component/grouping/ExpandCollapseOptions.js → esm2020/lib/models/component/grouping/ExpandCollapseOptions.mjs} +0 -0
- package/{esm2015/lib/models/component/nodes/NodeHTMLTemplate.js → esm2020/lib/models/component/nodes/NodeHTMLTemplate.mjs} +0 -0
- package/{esm2015/lib/models/component/nodes/NodeTemplate.js → esm2020/lib/models/component/nodes/NodeTemplate.mjs} +0 -0
- package/{esm2015/lib/models/component/nodes/ZoomLevelBasedTemplate.js → esm2020/lib/models/component/nodes/ZoomLevelBasedTemplate.mjs} +0 -0
- package/{esm2015/lib/models/layouts/BreadthFirstLayoutOptionsImpl.js → esm2020/lib/models/layouts/BreadthFirstLayoutOptionsImpl.mjs} +0 -0
- package/{esm2015/lib/models/layouts/CircleLayoutOptionsImpl.js → esm2020/lib/models/layouts/CircleLayoutOptionsImpl.mjs} +0 -0
- package/{esm2015/lib/models/layouts/ConcentricLayoutOptionsImpl.js → esm2020/lib/models/layouts/ConcentricLayoutOptionsImpl.mjs} +0 -0
- package/{esm2015/lib/models/layouts/CoseLayoutOptionsImpl.js → esm2020/lib/models/layouts/CoseLayoutOptionsImpl.mjs} +0 -0
- package/{esm2015/lib/models/layouts/DagreLayoutOptionsImpl.js → esm2020/lib/models/layouts/DagreLayoutOptionsImpl.mjs} +0 -0
- package/{esm2015/lib/models/layouts/GridLayoutOptionsImpl.js → esm2020/lib/models/layouts/GridLayoutOptionsImpl.mjs} +0 -0
- package/{esm2015/lib/models/layouts/NullLayoutOptionsImpl.js → esm2020/lib/models/layouts/NullLayoutOptionsImpl.mjs} +0 -0
- package/{esm2015/lib/models/layouts/PresetLayoutOptionsImpl.js → esm2020/lib/models/layouts/PresetLayoutOptionsImpl.mjs} +0 -0
- package/{esm2015/lib/models/layouts/RandomLayoutOptionsImpl.js → esm2020/lib/models/layouts/RandomLayoutOptionsImpl.mjs} +0 -0
- package/{esm2015/lib/models/layouts/base/AnimateLayoutOptionsImpl.js → esm2020/lib/models/layouts/base/AnimateLayoutOptionsImpl.mjs} +0 -0
- package/{esm2015/lib/models/layouts/base/BaseLayoutOptionsImpl.js → esm2020/lib/models/layouts/base/BaseLayoutOptionsImpl.mjs} +0 -0
- package/{esm2015/lib/models/layouts/base/ShapedLayoutOptionsImpl.js → esm2020/lib/models/layouts/base/ShapedLayoutOptionsImpl.mjs} +0 -0
- package/esm2020/lib/services/es-diagram.dispatcher.mjs +89 -0
- package/{esm2015/lib/services/es-diagram.loc.js → esm2020/lib/services/es-diagram.loc.mjs} +0 -0
- package/esm2020/lib/services/es-diagram.service.mjs +112 -0
- package/{esm2015/lib/tokens.js → esm2020/lib/tokens.mjs} +0 -0
- package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
- package/fesm2015/{esfaenza-es-diagrams.js → esfaenza-es-diagrams.mjs} +180 -136
- package/fesm2015/esfaenza-es-diagrams.mjs.map +1 -0
- package/fesm2020/esfaenza-es-diagrams.mjs +1391 -0
- package/fesm2020/esfaenza-es-diagrams.mjs.map +1 -0
- package/lib/components/es-diagram.component.d.ts +3 -0
- package/lib/esdiagram.module.d.ts +7 -0
- package/lib/extensions/ReactiveExtensions.d.ts +3 -0
- package/lib/services/es-diagram.dispatcher.d.ts +3 -0
- package/lib/services/es-diagram.service.d.ts +3 -0
- package/package.json +21 -9
- package/bundles/esfaenza-es-diagrams.umd.js +0 -1856
- package/bundles/esfaenza-es-diagrams.umd.js.map +0 -1
- package/esfaenza-es-diagrams.metadata.json +0 -1
- package/esm2015/esfaenza-es-diagrams.js +0 -10
- package/esm2015/lib/components/es-diagram.component.js +0 -503
- package/esm2015/lib/esdiagram.module.js +0 -28
- package/esm2015/lib/extensions/ReactiveExtensions.js +0 -34
- package/esm2015/lib/services/es-diagram.dispatcher.js +0 -86
- package/esm2015/lib/services/es-diagram.service.js +0 -106
- package/fesm2015/esfaenza-es-diagrams.js.map +0 -1
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { EsDiagramComponent } from './components/es-diagram.component';
|
|
3
|
+
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
4
|
+
import { CommonModule } from '@angular/common';
|
|
5
|
+
import { EsDiagramService } from './services/es-diagram.service';
|
|
6
|
+
import { EsDiagramDispatcher } from './services/es-diagram.dispatcher';
|
|
7
|
+
import { DIA_LOCALE, DIA_DEBUG_MODE } from './tokens';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
export class EsDiagramModule {
|
|
10
|
+
static forRoot(config) {
|
|
11
|
+
return {
|
|
12
|
+
ngModule: EsDiagramModule,
|
|
13
|
+
providers: [
|
|
14
|
+
EsDiagramService,
|
|
15
|
+
EsDiagramDispatcher,
|
|
16
|
+
{ provide: DIA_LOCALE, useValue: config?.locale || 'it-IT' },
|
|
17
|
+
{ provide: DIA_DEBUG_MODE, useValue: config?.debugMode || false },
|
|
18
|
+
]
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
EsDiagramModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: EsDiagramModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
23
|
+
EsDiagramModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: EsDiagramModule, declarations: [EsDiagramComponent], imports: [CommonModule, FormsModule, ReactiveFormsModule, CommonModule], exports: [EsDiagramComponent] });
|
|
24
|
+
EsDiagramModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: EsDiagramModule, imports: [[CommonModule, FormsModule, ReactiveFormsModule, CommonModule]] });
|
|
25
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: EsDiagramModule, decorators: [{
|
|
26
|
+
type: NgModule,
|
|
27
|
+
args: [{
|
|
28
|
+
declarations: [EsDiagramComponent],
|
|
29
|
+
imports: [CommonModule, FormsModule, ReactiveFormsModule, CommonModule],
|
|
30
|
+
exports: [EsDiagramComponent]
|
|
31
|
+
}]
|
|
32
|
+
}] });
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNkaWFncmFtLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2VzLWRpYWdyYW1zL3NyYy9saWIvZXNkaWFncmFtLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXVCLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUM3RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQTtBQUV0RSxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDakUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzlDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBR3ZFLE9BQU8sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLE1BQU0sVUFBVSxDQUFDOztBQU90RCxNQUFNLE9BQU8sZUFBZTtJQUMxQixNQUFNLENBQUMsT0FBTyxDQUFDLE1BQThCO1FBQzNDLE9BQU87WUFDTCxRQUFRLEVBQUUsZUFBZTtZQUN6QixTQUFTLEVBQUU7Z0JBQ1QsZ0JBQWdCO2dCQUNoQixtQkFBbUI7Z0JBQ25CLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sSUFBSSxPQUFPLEVBQUU7Z0JBQzVELEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFNBQVMsSUFBSSxLQUFLLEVBQUU7YUFDbEU7U0FDRixDQUFDO0lBQ0osQ0FBQzs7NEdBWFUsZUFBZTs2R0FBZixlQUFlLGlCQUpWLGtCQUFrQixhQUN2QixZQUFZLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLFlBQVksYUFDNUQsa0JBQWtCOzZHQUVsQixlQUFlLFlBSGpCLENBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxZQUFZLENBQUU7MkZBRzlELGVBQWU7a0JBTDNCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUUsa0JBQWtCLENBQUU7b0JBQ3BDLE9BQU8sRUFBRSxDQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsWUFBWSxDQUFFO29CQUN6RSxPQUFPLEVBQUUsQ0FBRSxrQkFBa0IsQ0FBRTtpQkFDaEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBFc0RpYWdyYW1Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZXMtZGlhZ3JhbS5jb21wb25lbnQnXG5cbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5pbXBvcnQgeyBFc0RpYWdyYW1TZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9lcy1kaWFncmFtLnNlcnZpY2UnO1xuaW1wb3J0IHsgRXNEaWFncmFtRGlzcGF0Y2hlciB9IGZyb20gJy4vc2VydmljZXMvZXMtZGlhZ3JhbS5kaXNwYXRjaGVyJztcbmltcG9ydCB7IEVzRGlhZ3JhbU1vZHVsZUNvbmZpZyB9IGZyb20gJy4vbW9kZWxzL0VzRGlhZ3JhbU1vZHVsZUNvbmZpZyc7XG5cbmltcG9ydCB7IERJQV9MT0NBTEUsIERJQV9ERUJVR19NT0RFIH0gZnJvbSAnLi90b2tlbnMnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFsgRXNEaWFncmFtQ29tcG9uZW50IF0sXG4gIGltcG9ydHM6IFsgQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgQ29tbW9uTW9kdWxlIF0sXG4gIGV4cG9ydHM6IFsgRXNEaWFncmFtQ29tcG9uZW50IF1cbn0pXG5leHBvcnQgY2xhc3MgRXNEaWFncmFtTW9kdWxlIHtcbiAgc3RhdGljIGZvclJvb3QoY29uZmlnPzogRXNEaWFncmFtTW9kdWxlQ29uZmlnKTogTW9kdWxlV2l0aFByb3ZpZGVyczxFc0RpYWdyYW1Nb2R1bGU+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IEVzRGlhZ3JhbU1vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICBFc0RpYWdyYW1TZXJ2aWNlLFxuICAgICAgICBFc0RpYWdyYW1EaXNwYXRjaGVyLFxuICAgICAgICB7IHByb3ZpZGU6IERJQV9MT0NBTEUsIHVzZVZhbHVlOiBjb25maWc/LmxvY2FsZSB8fCAnaXQtSVQnIH0sXG4gICAgICAgIHsgcHJvdmlkZTogRElBX0RFQlVHX01PREUsIHVzZVZhbHVlOiBjb25maWc/LmRlYnVnTW9kZSB8fCBmYWxzZSB9LFxuICAgICAgXVxuICAgIH07XG4gIH1cbn0iXX0=
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { Injectable } from "@angular/core";
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
/**
|
|
4
|
+
* Classe che fornisce metodi reattivi di estensione. Per ora implementato solo uno pseudo-throttle
|
|
5
|
+
*/
|
|
6
|
+
export class ReactiveExtensions {
|
|
7
|
+
constructor() {
|
|
8
|
+
/**
|
|
9
|
+
* Cache di tutti i timer in esecuzione
|
|
10
|
+
*/
|
|
11
|
+
this.executionTimers = {};
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Esecuzione deleyata di una funzione. Se viene richiamata nuovamente prima di venire eseguita dopo il delay, il delay viene resettato
|
|
15
|
+
*
|
|
16
|
+
* @param {string} id Id per aiutare il servizio a distinguere funzioni con nome uguale chiamate da componenti diversi
|
|
17
|
+
* @param {Function} func Funzione da chiamare al termine del throttle
|
|
18
|
+
* @param {number} throttleTime Tempo di throttling in millisecondi
|
|
19
|
+
*/
|
|
20
|
+
throttle(id, func, throttleTime = 0) {
|
|
21
|
+
let key = func.name + "_" + id;
|
|
22
|
+
//Se ho la funzione che vuole eseguire ripulisco quel timeout
|
|
23
|
+
if (this.executionTimers[key])
|
|
24
|
+
clearTimeout(this.executionTimers[key]);
|
|
25
|
+
//Ricreo il timeout per eseguire quella funzione dopo throttleTime millisecondi
|
|
26
|
+
var executionTimer = setTimeout(() => { func(); this.executionTimers[key] = null; }, throttleTime);
|
|
27
|
+
this.executionTimers[key] = executionTimer;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
ReactiveExtensions.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ReactiveExtensions, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
31
|
+
ReactiveExtensions.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ReactiveExtensions, providedIn: "root" });
|
|
32
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ReactiveExtensions, decorators: [{
|
|
33
|
+
type: Injectable,
|
|
34
|
+
args: [{ providedIn: "root" }]
|
|
35
|
+
}] });
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVhY3RpdmVFeHRlbnNpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXMtZGlhZ3JhbXMvc3JjL2xpYi9leHRlbnNpb25zL1JlYWN0aXZlRXh0ZW5zaW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUUzQzs7R0FFRztBQUVILE1BQU0sT0FBTyxrQkFBa0I7SUFEL0I7UUFHSTs7V0FFRztRQUNLLG9CQUFlLEdBQTZCLEVBQUUsQ0FBQztLQW9CMUQ7SUFsQkc7Ozs7OztPQU1HO0lBQ0ksUUFBUSxDQUFDLEVBQVUsRUFBRSxJQUFjLEVBQUUsZUFBdUIsQ0FBQztRQUNoRSxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxHQUFHLEdBQUcsR0FBRyxFQUFFLENBQUM7UUFFL0IsNkRBQTZEO1FBQzdELElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUM7WUFDekIsWUFBWSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUU1QywrRUFBK0U7UUFDL0UsSUFBSSxjQUFjLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDbkcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsR0FBRyxjQUFjLENBQUM7SUFDL0MsQ0FBQzs7K0dBeEJRLGtCQUFrQjttSEFBbEIsa0JBQWtCLGNBREwsTUFBTTsyRkFDbkIsa0JBQWtCO2tCQUQ5QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuLyoqXHJcbiAqIENsYXNzZSBjaGUgZm9ybmlzY2UgbWV0b2RpIHJlYXR0aXZpIGRpIGVzdGVuc2lvbmUuIFBlciBvcmEgaW1wbGVtZW50YXRvIHNvbG8gdW5vIHBzZXVkby10aHJvdHRsZVxyXG4gKi9cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiBcInJvb3RcIiB9KVxyXG5leHBvcnQgY2xhc3MgUmVhY3RpdmVFeHRlbnNpb25zIHtcclxuXHJcbiAgICAvKipcclxuICAgICAqIENhY2hlIGRpIHR1dHRpIGkgdGltZXIgaW4gZXNlY3V6aW9uZVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGV4ZWN1dGlvblRpbWVyczogeyBbaW5kZXg6IHN0cmluZ106IGFueSB9ID0ge307XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBFc2VjdXppb25lIGRlbGV5YXRhIGRpIHVuYSBmdW56aW9uZS4gU2UgdmllbmUgcmljaGlhbWF0YSBudW92YW1lbnRlIHByaW1hIGRpIHZlbmlyZSBlc2VndWl0YSBkb3BvIGlsIGRlbGF5LCBpbCBkZWxheSB2aWVuZSByZXNldHRhdG9cclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGlkIElkIHBlciBhaXV0YXJlIGlsIHNlcnZpemlvIGEgZGlzdGluZ3VlcmUgZnVuemlvbmkgY29uIG5vbWUgdWd1YWxlIGNoaWFtYXRlIGRhIGNvbXBvbmVudGkgZGl2ZXJzaVxyXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBGdW56aW9uZSBkYSBjaGlhbWFyZSBhbCB0ZXJtaW5lIGRlbCB0aHJvdHRsZVxyXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHRocm90dGxlVGltZSBUZW1wbyBkaSB0aHJvdHRsaW5nIGluIG1pbGxpc2Vjb25kaVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgdGhyb3R0bGUoaWQ6IHN0cmluZywgZnVuYzogRnVuY3Rpb24sIHRocm90dGxlVGltZTogbnVtYmVyID0gMCkge1xyXG4gICAgICAgIGxldCBrZXkgPSBmdW5jLm5hbWUgKyBcIl9cIiArIGlkO1xyXG5cclxuICAgICAgICAvL1NlIGhvIGxhIGZ1bnppb25lIGNoZSB2dW9sZSBlc2VndWlyZSByaXB1bGlzY28gcXVlbCB0aW1lb3V0XHJcbiAgICAgICAgaWYgKHRoaXMuZXhlY3V0aW9uVGltZXJzW2tleV0pXHJcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLmV4ZWN1dGlvblRpbWVyc1trZXldKTtcclxuXHJcbiAgICAgICAgLy9SaWNyZW8gaWwgdGltZW91dCBwZXIgZXNlZ3VpcmUgcXVlbGxhIGZ1bnppb25lIGRvcG8gdGhyb3R0bGVUaW1lIG1pbGxpc2Vjb25kaVxyXG4gICAgICAgIHZhciBleGVjdXRpb25UaW1lciA9IHNldFRpbWVvdXQoKCkgPT4geyBmdW5jKCk7IHRoaXMuZXhlY3V0aW9uVGltZXJzW2tleV0gPSBudWxsOyB9LCB0aHJvdHRsZVRpbWUpO1xyXG4gICAgICAgIHRoaXMuZXhlY3V0aW9uVGltZXJzW2tleV0gPSBleGVjdXRpb25UaW1lcjtcclxuICAgIH1cclxufSJdfQ==
|
|
File without changes
|
package/{esm2015/lib/models/EsDiagramModuleConfig.js → esm2020/lib/models/EsDiagramModuleConfig.mjs}
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { Injectable, Inject } from '@angular/core';
|
|
2
|
+
import { DIA_DEBUG_MODE } from '../tokens';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
/**
|
|
5
|
+
* Classe che si occupa del dispatch delle operazioni di rendering degli oggetti utilizzando una coda
|
|
6
|
+
*/
|
|
7
|
+
export class EsDiagramDispatcher {
|
|
8
|
+
/**
|
|
9
|
+
* @ignore
|
|
10
|
+
*/
|
|
11
|
+
constructor(logs) {
|
|
12
|
+
this.logs = logs;
|
|
13
|
+
/**
|
|
14
|
+
* Coda di inizializzazioni ancora da eseguire. Quando questa è vuota significa che nessuno sta creando oggetti
|
|
15
|
+
*/
|
|
16
|
+
this.Initializations = [];
|
|
17
|
+
/**
|
|
18
|
+
* Lista degli oggetti inizializzati e attivi in un dato momento (viene registrata la proprietà **name**). Non è possibile registrare due grafici con lo stesso identificativo
|
|
19
|
+
*/
|
|
20
|
+
this.Initialized = [];
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Registra un oggetto da visualizzare insieme alla propria funzione di creazione. Quest'ultima sarà differita fino a che tutti gli oggetti
|
|
24
|
+
* precedentemente registati non hanno finito la fase di inizializzazione
|
|
25
|
+
*
|
|
26
|
+
* @param {string} name Identificativo dell'oggetto da registrare
|
|
27
|
+
* @param {Function} creationFunction Funzione che fisicamente dovrà occuparsi della creazione dell'oggetto
|
|
28
|
+
*/
|
|
29
|
+
register(name, creationFunction) {
|
|
30
|
+
if (this.Initialized.indexOf(name) != -1)
|
|
31
|
+
throw "Attempting to register a duplicate object '" + name + "'. Make sure the 'name' properties of your diagram are univoque";
|
|
32
|
+
this.log("DISPATCHER: Registering diagram creation function execution for " + name);
|
|
33
|
+
this.Initializations.push({ name: name, function: creationFunction });
|
|
34
|
+
if (this.Initializations.length == 1) {
|
|
35
|
+
this.log("DISPATCHER: Initial drain started");
|
|
36
|
+
this.drainInitQueues();
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Deregistra un oggetto presente. Chiamata generalmente al dispose dell'oggetto in questione quando non dev'essere più mostrato nella pagina corrente
|
|
41
|
+
*
|
|
42
|
+
* @param {string} name Identificativo dell'oggetto da deregistrare
|
|
43
|
+
*/
|
|
44
|
+
deregister(name) {
|
|
45
|
+
let index = this.Initialized.indexOf(name);
|
|
46
|
+
if (index == -1) {
|
|
47
|
+
//Questo succede quando si cerca di distruggere l'oggetto mentre sta venendo graficato
|
|
48
|
+
this.log("DISPATCHER: Registration missing for object " + name + " it was probably destroyed during load");
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
this.log("DISPATCHER: Object deregistered " + name);
|
|
52
|
+
this.Initialized.splice(index, 1);
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Metodo che esegue in maniera sequenziale le funzioni di inizializzazione degli oggetti finché presenti
|
|
56
|
+
* in modo che nessun oggetto possa essere inizializzato contemporaneamente ad un altro
|
|
57
|
+
*/
|
|
58
|
+
drainInitQueues() {
|
|
59
|
+
let toExecute = this.Initializations[0];
|
|
60
|
+
this.log("DISPATCHER: Executing initialization function for object " + toExecute.name);
|
|
61
|
+
toExecute.function().then(() => {
|
|
62
|
+
this.log("DISPATCHER: initialization for object " + toExecute.name + " is done");
|
|
63
|
+
this.Initialized.push(toExecute.name);
|
|
64
|
+
this.Initializations.splice(0, 1);
|
|
65
|
+
if (this.Initializations.length >= 1) {
|
|
66
|
+
this.log("DISPATCHER: Found queued initializations. Continuing");
|
|
67
|
+
this.drainInitQueues();
|
|
68
|
+
}
|
|
69
|
+
else
|
|
70
|
+
this.log("DISPATCHER: queue is over, nothing more to do");
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* @ignore
|
|
75
|
+
*/
|
|
76
|
+
log(text) {
|
|
77
|
+
if (this.logs)
|
|
78
|
+
console.log("@esfaenza/es-diagrams: " + text);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
EsDiagramDispatcher.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: EsDiagramDispatcher, deps: [{ token: DIA_DEBUG_MODE }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
82
|
+
EsDiagramDispatcher.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: EsDiagramDispatcher });
|
|
83
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: EsDiagramDispatcher, decorators: [{
|
|
84
|
+
type: Injectable
|
|
85
|
+
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
86
|
+
type: Inject,
|
|
87
|
+
args: [DIA_DEBUG_MODE]
|
|
88
|
+
}] }]; } });
|
|
89
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXMtZGlhZ3JhbS5kaXNwYXRjaGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXMtZGlhZ3JhbXMvc3JjL2xpYi9zZXJ2aWNlcy9lcy1kaWFncmFtLmRpc3BhdGNoZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFdBQVcsQ0FBQzs7QUFFM0M7O0dBRUc7QUFFSCxNQUFNLE9BQU8sbUJBQW1CO0lBWTVCOztPQUVHO0lBQ0gsWUFBNEMsSUFBYTtRQUFiLFNBQUksR0FBSixJQUFJLENBQVM7UUFiekQ7O1dBRUc7UUFDSyxvQkFBZSxHQUFzQyxFQUFFLENBQUM7UUFFaEU7O1dBRUc7UUFDSyxnQkFBVyxHQUFhLEVBQUUsQ0FBQztJQUswQixDQUFDO0lBRTlEOzs7Ozs7T0FNRztJQUNJLFFBQVEsQ0FBQyxJQUFZLEVBQUUsZ0JBQTBCO1FBQ3BELElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3BDLE1BQU0sNkNBQTZDLEdBQUcsSUFBSSxHQUFHLGlFQUFpRSxDQUFDO1FBRW5JLElBQUksQ0FBQyxHQUFHLENBQUMsa0VBQWtFLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDcEYsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7UUFDdEUsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7WUFDbEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO1lBQzlDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztTQUMxQjtJQUNMLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksVUFBVSxDQUFDLElBQVk7UUFDMUIsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0MsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLEVBQ2Y7WUFDSSxzRkFBc0Y7WUFDdEYsSUFBSSxDQUFDLEdBQUcsQ0FBQyw4Q0FBOEMsR0FBRyxJQUFJLEdBQUcsd0NBQXdDLENBQUMsQ0FBQztZQUMzRyxPQUFPO1NBQ1Y7UUFFRCxJQUFJLENBQUMsR0FBRyxDQUFDLGtDQUFrQyxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUNyQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssZUFBZTtRQUNuQixJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxHQUFHLENBQUMsMkRBQTJELEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXZGLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQzNCLElBQUksQ0FBQyxHQUFHLENBQUMsd0NBQXdDLEdBQUcsU0FBUyxDQUFDLElBQUksR0FBRyxVQUFVLENBQUMsQ0FBQztZQUNqRixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ2xDLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO2dCQUNsQyxJQUFJLENBQUMsR0FBRyxDQUFDLHNEQUFzRCxDQUFDLENBQUM7Z0JBQ2pFLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQzthQUMxQjs7Z0JBRUcsSUFBSSxDQUFDLEdBQUcsQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDO1FBQ2xFLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVEOztPQUVHO0lBQ0ssR0FBRyxDQUFDLElBQVk7UUFDcEIsSUFBSSxJQUFJLENBQUMsSUFBSTtZQUNULE9BQU8sQ0FBQyxHQUFHLENBQUMseUJBQXlCLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDdEQsQ0FBQzs7Z0hBakZRLG1CQUFtQixrQkFlUixjQUFjO29IQWZ6QixtQkFBbUI7MkZBQW5CLG1CQUFtQjtrQkFEL0IsVUFBVTs7MEJBZ0JNLE1BQU07MkJBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgRElBX0RFQlVHX01PREUgfSBmcm9tICcuLi90b2tlbnMnO1xyXG5cclxuLyoqXHJcbiAqIENsYXNzZSBjaGUgc2kgb2NjdXBhIGRlbCBkaXNwYXRjaCBkZWxsZSBvcGVyYXppb25pIGRpIHJlbmRlcmluZyBkZWdsaSBvZ2dldHRpIHV0aWxpenphbmRvIHVuYSBjb2RhIFxyXG4gKi9cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgRXNEaWFncmFtRGlzcGF0Y2hlciB7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb2RhIGRpIGluaXppYWxpenphemlvbmkgYW5jb3JhIGRhIGVzZWd1aXJlLiBRdWFuZG8gcXVlc3RhIMOoIHZ1b3RhIHNpZ25pZmljYSBjaGUgbmVzc3VubyBzdGEgY3JlYW5kbyBvZ2dldHRpXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgSW5pdGlhbGl6YXRpb25zOiB7IG5hbWU6IHN0cmluZywgZnVuY3Rpb246IGFueSB9W10gPSBbXTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIExpc3RhIGRlZ2xpIG9nZ2V0dGkgaW5pemlhbGl6emF0aSBlIGF0dGl2aSBpbiB1biBkYXRvIG1vbWVudG8gKHZpZW5lIHJlZ2lzdHJhdGEgbGEgcHJvcHJpZXTDoCAqKm5hbWUqKikuIE5vbiDDqCBwb3NzaWJpbGUgcmVnaXN0cmFyZSBkdWUgZ3JhZmljaSBjb24gbG8gc3Rlc3NvIGlkZW50aWZpY2F0aXZvXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgSW5pdGlhbGl6ZWQ6IHN0cmluZ1tdID0gW107XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAaWdub3JlXHJcbiAgICAgKi9cclxuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoRElBX0RFQlVHX01PREUpIHByaXZhdGUgbG9nczogYm9vbGVhbikgeyB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZWdpc3RyYSB1biBvZ2dldHRvIGRhIHZpc3VhbGl6emFyZSBpbnNpZW1lIGFsbGEgcHJvcHJpYSBmdW56aW9uZSBkaSBjcmVhemlvbmUuIFF1ZXN0J3VsdGltYSBzYXLDoCBkaWZmZXJpdGEgZmlubyBhIGNoZSB0dXR0aSBnbGkgb2dnZXR0aVxyXG4gICAgICogcHJlY2VkZW50ZW1lbnRlIHJlZ2lzdGF0aSBub24gaGFubm8gZmluaXRvIGxhIGZhc2UgZGkgaW5pemlhbGl6emF6aW9uZVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBJZGVudGlmaWNhdGl2byBkZWxsJ29nZ2V0dG8gZGEgcmVnaXN0cmFyZVxyXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gY3JlYXRpb25GdW5jdGlvbiBGdW56aW9uZSBjaGUgZmlzaWNhbWVudGUgZG92csOgIG9jY3VwYXJzaSBkZWxsYSBjcmVhemlvbmUgZGVsbCdvZ2dldHRvXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyByZWdpc3RlcihuYW1lOiBzdHJpbmcsIGNyZWF0aW9uRnVuY3Rpb246IEZ1bmN0aW9uKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuSW5pdGlhbGl6ZWQuaW5kZXhPZihuYW1lKSAhPSAtMSlcclxuICAgICAgICAgICAgdGhyb3cgXCJBdHRlbXB0aW5nIHRvIHJlZ2lzdGVyIGEgZHVwbGljYXRlIG9iamVjdCAnXCIgKyBuYW1lICsgXCInLiBNYWtlIHN1cmUgdGhlICduYW1lJyBwcm9wZXJ0aWVzIG9mIHlvdXIgZGlhZ3JhbSBhcmUgdW5pdm9xdWVcIjtcclxuXHJcbiAgICAgICAgdGhpcy5sb2coXCJESVNQQVRDSEVSOiBSZWdpc3RlcmluZyBkaWFncmFtIGNyZWF0aW9uIGZ1bmN0aW9uIGV4ZWN1dGlvbiBmb3IgXCIgKyBuYW1lKTtcclxuICAgICAgICB0aGlzLkluaXRpYWxpemF0aW9ucy5wdXNoKHsgbmFtZTogbmFtZSwgZnVuY3Rpb246IGNyZWF0aW9uRnVuY3Rpb24gfSk7XHJcbiAgICAgICAgaWYgKHRoaXMuSW5pdGlhbGl6YXRpb25zLmxlbmd0aCA9PSAxKSB7XHJcbiAgICAgICAgICAgIHRoaXMubG9nKFwiRElTUEFUQ0hFUjogSW5pdGlhbCBkcmFpbiBzdGFydGVkXCIpO1xyXG4gICAgICAgICAgICB0aGlzLmRyYWluSW5pdFF1ZXVlcygpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIERlcmVnaXN0cmEgdW4gb2dnZXR0byBwcmVzZW50ZS4gQ2hpYW1hdGEgZ2VuZXJhbG1lbnRlIGFsIGRpc3Bvc2UgZGVsbCdvZ2dldHRvIGluIHF1ZXN0aW9uZSBxdWFuZG8gbm9uIGRldidlc3NlcmUgcGnDuSBtb3N0cmF0byBuZWxsYSBwYWdpbmEgY29ycmVudGVcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgSWRlbnRpZmljYXRpdm8gZGVsbCdvZ2dldHRvIGRhIGRlcmVnaXN0cmFyZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZGVyZWdpc3RlcihuYW1lOiBzdHJpbmcpIHtcclxuICAgICAgICBsZXQgaW5kZXggPSB0aGlzLkluaXRpYWxpemVkLmluZGV4T2YobmFtZSk7XHJcbiAgICAgICAgaWYgKGluZGV4ID09IC0xKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgLy9RdWVzdG8gc3VjY2VkZSBxdWFuZG8gc2kgY2VyY2EgZGkgZGlzdHJ1Z2dlcmUgbCdvZ2dldHRvIG1lbnRyZSBzdGEgdmVuZW5kbyBncmFmaWNhdG9cclxuICAgICAgICAgICAgdGhpcy5sb2coXCJESVNQQVRDSEVSOiBSZWdpc3RyYXRpb24gbWlzc2luZyBmb3Igb2JqZWN0IFwiICsgbmFtZSArIFwiIGl0IHdhcyBwcm9iYWJseSBkZXN0cm95ZWQgZHVyaW5nIGxvYWRcIik7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMubG9nKFwiRElTUEFUQ0hFUjogT2JqZWN0IGRlcmVnaXN0ZXJlZCBcIiArIG5hbWUpO1xyXG4gICAgICAgIHRoaXMuSW5pdGlhbGl6ZWQuc3BsaWNlKGluZGV4LCAxKVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWV0b2RvIGNoZSBlc2VndWUgaW4gbWFuaWVyYSBzZXF1ZW56aWFsZSBsZSBmdW56aW9uaSBkaSBpbml6aWFsaXp6YXppb25lIGRlZ2xpIG9nZ2V0dGkgZmluY2jDqSBwcmVzZW50aSBcclxuICAgICAqIGluIG1vZG8gY2hlIG5lc3N1biBvZ2dldHRvIHBvc3NhIGVzc2VyZSBpbml6aWFsaXp6YXRvIGNvbnRlbXBvcmFuZWFtZW50ZSBhZCB1biBhbHRyb1xyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGRyYWluSW5pdFF1ZXVlcygpIHtcclxuICAgICAgICBsZXQgdG9FeGVjdXRlID0gdGhpcy5Jbml0aWFsaXphdGlvbnNbMF07XHJcbiAgICAgICAgdGhpcy5sb2coXCJESVNQQVRDSEVSOiBFeGVjdXRpbmcgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24gZm9yIG9iamVjdCBcIiArIHRvRXhlY3V0ZS5uYW1lKTtcclxuXHJcbiAgICAgICAgdG9FeGVjdXRlLmZ1bmN0aW9uKCkudGhlbigoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubG9nKFwiRElTUEFUQ0hFUjogaW5pdGlhbGl6YXRpb24gZm9yIG9iamVjdCBcIiArIHRvRXhlY3V0ZS5uYW1lICsgXCIgaXMgZG9uZVwiKTtcclxuICAgICAgICAgICAgdGhpcy5Jbml0aWFsaXplZC5wdXNoKHRvRXhlY3V0ZS5uYW1lKTtcclxuICAgICAgICAgICAgdGhpcy5Jbml0aWFsaXphdGlvbnMuc3BsaWNlKDAsIDEpO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5Jbml0aWFsaXphdGlvbnMubGVuZ3RoID49IDEpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubG9nKFwiRElTUEFUQ0hFUjogRm91bmQgcXVldWVkIGluaXRpYWxpemF0aW9ucy4gQ29udGludWluZ1wiKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZHJhaW5Jbml0UXVldWVzKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2coXCJESVNQQVRDSEVSOiBxdWV1ZSBpcyBvdmVyLCBub3RoaW5nIG1vcmUgdG8gZG9cIik7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAaWdub3JlXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgbG9nKHRleHQ6IHN0cmluZykge1xyXG4gICAgICAgIGlmICh0aGlzLmxvZ3MpXHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiQGVzZmFlbnphL2VzLWRpYWdyYW1zOiBcIiArIHRleHQpO1xyXG4gICAgfVxyXG59Il19
|
|
File without changes
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { Inject, Injectable, Optional } from "@angular/core";
|
|
2
|
+
import { DIA_DEBUG_MODE, DIA_LOCALE } from "../tokens";
|
|
3
|
+
import { Loc } from "../services/es-diagram.loc";
|
|
4
|
+
// Questo modulo esporta sia un namespace che si chiama "cytoscape" sia la funzione "cytoscape" (costruttore)
|
|
5
|
+
// Con questi 2 salti si riescono a non avere problemi di typings: https://github.com/jvandemo/generator-angular2-library/issues/221#issuecomment-355945207
|
|
6
|
+
import * as cy_ from 'cytoscape';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
/** @ignore */ const cytoscape = cy_;
|
|
9
|
+
/**
|
|
10
|
+
* Loader dei moduli di Cytoscape. Utilizza una cache per tenerseli in memoria a livello di applicazione
|
|
11
|
+
* in modo da non dover ricaricare nulla dopo avere usato un modulo almeno una volta
|
|
12
|
+
*/
|
|
13
|
+
export class EsDiagramService {
|
|
14
|
+
/**
|
|
15
|
+
* Costruttore
|
|
16
|
+
*
|
|
17
|
+
* @ignore
|
|
18
|
+
*/
|
|
19
|
+
constructor(DIA_LOCALE, DIA_DEBUG_MODE) {
|
|
20
|
+
this.DIA_LOCALE = DIA_LOCALE;
|
|
21
|
+
this.DIA_DEBUG_MODE = DIA_DEBUG_MODE;
|
|
22
|
+
/**
|
|
23
|
+
* Cache dei moduli caricati
|
|
24
|
+
*/
|
|
25
|
+
this.modulesCache = {};
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Permette di importare, se serve un dato tema o localizzazione
|
|
29
|
+
*
|
|
30
|
+
* @param {'cytoscape-expand-collapse' | 'cytoscape-cxtmenu' | 'cytoscape-html-node' | 'cytoscape-dagre'} moduleId Nome del modulo di Cytoscape da importare (dev'essere il nome della cartella in node_modules)
|
|
31
|
+
*
|
|
32
|
+
* @returns {Promise<void | cytoscape.Ext>} Funzione di estensione per Cytoscape presa dal modulo richiesto
|
|
33
|
+
*/
|
|
34
|
+
async importIfNeeded(moduleId) {
|
|
35
|
+
// Ognuno esporta il modulo un po' come cazzo gli pare quindi ocio.
|
|
36
|
+
// Notare che tutti i "moudle" dopo lo then sono castati ad <any> e che l'oggetto recuperato ogni tanto è "default", altre volte è il "register", altre è l'"ext", eccetera...
|
|
37
|
+
if (!this.modulesCache[moduleId]) {
|
|
38
|
+
this.log("I", this.loc("Module not available. Loading it now") + ": " + moduleId, false);
|
|
39
|
+
switch (moduleId) {
|
|
40
|
+
case "cytoscape-cxtmenu": return import("cytoscape-cxtmenu").then((module) => this.modulesCache[moduleId] = module.default).catch(err => this.handleError(moduleId, err));
|
|
41
|
+
case "cytoscape-expand-collapse": return import("cytoscape-expand-collapse").then((module) => this.modulesCache[moduleId] = module.default).catch(err => this.handleError(moduleId, err));
|
|
42
|
+
case "cytoscape-html-node": return import("@esfaenza/cytoscape-html-node").then((module) => this.modulesCache[moduleId] = module.register).catch(err => this.handleError(moduleId, err));
|
|
43
|
+
case "cytoscape-dagre":
|
|
44
|
+
await import("dagre").catch(err => this.handleError("dagre", err));
|
|
45
|
+
return import("cytoscape-dagre").then((module) => this.modulesCache[moduleId] = module.default).catch(err => this.handleError(moduleId, err));
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
// I moduli non devono mai essere ricaricati nel globale, quindi invece che restituire la copia della cache restituisco vuoto
|
|
50
|
+
this.log("I", this.loc("Module already loaded") + ": " + moduleId, false);
|
|
51
|
+
return new Promise((resolve) => { resolve(null); });
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Gestione degli errori di caricamento dei moduli qualora qualcuno utilizzasse un modulo non installato
|
|
56
|
+
*
|
|
57
|
+
* @param {string} moduleId Nome del modulo che si è cercato di caricare
|
|
58
|
+
* @param {any} err Errore restituito dalla promise di caricamento
|
|
59
|
+
*/
|
|
60
|
+
handleError(moduleId, err) {
|
|
61
|
+
this.log("E", this.loc("Module cannot be loaded") + ": " + moduleId + " - " + err, false);
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Scrittore di log a console. Attivo solo quando la libreria è in modalità di Debug
|
|
65
|
+
*
|
|
66
|
+
* @param {'E' | 'I' | 'W'} severity Tipo di messaggio (Errore, Info, Warning)
|
|
67
|
+
* @param {string} text Testo da tradurre
|
|
68
|
+
* @param {boolean} requiresTranslation Indica se **text** è una frase già tradotta o se è da tradurre
|
|
69
|
+
*/
|
|
70
|
+
log(severity, text, requiresTranslation = true) {
|
|
71
|
+
if (!this.DIA_DEBUG_MODE)
|
|
72
|
+
return;
|
|
73
|
+
var message = "@esfaenza/diagrams: " + (requiresTranslation ? this.loc(text) : text);
|
|
74
|
+
switch (severity) {
|
|
75
|
+
case 'E':
|
|
76
|
+
console.error(message);
|
|
77
|
+
break;
|
|
78
|
+
case 'I':
|
|
79
|
+
console.info(message);
|
|
80
|
+
break;
|
|
81
|
+
case 'W':
|
|
82
|
+
console.warn(message);
|
|
83
|
+
break;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Metodo di localizzazione dei messaggi
|
|
88
|
+
*
|
|
89
|
+
* @param {string} text Messaggio da tradurre
|
|
90
|
+
*
|
|
91
|
+
* @returns {string} Messaggio tradotto
|
|
92
|
+
*/
|
|
93
|
+
loc(text) {
|
|
94
|
+
return Loc[text][this.DIA_LOCALE];
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
EsDiagramService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: EsDiagramService, deps: [{ token: DIA_LOCALE, optional: true }, { token: DIA_DEBUG_MODE, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
98
|
+
EsDiagramService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: EsDiagramService });
|
|
99
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: EsDiagramService, decorators: [{
|
|
100
|
+
type: Injectable
|
|
101
|
+
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
102
|
+
type: Optional
|
|
103
|
+
}, {
|
|
104
|
+
type: Inject,
|
|
105
|
+
args: [DIA_LOCALE]
|
|
106
|
+
}] }, { type: undefined, decorators: [{
|
|
107
|
+
type: Optional
|
|
108
|
+
}, {
|
|
109
|
+
type: Inject,
|
|
110
|
+
args: [DIA_DEBUG_MODE]
|
|
111
|
+
}] }]; } });
|
|
112
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXMtZGlhZ3JhbS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXMtZGlhZ3JhbXMvc3JjL2xpYi9zZXJ2aWNlcy9lcy1kaWFncmFtLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTdELE9BQU8sRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVqRCw2R0FBNkc7QUFDN0csMkpBQTJKO0FBQzNKLE9BQU8sS0FBSyxHQUFHLE1BQU0sV0FBVyxDQUFDOztBQUNqQyxjQUFjLENBQUMsTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDO0FBRXJDOzs7R0FHRztBQUVILE1BQU0sT0FBTyxnQkFBZ0I7SUFPekI7Ozs7T0FJRztJQUNILFlBQW9ELFVBQWtCLEVBQThDLGNBQXNCO1FBQXRGLGVBQVUsR0FBVixVQUFVLENBQVE7UUFBOEMsbUJBQWMsR0FBZCxjQUFjLENBQVE7UUFWMUk7O1dBRUc7UUFDSyxpQkFBWSxHQUF1QyxFQUFFLENBQUM7SUFPZ0YsQ0FBQztJQUUvSTs7Ozs7O09BTUc7SUFDSSxLQUFLLENBQUMsY0FBYyxDQUFDLFFBQXVHO1FBRS9ILG9FQUFvRTtRQUNwRSw4S0FBOEs7UUFDOUssSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDOUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxzQ0FBc0MsQ0FBQyxHQUFHLElBQUksR0FBRyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDekYsUUFBUSxRQUFRLEVBQUU7Z0JBQ2QsS0FBSyxtQkFBbUIsQ0FBQyxDQUFDLE9BQU8sTUFB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SSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUM1QixNQUFNO1lBQ1YsS0FBSyxHQUFHO2dCQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQzVCLE1BQU07U0FDYjtJQUNMLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxHQUFHLENBQUMsSUFBWTtRQUNuQixPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDdEMsQ0FBQzs7NkdBckZRLGdCQUFnQixrQkFZTyxVQUFVLDZCQUFrRCxjQUFjO2lIQVpqRyxnQkFBZ0I7MkZBQWhCLGdCQUFnQjtrQkFENUIsVUFBVTs7MEJBYU0sUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxVQUFVOzswQkFBK0IsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG5pbXBvcnQgeyBESUFfREVCVUdfTU9ERSwgRElBX0xPQ0FMRSB9IGZyb20gXCIuLi90b2tlbnNcIjtcclxuaW1wb3J0IHsgTG9jIH0gZnJvbSBcIi4uL3NlcnZpY2VzL2VzLWRpYWdyYW0ubG9jXCI7XHJcblxyXG4vLyBRdWVzdG8gbW9kdWxvIGVzcG9ydGEgc2lhIHVuIG5hbWVzcGFjZSBjaGUgc2kgY2hpYW1hIFwiY3l0b3NjYXBlXCIgc2lhIGxhIGZ1bnppb25lIFwiY3l0b3NjYXBlXCIgKGNvc3RydXR0b3JlKVxyXG4vLyBDb24gcXVlc3RpIDIgc2FsdGkgc2kgcmllc2Nvbm8gYSBub24gYXZlcmUgcHJvYmxlbWkgZGkgdHlwaW5nczogaHR0cHM6Ly9naXRodWIuY29tL2p2YW5kZW1vL2dlbmVyYXRvci1hbmd1bGFyMi1saWJyYXJ5L2lzc3Vlcy8yMjEjaXNzdWVjb21tZW50LTM1NTk0NTIwN1xyXG5pbXBvcnQgKiBhcyBjeV8gZnJvbSAnY3l0b3NjYXBlJztcclxuLyoqIEBpZ25vcmUgKi8gY29uc3QgY3l0b3NjYXBlID0gY3lfO1xyXG5cclxuLyoqXHJcbiAqIExvYWRlciBkZWkgbW9kdWxpIGRpIEN5dG9zY2FwZS4gVXRpbGl6emEgdW5hIGNhY2hlIHBlciB0ZW5lcnNlbGkgaW4gbWVtb3JpYSBhIGxpdmVsbG8gZGkgYXBwbGljYXppb25lIFxyXG4gKiBpbiBtb2RvIGRhIG5vbiBkb3ZlciByaWNhcmljYXJlIG51bGxhIGRvcG8gYXZlcmUgdXNhdG8gdW4gbW9kdWxvIGFsbWVubyB1bmEgdm9sdGFcclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEVzRGlhZ3JhbVNlcnZpY2Uge1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2FjaGUgZGVpIG1vZHVsaSBjYXJpY2F0aVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIG1vZHVsZXNDYWNoZTogeyBbaW5kZXg6IHN0cmluZ106IGN5dG9zY2FwZS5FeHQgfSA9IHt9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29zdHJ1dHRvcmVcclxuICAgICAqIFxyXG4gICAgICogQGlnbm9yZVxyXG4gICAgICovXHJcbiAgICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBASW5qZWN0KERJQV9MT0NBTEUpIHByaXZhdGUgRElBX0xPQ0FMRTogc3RyaW5nLCBAT3B0aW9uYWwoKSBASW5qZWN0KERJQV9ERUJVR19NT0RFKSBwcml2YXRlIERJQV9ERUJVR19NT0RFOiBzdHJpbmcpIHsgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUGVybWV0dGUgZGkgaW1wb3J0YXJlLCBzZSBzZXJ2ZSB1biBkYXRvIHRlbWEgbyBsb2NhbGl6emF6aW9uZVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0geydjeXRvc2NhcGUtZXhwYW5kLWNvbGxhcHNlJyB8ICdjeXRvc2NhcGUtY3h0bWVudScgfCAnY3l0b3NjYXBlLWh0bWwtbm9kZScgfCAnY3l0b3NjYXBlLWRhZ3JlJ30gbW9kdWxlSWQgTm9tZSBkZWwgbW9kdWxvIGRpIEN5dG9zY2FwZSBkYSBpbXBvcnRhcmUgKGRldidlc3NlcmUgaWwgbm9tZSBkZWxsYSBjYXJ0ZWxsYSBpbiBub2RlX21vZHVsZXMpXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQgfCBjeXRvc2NhcGUuRXh0Pn0gRnVuemlvbmUgZGkgZXN0ZW5zaW9uZSBwZXIgQ3l0b3NjYXBlIHByZXNhIGRhbCBtb2R1bG8gcmljaGllc3RvXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBhc3luYyBpbXBvcnRJZk5lZWRlZChtb2R1bGVJZDogJ2N5dG9zY2FwZS1leHBhbmQtY29sbGFwc2UnIHwgJ2N5dG9zY2FwZS1jeHRtZW51JyB8ICdjeXRvc2NhcGUtaHRtbC1ub2RlJyB8ICdjeXRvc2NhcGUtZGFncmUnKTogUHJvbWlzZTx2b2lkIHwgY3l0b3NjYXBlLkV4dD4ge1xyXG5cclxuICAgICAgICAvLyBPZ251bm8gZXNwb3J0YSBpbCBtb2R1bG8gdW4gcG8nIGNvbWUgY2F6em8gZ2xpIHBhcmUgcXVpbmRpIG9jaW8uIFxyXG4gICAgICAgIC8vIE5vdGFyZSBjaGUgdHV0dGkgaSBcIm1vdWRsZVwiIGRvcG8gbG8gdGhlbiBzb25vIGNhc3RhdGkgYWQgPGFueT4gZSBjaGUgbCdvZ2dldHRvIHJlY3VwZXJhdG8gb2duaSB0YW50byDDqCBcImRlZmF1bHRcIiwgYWx0cmUgdm9sdGUgw6ggaWwgXCJyZWdpc3RlclwiLCBhbHRyZSDDqCBsJ1wiZXh0XCIsIGVjY2V0ZXJhLi4uXHJcbiAgICAgICAgaWYgKCF0aGlzLm1vZHVsZXNDYWNoZVttb2R1bGVJZF0pIHtcclxuICAgICAgICAgICAgdGhpcy5sb2coXCJJXCIsIHRoaXMubG9jKFwiTW9kdWxlIG5vdCBhdmFpbGFibGUuIExvYWRpbmcgaXQgbm93XCIpICsgXCI6IFwiICsgbW9kdWxlSWQsIGZhbHNlKTtcclxuICAgICAgICAgICAgc3dpdGNoIChtb2R1bGVJZCkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSBcImN5dG9zY2FwZS1jeHRtZW51XCI6IHJldHVybiBpbXBvcnQoXCJjeXRvc2NhcGUtY3h0bWVudVwiKS50aGVuKChtb2R1bGU6IGFueSkgPT4gdGhpcy5tb2R1bGVzQ2FjaGVbbW9kdWxlSWRdID0gbW9kdWxlLmRlZmF1bHQpLmNhdGNoKGVyciA9PiB0aGlzLmhhbmRsZUVycm9yKG1vZHVsZUlkLCBlcnIpKTtcclxuICAgICAgICAgICAgICAgIGNhc2UgXCJjeXRvc2NhcGUtZXhwYW5kLWNvbGxhcHNlXCI6IHJldHVybiBpbXBvcnQoXCJjeXRvc2NhcGUtZXhwYW5kLWNvbGxhcHNlXCIpLnRoZW4oKG1vZHVsZTogYW55KSA9PiB0aGlzLm1vZHVsZXNDYWNoZVttb2R1bGVJZF0gPSBtb2R1bGUuZGVmYXVsdCkuY2F0Y2goZXJyID0+IHRoaXMuaGFuZGxlRXJyb3IobW9kdWxlSWQsIGVycikpO1xyXG4gICAgICAgICAgICAgICAgY2FzZSBcImN5dG9zY2FwZS1odG1sLW5vZGVcIjogcmV0dXJuIGltcG9ydChcIkBlc2ZhZW56YS9jeXRvc2NhcGUtaHRtbC1ub2RlXCIpLnRoZW4oKG1vZHVsZTogYW55KSA9PiB0aGlzLm1vZHVsZXNDYWNoZVttb2R1bGVJZF0gPSBtb2R1bGUucmVnaXN0ZXIpLmNhdGNoKGVyciA9PiB0aGlzLmhhbmRsZUVycm9yKG1vZHVsZUlkLCBlcnIpKTtcclxuICAgICAgICAgICAgICAgIGNhc2UgXCJjeXRvc2NhcGUtZGFncmVcIjpcclxuICAgICAgICAgICAgICAgICAgICBhd2FpdCBpbXBvcnQoXCJkYWdyZVwiKS5jYXRjaChlcnIgPT4gdGhpcy5oYW5kbGVFcnJvcihcImRhZ3JlXCIsIGVycikpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpbXBvcnQoXCJjeXRvc2NhcGUtZGFncmVcIikudGhlbigobW9kdWxlOiBhbnkpID0+IHRoaXMubW9kdWxlc0NhY2hlW21vZHVsZUlkXSA9IG1vZHVsZS5kZWZhdWx0KS5jYXRjaChlcnIgPT4gdGhpcy5oYW5kbGVFcnJvcihtb2R1bGVJZCwgZXJyKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIEkgbW9kdWxpIG5vbiBkZXZvbm8gbWFpIGVzc2VyZSByaWNhcmljYXRpIG5lbCBnbG9iYWxlLCBxdWluZGkgaW52ZWNlIGNoZSByZXN0aXR1aXJlIGxhIGNvcGlhIGRlbGxhIGNhY2hlIHJlc3RpdHVpc2NvIHZ1b3RvXHJcbiAgICAgICAgICAgIHRoaXMubG9nKFwiSVwiLCB0aGlzLmxvYyhcIk1vZHVsZSBhbHJlYWR5IGxvYWRlZFwiKSArIFwiOiBcIiArIG1vZHVsZUlkLCBmYWxzZSk7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4geyByZXNvbHZlKG51bGwpIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdlc3Rpb25lIGRlZ2xpIGVycm9yaSBkaSBjYXJpY2FtZW50byBkZWkgbW9kdWxpIHF1YWxvcmEgcXVhbGN1bm8gdXRpbGl6emFzc2UgdW4gbW9kdWxvIG5vbiBpbnN0YWxsYXRvXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBtb2R1bGVJZCBOb21lIGRlbCBtb2R1bG8gY2hlIHNpIMOoIGNlcmNhdG8gZGkgY2FyaWNhcmVcclxuICAgICAqIEBwYXJhbSB7YW55fSBlcnIgRXJyb3JlIHJlc3RpdHVpdG8gZGFsbGEgcHJvbWlzZSBkaSBjYXJpY2FtZW50b1xyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGhhbmRsZUVycm9yKG1vZHVsZUlkOiBzdHJpbmcsIGVycjogYW55KSB7XHJcbiAgICAgICAgdGhpcy5sb2coXCJFXCIsIHRoaXMubG9jKFwiTW9kdWxlIGNhbm5vdCBiZSBsb2FkZWRcIikgKyBcIjogXCIgKyBtb2R1bGVJZCArIFwiIC0gXCIgKyBlcnIsIGZhbHNlKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNjcml0dG9yZSBkaSBsb2cgYSBjb25zb2xlLiBBdHRpdm8gc29sbyBxdWFuZG8gbGEgbGlicmVyaWEgw6ggaW4gbW9kYWxpdMOgIGRpIERlYnVnXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7J0UnIHwgJ0knIHwgJ1cnfSBzZXZlcml0eSBUaXBvIGRpIG1lc3NhZ2dpbyAoRXJyb3JlLCBJbmZvLCBXYXJuaW5nKVxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgVGVzdG8gZGEgdHJhZHVycmVcclxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gcmVxdWlyZXNUcmFuc2xhdGlvbiBJbmRpY2Egc2UgKip0ZXh0Kiogw6ggdW5hIGZyYXNlIGdpw6AgdHJhZG90dGEgbyBzZSDDqCBkYSB0cmFkdXJyZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgbG9nKHNldmVyaXR5OiAnRScgfCAnSScgfCAnVycsIHRleHQ6IHN0cmluZywgcmVxdWlyZXNUcmFuc2xhdGlvbjogYm9vbGVhbiA9IHRydWUpIHtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLkRJQV9ERUJVR19NT0RFKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgIHZhciBtZXNzYWdlID0gXCJAZXNmYWVuemEvZGlhZ3JhbXM6IFwiICsgKHJlcXVpcmVzVHJhbnNsYXRpb24gPyB0aGlzLmxvYyh0ZXh0KSA6IHRleHQpO1xyXG4gICAgICAgIHN3aXRjaCAoc2V2ZXJpdHkpIHtcclxuICAgICAgICAgICAgY2FzZSAnRSc6IGNvbnNvbGUuZXJyb3IobWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAnSSc6IGNvbnNvbGUuaW5mbyhtZXNzYWdlKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlICdXJzogY29uc29sZS53YXJuKG1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWV0b2RvIGRpIGxvY2FsaXp6YXppb25lIGRlaSBtZXNzYWdnaVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCBNZXNzYWdnaW8gZGEgdHJhZHVycmVcclxuICAgICAqIFxyXG4gICAgICogQHJldHVybnMge3N0cmluZ30gTWVzc2FnZ2lvIHRyYWRvdHRvXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBsb2ModGV4dDogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gTG9jW3RleHRdW3RoaXMuRElBX0xPQ0FMRV07XHJcbiAgICB9XHJcbn0iXX0=
|
|
File without changes
|
|
File without changes
|