@esfaenza/es-diagrams 16.2.26 → 17.3.0

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.
Files changed (59) hide show
  1. package/esm2022/esfaenza-es-diagrams.mjs +4 -4
  2. package/esm2022/lib/components/es-diagram.component.mjs +537 -537
  3. package/esm2022/lib/esdiagram.module.mjs +31 -31
  4. package/esm2022/lib/extensions/ReactiveExtensions.mjs +35 -35
  5. package/esm2022/lib/extensions/ResizeSensor.mjs +71 -71
  6. package/esm2022/lib/models/EsDiagramModuleConfig.mjs +5 -5
  7. package/esm2022/lib/models/component/contextmenu/ContextMenuCommand.mjs +5 -5
  8. package/esm2022/lib/models/component/contextmenu/ContextMenuOptions.mjs +6 -6
  9. package/esm2022/lib/models/component/grouping/ExpandCollapseOptions.mjs +5 -5
  10. package/esm2022/lib/models/component/nodes/NodeHTMLTemplate.mjs +5 -5
  11. package/esm2022/lib/models/component/nodes/NodeTemplate.mjs +5 -5
  12. package/esm2022/lib/models/component/nodes/ZoomLevelBasedTemplate.mjs +5 -5
  13. package/esm2022/lib/models/layouts/BreadthFirstLayoutOptionsImpl.mjs +34 -34
  14. package/esm2022/lib/models/layouts/CircleLayoutOptionsImpl.mjs +26 -26
  15. package/esm2022/lib/models/layouts/ConcentricLayoutOptionsImpl.mjs +63 -63
  16. package/esm2022/lib/models/layouts/CoseLayoutOptionsImpl.mjs +82 -82
  17. package/esm2022/lib/models/layouts/DagreLayoutOptionsImpl.mjs +51 -51
  18. package/esm2022/lib/models/layouts/GridLayoutOptionsImpl.mjs +37 -37
  19. package/esm2022/lib/models/layouts/NullLayoutOptionsImpl.mjs +14 -14
  20. package/esm2022/lib/models/layouts/PresetLayoutOptionsImpl.mjs +23 -23
  21. package/esm2022/lib/models/layouts/RandomLayoutOptionsImpl.mjs +35 -35
  22. package/esm2022/lib/models/layouts/base/AnimateLayoutOptionsImpl.mjs +41 -41
  23. package/esm2022/lib/models/layouts/base/BaseLayoutOptionsImpl.mjs +17 -17
  24. package/esm2022/lib/models/layouts/base/ShapedLayoutOptionsImpl.mjs +47 -47
  25. package/esm2022/lib/services/es-diagram.dispatcher.mjs +89 -89
  26. package/esm2022/lib/services/es-diagram.service.mjs +106 -106
  27. package/esm2022/lib/tokens.mjs +5 -5
  28. package/esm2022/public-api.mjs +23 -23
  29. package/fesm2022/esfaenza-es-diagrams.mjs +1320 -1320
  30. package/fesm2022/esfaenza-es-diagrams.mjs.map +1 -1
  31. package/index.d.ts +5 -5
  32. package/lib/components/es-diagram.component.d.ts +305 -305
  33. package/lib/esdiagram.module.d.ts +12 -12
  34. package/lib/extensions/ReactiveExtensions.d.ts +20 -20
  35. package/lib/extensions/ResizeSensor.d.ts +43 -43
  36. package/lib/models/EsDiagramModuleConfig.d.ts +9 -9
  37. package/lib/models/component/contextmenu/ContextMenuCommand.d.ts +27 -27
  38. package/lib/models/component/contextmenu/ContextMenuOptions.d.ts +79 -79
  39. package/lib/models/component/grouping/ExpandCollapseOptions.d.ts +22 -22
  40. package/lib/models/component/nodes/NodeHTMLTemplate.d.ts +14 -14
  41. package/lib/models/component/nodes/NodeTemplate.d.ts +13 -13
  42. package/lib/models/component/nodes/ZoomLevelBasedTemplate.d.ts +14 -14
  43. package/lib/models/layouts/BreadthFirstLayoutOptionsImpl.d.ts +40 -40
  44. package/lib/models/layouts/CircleLayoutOptionsImpl.d.ts +28 -28
  45. package/lib/models/layouts/ConcentricLayoutOptionsImpl.d.ts +74 -74
  46. package/lib/models/layouts/CoseLayoutOptionsImpl.d.ts +80 -80
  47. package/lib/models/layouts/DagreLayoutOptionsImpl.d.ts +48 -48
  48. package/lib/models/layouts/GridLayoutOptionsImpl.d.ts +39 -39
  49. package/lib/models/layouts/NullLayoutOptionsImpl.d.ts +12 -12
  50. package/lib/models/layouts/PresetLayoutOptionsImpl.d.ts +37 -37
  51. package/lib/models/layouts/RandomLayoutOptionsImpl.d.ts +33 -33
  52. package/lib/models/layouts/base/AnimateLayoutOptionsImpl.d.ts +40 -40
  53. package/lib/models/layouts/base/BaseLayoutOptionsImpl.d.ts +15 -15
  54. package/lib/models/layouts/base/ShapedLayoutOptionsImpl.d.ts +46 -46
  55. package/lib/services/es-diagram.dispatcher.d.ts +44 -44
  56. package/lib/services/es-diagram.service.d.ts +51 -51
  57. package/lib/tokens.d.ts +5 -5
  58. package/package.json +3 -3
  59. package/public-api.d.ts +20 -20
