@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.
- package/esm2022/esfaenza-es-diagrams.mjs +4 -4
- package/esm2022/lib/components/es-diagram.component.mjs +537 -537
- package/esm2022/lib/esdiagram.module.mjs +31 -31
- package/esm2022/lib/extensions/ReactiveExtensions.mjs +35 -35
- package/esm2022/lib/extensions/ResizeSensor.mjs +71 -71
- package/esm2022/lib/models/EsDiagramModuleConfig.mjs +5 -5
- package/esm2022/lib/models/component/contextmenu/ContextMenuCommand.mjs +5 -5
- package/esm2022/lib/models/component/contextmenu/ContextMenuOptions.mjs +6 -6
- package/esm2022/lib/models/component/grouping/ExpandCollapseOptions.mjs +5 -5
- package/esm2022/lib/models/component/nodes/NodeHTMLTemplate.mjs +5 -5
- package/esm2022/lib/models/component/nodes/NodeTemplate.mjs +5 -5
- package/esm2022/lib/models/component/nodes/ZoomLevelBasedTemplate.mjs +5 -5
- package/esm2022/lib/models/layouts/BreadthFirstLayoutOptionsImpl.mjs +34 -34
- package/esm2022/lib/models/layouts/CircleLayoutOptionsImpl.mjs +26 -26
- package/esm2022/lib/models/layouts/ConcentricLayoutOptionsImpl.mjs +63 -63
- package/esm2022/lib/models/layouts/CoseLayoutOptionsImpl.mjs +82 -82
- package/esm2022/lib/models/layouts/DagreLayoutOptionsImpl.mjs +51 -51
- package/esm2022/lib/models/layouts/GridLayoutOptionsImpl.mjs +37 -37
- package/esm2022/lib/models/layouts/NullLayoutOptionsImpl.mjs +14 -14
- package/esm2022/lib/models/layouts/PresetLayoutOptionsImpl.mjs +23 -23
- package/esm2022/lib/models/layouts/RandomLayoutOptionsImpl.mjs +35 -35
- package/esm2022/lib/models/layouts/base/AnimateLayoutOptionsImpl.mjs +41 -41
- package/esm2022/lib/models/layouts/base/BaseLayoutOptionsImpl.mjs +17 -17
- package/esm2022/lib/models/layouts/base/ShapedLayoutOptionsImpl.mjs +47 -47
- package/esm2022/lib/services/es-diagram.dispatcher.mjs +89 -89
- package/esm2022/lib/services/es-diagram.service.mjs +106 -106
- package/esm2022/lib/tokens.mjs +5 -5
- package/esm2022/public-api.mjs +23 -23
- package/fesm2022/esfaenza-es-diagrams.mjs +1320 -1320
- package/fesm2022/esfaenza-es-diagrams.mjs.map +1 -1
- package/index.d.ts +5 -5
- package/lib/components/es-diagram.component.d.ts +305 -305
- package/lib/esdiagram.module.d.ts +12 -12
- package/lib/extensions/ReactiveExtensions.d.ts +20 -20
- package/lib/extensions/ResizeSensor.d.ts +43 -43
- package/lib/models/EsDiagramModuleConfig.d.ts +9 -9
- package/lib/models/component/contextmenu/ContextMenuCommand.d.ts +27 -27
- package/lib/models/component/contextmenu/ContextMenuOptions.d.ts +79 -79
- package/lib/models/component/grouping/ExpandCollapseOptions.d.ts +22 -22
- package/lib/models/component/nodes/NodeHTMLTemplate.d.ts +14 -14
- package/lib/models/component/nodes/NodeTemplate.d.ts +13 -13
- package/lib/models/component/nodes/ZoomLevelBasedTemplate.d.ts +14 -14
- package/lib/models/layouts/BreadthFirstLayoutOptionsImpl.d.ts +40 -40
- package/lib/models/layouts/CircleLayoutOptionsImpl.d.ts +28 -28
- package/lib/models/layouts/ConcentricLayoutOptionsImpl.d.ts +74 -74
- package/lib/models/layouts/CoseLayoutOptionsImpl.d.ts +80 -80
- package/lib/models/layouts/DagreLayoutOptionsImpl.d.ts +48 -48
- package/lib/models/layouts/GridLayoutOptionsImpl.d.ts +39 -39
- package/lib/models/layouts/NullLayoutOptionsImpl.d.ts +12 -12
- package/lib/models/layouts/PresetLayoutOptionsImpl.d.ts +37 -37
- package/lib/models/layouts/RandomLayoutOptionsImpl.d.ts +33 -33
- package/lib/models/layouts/base/AnimateLayoutOptionsImpl.d.ts +40 -40
- package/lib/models/layouts/base/BaseLayoutOptionsImpl.d.ts +15 -15
- package/lib/models/layouts/base/ShapedLayoutOptionsImpl.d.ts +46 -46
- package/lib/services/es-diagram.dispatcher.d.ts +44 -44
- package/lib/services/es-diagram.service.d.ts +51 -51
- package/lib/tokens.d.ts +5 -5
- package/package.json +3 -3
- package/public-api.d.ts +20 -20
|
@@ -1,64 +1,64 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Default per l'implementazione dell'algoritmo Concentric
|
|
3
|
-
*/
|
|
4
|
-
export class ConcentricLayoutOptionsImpl {
|
|
5
|
-
constructor() {
|
|
6
|
-
/**
|
|
7
|
-
* Nome dell'algoritmo di layouting
|
|
8
|
-
*/
|
|
9
|
-
this.name = 'concentric';
|
|
10
|
-
/**
|
|
11
|
-
* Angolo da cui i nodi partono, in radianti (Default: **3 / 2 * Math.PI**)
|
|
12
|
-
*/
|
|
13
|
-
this.startAngle = 3 / 2 * Math.PI;
|
|
14
|
-
/**
|
|
15
|
-
* Include o esclude le dimensioni delle label dei nodi nel calcolo delle posizioni
|
|
16
|
-
*/
|
|
17
|
-
this.nodeDimensionsIncludeLabels = true;
|
|
18
|
-
/**
|
|
19
|
-
* Indica se i livelli devono essere o non essere equidistanti, potrebbe causare overflow dal contenitore
|
|
20
|
-
*/
|
|
21
|
-
this.equidistant = false;
|
|
22
|
-
/**
|
|
23
|
-
* Distanza minima dall'esterno dei nodi, utilizzato per aggiustare il raggio
|
|
24
|
-
*/
|
|
25
|
-
this.minNodeSpacingnumber = 10;
|
|
26
|
-
/**
|
|
27
|
-
* Specifica le dimensioni esatte al cui interno effettuare il layouting, specificato come **{ x1, y1, x2, y2 }** o **{ x1, y1, w, h }**
|
|
28
|
-
*/
|
|
29
|
-
this.boundingBox = null;
|
|
30
|
-
/**
|
|
31
|
-
* Altezza dell'area di layout (sovrascrive quella del contenitore)
|
|
32
|
-
*/
|
|
33
|
-
this.height = null;
|
|
34
|
-
/**
|
|
35
|
-
* Larghezza dell'area di layout (sovrascrive quella del contenitore)
|
|
36
|
-
*/
|
|
37
|
-
this.width = null;
|
|
38
|
-
/**
|
|
39
|
-
* Moltiplicatore delle dimensioni per espandere/restringere le dimensioni globali del diagramma
|
|
40
|
-
*/
|
|
41
|
-
this.spacingFactor = 1;
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Funzione di cui si può fare override per assegnare un valore ad ogni nodo. I nodi con valore più alto saranno piazzati verso il centro
|
|
45
|
-
*
|
|
46
|
-
* @param {any} node Nodo
|
|
47
|
-
*
|
|
48
|
-
* @returns {number} Valore su cui ordinare i nodi verso il centro
|
|
49
|
-
*/
|
|
50
|
-
concentric(node) {
|
|
51
|
-
return node.degree();
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Funzione di cui si può fare override per calcolare la variazione dei valori concentrici per ogni livello
|
|
55
|
-
*
|
|
56
|
-
* @param {any} nodes Gruppo di nodi del livello
|
|
57
|
-
*
|
|
58
|
-
* @returns {number} Variazione dei valori concentrici
|
|
59
|
-
*/
|
|
60
|
-
levelWidth(nodes) {
|
|
61
|
-
return nodes.maxDegree() / 4;
|
|
62
|
-
}
|
|
63
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* Default per l'implementazione dell'algoritmo Concentric
|
|
3
|
+
*/
|
|
4
|
+
export class ConcentricLayoutOptionsImpl {
|
|
5
|
+
constructor() {
|
|
6
|
+
/**
|
|
7
|
+
* Nome dell'algoritmo di layouting
|
|
8
|
+
*/
|
|
9
|
+
this.name = 'concentric';
|
|
10
|
+
/**
|
|
11
|
+
* Angolo da cui i nodi partono, in radianti (Default: **3 / 2 * Math.PI**)
|
|
12
|
+
*/
|
|
13
|
+
this.startAngle = 3 / 2 * Math.PI;
|
|
14
|
+
/**
|
|
15
|
+
* Include o esclude le dimensioni delle label dei nodi nel calcolo delle posizioni
|
|
16
|
+
*/
|
|
17
|
+
this.nodeDimensionsIncludeLabels = true;
|
|
18
|
+
/**
|
|
19
|
+
* Indica se i livelli devono essere o non essere equidistanti, potrebbe causare overflow dal contenitore
|
|
20
|
+
*/
|
|
21
|
+
this.equidistant = false;
|
|
22
|
+
/**
|
|
23
|
+
* Distanza minima dall'esterno dei nodi, utilizzato per aggiustare il raggio
|
|
24
|
+
*/
|
|
25
|
+
this.minNodeSpacingnumber = 10;
|
|
26
|
+
/**
|
|
27
|
+
* Specifica le dimensioni esatte al cui interno effettuare il layouting, specificato come **{ x1, y1, x2, y2 }** o **{ x1, y1, w, h }**
|
|
28
|
+
*/
|
|
29
|
+
this.boundingBox = null;
|
|
30
|
+
/**
|
|
31
|
+
* Altezza dell'area di layout (sovrascrive quella del contenitore)
|
|
32
|
+
*/
|
|
33
|
+
this.height = null;
|
|
34
|
+
/**
|
|
35
|
+
* Larghezza dell'area di layout (sovrascrive quella del contenitore)
|
|
36
|
+
*/
|
|
37
|
+
this.width = null;
|
|
38
|
+
/**
|
|
39
|
+
* Moltiplicatore delle dimensioni per espandere/restringere le dimensioni globali del diagramma
|
|
40
|
+
*/
|
|
41
|
+
this.spacingFactor = 1;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Funzione di cui si può fare override per assegnare un valore ad ogni nodo. I nodi con valore più alto saranno piazzati verso il centro
|
|
45
|
+
*
|
|
46
|
+
* @param {any} node Nodo
|
|
47
|
+
*
|
|
48
|
+
* @returns {number} Valore su cui ordinare i nodi verso il centro
|
|
49
|
+
*/
|
|
50
|
+
concentric(node) {
|
|
51
|
+
return node.degree();
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Funzione di cui si può fare override per calcolare la variazione dei valori concentrici per ogni livello
|
|
55
|
+
*
|
|
56
|
+
* @param {any} nodes Gruppo di nodi del livello
|
|
57
|
+
*
|
|
58
|
+
* @returns {number} Variazione dei valori concentrici
|
|
59
|
+
*/
|
|
60
|
+
levelWidth(nodes) {
|
|
61
|
+
return nodes.maxDegree() / 4;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
64
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29uY2VudHJpY0xheW91dE9wdGlvbnNJbXBsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXMtZGlhZ3JhbXMvc3JjL2xpYi9tb2RlbHMvbGF5b3V0cy9Db25jZW50cmljTGF5b3V0T3B0aW9uc0ltcGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7O0dBRUc7QUFDSCxNQUFNLE9BQU8sMkJBQTJCO0lBQXhDO1FBRUk7O1dBRUc7UUFDSCxTQUFJLEdBQVcsWUFBWSxDQUFDO1FBWTVCOztXQUVHO1FBQ0gsZUFBVSxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQU83Qjs7V0FFRztRQUNILGdDQUEyQixHQUFHLElBQUksQ0FBQztRQUVuQzs7V0FFRztRQUNILGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBRXBCOztXQUVHO1FBQ0gseUJBQW9CLEdBQUcsRUFBRSxDQUFDO1FBRTFCOztXQUVHO1FBQ0gsZ0JBQVcsR0FBOEMsSUFBSSxDQUFDO1FBRTlEOztXQUVHO1FBQ0gsV0FBTSxHQUFXLElBQUksQ0FBQztRQUV0Qjs7V0FFRztRQUNILFVBQUssR0FBVyxJQUFJLENBQUM7UUFFckI7O1dBRUc7UUFDSCxrQkFBYSxHQUFHLENBQUMsQ0FBQztJQXVCdEIsQ0FBQztJQXJCRzs7Ozs7O09BTUc7SUFDSCxVQUFVLENBQUMsSUFBMkI7UUFDbEMsT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILFVBQVUsQ0FBQyxLQUErQjtRQUN0QyxPQUFPLEtBQUssQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDakMsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQm91bmRpbmdCb3gxMiwgQm91bmRpbmdCb3hXSCB9IGZyb20gXCJjeXRvc2NhcGVcIjtcclxuXHJcbi8qKlxyXG4gKiBEZWZhdWx0IHBlciBsJ2ltcGxlbWVudGF6aW9uZSBkZWxsJ2FsZ29yaXRtbyBDb25jZW50cmljXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgQ29uY2VudHJpY0xheW91dE9wdGlvbnNJbXBsIHtcclxuXHJcbiAgICAvKipcclxuICAgICAqIE5vbWUgZGVsbCdhbGdvcml0bW8gZGkgbGF5b3V0aW5nXHJcbiAgICAgKi9cclxuICAgIG5hbWU6IHN0cmluZyA9ICdjb25jZW50cmljJztcclxuXHJcbiAgICAvKipcclxuICAgICAqIE51bWVybyBkaSByYWRpYW50aSBmcmEgaWwgcHJpbW8gZSBsJ3VsdGltbyBub2RvLiBEaSBkZWZhdWx0IHZpZW5lIHV0aWxpenphdGEgbCdpbnRlcmEgY2lyY29uZmVyZW56YVxyXG4gICAgICovXHJcbiAgICBzd2VlcD86IG51bWJlcjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEluZGljYSBzZSBhbmRhcmUgaW4gc2Vuc28gb3JhcmlvICgqKnRydWUqKikgbyBhbnRpb3JhcmlvICgqKmZhbHNlKiopXHJcbiAgICAgKi9cclxuICAgIGNsb2Nrd2lzZT86IGJvb2xlYW47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBbmdvbG8gZGEgY3VpIGkgbm9kaSBwYXJ0b25vLCBpbiByYWRpYW50aSAoRGVmYXVsdDogKiozIC8gMiAqIE1hdGguUEkqKilcclxuICAgICAqL1xyXG4gICAgc3RhcnRBbmdsZSA9IDMgLyAyICogTWF0aC5QSTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEluZGljYSBzZSBhZGF0dGFyZSBhbCBjb250ZW5pdG9yZVxyXG4gICAgICovXHJcbiAgICBmaXQ6IGJvb2xlYW47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbmNsdWRlIG8gZXNjbHVkZSBsZSBkaW1lbnNpb25pIGRlbGxlIGxhYmVsIGRlaSBub2RpIG5lbCBjYWxjb2xvIGRlbGxlIHBvc2l6aW9uaVxyXG4gICAgICovXHJcbiAgICBub2RlRGltZW5zaW9uc0luY2x1ZGVMYWJlbHMgPSB0cnVlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5kaWNhIHNlIGkgbGl2ZWxsaSBkZXZvbm8gZXNzZXJlIG8gbm9uIGVzc2VyZSBlcXVpZGlzdGFudGksIHBvdHJlYmJlIGNhdXNhcmUgb3ZlcmZsb3cgZGFsIGNvbnRlbml0b3JlXHJcbiAgICAgKi9cclxuICAgIGVxdWlkaXN0YW50ID0gZmFsc2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBEaXN0YW56YSBtaW5pbWEgZGFsbCdlc3Rlcm5vIGRlaSBub2RpLCB1dGlsaXp6YXRvIHBlciBhZ2dpdXN0YXJlIGlsIHJhZ2dpb1xyXG4gICAgICovXHJcbiAgICBtaW5Ob2RlU3BhY2luZ251bWJlciA9IDEwO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogU3BlY2lmaWNhIGxlIGRpbWVuc2lvbmkgZXNhdHRlIGFsIGN1aSBpbnRlcm5vIGVmZmV0dHVhcmUgaWwgbGF5b3V0aW5nLCBzcGVjaWZpY2F0byBjb21lICoqeyB4MSwgeTEsIHgyLCB5MiB9KiogbyAqKnsgeDEsIHkxLCB3LCBoIH0qKlxyXG4gICAgICovXHJcbiAgICBib3VuZGluZ0JveDogQm91bmRpbmdCb3gxMiB8IEJvdW5kaW5nQm94V0ggfCB1bmRlZmluZWQgPSBudWxsO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQWx0ZXp6YSBkZWxsJ2FyZWEgZGkgbGF5b3V0IChzb3ZyYXNjcml2ZSBxdWVsbGEgZGVsIGNvbnRlbml0b3JlKVxyXG4gICAgICovXHJcbiAgICBoZWlnaHQ6IG51bWJlciA9IG51bGw7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBMYXJnaGV6emEgZGVsbCdhcmVhIGRpIGxheW91dCAoc292cmFzY3JpdmUgcXVlbGxhIGRlbCBjb250ZW5pdG9yZSlcclxuICAgICAqL1xyXG4gICAgd2lkdGg6IG51bWJlciA9IG51bGw7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNb2x0aXBsaWNhdG9yZSBkZWxsZSBkaW1lbnNpb25pIHBlciBlc3BhbmRlcmUvcmVzdHJpbmdlcmUgbGUgZGltZW5zaW9uaSBnbG9iYWxpIGRlbCBkaWFncmFtbWFcclxuICAgICAqL1xyXG4gICAgc3BhY2luZ0ZhY3RvciA9IDE7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGdW56aW9uZSBkaSBjdWkgc2kgcHXDsiBmYXJlIG92ZXJyaWRlIHBlciBhc3NlZ25hcmUgdW4gdmFsb3JlIGFkIG9nbmkgbm9kby4gSSBub2RpIGNvbiB2YWxvcmUgcGnDuSBhbHRvIHNhcmFubm8gcGlhenphdGkgdmVyc28gaWwgY2VudHJvXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7YW55fSBub2RlIE5vZG9cclxuICAgICAqIFxyXG4gICAgICogQHJldHVybnMge251bWJlcn0gVmFsb3JlIHN1IGN1aSBvcmRpbmFyZSBpIG5vZGkgdmVyc28gaWwgY2VudHJvXHJcbiAgICAgKi9cclxuICAgIGNvbmNlbnRyaWMobm9kZTogeyBkZWdyZWUoKTogbnVtYmVyOyB9KTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gbm9kZS5kZWdyZWUoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEZ1bnppb25lIGRpIGN1aSBzaSBwdcOyIGZhcmUgb3ZlcnJpZGUgcGVyIGNhbGNvbGFyZSBsYSB2YXJpYXppb25lIGRlaSB2YWxvcmkgY29uY2VudHJpY2kgcGVyIG9nbmkgbGl2ZWxsb1xyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge2FueX0gbm9kZXMgR3J1cHBvIGRpIG5vZGkgZGVsIGxpdmVsbG9cclxuICAgICAqIFxyXG4gICAgICogQHJldHVybnMge251bWJlcn0gVmFyaWF6aW9uZSBkZWkgdmFsb3JpIGNvbmNlbnRyaWNpXHJcbiAgICAgKi9cclxuICAgIGxldmVsV2lkdGgobm9kZXM6IHsgbWF4RGVncmVlKCk6IG51bWJlcjsgfSk6IG51bWJlciB7XHJcbiAgICAgICAgcmV0dXJuIG5vZGVzLm1heERlZ3JlZSgpIC8gNDtcclxuICAgIH1cclxufVxyXG4iXX0=
|
|
@@ -1,83 +1,83 @@
|
|
|
1
|
-
import { ShapedLayoutOptionsImpl } from './base/ShapedLayoutOptionsImpl';
|
|
2
|
-
/**
|
|
3
|
-
* Default per l'implementazione dell'algoritmo Cose
|
|
4
|
-
*/
|
|
5
|
-
export class CoseLayoutOptionsImpl extends ShapedLayoutOptionsImpl {
|
|
6
|
-
/** @ignore */
|
|
7
|
-
constructor() {
|
|
8
|
-
super();
|
|
9
|
-
/**
|
|
10
|
-
* Nome dell'algoritmo di layouting
|
|
11
|
-
*/
|
|
12
|
-
this.name = 'cose';
|
|
13
|
-
/**
|
|
14
|
-
* Se **animate** è **true**, l'animazione parte solo dopo questo numero di millisecondi (Evita flickering su animazioni veloci)
|
|
15
|
-
*/
|
|
16
|
-
this.animationThreshold = 250;
|
|
17
|
-
/**
|
|
18
|
-
* Numero di iterazioni fra aggiornamenti consecutivi della posizione a schermo
|
|
19
|
-
*/
|
|
20
|
-
this.refresh = 20;
|
|
21
|
-
/**
|
|
22
|
-
* Se **true** la posizione iniziale dei nodi è casuale, se **false** utilizza la posizione originale
|
|
23
|
-
*/
|
|
24
|
-
this.randomize = false;
|
|
25
|
-
/**
|
|
26
|
-
* Spazio extra fra i componenti di un grafo non-compound
|
|
27
|
-
*/
|
|
28
|
-
this.componentSpacing = 40;
|
|
29
|
-
/**
|
|
30
|
-
* Moltiplicatore della repulsione fra nodi in caso di overlap
|
|
31
|
-
*/
|
|
32
|
-
this.nodeOverlap = 4;
|
|
33
|
-
/**
|
|
34
|
-
* Moltiplicatore di nesting per il calcolo della lunghezza ideale dei collegamenti nested
|
|
35
|
-
*/
|
|
36
|
-
this.nestingFactor = 1.2;
|
|
37
|
-
/**
|
|
38
|
-
* Costante di gravità
|
|
39
|
-
*/
|
|
40
|
-
this.gravity = 1;
|
|
41
|
-
/**
|
|
42
|
-
* Numero massimo di iterazioni da eseguire
|
|
43
|
-
*/
|
|
44
|
-
this.numIter = 1000;
|
|
45
|
-
/**
|
|
46
|
-
* Temperatura iniziale (massima distanza fra i nodi)
|
|
47
|
-
*/
|
|
48
|
-
this.initialTemp = 1000;
|
|
49
|
-
/**
|
|
50
|
-
* Fattore di raffreddamento. Ad ogni iterazione verrà sottratto ad **initialTemp**
|
|
51
|
-
*/
|
|
52
|
-
this.coolingFactor = 0.99;
|
|
53
|
-
/**
|
|
54
|
-
* Soglia minima di temperatura. Una volta raggiunta il layout si considera terminato
|
|
55
|
-
*/
|
|
56
|
-
this.minTemp = 1.0;
|
|
57
|
-
/**
|
|
58
|
-
* Moltiplicatore della repulsione fra nodi in caso di assenza di overlap. Funzione overrideabile per ogni node
|
|
59
|
-
*
|
|
60
|
-
* @param {any} node Nodo
|
|
61
|
-
*
|
|
62
|
-
* @returns {number} Moltiplicazione di repulsione
|
|
63
|
-
*/
|
|
64
|
-
this.nodeRepulsion = (node) => 2048;
|
|
65
|
-
/**
|
|
66
|
-
* Lunghezza ideale dei collegamenti non nested. Funzione overrideabile per ogni collegamento
|
|
67
|
-
*
|
|
68
|
-
* @param {any} edge Collegamento
|
|
69
|
-
*
|
|
70
|
-
* @returns {number} Lunghezza ideale
|
|
71
|
-
*/
|
|
72
|
-
this.idealEdgeLength = (edge) => 32;
|
|
73
|
-
/**
|
|
74
|
-
* Divisore per calcolare le forze applicate ad un collegamento. Funzione overrideabile per ogni collegamento
|
|
75
|
-
*
|
|
76
|
-
* @param {any} edge Collegamento
|
|
77
|
-
*
|
|
78
|
-
* @returns {number} Indice di elasticità
|
|
79
|
-
*/
|
|
80
|
-
this.edgeElasticity = (edge) => 32;
|
|
81
|
-
}
|
|
82
|
-
}
|
|
1
|
+
import { ShapedLayoutOptionsImpl } from './base/ShapedLayoutOptionsImpl';
|
|
2
|
+
/**
|
|
3
|
+
* Default per l'implementazione dell'algoritmo Cose
|
|
4
|
+
*/
|
|
5
|
+
export class CoseLayoutOptionsImpl extends ShapedLayoutOptionsImpl {
|
|
6
|
+
/** @ignore */
|
|
7
|
+
constructor() {
|
|
8
|
+
super();
|
|
9
|
+
/**
|
|
10
|
+
* Nome dell'algoritmo di layouting
|
|
11
|
+
*/
|
|
12
|
+
this.name = 'cose';
|
|
13
|
+
/**
|
|
14
|
+
* Se **animate** è **true**, l'animazione parte solo dopo questo numero di millisecondi (Evita flickering su animazioni veloci)
|
|
15
|
+
*/
|
|
16
|
+
this.animationThreshold = 250;
|
|
17
|
+
/**
|
|
18
|
+
* Numero di iterazioni fra aggiornamenti consecutivi della posizione a schermo
|
|
19
|
+
*/
|
|
20
|
+
this.refresh = 20;
|
|
21
|
+
/**
|
|
22
|
+
* Se **true** la posizione iniziale dei nodi è casuale, se **false** utilizza la posizione originale
|
|
23
|
+
*/
|
|
24
|
+
this.randomize = false;
|
|
25
|
+
/**
|
|
26
|
+
* Spazio extra fra i componenti di un grafo non-compound
|
|
27
|
+
*/
|
|
28
|
+
this.componentSpacing = 40;
|
|
29
|
+
/**
|
|
30
|
+
* Moltiplicatore della repulsione fra nodi in caso di overlap
|
|
31
|
+
*/
|
|
32
|
+
this.nodeOverlap = 4;
|
|
33
|
+
/**
|
|
34
|
+
* Moltiplicatore di nesting per il calcolo della lunghezza ideale dei collegamenti nested
|
|
35
|
+
*/
|
|
36
|
+
this.nestingFactor = 1.2;
|
|
37
|
+
/**
|
|
38
|
+
* Costante di gravità
|
|
39
|
+
*/
|
|
40
|
+
this.gravity = 1;
|
|
41
|
+
/**
|
|
42
|
+
* Numero massimo di iterazioni da eseguire
|
|
43
|
+
*/
|
|
44
|
+
this.numIter = 1000;
|
|
45
|
+
/**
|
|
46
|
+
* Temperatura iniziale (massima distanza fra i nodi)
|
|
47
|
+
*/
|
|
48
|
+
this.initialTemp = 1000;
|
|
49
|
+
/**
|
|
50
|
+
* Fattore di raffreddamento. Ad ogni iterazione verrà sottratto ad **initialTemp**
|
|
51
|
+
*/
|
|
52
|
+
this.coolingFactor = 0.99;
|
|
53
|
+
/**
|
|
54
|
+
* Soglia minima di temperatura. Una volta raggiunta il layout si considera terminato
|
|
55
|
+
*/
|
|
56
|
+
this.minTemp = 1.0;
|
|
57
|
+
/**
|
|
58
|
+
* Moltiplicatore della repulsione fra nodi in caso di assenza di overlap. Funzione overrideabile per ogni node
|
|
59
|
+
*
|
|
60
|
+
* @param {any} node Nodo
|
|
61
|
+
*
|
|
62
|
+
* @returns {number} Moltiplicazione di repulsione
|
|
63
|
+
*/
|
|
64
|
+
this.nodeRepulsion = (node) => 2048;
|
|
65
|
+
/**
|
|
66
|
+
* Lunghezza ideale dei collegamenti non nested. Funzione overrideabile per ogni collegamento
|
|
67
|
+
*
|
|
68
|
+
* @param {any} edge Collegamento
|
|
69
|
+
*
|
|
70
|
+
* @returns {number} Lunghezza ideale
|
|
71
|
+
*/
|
|
72
|
+
this.idealEdgeLength = (edge) => 32;
|
|
73
|
+
/**
|
|
74
|
+
* Divisore per calcolare le forze applicate ad un collegamento. Funzione overrideabile per ogni collegamento
|
|
75
|
+
*
|
|
76
|
+
* @param {any} edge Collegamento
|
|
77
|
+
*
|
|
78
|
+
* @returns {number} Indice di elasticità
|
|
79
|
+
*/
|
|
80
|
+
this.edgeElasticity = (edge) => 32;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
83
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29zZUxheW91dE9wdGlvbnNJbXBsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXMtZGlhZ3JhbXMvc3JjL2xpYi9tb2RlbHMvbGF5b3V0cy9Db3NlTGF5b3V0T3B0aW9uc0ltcGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFekU7O0dBRUc7QUFDSCxNQUFNLE9BQU8scUJBQXNCLFNBQVEsdUJBQXVCO0lBRTlELGNBQWM7SUFDZDtRQUFnQixLQUFLLEVBQUUsQ0FBQztRQUV4Qjs7V0FFRztRQUNILFNBQUksR0FBRyxNQUFNLENBQUM7UUFFZDs7V0FFRztRQUNILHVCQUFrQixHQUFHLEdBQUcsQ0FBQztRQUV6Qjs7V0FFRztRQUNILFlBQU8sR0FBRyxFQUFFLENBQUM7UUFFYjs7V0FFRztRQUNILGNBQVMsR0FBRyxLQUFLLENBQUM7UUFFbEI7O1dBRUc7UUFDSCxxQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFFdEI7O1dBRUc7UUFDSCxnQkFBVyxHQUFHLENBQUMsQ0FBQztRQUVoQjs7V0FFRztRQUNILGtCQUFhLEdBQUcsR0FBRyxDQUFDO1FBRXBCOztXQUVHO1FBQ0gsWUFBTyxHQUFHLENBQUMsQ0FBQztRQUVaOztXQUVHO1FBQ0gsWUFBTyxHQUFHLElBQUksQ0FBQztRQUVmOztXQUVHO1FBQ0gsZ0JBQVcsR0FBRyxJQUFJLENBQUM7UUFFbkI7O1dBRUc7UUFDSCxrQkFBYSxHQUFHLElBQUksQ0FBQztRQUVyQjs7V0FFRztRQUNILFlBQU8sR0FBRyxHQUFHLENBQUM7UUFFZDs7Ozs7O1dBTUc7UUFDSCxrQkFBYSxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUM7UUFFL0I7Ozs7OztXQU1HO1FBQ0gsb0JBQWUsR0FBRyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDO1FBRS9COzs7Ozs7V0FNRztRQUNILG1CQUFjLEdBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQXZGTCxDQUFDO0NBd0Y3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNoYXBlZExheW91dE9wdGlvbnNJbXBsIH0gZnJvbSAnLi9iYXNlL1NoYXBlZExheW91dE9wdGlvbnNJbXBsJztcclxuXHJcbi8qKlxyXG4gKiBEZWZhdWx0IHBlciBsJ2ltcGxlbWVudGF6aW9uZSBkZWxsJ2FsZ29yaXRtbyBDb3NlXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgQ29zZUxheW91dE9wdGlvbnNJbXBsIGV4dGVuZHMgU2hhcGVkTGF5b3V0T3B0aW9uc0ltcGwge1xyXG5cclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICBjb25zdHJ1Y3RvcigpIHsgc3VwZXIoKTsgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTm9tZSBkZWxsJ2FsZ29yaXRtbyBkaSBsYXlvdXRpbmdcclxuICAgICAqL1xyXG4gICAgbmFtZSA9ICdjb3NlJztcclxuXHJcbiAgICAvKipcclxuICAgICAqIFNlICoqYW5pbWF0ZSoqIMOoICoqdHJ1ZSoqLCBsJ2FuaW1hemlvbmUgcGFydGUgc29sbyBkb3BvIHF1ZXN0byBudW1lcm8gZGkgbWlsbGlzZWNvbmRpIChFdml0YSBmbGlja2VyaW5nIHN1IGFuaW1hemlvbmkgdmVsb2NpKVxyXG4gICAgICovXHJcbiAgICBhbmltYXRpb25UaHJlc2hvbGQgPSAyNTA7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBOdW1lcm8gZGkgaXRlcmF6aW9uaSBmcmEgYWdnaW9ybmFtZW50aSBjb25zZWN1dGl2aSBkZWxsYSBwb3NpemlvbmUgYSBzY2hlcm1vXHJcbiAgICAgKi9cclxuICAgIHJlZnJlc2ggPSAyMDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFNlICoqdHJ1ZSoqIGxhIHBvc2l6aW9uZSBpbml6aWFsZSBkZWkgbm9kaSDDqCBjYXN1YWxlLCBzZSAqKmZhbHNlKiogdXRpbGl6emEgbGEgcG9zaXppb25lIG9yaWdpbmFsZVxyXG4gICAgICovXHJcbiAgICByYW5kb21pemUgPSBmYWxzZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFNwYXppbyBleHRyYSBmcmEgaSBjb21wb25lbnRpIGRpIHVuIGdyYWZvIG5vbi1jb21wb3VuZFxyXG4gICAgICovXHJcbiAgICBjb21wb25lbnRTcGFjaW5nID0gNDA7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNb2x0aXBsaWNhdG9yZSBkZWxsYSByZXB1bHNpb25lIGZyYSBub2RpIGluIGNhc28gZGkgb3ZlcmxhcFxyXG4gICAgICovXHJcbiAgICBub2RlT3ZlcmxhcCA9IDQ7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNb2x0aXBsaWNhdG9yZSBkaSBuZXN0aW5nIHBlciBpbCBjYWxjb2xvIGRlbGxhIGx1bmdoZXp6YSBpZGVhbGUgZGVpIGNvbGxlZ2FtZW50aSBuZXN0ZWRcclxuICAgICAqL1xyXG4gICAgbmVzdGluZ0ZhY3RvciA9IDEuMjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIENvc3RhbnRlIGRpIGdyYXZpdMOgXHJcbiAgICAgKi9cclxuICAgIGdyYXZpdHkgPSAxO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogTnVtZXJvIG1hc3NpbW8gZGkgaXRlcmF6aW9uaSBkYSBlc2VndWlyZVxyXG4gICAgICovXHJcbiAgICBudW1JdGVyID0gMTAwMDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRlbXBlcmF0dXJhIGluaXppYWxlIChtYXNzaW1hIGRpc3RhbnphIGZyYSBpIG5vZGkpXHJcbiAgICAgKi9cclxuICAgIGluaXRpYWxUZW1wID0gMTAwMDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEZhdHRvcmUgZGkgcmFmZnJlZGRhbWVudG8uIEFkIG9nbmkgaXRlcmF6aW9uZSB2ZXJyw6Agc290dHJhdHRvIGFkICoqaW5pdGlhbFRlbXAqKlxyXG4gICAgICovXHJcbiAgICBjb29saW5nRmFjdG9yID0gMC45OTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFNvZ2xpYSBtaW5pbWEgZGkgdGVtcGVyYXR1cmEuIFVuYSB2b2x0YSByYWdnaXVudGEgaWwgbGF5b3V0IHNpIGNvbnNpZGVyYSB0ZXJtaW5hdG9cclxuICAgICAqL1xyXG4gICAgbWluVGVtcCA9IDEuMDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIE1vbHRpcGxpY2F0b3JlIGRlbGxhIHJlcHVsc2lvbmUgZnJhIG5vZGkgaW4gY2FzbyBkaSBhc3NlbnphIGRpIG92ZXJsYXAuIEZ1bnppb25lIG92ZXJyaWRlYWJpbGUgcGVyIG9nbmkgbm9kZVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge2FueX0gbm9kZSBOb2RvXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IE1vbHRpcGxpY2F6aW9uZSBkaSByZXB1bHNpb25lXHJcbiAgICAgKi9cclxuICAgIG5vZGVSZXB1bHNpb24gPSAobm9kZSkgPT4gMjA0ODtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEx1bmdoZXp6YSBpZGVhbGUgZGVpIGNvbGxlZ2FtZW50aSBub24gbmVzdGVkLiBGdW56aW9uZSBvdmVycmlkZWFiaWxlIHBlciBvZ25pIGNvbGxlZ2FtZW50b1xyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge2FueX0gZWRnZSBDb2xsZWdhbWVudG9cclxuICAgICAqIFxyXG4gICAgICogQHJldHVybnMge251bWJlcn0gTHVuZ2hlenphIGlkZWFsZVxyXG4gICAgICovXHJcbiAgICBpZGVhbEVkZ2VMZW5ndGggPSAoZWRnZSkgPT4gMzI7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBEaXZpc29yZSBwZXIgY2FsY29sYXJlIGxlIGZvcnplIGFwcGxpY2F0ZSBhZCB1biBjb2xsZWdhbWVudG8uIEZ1bnppb25lIG92ZXJyaWRlYWJpbGUgcGVyIG9nbmkgY29sbGVnYW1lbnRvXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7YW55fSBlZGdlIENvbGxlZ2FtZW50b1xyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBJbmRpY2UgZGkgZWxhc3RpY2l0w6BcclxuICAgICAqL1xyXG4gICAgZWRnZUVsYXN0aWNpdHkgPSAoZWRnZSkgPT4gMzI7XHJcbn1cclxuIl19
|
|
@@ -1,52 +1,52 @@
|
|
|
1
|
-
import { ShapedLayoutOptionsImpl } from './base/ShapedLayoutOptionsImpl';
|
|
2
|
-
/**
|
|
3
|
-
* Default per l'implementazione dell'algoritmo Dagre
|
|
4
|
-
*/
|
|
5
|
-
export class DagreLayoutOptionsImpl extends ShapedLayoutOptionsImpl {
|
|
6
|
-
/** @ignore */
|
|
7
|
-
constructor() {
|
|
8
|
-
super();
|
|
9
|
-
/**
|
|
10
|
-
* Nome dell'algoritmo di layouting
|
|
11
|
-
*/
|
|
12
|
-
this.name = 'dagre';
|
|
13
|
-
/**
|
|
14
|
-
* Distanza fra nodi adiacenti dello stesso rango
|
|
15
|
-
*/
|
|
16
|
-
this.nodeSep = null;
|
|
17
|
-
/**
|
|
18
|
-
* Distanza fra collegamenti adiacenti nello stesso rango
|
|
19
|
-
*/
|
|
20
|
-
this.edgeSep = null;
|
|
21
|
-
/**
|
|
22
|
-
* Distanza fra ogni rango
|
|
23
|
-
*/
|
|
24
|
-
this.rankSep = null;
|
|
25
|
-
// TB for top to bottom flow, 'LR' for left to right
|
|
26
|
-
/**
|
|
27
|
-
* Direzione di disegno: LR = Sinistra a Destra, TB = Sopra a Sotto
|
|
28
|
-
*/
|
|
29
|
-
this.rankDir = 'TB';
|
|
30
|
-
/**
|
|
31
|
-
* Algoritmo che si occupa di assegnare un rango ad ogni nodo
|
|
32
|
-
*/
|
|
33
|
-
this.ranker = null;
|
|
34
|
-
/**
|
|
35
|
-
* Numero di ranghi fra la sorgente e la destinazione di un collegamento
|
|
36
|
-
*
|
|
37
|
-
* @param {any} edge Collegamento di cui calcolare la differenza di rango
|
|
38
|
-
*
|
|
39
|
-
* @returns {number} Differenza di rango
|
|
40
|
-
*/
|
|
41
|
-
this.minLen = (edge) => 1;
|
|
42
|
-
/**
|
|
43
|
-
* Peso del collegamento, più è alto più generalmente risulterà corto
|
|
44
|
-
*
|
|
45
|
-
* @param {any} edge Collegamento di cui calcolare il peso
|
|
46
|
-
*
|
|
47
|
-
* @returns {number} Peso
|
|
48
|
-
*/
|
|
49
|
-
this.edgeWeight = (edge) => 1;
|
|
50
|
-
}
|
|
51
|
-
}
|
|
1
|
+
import { ShapedLayoutOptionsImpl } from './base/ShapedLayoutOptionsImpl';
|
|
2
|
+
/**
|
|
3
|
+
* Default per l'implementazione dell'algoritmo Dagre
|
|
4
|
+
*/
|
|
5
|
+
export class DagreLayoutOptionsImpl extends ShapedLayoutOptionsImpl {
|
|
6
|
+
/** @ignore */
|
|
7
|
+
constructor() {
|
|
8
|
+
super();
|
|
9
|
+
/**
|
|
10
|
+
* Nome dell'algoritmo di layouting
|
|
11
|
+
*/
|
|
12
|
+
this.name = 'dagre';
|
|
13
|
+
/**
|
|
14
|
+
* Distanza fra nodi adiacenti dello stesso rango
|
|
15
|
+
*/
|
|
16
|
+
this.nodeSep = null;
|
|
17
|
+
/**
|
|
18
|
+
* Distanza fra collegamenti adiacenti nello stesso rango
|
|
19
|
+
*/
|
|
20
|
+
this.edgeSep = null;
|
|
21
|
+
/**
|
|
22
|
+
* Distanza fra ogni rango
|
|
23
|
+
*/
|
|
24
|
+
this.rankSep = null;
|
|
25
|
+
// TB for top to bottom flow, 'LR' for left to right
|
|
26
|
+
/**
|
|
27
|
+
* Direzione di disegno: LR = Sinistra a Destra, TB = Sopra a Sotto
|
|
28
|
+
*/
|
|
29
|
+
this.rankDir = 'TB';
|
|
30
|
+
/**
|
|
31
|
+
* Algoritmo che si occupa di assegnare un rango ad ogni nodo
|
|
32
|
+
*/
|
|
33
|
+
this.ranker = null;
|
|
34
|
+
/**
|
|
35
|
+
* Numero di ranghi fra la sorgente e la destinazione di un collegamento
|
|
36
|
+
*
|
|
37
|
+
* @param {any} edge Collegamento di cui calcolare la differenza di rango
|
|
38
|
+
*
|
|
39
|
+
* @returns {number} Differenza di rango
|
|
40
|
+
*/
|
|
41
|
+
this.minLen = (edge) => 1;
|
|
42
|
+
/**
|
|
43
|
+
* Peso del collegamento, più è alto più generalmente risulterà corto
|
|
44
|
+
*
|
|
45
|
+
* @param {any} edge Collegamento di cui calcolare il peso
|
|
46
|
+
*
|
|
47
|
+
* @returns {number} Peso
|
|
48
|
+
*/
|
|
49
|
+
this.edgeWeight = (edge) => 1;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
52
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGFncmVMYXlvdXRPcHRpb25zSW1wbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VzLWRpYWdyYW1zL3NyYy9saWIvbW9kZWxzL2xheW91dHMvRGFncmVMYXlvdXRPcHRpb25zSW1wbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUV6RTs7R0FFRztBQUNILE1BQU0sT0FBTyxzQkFBdUIsU0FBUSx1QkFBdUI7SUFFL0QsY0FBYztJQUNkO1FBQWdCLEtBQUssRUFBRSxDQUFDO1FBRXhCOztXQUVHO1FBQ0gsU0FBSSxHQUFHLE9BQU8sQ0FBQztRQUVmOztXQUVHO1FBQ0gsWUFBTyxHQUFXLElBQUksQ0FBQztRQUV2Qjs7V0FFRztRQUNILFlBQU8sR0FBVyxJQUFJLENBQUM7UUFFdkI7O1dBRUc7UUFDSCxZQUFPLEdBQVcsSUFBSSxDQUFDO1FBRXZCLG9EQUFvRDtRQUNwRDs7V0FFRztRQUNILFlBQU8sR0FBZ0IsSUFBSSxDQUFDO1FBRTVCOztXQUVHO1FBQ0gsV0FBTSxHQUFzRCxJQUFJLENBQUM7UUFFakU7Ozs7OztXQU1HO1FBQ0gsV0FBTSxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFckI7Ozs7OztXQU1HO1FBQ0gsZUFBVSxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFqREEsQ0FBQztDQWtEN0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTaGFwZWRMYXlvdXRPcHRpb25zSW1wbCB9IGZyb20gJy4vYmFzZS9TaGFwZWRMYXlvdXRPcHRpb25zSW1wbCc7XHJcblxyXG4vKipcclxuICogRGVmYXVsdCBwZXIgbCdpbXBsZW1lbnRhemlvbmUgZGVsbCdhbGdvcml0bW8gRGFncmVcclxuICovXHJcbmV4cG9ydCBjbGFzcyBEYWdyZUxheW91dE9wdGlvbnNJbXBsIGV4dGVuZHMgU2hhcGVkTGF5b3V0T3B0aW9uc0ltcGwge1xyXG5cclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICBjb25zdHJ1Y3RvcigpIHsgc3VwZXIoKTsgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTm9tZSBkZWxsJ2FsZ29yaXRtbyBkaSBsYXlvdXRpbmdcclxuICAgICAqL1xyXG4gICAgbmFtZSA9ICdkYWdyZSc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBEaXN0YW56YSBmcmEgbm9kaSBhZGlhY2VudGkgZGVsbG8gc3Rlc3NvIHJhbmdvXHJcbiAgICAgKi9cclxuICAgIG5vZGVTZXA6IG51bWJlciA9IG51bGw7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBEaXN0YW56YSBmcmEgY29sbGVnYW1lbnRpIGFkaWFjZW50aSBuZWxsbyBzdGVzc28gcmFuZ29cclxuICAgICAqL1xyXG4gICAgZWRnZVNlcDogbnVtYmVyID0gbnVsbDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIERpc3RhbnphIGZyYSBvZ25pIHJhbmdvXHJcbiAgICAgKi9cclxuICAgIHJhbmtTZXA6IG51bWJlciA9IG51bGw7XHJcblxyXG4gICAgLy8gVEIgZm9yIHRvcCB0byBib3R0b20gZmxvdywgJ0xSJyBmb3IgbGVmdCB0byByaWdodFxyXG4gICAgLyoqXHJcbiAgICAgKiBEaXJlemlvbmUgZGkgZGlzZWdubzogTFIgPSBTaW5pc3RyYSBhIERlc3RyYSwgVEIgPSBTb3ByYSBhIFNvdHRvXHJcbiAgICAgKi9cclxuICAgIHJhbmtEaXI6ICdMUicgfCAnVEInID0gJ1RCJztcclxuXHJcbiAgICAvKipcclxuICAgICAqIEFsZ29yaXRtbyBjaGUgc2kgb2NjdXBhIGRpIGFzc2VnbmFyZSB1biByYW5nbyBhZCBvZ25pIG5vZG9cclxuICAgICAqL1xyXG4gICAgcmFua2VyOiAnbmV0d29yay1zaW1wbGV4JyB8ICd0aWdodC10cmVlJyB8ICdsb25nZXN0LXBhdGgnID0gbnVsbDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIE51bWVybyBkaSByYW5naGkgZnJhIGxhIHNvcmdlbnRlIGUgbGEgZGVzdGluYXppb25lIGRpIHVuIGNvbGxlZ2FtZW50b1xyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge2FueX0gZWRnZSBDb2xsZWdhbWVudG8gZGkgY3VpIGNhbGNvbGFyZSBsYSBkaWZmZXJlbnphIGRpIHJhbmdvXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IERpZmZlcmVuemEgZGkgcmFuZ29cclxuICAgICAqL1xyXG4gICAgbWluTGVuID0gKGVkZ2UpID0+IDE7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQZXNvIGRlbCBjb2xsZWdhbWVudG8sIHBpw7kgw6ggYWx0byBwacO5IGdlbmVyYWxtZW50ZSByaXN1bHRlcsOgIGNvcnRvXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7YW55fSBlZGdlIENvbGxlZ2FtZW50byBkaSBjdWkgY2FsY29sYXJlIGlsIHBlc29cclxuICAgICAqIFxyXG4gICAgICogQHJldHVybnMge251bWJlcn0gUGVzb1xyXG4gICAgICovXHJcbiAgICBlZGdlV2VpZ2h0ID0gKGVkZ2UpID0+IDE7XHJcbn1cclxuIl19
|
|
@@ -1,38 +1,38 @@
|
|
|
1
|
-
import { ShapedLayoutOptionsImpl } from './base/ShapedLayoutOptionsImpl';
|
|
2
|
-
/**
|
|
3
|
-
* Default per l'implementazione dell'algoritmo Grid
|
|
4
|
-
*/
|
|
5
|
-
export class GridLayoutOptionsImpl extends ShapedLayoutOptionsImpl {
|
|
6
|
-
/** @ignore */
|
|
7
|
-
constructor() {
|
|
8
|
-
super();
|
|
9
|
-
/**
|
|
10
|
-
* Nome dell'algoritmo di layouting
|
|
11
|
-
*/
|
|
12
|
-
this.name = 'grid';
|
|
13
|
-
/**
|
|
14
|
-
* Spazio extra attorno ai nodi quando **avoidOverlap** è **true**
|
|
15
|
-
*/
|
|
16
|
-
this.avoidOverlapPadding = 10;
|
|
17
|
-
/**
|
|
18
|
-
* Se **true** cerca di utilizzare il minor spazio possibile, se **false** usa tutto lo spazio che ha a disposizione
|
|
19
|
-
*/
|
|
20
|
-
this.condense = false;
|
|
21
|
-
/**
|
|
22
|
-
* Forzatura del numero di righe della griglia
|
|
23
|
-
*/
|
|
24
|
-
this.rows = null;
|
|
25
|
-
/**
|
|
26
|
-
* Forzatura del numero di colonne della griglia
|
|
27
|
-
*/
|
|
28
|
-
this.cols = null;
|
|
29
|
-
/**
|
|
30
|
-
* Dato un nodo restituisce un indice di riga e di colonna della griglia in cui metterlo
|
|
31
|
-
*
|
|
32
|
-
* @param {NodeSingular} node Nodo
|
|
33
|
-
* @returns {{ row: number, col: number }} Oggetto che identifica una posizione della griglia
|
|
34
|
-
*/
|
|
35
|
-
this.position = null;
|
|
36
|
-
}
|
|
37
|
-
}
|
|
1
|
+
import { ShapedLayoutOptionsImpl } from './base/ShapedLayoutOptionsImpl';
|
|
2
|
+
/**
|
|
3
|
+
* Default per l'implementazione dell'algoritmo Grid
|
|
4
|
+
*/
|
|
5
|
+
export class GridLayoutOptionsImpl extends ShapedLayoutOptionsImpl {
|
|
6
|
+
/** @ignore */
|
|
7
|
+
constructor() {
|
|
8
|
+
super();
|
|
9
|
+
/**
|
|
10
|
+
* Nome dell'algoritmo di layouting
|
|
11
|
+
*/
|
|
12
|
+
this.name = 'grid';
|
|
13
|
+
/**
|
|
14
|
+
* Spazio extra attorno ai nodi quando **avoidOverlap** è **true**
|
|
15
|
+
*/
|
|
16
|
+
this.avoidOverlapPadding = 10;
|
|
17
|
+
/**
|
|
18
|
+
* Se **true** cerca di utilizzare il minor spazio possibile, se **false** usa tutto lo spazio che ha a disposizione
|
|
19
|
+
*/
|
|
20
|
+
this.condense = false;
|
|
21
|
+
/**
|
|
22
|
+
* Forzatura del numero di righe della griglia
|
|
23
|
+
*/
|
|
24
|
+
this.rows = null;
|
|
25
|
+
/**
|
|
26
|
+
* Forzatura del numero di colonne della griglia
|
|
27
|
+
*/
|
|
28
|
+
this.cols = null;
|
|
29
|
+
/**
|
|
30
|
+
* Dato un nodo restituisce un indice di riga e di colonna della griglia in cui metterlo
|
|
31
|
+
*
|
|
32
|
+
* @param {NodeSingular} node Nodo
|
|
33
|
+
* @returns {{ row: number, col: number }} Oggetto che identifica una posizione della griglia
|
|
34
|
+
*/
|
|
35
|
+
this.position = null;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
38
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3JpZExheW91dE9wdGlvbnNJbXBsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXMtZGlhZ3JhbXMvc3JjL2xpYi9tb2RlbHMvbGF5b3V0cy9HcmlkTGF5b3V0T3B0aW9uc0ltcGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFekU7O0dBRUc7QUFDSCxNQUFNLE9BQU8scUJBQXNCLFNBQVEsdUJBQXVCO0lBRTlELGNBQWM7SUFDZDtRQUFnQixLQUFLLEVBQUUsQ0FBQztRQUV4Qjs7V0FFRztRQUNILFNBQUksR0FBRyxNQUFNLENBQUM7UUFFZDs7V0FFRztRQUNILHdCQUFtQixHQUFHLEVBQUUsQ0FBQztRQUV6Qjs7V0FFRztRQUNILGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFakI7O1dBRUc7UUFDSCxTQUFJLEdBQXdCLElBQUksQ0FBQztRQUVqQzs7V0FFRztRQUNILFNBQUksR0FBd0IsSUFBSSxDQUFDO1FBRWpDOzs7OztXQUtHO1FBQ0gsYUFBUSxHQUEwRCxJQUFJLENBQUM7SUFqQzlDLENBQUM7Q0FrQzdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTm9kZVNpbmd1bGFyIH0gZnJvbSAnY3l0b3NjYXBlJztcclxuaW1wb3J0IHsgU2hhcGVkTGF5b3V0T3B0aW9uc0ltcGwgfSBmcm9tICcuL2Jhc2UvU2hhcGVkTGF5b3V0T3B0aW9uc0ltcGwnO1xyXG5cclxuLyoqXHJcbiAqIERlZmF1bHQgcGVyIGwnaW1wbGVtZW50YXppb25lIGRlbGwnYWxnb3JpdG1vIEdyaWRcclxuICovXHJcbmV4cG9ydCBjbGFzcyBHcmlkTGF5b3V0T3B0aW9uc0ltcGwgZXh0ZW5kcyBTaGFwZWRMYXlvdXRPcHRpb25zSW1wbCB7XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgKi9cclxuICAgIGNvbnN0cnVjdG9yKCkgeyBzdXBlcigpOyB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBOb21lIGRlbGwnYWxnb3JpdG1vIGRpIGxheW91dGluZ1xyXG4gICAgICovXHJcbiAgICBuYW1lID0gJ2dyaWQnO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogU3BhemlvIGV4dHJhIGF0dG9ybm8gYWkgbm9kaSBxdWFuZG8gKiphdm9pZE92ZXJsYXAqKiDDqCAqKnRydWUqKlxyXG4gICAgICovXHJcbiAgICBhdm9pZE92ZXJsYXBQYWRkaW5nID0gMTA7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTZSAqKnRydWUqKiBjZXJjYSBkaSB1dGlsaXp6YXJlIGlsIG1pbm9yIHNwYXppbyBwb3NzaWJpbGUsIHNlICoqZmFsc2UqKiB1c2EgdHV0dG8gbG8gc3BhemlvIGNoZSBoYSBhIGRpc3Bvc2l6aW9uZVxyXG4gICAgICovXHJcbiAgICBjb25kZW5zZSA9IGZhbHNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRm9yemF0dXJhIGRlbCBudW1lcm8gZGkgcmlnaGUgZGVsbGEgZ3JpZ2xpYVxyXG4gICAgICovXHJcbiAgICByb3dzPzogbnVtYmVyIHwgdW5kZWZpbmVkID0gbnVsbDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEZvcnphdHVyYSBkZWwgbnVtZXJvIGRpIGNvbG9ubmUgZGVsbGEgZ3JpZ2xpYVxyXG4gICAgICovXHJcbiAgICBjb2xzPzogbnVtYmVyIHwgdW5kZWZpbmVkID0gbnVsbDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIERhdG8gdW4gbm9kbyByZXN0aXR1aXNjZSB1biBpbmRpY2UgZGkgcmlnYSBlIGRpIGNvbG9ubmEgZGVsbGEgZ3JpZ2xpYSBpbiBjdWkgbWV0dGVybG9cclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtOb2RlU2luZ3VsYXJ9IG5vZGUgTm9kb1xyXG4gICAgICogQHJldHVybnMge3sgcm93OiBudW1iZXIsIGNvbDogbnVtYmVyIH19IE9nZ2V0dG8gY2hlIGlkZW50aWZpY2EgdW5hIHBvc2l6aW9uZSBkZWxsYSBncmlnbGlhXHJcbiAgICAgKi9cclxuICAgIHBvc2l0aW9uOiAobm9kZTogTm9kZVNpbmd1bGFyKSA9PiB7IHJvdzogbnVtYmVyOyBjb2w6IG51bWJlcjsgfSA9IG51bGw7XHJcbn1cclxuIl19
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { BaseLayoutOptionsImpl } from './base/BaseLayoutOptionsImpl';
|
|
2
|
-
/**
|
|
3
|
-
* Pseudo implementazione di un algoritmo vuoto che non fa nulla
|
|
4
|
-
*/
|
|
5
|
-
export class NullLayoutOptionsImpl extends BaseLayoutOptionsImpl {
|
|
6
|
-
/** @ignore */
|
|
7
|
-
constructor() {
|
|
8
|
-
super();
|
|
9
|
-
/**
|
|
10
|
-
* Nome dell'algoritmo di layouting
|
|
11
|
-
*/
|
|
12
|
-
this.name = 'null';
|
|
13
|
-
}
|
|
14
|
-
}
|
|
1
|
+
import { BaseLayoutOptionsImpl } from './base/BaseLayoutOptionsImpl';
|
|
2
|
+
/**
|
|
3
|
+
* Pseudo implementazione di un algoritmo vuoto che non fa nulla
|
|
4
|
+
*/
|
|
5
|
+
export class NullLayoutOptionsImpl extends BaseLayoutOptionsImpl {
|
|
6
|
+
/** @ignore */
|
|
7
|
+
constructor() {
|
|
8
|
+
super();
|
|
9
|
+
/**
|
|
10
|
+
* Nome dell'algoritmo di layouting
|
|
11
|
+
*/
|
|
12
|
+
this.name = 'null';
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
15
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTnVsbExheW91dE9wdGlvbnNJbXBsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXMtZGlhZ3JhbXMvc3JjL2xpYi9tb2RlbHMvbGF5b3V0cy9OdWxsTGF5b3V0T3B0aW9uc0ltcGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFckU7O0dBRUc7QUFDSCxNQUFNLE9BQU8scUJBQXNCLFNBQVEscUJBQXFCO0lBRTVELGNBQWM7SUFDZDtRQUFnQixLQUFLLEVBQUUsQ0FBQztRQUV4Qjs7V0FFRztRQUNILFNBQUksR0FBRyxNQUFNLENBQUM7SUFMVyxDQUFDO0NBTTdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZUxheW91dE9wdGlvbnNJbXBsIH0gZnJvbSAnLi9iYXNlL0Jhc2VMYXlvdXRPcHRpb25zSW1wbCc7XHJcblxyXG4vKipcclxuICogUHNldWRvIGltcGxlbWVudGF6aW9uZSBkaSB1biBhbGdvcml0bW8gdnVvdG8gY2hlIG5vbiBmYSBudWxsYVxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIE51bGxMYXlvdXRPcHRpb25zSW1wbCBleHRlbmRzIEJhc2VMYXlvdXRPcHRpb25zSW1wbCB7XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgKi9cclxuICAgIGNvbnN0cnVjdG9yKCkgeyBzdXBlcigpOyB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBOb21lIGRlbGwnYWxnb3JpdG1vIGRpIGxheW91dGluZ1xyXG4gICAgICovXHJcbiAgICBuYW1lID0gJ251bGwnO1xyXG59Il19
|
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
import { AnimateLayoutOptionsImpl } from './base/AnimateLayoutOptionsImpl';
|
|
2
|
-
/**
|
|
3
|
-
* Default per l'implementazione dell'algoritmo Preset (Posiziona i nodi in base alla loro proprietà **position**)
|
|
4
|
-
*/
|
|
5
|
-
export class PresetLayoutOptionsImpl extends AnimateLayoutOptionsImpl {
|
|
6
|
-
/** @ignore */
|
|
7
|
-
constructor() {
|
|
8
|
-
super();
|
|
9
|
-
/**
|
|
10
|
-
* Nome dell'algoritmo di layouting
|
|
11
|
-
*/
|
|
12
|
-
this.name = 'preset';
|
|
13
|
-
/**
|
|
14
|
-
* Funzione per la trasformazione delle posizioni dei nodi
|
|
15
|
-
*
|
|
16
|
-
* @param {any} node Nodo
|
|
17
|
-
* @param {any} position Posizione iniziale
|
|
18
|
-
*
|
|
19
|
-
* @returns {any} Posizione finale
|
|
20
|
-
*/
|
|
21
|
-
this.transform = (node, position) => position;
|
|
22
|
-
}
|
|
23
|
-
}
|
|
1
|
+
import { AnimateLayoutOptionsImpl } from './base/AnimateLayoutOptionsImpl';
|
|
2
|
+
/**
|
|
3
|
+
* Default per l'implementazione dell'algoritmo Preset (Posiziona i nodi in base alla loro proprietà **position**)
|
|
4
|
+
*/
|
|
5
|
+
export class PresetLayoutOptionsImpl extends AnimateLayoutOptionsImpl {
|
|
6
|
+
/** @ignore */
|
|
7
|
+
constructor() {
|
|
8
|
+
super();
|
|
9
|
+
/**
|
|
10
|
+
* Nome dell'algoritmo di layouting
|
|
11
|
+
*/
|
|
12
|
+
this.name = 'preset';
|
|
13
|
+
/**
|
|
14
|
+
* Funzione per la trasformazione delle posizioni dei nodi
|
|
15
|
+
*
|
|
16
|
+
* @param {any} node Nodo
|
|
17
|
+
* @param {any} position Posizione iniziale
|
|
18
|
+
*
|
|
19
|
+
* @returns {any} Posizione finale
|
|
20
|
+
*/
|
|
21
|
+
this.transform = (node, position) => position;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
24
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHJlc2V0TGF5b3V0T3B0aW9uc0ltcGwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lcy1kaWFncmFtcy9zcmMvbGliL21vZGVscy9sYXlvdXRzL1ByZXNldExheW91dE9wdGlvbnNJbXBsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRTNFOztHQUVHO0FBQ0gsTUFBTSxPQUFPLHVCQUF3QixTQUFRLHdCQUF3QjtJQUVqRSxjQUFjO0lBQ2Q7UUFBZ0IsS0FBSyxFQUFFLENBQUM7UUFFeEI7O1dBRUc7UUFDSCxTQUFJLEdBQUcsUUFBUSxDQUFDO1FBcUJoQjs7Ozs7OztXQU9HO1FBQ0gsY0FBUyxHQUFHLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDO0lBbENoQixDQUFDO0NBbUM3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFuaW1hdGVMYXlvdXRPcHRpb25zSW1wbCB9IGZyb20gJy4vYmFzZS9BbmltYXRlTGF5b3V0T3B0aW9uc0ltcGwnO1xyXG5cclxuLyoqXHJcbiAqIERlZmF1bHQgcGVyIGwnaW1wbGVtZW50YXppb25lIGRlbGwnYWxnb3JpdG1vIFByZXNldCAoUG9zaXppb25hIGkgbm9kaSBpbiBiYXNlIGFsbGEgbG9ybyBwcm9wcmlldMOgICoqcG9zaXRpb24qKilcclxuICovXHJcbmV4cG9ydCBjbGFzcyBQcmVzZXRMYXlvdXRPcHRpb25zSW1wbCBleHRlbmRzIEFuaW1hdGVMYXlvdXRPcHRpb25zSW1wbCB7XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgKi9cclxuICAgIGNvbnN0cnVjdG9yKCkgeyBzdXBlcigpOyB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBOb21lIGRlbGwnYWxnb3JpdG1vIGRpIGxheW91dGluZ1xyXG4gICAgICovXHJcbiAgICBuYW1lID0gJ3ByZXNldCc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbmRpY2Egc2UgYWRhdHRhcmUgYWwgY29udGVuaXRvcmVcclxuICAgICAqL1xyXG4gICAgZml0PzogYm9vbGVhbjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFBhZGRpbmcgcmlzcGV0dG8gYWwgY29udGVuaXRvcmVcclxuICAgICAqL1xyXG4gICAgcGFkZGluZz86IG51bWJlcjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIE1hcHBhdHVyYSBkYSB1biBub2RvIGFkIHVuYSBwb3NpemlvbmVcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHthbnl9IG5vZGUgTm9kb1xyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyB7YW55fSBQb3NpemlvbmUgaW5pemlhbGVcclxuICAgICAqL1xyXG4gICAgcG9zaXRpb25zOiAobm9kZSkgPT4gYW55O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRnVuemlvbmUgcGVyIGxhIHRyYXNmb3JtYXppb25lIGRlbGxlIHBvc2l6aW9uaSBkZWkgbm9kaVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge2FueX0gbm9kZSBOb2RvXHJcbiAgICAgKiBAcGFyYW0ge2FueX0gcG9zaXRpb24gUG9zaXppb25lIGluaXppYWxlXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIHthbnl9IFBvc2l6aW9uZSBmaW5hbGVcclxuICAgICAqL1xyXG4gICAgdHJhbnNmb3JtID0gKG5vZGUsIHBvc2l0aW9uKSA9PiBwb3NpdGlvbjtcclxufVxyXG4iXX0=
|