@@ -1,36 +1,36 @@
1
- import { AnimateLayoutOptionsImpl } from './base/AnimateLayoutOptionsImpl';
2
- /**
3
- * Default per l'implementazione dell'algoritmo Random
4
- */
5
- export class RandomLayoutOptionsImpl extends AnimateLayoutOptionsImpl {
6
- /** @ignore */
7
- constructor() {
8
- super();
9
- /**
10
- * Nome dell'algoritmo di layouting
11
- */
12
- this.name = 'random';
13
- /**
14
- * Indica se adattare al contenitore
15
- */
16
- this.fit = true;
17
- /**
18
- * Padding rispetto al contenitore
19
- */
20
- this.padding = 20;
21
- /**
22
- * Specifica le dimensioni esatte al cui interno effettuare il layouting, specificato come **{ x1, y1, x2, y2 }** o **{ x1, y1, w, h }**
23
- */
24
- this.boundingBox = null;
25
- /**
26
- * Funzione per la trasformazione delle posizioni dei nodi
27
- *
28
- * @param {any} node Nodo
29
- * @param {any} position Posizione iniziale
30
- *
31
- * @returns {any} Posizione finale
32
- */
33
- this.transform = (node, position) => position;
34
- }
35
- }
1
+ import { AnimateLayoutOptionsImpl } from './base/AnimateLayoutOptionsImpl';
2
+ /**
3
+ * Default per l'implementazione dell'algoritmo Random
4
+ */
5
+ export class RandomLayoutOptionsImpl extends AnimateLayoutOptionsImpl {
6
+ /** @ignore */
7
+ constructor() {
8
+ super();
9
+ /**
10
+ * Nome dell'algoritmo di layouting
11
+ */
12
+ this.name = 'random';
13
+ /**
14
+ * Indica se adattare al contenitore
15
+ */
16
+ this.fit = true;
17
+ /**
18
+ * Padding rispetto al contenitore
19
+ */
20
+ this.padding = 20;
21
+ /**
22
+ * Specifica le dimensioni esatte al cui interno effettuare il layouting, specificato come **{ x1, y1, x2, y2 }** o **{ x1, y1, w, h }**
23
+ */
24
+ this.boundingBox = null;
25
+ /**
26
+ * Funzione per la trasformazione delle posizioni dei nodi
27
+ *
28
+ * @param {any} node Nodo
29
+ * @param {any} position Posizione iniziale
30
+ *
31
+ * @returns {any} Posizione finale
32
+ */
33
+ this.transform = (node, position) => position;
34
+ }
35
+ }
36
36
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmFuZG9tTGF5b3V0T3B0aW9uc0ltcGwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lcy1kaWFncmFtcy9zcmMvbGliL21vZGVscy9sYXlvdXRzL1JhbmRvbUxheW91dE9wdGlvbnNJbXBsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRTNFOztHQUVHO0FBQ0gsTUFBTSxPQUFPLHVCQUF3QixTQUFRLHdCQUF3QjtJQUVqRSxjQUFjO0lBQ2Q7UUFBZ0IsS0FBSyxFQUFFLENBQUM7UUFFeEI7O1dBRUc7UUFDSCxTQUFJLEdBQUcsUUFBUSxDQUFDO1FBRWhCOztXQUVHO1FBQ0gsUUFBRyxHQUFHLElBQUksQ0FBQztRQUVYOztXQUVHO1FBQ0gsWUFBTyxHQUFHLEVBQUUsQ0FBQztRQUViOztXQUVHO1FBQ0gsZ0JBQVcsR0FBa0UsSUFBSSxDQUFDO1FBRWxGOzs7Ozs7O1dBT0c7UUFDSCxjQUFTLEdBQUcsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUM7SUE5QmhCLENBQUM7Q0ErQjdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQW5pbWF0ZUxheW91dE9wdGlvbnNJbXBsIH0gZnJvbSAnLi9iYXNlL0FuaW1hdGVMYXlvdXRPcHRpb25zSW1wbCc7XHJcblxyXG4vKipcclxuICogRGVmYXVsdCBwZXIgbCdpbXBsZW1lbnRhemlvbmUgZGVsbCdhbGdvcml0bW8gUmFuZG9tXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgUmFuZG9tTGF5b3V0T3B0aW9uc0ltcGwgZXh0ZW5kcyBBbmltYXRlTGF5b3V0T3B0aW9uc0ltcGwge1xyXG5cclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICBjb25zdHJ1Y3RvcigpIHsgc3VwZXIoKTsgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTm9tZSBkZWxsJ2FsZ29yaXRtbyBkaSBsYXlvdXRpbmdcclxuICAgICAqL1xyXG4gICAgbmFtZSA9ICdyYW5kb20nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5kaWNhIHNlIGFkYXR0YXJlIGFsIGNvbnRlbml0b3JlXHJcbiAgICAgKi9cclxuICAgIGZpdCA9IHRydWU7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQYWRkaW5nIHJpc3BldHRvIGFsIGNvbnRlbml0b3JlXHJcbiAgICAgKi9cclxuICAgIHBhZGRpbmcgPSAyMDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFNwZWNpZmljYSBsZSBkaW1lbnNpb25pIGVzYXR0ZSBhbCBjdWkgaW50ZXJubyBlZmZldHR1YXJlIGlsIGxheW91dGluZywgc3BlY2lmaWNhdG8gY29tZSAqKnsgeDEsIHkxLCB4MiwgeTIgfSoqIG8gKip7IHgxLCB5MSwgdywgaCB9KipcclxuICAgICAqL1xyXG4gICAgYm91bmRpbmdCb3g6IGN5dG9zY2FwZS5Cb3VuZGluZ0JveDEyIHwgY3l0b3NjYXBlLkJvdW5kaW5nQm94V0ggfCB1bmRlZmluZWQgPSBudWxsO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRnVuemlvbmUgcGVyIGxhIHRyYXNmb3JtYXppb25lIGRlbGxlIHBvc2l6aW9uaSBkZWkgbm9kaVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge2FueX0gbm9kZSBOb2RvXHJcbiAgICAgKiBAcGFyYW0ge2FueX0gcG9zaXRpb24gUG9zaXppb25lIGluaXppYWxlXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIHthbnl9IFBvc2l6aW9uZSBmaW5hbGVcclxuICAgICAqL1xyXG4gICAgdHJhbnNmb3JtID0gKG5vZGUsIHBvc2l0aW9uKSA9PiBwb3NpdGlvbjtcclxufVxyXG4iXX0=
@@ -1,42 +1,42 @@
1
- import { BaseLayoutOptionsImpl } from './BaseLayoutOptionsImpl';
2
- /**
3
- * Classe base con le opzioni di layout valide per tutti i layout animati
4
- */
5
- export class AnimateLayoutOptionsImpl extends BaseLayoutOptionsImpl {
6
- /** @ignore */
7
- constructor() {
8
- super();
9
- /**
10
- * Livello di zoom da impostare (si consiglia fit = **false** se viene impostato)
11
- */
12
- this.zoom = null;
13
- /**
14
- * Livello di pan da impostare (si consiglia fit = **false** se viene impostato)
15
- */
16
- this.pan = null;
17
- /**
18
- * Indica se animare il cambio di posizione dei nodi
19
- */
20
- this.animate = false;
21
- /**
22
- * Con **animate** a true indica la durata dell'animazione
23
- */
24
- this.animationDuration = 500;
25
- /**
26
- * Abilita o no l'easing dell'animazione, può essere una stringa come ad esempio "ease-in-out-cubic" o altre funzioni scritte allo stesso modo prese da https://easings.net/
27
- */
28
- this.animationEasing = undefined;
29
- /**
30
- * Funzione che indica se un nodo dev'essere animato o no.
31
- * Tutti i nodi sono animati di default.
32
- * Tutti i nodi che non vengono animati verranno posizionati appena inizia l'animazione
33
- *
34
- * @param {any} node Nodo per cui decidere se abilitare l'animazione o no
35
- * @param {number} i Indice del nodo corrente
36
- *
37
- * @returns {boolean} **true** se il nodo dev'essere animato, **false** altrimenti
38
- */
39
- this.animateFilter = (node, i) => true;
40
- }
41
- }
1
+ import { BaseLayoutOptionsImpl } from './BaseLayoutOptionsImpl';
2
+ /**
3
+ * Classe base con le opzioni di layout valide per tutti i layout animati
4
+ */
5
+ export class AnimateLayoutOptionsImpl extends BaseLayoutOptionsImpl {
6
+ /** @ignore */
7
+ constructor() {
8
+ super();
9
+ /**
10
+ * Livello di zoom da impostare (si consiglia fit = **false** se viene impostato)
11
+ */
12
+ this.zoom = null;
13
+ /**
14
+ * Livello di pan da impostare (si consiglia fit = **false** se viene impostato)
15
+ */
16
+ this.pan = null;
17
+ /**
18
+ * Indica se animare il cambio di posizione dei nodi
19
+ */
20
+ this.animate = false;
21
+ /**
22
+ * Con **animate** a true indica la durata dell'animazione
23
+ */
24
+ this.animationDuration = 500;
25
+ /**
26
+ * Abilita o no l'easing dell'animazione, può essere una stringa come ad esempio "ease-in-out-cubic" o altre funzioni scritte allo stesso modo prese da https://easings.net/
27
+ */
28
+ this.animationEasing = undefined;
29
+ /**
30
+ * Funzione che indica se un nodo dev'essere animato o no.
31
+ * Tutti i nodi sono animati di default.
32
+ * Tutti i nodi che non vengono animati verranno posizionati appena inizia l'animazione
33
+ *
34
+ * @param {any} node Nodo per cui decidere se abilitare l'animazione o no
35
+ * @param {number} i Indice del nodo corrente
36
+ *
37
+ * @returns {boolean} **true** se il nodo dev'essere animato, **false** altrimenti
38
+ */
39
+ this.animateFilter = (node, i) => true;
40
+ }
41
+ }
42
42
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQW5pbWF0ZUxheW91dE9wdGlvbnNJbXBsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXMtZGlhZ3JhbXMvc3JjL2xpYi9tb2RlbHMvbGF5b3V0cy9iYXNlL0FuaW1hdGVMYXlvdXRPcHRpb25zSW1wbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVoRTs7R0FFRztBQUNILE1BQU0sT0FBTyx3QkFBeUIsU0FBUSxxQkFBcUI7SUFFL0QsY0FBYztJQUNkO1FBQWdCLEtBQUssRUFBRSxDQUFDO1FBRXhCOztXQUVHO1FBQ0gsU0FBSSxHQUFXLElBQUksQ0FBQztRQUVwQjs7V0FFRztRQUNILFFBQUcsR0FBVyxJQUFJLENBQUM7UUFFbkI7O1dBRUc7UUFDSCxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBRWhCOztXQUVHO1FBQ0gsc0JBQWlCLEdBQUcsR0FBRyxDQUFDO1FBRXhCOztXQUVHO1FBQ0gsb0JBQWUsR0FBRyxTQUFTLENBQUM7UUFFNUI7Ozs7Ozs7OztXQVNHO1FBQ0gsa0JBQWEsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQztJQXJDakIsQ0FBQztDQXNDN0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBbmltYXRlZExheW91dE9wdGlvbnMgfSBmcm9tICdjeXRvc2NhcGUnO1xyXG5pbXBvcnQgeyBCYXNlTGF5b3V0T3B0aW9uc0ltcGwgfSBmcm9tICcuL0Jhc2VMYXlvdXRPcHRpb25zSW1wbCc7XHJcblxyXG4vKipcclxuICogQ2xhc3NlIGJhc2UgY29uIGxlIG9wemlvbmkgZGkgbGF5b3V0IHZhbGlkZSBwZXIgdHV0dGkgaSBsYXlvdXQgYW5pbWF0aVxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIEFuaW1hdGVMYXlvdXRPcHRpb25zSW1wbCBleHRlbmRzIEJhc2VMYXlvdXRPcHRpb25zSW1wbCBpbXBsZW1lbnRzIEFuaW1hdGVkTGF5b3V0T3B0aW9ucyB7XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgKi9cclxuICAgIGNvbnN0cnVjdG9yKCkgeyBzdXBlcigpOyB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBMaXZlbGxvIGRpIHpvb20gZGEgaW1wb3N0YXJlIChzaSBjb25zaWdsaWEgZml0ID0gKipmYWxzZSoqIHNlIHZpZW5lIGltcG9zdGF0bylcclxuICAgICAqL1xyXG4gICAgem9vbTogbnVtYmVyID0gbnVsbDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIExpdmVsbG8gZGkgcGFuIGRhIGltcG9zdGFyZSAoc2kgY29uc2lnbGlhIGZpdCA9ICoqZmFsc2UqKiBzZSB2aWVuZSBpbXBvc3RhdG8pXHJcbiAgICAgKi9cclxuICAgIHBhbjogbnVtYmVyID0gbnVsbDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEluZGljYSBzZSBhbmltYXJlIGlsIGNhbWJpbyBkaSBwb3NpemlvbmUgZGVpIG5vZGlcclxuICAgICAqL1xyXG4gICAgYW5pbWF0ZSA9IGZhbHNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29uICoqYW5pbWF0ZSoqIGEgdHJ1ZSBpbmRpY2EgbGEgZHVyYXRhIGRlbGwnYW5pbWF6aW9uZVxyXG4gICAgICovXHJcbiAgICBhbmltYXRpb25EdXJhdGlvbiA9IDUwMDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEFiaWxpdGEgbyBubyBsJ2Vhc2luZyBkZWxsJ2FuaW1hemlvbmUsIHB1w7IgZXNzZXJlIHVuYSBzdHJpbmdhIGNvbWUgYWQgZXNlbXBpbyBcImVhc2UtaW4tb3V0LWN1YmljXCIgbyBhbHRyZSBmdW56aW9uaSBzY3JpdHRlIGFsbG8gc3Rlc3NvIG1vZG8gcHJlc2UgZGEgaHR0cHM6Ly9lYXNpbmdzLm5ldC9cclxuICAgICAqL1xyXG4gICAgYW5pbWF0aW9uRWFzaW5nID0gdW5kZWZpbmVkO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRnVuemlvbmUgY2hlIGluZGljYSBzZSB1biBub2RvIGRldidlc3NlcmUgYW5pbWF0byBvIG5vLiBcclxuICAgICAqIFR1dHRpIGkgbm9kaSBzb25vIGFuaW1hdGkgZGkgZGVmYXVsdC5cclxuICAgICAqIFR1dHRpIGkgbm9kaSBjaGUgbm9uIHZlbmdvbm8gYW5pbWF0aSB2ZXJyYW5ubyBwb3NpemlvbmF0aSBhcHBlbmEgaW5pemlhIGwnYW5pbWF6aW9uZVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge2FueX0gbm9kZSBOb2RvIHBlciBjdWkgZGVjaWRlcmUgc2UgYWJpbGl0YXJlIGwnYW5pbWF6aW9uZSBvIG5vXHJcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gaSBJbmRpY2UgZGVsIG5vZG8gY29ycmVudGVcclxuICAgICAqIFxyXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59ICoqdHJ1ZSoqIHNlIGlsIG5vZG8gZGV2J2Vzc2VyZSBhbmltYXRvLCAqKmZhbHNlKiogYWx0cmltZW50aVxyXG4gICAgICovXHJcbiAgICBhbmltYXRlRmlsdGVyID0gKG5vZGUsIGk6IG51bWJlcikgPT4gdHJ1ZTtcclxufSJdfQ==
@@ -1,18 +1,18 @@
1
- /**
2
- * Opzioni di layout di base che si collegano al **ready** e allo **stop** eventualmente per aggiungere del log addizionale
3
- */
4
- export class BaseLayoutOptionsImpl {
5
- /**
6
- * Per ora ignoro lato documentale dato che sono placholder
7
- * @ignore
8
- */
9
- ready(e) {
10
- }
11
- /**
12
- * Per ora ignoro lato documentale dato che sono placholder
13
- * @ignore
14
- */
15
- stop(e) {
16
- }
17
- }
1
+ /**
2
+ * Opzioni di layout di base che si collegano al **ready** e allo **stop** eventualmente per aggiungere del log addizionale
3
+ */
4
+ export class BaseLayoutOptionsImpl {
5
+ /**
6
+ * Per ora ignoro lato documentale dato che sono placholder
7
+ * @ignore
8
+ */
9
+ ready(e) {
10
+ }
11
+ /**
12
+ * Per ora ignoro lato documentale dato che sono placholder
13
+ * @ignore
14
+ */
15
+ stop(e) {
16
+ }
17
+ }
18
18
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmFzZUxheW91dE9wdGlvbnNJbXBsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXMtZGlhZ3JhbXMvc3JjL2xpYi9tb2RlbHMvbGF5b3V0cy9iYXNlL0Jhc2VMYXlvdXRPcHRpb25zSW1wbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE1BQU0sT0FBTyxxQkFBcUI7SUFFOUI7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLENBQThCO0lBRXBDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUFJLENBQUMsQ0FBOEI7SUFFbkMsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIE9wemlvbmkgZGkgbGF5b3V0IGRpIGJhc2UgY2hlIHNpIGNvbGxlZ2FubyBhbCAqKnJlYWR5KiogZSBhbGxvICoqc3RvcCoqIGV2ZW50dWFsbWVudGUgcGVyIGFnZ2l1bmdlcmUgZGVsIGxvZyBhZGRpemlvbmFsZVxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIEJhc2VMYXlvdXRPcHRpb25zSW1wbCB7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQZXIgb3JhIGlnbm9ybyBsYXRvIGRvY3VtZW50YWxlIGRhdG8gY2hlIHNvbm8gcGxhY2hvbGRlclxyXG4gICAgICogQGlnbm9yZVxyXG4gICAgICovXHJcbiAgICByZWFkeShlOiBjeXRvc2NhcGUuTGF5b3V0RXZlbnRPYmplY3QpIHtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQZXIgb3JhIGlnbm9ybyBsYXRvIGRvY3VtZW50YWxlIGRhdG8gY2hlIHNvbm8gcGxhY2hvbGRlclxyXG4gICAgICogQGlnbm9yZVxyXG4gICAgICovXHJcbiAgICBzdG9wKGU6IGN5dG9zY2FwZS5MYXlvdXRFdmVudE9iamVjdCkge1xyXG5cclxuICAgIH1cclxufSJdfQ==
@@ -1,48 +1,48 @@
1
- import { AnimateLayoutOptionsImpl } from './AnimateLayoutOptionsImpl';
2
- /**
3
- * Classe base per gli algoritmi "Shaped"
4
- */
5
- export class ShapedLayoutOptionsImpl extends AnimateLayoutOptionsImpl {
6
- /** @ignore */
7
- constructor() {
8
- super();
9
- /**
10
- * Indica se adattare al contenitore
11
- */
12
- this.fit = true;
13
- /**
14
- * Padding rispetto al contenitore
15
- */
16
- this.padding = 30;
17
- /**
18
- * Specifica le dimensioni esatte al cui interno effettuare il layouting, specificato come **{ x1, y1, x2, y2 }** o **{ x1, y1, w, h }**
19
- */
20
- this.boundingBox = null;
21
- /**
22
- * Fa in modo che i nodi non si accavallino, ma se il contenitore non ha abbastanza spazio potrebbero andare in overflow
23
- */
24
- this.avoidOverlap = true;
25
- /**
26
- * Include o esclude le dimensioni delle label dei nodi nel calcolo delle posizioni
27
- */
28
- this.nodeDimensionsIncludeLabels = false;
29
- /**
30
- * Moltiplicatore delle dimensioni per espandere/restringere le dimensioni globali del diagramma
31
- */
32
- this.spacingFactor = 1;
33
- /**
34
- * Funzione di ordinamento per ordinare i nodi
35
- */
36
- this.sort = null;
37
- /**
38
- * Funzione per la trasformazione delle posizioni dei nodi
39
- *
40
- * @param {any} node Nodo
41
- * @param {any} position Posizione iniziale
42
- *
43
- * @returns {any} Posizione finale
44
- */
45
- this.transform = (node, position) => position;
46
- }
47
- }
1
+ import { AnimateLayoutOptionsImpl } from './AnimateLayoutOptionsImpl';
2
+ /**
3
+ * Classe base per gli algoritmi "Shaped"
4
+ */
5
+ export class ShapedLayoutOptionsImpl extends AnimateLayoutOptionsImpl {
6
+ /** @ignore */
7
+ constructor() {
8
+ super();
9
+ /**
10
+ * Indica se adattare al contenitore
11
+ */
12
+ this.fit = true;
13
+ /**
14
+ * Padding rispetto al contenitore
15
+ */
16
+ this.padding = 30;
17
+ /**
18
+ * Specifica le dimensioni esatte al cui interno effettuare il layouting, specificato come **{ x1, y1, x2, y2 }** o **{ x1, y1, w, h }**
19
+ */
20
+ this.boundingBox = null;
21
+ /**
22
+ * Fa in modo che i nodi non si accavallino, ma se il contenitore non ha abbastanza spazio potrebbero andare in overflow
23
+ */
24
+ this.avoidOverlap = true;
25
+ /**
26
+ * Include o esclude le dimensioni delle label dei nodi nel calcolo delle posizioni
27
+ */
28
+ this.nodeDimensionsIncludeLabels = false;
29
+ /**
30
+ * Moltiplicatore delle dimensioni per espandere/restringere le dimensioni globali del diagramma
31
+ */
32
+ this.spacingFactor = 1;
33
+ /**
34
+ * Funzione di ordinamento per ordinare i nodi
35
+ */
36
+ this.sort = null;
37
+ /**
38
+ * Funzione per la trasformazione delle posizioni dei nodi
39
+ *
40
+ * @param {any} node Nodo
41
+ * @param {any} position Posizione iniziale
42
+ *
43
+ * @returns {any} Posizione finale
44
+ */
45
+ this.transform = (node, position) => position;
46
+ }
47
+ }
48
48
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2hhcGVkTGF5b3V0T3B0aW9uc0ltcGwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lcy1kaWFncmFtcy9zcmMvbGliL21vZGVscy9sYXlvdXRzL2Jhc2UvU2hhcGVkTGF5b3V0T3B0aW9uc0ltcGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFdEU7O0dBRUc7QUFDSCxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsd0JBQXdCO0lBRWpFLGNBQWM7SUFDZDtRQUFnQixLQUFLLEVBQUUsQ0FBQztRQUV4Qjs7V0FFRztRQUNILFFBQUcsR0FBRyxJQUFJLENBQUM7UUFFWDs7V0FFRztRQUNILFlBQU8sR0FBRyxFQUFFLENBQUM7UUFFYjs7V0FFRztRQUNILGdCQUFXLEdBQStDLElBQUksQ0FBQztRQUUvRDs7V0FFRztRQUNILGlCQUFZLEdBQUcsSUFBSSxDQUFDO1FBRXBCOztXQUVHO1FBQ0gsZ0NBQTJCLEdBQUcsS0FBSyxDQUFDO1FBRXBDOztXQUVHO1FBQ0gsa0JBQWEsR0FBRyxDQUFDLENBQUM7UUFFbEI7O1dBRUc7UUFDSCxTQUFJLEdBQXFCLElBQUksQ0FBQztRQUU5Qjs7Ozs7OztXQU9HO1FBQ0gsY0FBUyxHQUFHLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDO0lBN0NoQixDQUFDO0NBOEM3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJvdW5kaW5nQm94MTIsIEJvdW5kaW5nQm94V0gsIFNvcnRpbmdGdW5jdGlvbiB9IGZyb20gJ2N5dG9zY2FwZSc7XHJcbmltcG9ydCB7IEFuaW1hdGVMYXlvdXRPcHRpb25zSW1wbCB9IGZyb20gJy4vQW5pbWF0ZUxheW91dE9wdGlvbnNJbXBsJztcclxuXHJcbi8qKlxyXG4gKiBDbGFzc2UgYmFzZSBwZXIgZ2xpIGFsZ29yaXRtaSBcIlNoYXBlZFwiXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgU2hhcGVkTGF5b3V0T3B0aW9uc0ltcGwgZXh0ZW5kcyBBbmltYXRlTGF5b3V0T3B0aW9uc0ltcGwge1xyXG5cclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICBjb25zdHJ1Y3RvcigpIHsgc3VwZXIoKTsgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5kaWNhIHNlIGFkYXR0YXJlIGFsIGNvbnRlbml0b3JlXHJcbiAgICAgKi9cclxuICAgIGZpdCA9IHRydWU7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQYWRkaW5nIHJpc3BldHRvIGFsIGNvbnRlbml0b3JlXHJcbiAgICAgKi9cclxuICAgIHBhZGRpbmcgPSAzMDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFNwZWNpZmljYSBsZSBkaW1lbnNpb25pIGVzYXR0ZSBhbCBjdWkgaW50ZXJubyBlZmZldHR1YXJlIGlsIGxheW91dGluZywgc3BlY2lmaWNhdG8gY29tZSAqKnsgeDEsIHkxLCB4MiwgeTIgfSoqIG8gKip7IHgxLCB5MSwgdywgaCB9KipcclxuICAgICAqL1xyXG4gICAgYm91bmRpbmdCb3g/OiBCb3VuZGluZ0JveDEyIHwgQm91bmRpbmdCb3hXSCB8IHVuZGVmaW5lZCA9IG51bGw7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGYSBpbiBtb2RvIGNoZSBpIG5vZGkgbm9uIHNpIGFjY2F2YWxsaW5vLCBtYSBzZSBpbCBjb250ZW5pdG9yZSBub24gaGEgYWJiYXN0YW56YSBzcGF6aW8gcG90cmViYmVybyBhbmRhcmUgaW4gb3ZlcmZsb3dcclxuICAgICAqL1xyXG4gICAgYXZvaWRPdmVybGFwID0gdHJ1ZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEluY2x1ZGUgbyBlc2NsdWRlIGxlIGRpbWVuc2lvbmkgZGVsbGUgbGFiZWwgZGVpIG5vZGkgbmVsIGNhbGNvbG8gZGVsbGUgcG9zaXppb25pXHJcbiAgICAgKi9cclxuICAgIG5vZGVEaW1lbnNpb25zSW5jbHVkZUxhYmVscyA9IGZhbHNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogTW9sdGlwbGljYXRvcmUgZGVsbGUgZGltZW5zaW9uaSBwZXIgZXNwYW5kZXJlL3Jlc3RyaW5nZXJlIGxlIGRpbWVuc2lvbmkgZ2xvYmFsaSBkZWwgZGlhZ3JhbW1hXHJcbiAgICAgKi9cclxuICAgIHNwYWNpbmdGYWN0b3IgPSAxO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRnVuemlvbmUgZGkgb3JkaW5hbWVudG8gcGVyIG9yZGluYXJlIGkgbm9kaVxyXG4gICAgICovXHJcbiAgICBzb3J0PzogU29ydGluZ0Z1bmN0aW9uID0gbnVsbDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEZ1bnppb25lIHBlciBsYSB0cmFzZm9ybWF6aW9uZSBkZWxsZSBwb3NpemlvbmkgZGVpIG5vZGlcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHthbnl9IG5vZGUgTm9kb1xyXG4gICAgICogQHBhcmFtIHthbnl9IHBvc2l0aW9uIFBvc2l6aW9uZSBpbml6aWFsZVxyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyB7YW55fSBQb3NpemlvbmUgZmluYWxlXHJcbiAgICAgKi9cclxuICAgIHRyYW5zZm9ybSA9IChub2RlLCBwb3NpdGlvbikgPT4gcG9zaXRpb247XHJcbn1cclxuIl19
@@ -1,89 +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
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EsDiagramDispatcher, deps: [{ token: DIA_DEBUG_MODE }], target: i0.ɵɵFactoryTarget.Injectable }); }
81
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EsDiagramDispatcher }); }
82
- }
83
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXMtZGlhZ3JhbS5kaXNwYXRjaGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXMtZGlhZ3JhbXMvc3JjL2xpYi9zZXJ2aWNlcy9lcy1kaWFncmFtLmRpc3BhdGNoZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFdBQVcsQ0FBQzs7QUFFM0M7O0dBRUc7QUFFSCxNQUFNLE9BQU8sbUJBQW1CO0lBWTVCOztPQUVHO0lBQ0gsWUFBNEMsSUFBYTtRQUFiLFNBQUksR0FBSixJQUFJLENBQVM7UUFiekQ7O1dBRUc7UUFDSyxvQkFBZSxHQUFzQyxFQUFFLENBQUM7UUFFaEU7O1dBRUc7UUFDSyxnQkFBVyxHQUFhLEVBQUUsQ0FBQztJQUswQixDQUFDO0lBRTlEOzs7Ozs7T0FNRztJQUNJLFFBQVEsQ0FBQyxJQUFZLEVBQUUsZ0JBQTBCO1FBQ3BELElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3BDLE1BQU0sNkNBQTZDLEdBQUcsSUFBSSxHQUFHLGlFQUFpRSxDQUFDO1FBRW5JLElBQUksQ0FBQyxHQUFHLENBQUMsa0VBQWtFLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDcEYsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7UUFDdEUsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7WUFDbEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO1lBQzlDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztTQUMxQjtJQUNMLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksVUFBVSxDQUFDLElBQVk7UUFDMUIsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0MsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLEVBQ2Y7WUFDSSxzRkFBc0Y7WUFDdEYsSUFBSSxDQUFDLEdBQUcsQ0FBQyw4Q0FBOEMsR0FBRyxJQUFJLEdBQUcsd0NBQXdDLENBQUMsQ0FBQztZQUMzRyxPQUFPO1NBQ1Y7UUFFRCxJQUFJLENBQUMsR0FBRyxDQUFDLGtDQUFrQyxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUNyQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssZUFBZTtRQUNuQixJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxHQUFHLENBQUMsMkRBQTJELEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXZGLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQzNCLElBQUksQ0FBQyxHQUFHLENBQUMsd0NBQXdDLEdBQUcsU0FBUyxDQUFDLElBQUksR0FBRyxVQUFVLENBQUMsQ0FBQztZQUNqRixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ2xDLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO2dCQUNsQyxJQUFJLENBQUMsR0FBRyxDQUFDLHNEQUFzRCxDQUFDLENBQUM7Z0JBQ2pFLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQzthQUMxQjs7Z0JBRUcsSUFBSSxDQUFDLEdBQUcsQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDO1FBQ2xFLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVEOztPQUVHO0lBQ0ssR0FBRyxDQUFDLElBQVk7UUFDcEIsSUFBSSxJQUFJLENBQUMsSUFBSTtZQUNULE9BQU8sQ0FBQyxHQUFHLENBQUMseUJBQXlCLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDdEQsQ0FBQzsrR0FqRlEsbUJBQW1CLGtCQWVSLGNBQWM7bUhBZnpCLG1CQUFtQjs7NEZBQW5CLG1CQUFtQjtrQkFEL0IsVUFBVTs7MEJBZ0JNLE1BQU07MkJBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgRElBX0RFQlVHX01PREUgfSBmcm9tICcuLi90b2tlbnMnO1xyXG5cclxuLyoqXHJcbiAqIENsYXNzZSBjaGUgc2kgb2NjdXBhIGRlbCBkaXNwYXRjaCBkZWxsZSBvcGVyYXppb25pIGRpIHJlbmRlcmluZyBkZWdsaSBvZ2dldHRpIHV0aWxpenphbmRvIHVuYSBjb2RhIFxyXG4gKi9cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgRXNEaWFncmFtRGlzcGF0Y2hlciB7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb2RhIGRpIGluaXppYWxpenphemlvbmkgYW5jb3JhIGRhIGVzZWd1aXJlLiBRdWFuZG8gcXVlc3RhIMOoIHZ1b3RhIHNpZ25pZmljYSBjaGUgbmVzc3VubyBzdGEgY3JlYW5kbyBvZ2dldHRpXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgSW5pdGlhbGl6YXRpb25zOiB7IG5hbWU6IHN0cmluZywgZnVuY3Rpb246IGFueSB9W10gPSBbXTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIExpc3RhIGRlZ2xpIG9nZ2V0dGkgaW5pemlhbGl6emF0aSBlIGF0dGl2aSBpbiB1biBkYXRvIG1vbWVudG8gKHZpZW5lIHJlZ2lzdHJhdGEgbGEgcHJvcHJpZXTDoCAqKm5hbWUqKikuIE5vbiDDqCBwb3NzaWJpbGUgcmVnaXN0cmFyZSBkdWUgZ3JhZmljaSBjb24gbG8gc3Rlc3NvIGlkZW50aWZpY2F0aXZvXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgSW5pdGlhbGl6ZWQ6IHN0cmluZ1tdID0gW107XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAaWdub3JlXHJcbiAgICAgKi9cclxuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoRElBX0RFQlVHX01PREUpIHByaXZhdGUgbG9nczogYm9vbGVhbikgeyB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZWdpc3RyYSB1biBvZ2dldHRvIGRhIHZpc3VhbGl6emFyZSBpbnNpZW1lIGFsbGEgcHJvcHJpYSBmdW56aW9uZSBkaSBjcmVhemlvbmUuIFF1ZXN0J3VsdGltYSBzYXLDoCBkaWZmZXJpdGEgZmlubyBhIGNoZSB0dXR0aSBnbGkgb2dnZXR0aVxyXG4gICAgICogcHJlY2VkZW50ZW1lbnRlIHJlZ2lzdGF0aSBub24gaGFubm8gZmluaXRvIGxhIGZhc2UgZGkgaW5pemlhbGl6emF6aW9uZVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBJZGVudGlmaWNhdGl2byBkZWxsJ29nZ2V0dG8gZGEgcmVnaXN0cmFyZVxyXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gY3JlYXRpb25GdW5jdGlvbiBGdW56aW9uZSBjaGUgZmlzaWNhbWVudGUgZG92csOgIG9jY3VwYXJzaSBkZWxsYSBjcmVhemlvbmUgZGVsbCdvZ2dldHRvXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyByZWdpc3RlcihuYW1lOiBzdHJpbmcsIGNyZWF0aW9uRnVuY3Rpb246IEZ1bmN0aW9uKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuSW5pdGlhbGl6ZWQuaW5kZXhPZihuYW1lKSAhPSAtMSlcclxuICAgICAgICAgICAgdGhyb3cgXCJBdHRlbXB0aW5nIHRvIHJlZ2lzdGVyIGEgZHVwbGljYXRlIG9iamVjdCAnXCIgKyBuYW1lICsgXCInLiBNYWtlIHN1cmUgdGhlICduYW1lJyBwcm9wZXJ0aWVzIG9mIHlvdXIgZGlhZ3JhbSBhcmUgdW5pdm9xdWVcIjtcclxuXHJcbiAgICAgICAgdGhpcy5sb2coXCJESVNQQVRDSEVSOiBSZWdpc3RlcmluZyBkaWFncmFtIGNyZWF0aW9uIGZ1bmN0aW9uIGV4ZWN1dGlvbiBmb3IgXCIgKyBuYW1lKTtcclxuICAgICAgICB0aGlzLkluaXRpYWxpemF0aW9ucy5wdXNoKHsgbmFtZTogbmFtZSwgZnVuY3Rpb246IGNyZWF0aW9uRnVuY3Rpb24gfSk7XHJcbiAgICAgICAgaWYgKHRoaXMuSW5pdGlhbGl6YXRpb25zLmxlbmd0aCA9PSAxKSB7XHJcbiAgICAgICAgICAgIHRoaXMubG9nKFwiRElTUEFUQ0hFUjogSW5pdGlhbCBkcmFpbiBzdGFydGVkXCIpO1xyXG4gICAgICAgICAgICB0aGlzLmRyYWluSW5pdFF1ZXVlcygpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIERlcmVnaXN0cmEgdW4gb2dnZXR0byBwcmVzZW50ZS4gQ2hpYW1hdGEgZ2VuZXJhbG1lbnRlIGFsIGRpc3Bvc2UgZGVsbCdvZ2dldHRvIGluIHF1ZXN0aW9uZSBxdWFuZG8gbm9uIGRldidlc3NlcmUgcGnDuSBtb3N0cmF0byBuZWxsYSBwYWdpbmEgY29ycmVudGVcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgSWRlbnRpZmljYXRpdm8gZGVsbCdvZ2dldHRvIGRhIGRlcmVnaXN0cmFyZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZGVyZWdpc3RlcihuYW1lOiBzdHJpbmcpIHtcclxuICAgICAgICBsZXQgaW5kZXggPSB0aGlzLkluaXRpYWxpemVkLmluZGV4T2YobmFtZSk7XHJcbiAgICAgICAgaWYgKGluZGV4ID09IC0xKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgLy9RdWVzdG8gc3VjY2VkZSBxdWFuZG8gc2kgY2VyY2EgZGkgZGlzdHJ1Z2dlcmUgbCdvZ2dldHRvIG1lbnRyZSBzdGEgdmVuZW5kbyBncmFmaWNhdG9cclxuICAgICAgICAgICAgdGhpcy5sb2coXCJESVNQQVRDSEVSOiBSZWdpc3RyYXRpb24gbWlzc2luZyBmb3Igb2JqZWN0IFwiICsgbmFtZSArIFwiIGl0IHdhcyBwcm9iYWJseSBkZXN0cm95ZWQgZHVyaW5nIGxvYWRcIik7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMubG9nKFwiRElTUEFUQ0hFUjogT2JqZWN0IGRlcmVnaXN0ZXJlZCBcIiArIG5hbWUpO1xyXG4gICAgICAgIHRoaXMuSW5pdGlhbGl6ZWQuc3BsaWNlKGluZGV4LCAxKVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWV0b2RvIGNoZSBlc2VndWUgaW4gbWFuaWVyYSBzZXF1ZW56aWFsZSBsZSBmdW56aW9uaSBkaSBpbml6aWFsaXp6YXppb25lIGRlZ2xpIG9nZ2V0dGkgZmluY2jDqSBwcmVzZW50aSBcclxuICAgICAqIGluIG1vZG8gY2hlIG5lc3N1biBvZ2dldHRvIHBvc3NhIGVzc2VyZSBpbml6aWFsaXp6YXRvIGNvbnRlbXBvcmFuZWFtZW50ZSBhZCB1biBhbHRyb1xyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGRyYWluSW5pdFF1ZXVlcygpIHtcclxuICAgICAgICBsZXQgdG9FeGVjdXRlID0gdGhpcy5Jbml0aWFsaXphdGlvbnNbMF07XHJcbiAgICAgICAgdGhpcy5sb2coXCJESVNQQVRDSEVSOiBFeGVjdXRpbmcgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24gZm9yIG9iamVjdCBcIiArIHRvRXhlY3V0ZS5uYW1lKTtcclxuXHJcbiAgICAgICAgdG9FeGVjdXRlLmZ1bmN0aW9uKCkudGhlbigoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubG9nKFwiRElTUEFUQ0hFUjogaW5pdGlhbGl6YXRpb24gZm9yIG9iamVjdCBcIiArIHRvRXhlY3V0ZS5uYW1lICsgXCIgaXMgZG9uZVwiKTtcclxuICAgICAgICAgICAgdGhpcy5Jbml0aWFsaXplZC5wdXNoKHRvRXhlY3V0ZS5uYW1lKTtcclxuICAgICAgICAgICAgdGhpcy5Jbml0aWFsaXphdGlvbnMuc3BsaWNlKDAsIDEpO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5Jbml0aWFsaXphdGlvbnMubGVuZ3RoID49IDEpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubG9nKFwiRElTUEFUQ0hFUjogRm91bmQgcXVldWVkIGluaXRpYWxpemF0aW9ucy4gQ29udGludWluZ1wiKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZHJhaW5Jbml0UXVldWVzKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2coXCJESVNQQVRDSEVSOiBxdWV1ZSBpcyBvdmVyLCBub3RoaW5nIG1vcmUgdG8gZG9cIik7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAaWdub3JlXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgbG9nKHRleHQ6IHN0cmluZykge1xyXG4gICAgICAgIGlmICh0aGlzLmxvZ3MpXHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiQGVzZmFlbnphL2VzLWRpYWdyYW1zOiBcIiArIHRleHQpO1xyXG4gICAgfVxyXG59Il19
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
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EsDiagramDispatcher, deps: [{ token: DIA_DEBUG_MODE }], target: i0.ɵɵFactoryTarget.Injectable }); }
81
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EsDiagramDispatcher }); }
82
+ }
83
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EsDiagramDispatcher, decorators: [{
84
+ type: Injectable
85
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
86
+ type: Inject,
87
+ args: [DIA_DEBUG_MODE]
88
+ }] }] });
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXMtZGlhZ3JhbS5kaXNwYXRjaGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXMtZGlhZ3JhbXMvc3JjL2xpYi9zZXJ2aWNlcy9lcy1kaWFncmFtLmRpc3BhdGNoZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFdBQVcsQ0FBQzs7QUFFM0M7O0dBRUc7QUFFSCxNQUFNLE9BQU8sbUJBQW1CO0lBWTVCOztPQUVHO0lBQ0gsWUFBNEMsSUFBYTtRQUFiLFNBQUksR0FBSixJQUFJLENBQVM7UUFiekQ7O1dBRUc7UUFDSyxvQkFBZSxHQUFzQyxFQUFFLENBQUM7UUFFaEU7O1dBRUc7UUFDSyxnQkFBVyxHQUFhLEVBQUUsQ0FBQztJQUswQixDQUFDO0lBRTlEOzs7Ozs7T0FNRztJQUNJLFFBQVEsQ0FBQyxJQUFZLEVBQUUsZ0JBQTBCO1FBQ3BELElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3BDLE1BQU0sNkNBQTZDLEdBQUcsSUFBSSxHQUFHLGlFQUFpRSxDQUFDO1FBRW5JLElBQUksQ0FBQyxHQUFHLENBQUMsa0VBQWtFLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDcEYsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7UUFDdEUsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNuQyxJQUFJLENBQUMsR0FBRyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7WUFDOUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQzNCLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFVBQVUsQ0FBQyxJQUFZO1FBQzFCLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNDLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQyxFQUNmLENBQUM7WUFDRyxzRkFBc0Y7WUFDdEYsSUFBSSxDQUFDLEdBQUcsQ0FBQyw4Q0FBOEMsR0FBRyxJQUFJLEdBQUcsd0NBQXdDLENBQUMsQ0FBQztZQUMzRyxPQUFPO1FBQ1gsQ0FBQztRQUVELElBQUksQ0FBQyxHQUFHLENBQUMsa0NBQWtDLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQ3JDLENBQUM7SUFFRDs7O09BR0c7SUFDSyxlQUFlO1FBQ25CLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEMsSUFBSSxDQUFDLEdBQUcsQ0FBQywyREFBMkQsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFdkYsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDM0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyx3Q0FBd0MsR0FBRyxTQUFTLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQyxDQUFDO1lBQ2pGLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN0QyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDbEMsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDbkMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxzREFBc0QsQ0FBQyxDQUFDO2dCQUNqRSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDM0IsQ0FBQzs7Z0JBRUcsSUFBSSxDQUFDLEdBQUcsQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDO1FBQ2xFLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVEOztPQUVHO0lBQ0ssR0FBRyxDQUFDLElBQVk7UUFDcEIsSUFBSSxJQUFJLENBQUMsSUFBSTtZQUNULE9BQU8sQ0FBQyxHQUFHLENBQUMseUJBQXlCLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDdEQsQ0FBQzsrR0FqRlEsbUJBQW1CLGtCQWVSLGNBQWM7bUhBZnpCLG1CQUFtQjs7NEZBQW5CLG1CQUFtQjtrQkFEL0IsVUFBVTs7MEJBZ0JNLE1BQU07MkJBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgRElBX0RFQlVHX01PREUgfSBmcm9tICcuLi90b2tlbnMnO1xyXG5cclxuLyoqXHJcbiAqIENsYXNzZSBjaGUgc2kgb2NjdXBhIGRlbCBkaXNwYXRjaCBkZWxsZSBvcGVyYXppb25pIGRpIHJlbmRlcmluZyBkZWdsaSBvZ2dldHRpIHV0aWxpenphbmRvIHVuYSBjb2RhIFxyXG4gKi9cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgRXNEaWFncmFtRGlzcGF0Y2hlciB7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb2RhIGRpIGluaXppYWxpenphemlvbmkgYW5jb3JhIGRhIGVzZWd1aXJlLiBRdWFuZG8gcXVlc3RhIMOoIHZ1b3RhIHNpZ25pZmljYSBjaGUgbmVzc3VubyBzdGEgY3JlYW5kbyBvZ2dldHRpXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgSW5pdGlhbGl6YXRpb25zOiB7IG5hbWU6IHN0cmluZywgZnVuY3Rpb246IGFueSB9W10gPSBbXTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIExpc3RhIGRlZ2xpIG9nZ2V0dGkgaW5pemlhbGl6emF0aSBlIGF0dGl2aSBpbiB1biBkYXRvIG1vbWVudG8gKHZpZW5lIHJlZ2lzdHJhdGEgbGEgcHJvcHJpZXTDoCAqKm5hbWUqKikuIE5vbiDDqCBwb3NzaWJpbGUgcmVnaXN0cmFyZSBkdWUgZ3JhZmljaSBjb24gbG8gc3Rlc3NvIGlkZW50aWZpY2F0aXZvXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgSW5pdGlhbGl6ZWQ6IHN0cmluZ1tdID0gW107XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAaWdub3JlXHJcbiAgICAgKi9cclxuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoRElBX0RFQlVHX01PREUpIHByaXZhdGUgbG9nczogYm9vbGVhbikgeyB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZWdpc3RyYSB1biBvZ2dldHRvIGRhIHZpc3VhbGl6emFyZSBpbnNpZW1lIGFsbGEgcHJvcHJpYSBmdW56aW9uZSBkaSBjcmVhemlvbmUuIFF1ZXN0J3VsdGltYSBzYXLDoCBkaWZmZXJpdGEgZmlubyBhIGNoZSB0dXR0aSBnbGkgb2dnZXR0aVxyXG4gICAgICogcHJlY2VkZW50ZW1lbnRlIHJlZ2lzdGF0aSBub24gaGFubm8gZmluaXRvIGxhIGZhc2UgZGkgaW5pemlhbGl6emF6aW9uZVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBJZGVudGlmaWNhdGl2byBkZWxsJ29nZ2V0dG8gZGEgcmVnaXN0cmFyZVxyXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gY3JlYXRpb25GdW5jdGlvbiBGdW56aW9uZSBjaGUgZmlzaWNhbWVudGUgZG92csOgIG9jY3VwYXJzaSBkZWxsYSBjcmVhemlvbmUgZGVsbCdvZ2dldHRvXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyByZWdpc3RlcihuYW1lOiBzdHJpbmcsIGNyZWF0aW9uRnVuY3Rpb246IEZ1bmN0aW9uKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuSW5pdGlhbGl6ZWQuaW5kZXhPZihuYW1lKSAhPSAtMSlcclxuICAgICAgICAgICAgdGhyb3cgXCJBdHRlbXB0aW5nIHRvIHJlZ2lzdGVyIGEgZHVwbGljYXRlIG9iamVjdCAnXCIgKyBuYW1lICsgXCInLiBNYWtlIHN1cmUgdGhlICduYW1lJyBwcm9wZXJ0aWVzIG9mIHlvdXIgZGlhZ3JhbSBhcmUgdW5pdm9xdWVcIjtcclxuXHJcbiAgICAgICAgdGhpcy5sb2coXCJESVNQQVRDSEVSOiBSZWdpc3RlcmluZyBkaWFncmFtIGNyZWF0aW9uIGZ1bmN0aW9uIGV4ZWN1dGlvbiBmb3IgXCIgKyBuYW1lKTtcclxuICAgICAgICB0aGlzLkluaXRpYWxpemF0aW9ucy5wdXNoKHsgbmFtZTogbmFtZSwgZnVuY3Rpb246IGNyZWF0aW9uRnVuY3Rpb24gfSk7XHJcbiAgICAgICAgaWYgKHRoaXMuSW5pdGlhbGl6YXRpb25zLmxlbmd0aCA9PSAxKSB7XHJcbiAgICAgICAgICAgIHRoaXMubG9nKFwiRElTUEFUQ0hFUjogSW5pdGlhbCBkcmFpbiBzdGFydGVkXCIpO1xyXG4gICAgICAgICAgICB0aGlzLmRyYWluSW5pdFF1ZXVlcygpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIERlcmVnaXN0cmEgdW4gb2dnZXR0byBwcmVzZW50ZS4gQ2hpYW1hdGEgZ2VuZXJhbG1lbnRlIGFsIGRpc3Bvc2UgZGVsbCdvZ2dldHRvIGluIHF1ZXN0aW9uZSBxdWFuZG8gbm9uIGRldidlc3NlcmUgcGnDuSBtb3N0cmF0byBuZWxsYSBwYWdpbmEgY29ycmVudGVcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgSWRlbnRpZmljYXRpdm8gZGVsbCdvZ2dldHRvIGRhIGRlcmVnaXN0cmFyZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZGVyZWdpc3RlcihuYW1lOiBzdHJpbmcpIHtcclxuICAgICAgICBsZXQgaW5kZXggPSB0aGlzLkluaXRpYWxpemVkLmluZGV4T2YobmFtZSk7XHJcbiAgICAgICAgaWYgKGluZGV4ID09IC0xKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgLy9RdWVzdG8gc3VjY2VkZSBxdWFuZG8gc2kgY2VyY2EgZGkgZGlzdHJ1Z2dlcmUgbCdvZ2dldHRvIG1lbnRyZSBzdGEgdmVuZW5kbyBncmFmaWNhdG9cclxuICAgICAgICAgICAgdGhpcy5sb2coXCJESVNQQVRDSEVSOiBSZWdpc3RyYXRpb24gbWlzc2luZyBmb3Igb2JqZWN0IFwiICsgbmFtZSArIFwiIGl0IHdhcyBwcm9iYWJseSBkZXN0cm95ZWQgZHVyaW5nIGxvYWRcIik7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMubG9nKFwiRElTUEFUQ0hFUjogT2JqZWN0IGRlcmVnaXN0ZXJlZCBcIiArIG5hbWUpO1xyXG4gICAgICAgIHRoaXMuSW5pdGlhbGl6ZWQuc3BsaWNlKGluZGV4LCAxKVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWV0b2RvIGNoZSBlc2VndWUgaW4gbWFuaWVyYSBzZXF1ZW56aWFsZSBsZSBmdW56aW9uaSBkaSBpbml6aWFsaXp6YXppb25lIGRlZ2xpIG9nZ2V0dGkgZmluY2jDqSBwcmVzZW50aSBcclxuICAgICAqIGluIG1vZG8gY2hlIG5lc3N1biBvZ2dldHRvIHBvc3NhIGVzc2VyZSBpbml6aWFsaXp6YXRvIGNvbnRlbXBvcmFuZWFtZW50ZSBhZCB1biBhbHRyb1xyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGRyYWluSW5pdFF1ZXVlcygpIHtcclxuICAgICAgICBsZXQgdG9FeGVjdXRlID0gdGhpcy5Jbml0aWFsaXphdGlvbnNbMF07XHJcbiAgICAgICAgdGhpcy5sb2coXCJESVNQQVRDSEVSOiBFeGVjdXRpbmcgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24gZm9yIG9iamVjdCBcIiArIHRvRXhlY3V0ZS5uYW1lKTtcclxuXHJcbiAgICAgICAgdG9FeGVjdXRlLmZ1bmN0aW9uKCkudGhlbigoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubG9nKFwiRElTUEFUQ0hFUjogaW5pdGlhbGl6YXRpb24gZm9yIG9iamVjdCBcIiArIHRvRXhlY3V0ZS5uYW1lICsgXCIgaXMgZG9uZVwiKTtcclxuICAgICAgICAgICAgdGhpcy5Jbml0aWFsaXplZC5wdXNoKHRvRXhlY3V0ZS5uYW1lKTtcclxuICAgICAgICAgICAgdGhpcy5Jbml0aWFsaXphdGlvbnMuc3BsaWNlKDAsIDEpO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5Jbml0aWFsaXphdGlvbnMubGVuZ3RoID49IDEpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubG9nKFwiRElTUEFUQ0hFUjogRm91bmQgcXVldWVkIGluaXRpYWxpemF0aW9ucy4gQ29udGludWluZ1wiKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZHJhaW5Jbml0UXVldWVzKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2coXCJESVNQQVRDSEVSOiBxdWV1ZSBpcyBvdmVyLCBub3RoaW5nIG1vcmUgdG8gZG9cIik7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAaWdub3JlXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgbG9nKHRleHQ6IHN0cmluZykge1xyXG4gICAgICAgIGlmICh0aGlzLmxvZ3MpXHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiQGVzZmFlbnphL2VzLWRpYWdyYW1zOiBcIiArIHRleHQpO1xyXG4gICAgfVxyXG59Il19