ngx-vflow 0.15.0 → 1.0.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/README.md +8 -1
- package/esm2022/lib/vflow/components/background/background.component.mjs +75 -8
- package/esm2022/lib/vflow/components/connection/connection.component.mjs +67 -49
- package/esm2022/lib/vflow/components/custom-node-base/custom-node-base.component.mjs +32 -25
- package/esm2022/lib/vflow/components/default-node/default-node.component.mjs +9 -11
- package/esm2022/lib/vflow/components/defs/defs.component.mjs +9 -12
- package/esm2022/lib/vflow/components/edge/edge.component.mjs +21 -24
- package/esm2022/lib/vflow/components/edge-label/edge-label.component.mjs +26 -31
- package/esm2022/lib/vflow/components/node/node.component.mjs +54 -50
- package/esm2022/lib/vflow/components/vflow/vflow.component.mjs +95 -90
- package/esm2022/lib/vflow/decorators/run-in-injection-context.decorator.mjs +1 -1
- package/esm2022/lib/vflow/directives/changes-controller.directive.mjs +41 -125
- package/esm2022/lib/vflow/directives/connection-controller.directive.mjs +16 -16
- package/esm2022/lib/vflow/directives/drag-handle.directive.mjs +7 -6
- package/esm2022/lib/vflow/directives/flow-size-controller.directive.mjs +7 -6
- package/esm2022/lib/vflow/directives/handle-size-controller.directive.mjs +15 -12
- package/esm2022/lib/vflow/directives/map-context.directive.mjs +8 -5
- package/esm2022/lib/vflow/directives/pointer.directive.mjs +18 -19
- package/esm2022/lib/vflow/directives/reference.directive.mjs +6 -5
- package/esm2022/lib/vflow/directives/root-pointer.directive.mjs +8 -5
- package/esm2022/lib/vflow/directives/root-svg-context.directive.mjs +8 -5
- package/esm2022/lib/vflow/directives/selectable.directive.mjs +10 -7
- package/esm2022/lib/vflow/directives/space-point-context.directive.mjs +8 -5
- package/esm2022/lib/vflow/directives/template.directive.mjs +43 -25
- package/esm2022/lib/vflow/interfaces/component-node-event.interface.mjs +1 -1
- package/esm2022/lib/vflow/interfaces/edge.interface.mjs +1 -1
- package/esm2022/lib/vflow/interfaces/node.interface.mjs +1 -1
- package/esm2022/lib/vflow/interfaces/optimization.interface.mjs +1 -1
- package/esm2022/lib/vflow/math/edge-path/bezier-path.mjs +1 -1
- package/esm2022/lib/vflow/math/edge-path/smooth-step-path.mjs +170 -0
- package/esm2022/lib/vflow/models/connection.model.mjs +1 -1
- package/esm2022/lib/vflow/models/edge.model.mjs +6 -1
- package/esm2022/lib/vflow/models/handle.model.mjs +2 -2
- package/esm2022/lib/vflow/models/node.model.mjs +4 -10
- package/esm2022/lib/vflow/models/toolbar.model.mjs +1 -1
- package/esm2022/lib/vflow/public-components/custom-dynamic-node/custom-dynamic-node.component.mjs +16 -10
- package/esm2022/lib/vflow/public-components/custom-node/custom-node.component.mjs +15 -10
- package/esm2022/lib/vflow/public-components/handle/handle.component.mjs +52 -0
- package/esm2022/lib/vflow/public-components/minimap/minimap.component.mjs +42 -45
- package/esm2022/lib/vflow/public-components/node-toolbar/node-toolbar.component.mjs +24 -27
- package/esm2022/lib/vflow/public-components/resizable/resizable.component.mjs +60 -45
- package/esm2022/lib/vflow/services/component-event-bus.service.mjs +3 -3
- package/esm2022/lib/vflow/services/draggable.service.mjs +4 -4
- package/esm2022/lib/vflow/services/edge-changes.service.mjs +3 -3
- package/esm2022/lib/vflow/services/flow-entities.service.mjs +4 -4
- package/esm2022/lib/vflow/services/flow-settings.service.mjs +4 -10
- package/esm2022/lib/vflow/services/flow-status.service.mjs +4 -4
- package/esm2022/lib/vflow/services/handle.service.mjs +4 -4
- package/esm2022/lib/vflow/services/keyboard.service.mjs +5 -5
- package/esm2022/lib/vflow/services/node-accessor.service.mjs +3 -3
- package/esm2022/lib/vflow/services/node-changes.service.mjs +3 -3
- package/esm2022/lib/vflow/services/node-rendering.service.mjs +11 -4
- package/esm2022/lib/vflow/services/overlays.service.mjs +3 -3
- package/esm2022/lib/vflow/services/selection.service.mjs +4 -4
- package/esm2022/lib/vflow/services/viewport.service.mjs +3 -3
- package/esm2022/lib/vflow/types/background.type.mjs +1 -1
- package/esm2022/lib/vflow/utils/adjust-direction.mjs +1 -1
- package/esm2022/lib/vflow/utils/get-os.mjs +1 -1
- package/esm2022/lib/vflow/utils/is-group-node.mjs +4 -0
- package/esm2022/lib/vflow/utils/nodes.mjs +1 -1
- package/esm2022/lib/vflow/vflow.mjs +24 -0
- package/esm2022/public-api.mjs +4 -5
- package/fesm2022/ngx-vflow.mjs +1160 -1005
- package/fesm2022/ngx-vflow.mjs.map +1 -1
- package/lib/vflow/components/background/background.component.d.ts +14 -1
- package/lib/vflow/components/connection/connection.component.d.ts +3 -3
- package/lib/vflow/components/custom-node-base/custom-node-base.component.d.ts +4 -9
- package/lib/vflow/components/default-node/default-node.component.d.ts +2 -2
- package/lib/vflow/components/defs/defs.component.d.ts +2 -2
- package/lib/vflow/components/edge/edge.component.d.ts +7 -7
- package/lib/vflow/components/edge-label/edge-label.component.d.ts +9 -8
- package/lib/vflow/components/node/node.component.d.ts +5 -6
- package/lib/vflow/components/vflow/vflow.component.d.ts +19 -27
- package/lib/vflow/directives/changes-controller.directive.d.ts +29 -30
- package/lib/vflow/directives/connection-controller.directive.d.ts +1 -2
- package/lib/vflow/directives/drag-handle.directive.d.ts +1 -1
- package/lib/vflow/directives/flow-size-controller.directive.d.ts +1 -1
- package/lib/vflow/directives/handle-size-controller.directive.d.ts +2 -2
- package/lib/vflow/directives/map-context.directive.d.ts +1 -1
- package/lib/vflow/directives/pointer.directive.d.ts +9 -6
- package/lib/vflow/directives/reference.directive.d.ts +1 -1
- package/lib/vflow/directives/root-pointer.directive.d.ts +1 -1
- package/lib/vflow/directives/root-svg-context.directive.d.ts +1 -1
- package/lib/vflow/directives/selectable.directive.d.ts +1 -1
- package/lib/vflow/directives/space-point-context.directive.d.ts +1 -1
- package/lib/vflow/directives/template.directive.d.ts +6 -6
- package/lib/vflow/interfaces/component-node-event.interface.d.ts +3 -3
- package/lib/vflow/interfaces/edge.interface.d.ts +1 -1
- package/lib/vflow/interfaces/node.interface.d.ts +14 -14
- package/lib/vflow/interfaces/optimization.interface.d.ts +7 -1
- package/lib/vflow/math/edge-path/smooth-step-path.d.ts +5 -0
- package/lib/vflow/models/edge.model.d.ts +1 -17
- package/lib/vflow/models/handle.model.d.ts +4 -4
- package/lib/vflow/models/node.model.d.ts +2 -5
- package/lib/vflow/public-components/custom-dynamic-node/custom-dynamic-node.component.d.ts +3 -3
- package/lib/vflow/public-components/custom-node/custom-node.component.d.ts +3 -3
- package/lib/vflow/{components → public-components}/handle/handle.component.d.ts +5 -5
- package/lib/vflow/public-components/minimap/minimap.component.d.ts +8 -10
- package/lib/vflow/public-components/node-toolbar/node-toolbar.component.d.ts +6 -5
- package/lib/vflow/public-components/resizable/resizable.component.d.ts +5 -4
- package/lib/vflow/services/flow-settings.service.d.ts +0 -7
- package/lib/vflow/services/node-rendering.service.d.ts +2 -0
- package/lib/vflow/types/background.type.d.ts +24 -1
- package/lib/vflow/utils/is-group-node.d.ts +2 -0
- package/lib/vflow/utils/reference-keeper.d.ts +1 -1
- package/lib/vflow/vflow.d.ts +9 -0
- package/package.json +3 -3
- package/public-api.d.ts +2 -3
- package/esm2022/lib/vflow/components/handle/handle.component.mjs +0 -49
- package/esm2022/lib/vflow/interfaces/handle-positions.interface.mjs +0 -2
- package/esm2022/lib/vflow/vflow.module.mjs +0 -121
- package/lib/vflow/interfaces/handle-positions.interface.d.ts +0 -5
- package/lib/vflow/vflow.module.d.ts +0 -30
|
@@ -1,19 +1,24 @@
|
|
|
1
|
-
import { Directive,
|
|
1
|
+
import { Directive, input } from "@angular/core";
|
|
2
2
|
import { CustomNodeBaseComponent } from "../../components/custom-node-base/custom-node-base.component";
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
export class CustomNodeComponent extends CustomNodeBaseComponent {
|
|
5
|
+
constructor() {
|
|
6
|
+
super(...arguments);
|
|
7
|
+
/**
|
|
8
|
+
* Reference to node bound to this component
|
|
9
|
+
*/
|
|
10
|
+
this.node = input.required();
|
|
11
|
+
}
|
|
5
12
|
ngOnInit() {
|
|
6
|
-
if (this.node.data) {
|
|
7
|
-
this.data.set(this.node.data);
|
|
13
|
+
if (this.node().data) {
|
|
14
|
+
this.data.set(this.node().data);
|
|
8
15
|
}
|
|
9
16
|
super.ngOnInit();
|
|
10
17
|
}
|
|
11
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
12
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "
|
|
18
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CustomNodeComponent, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
19
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "17.3.12", type: CustomNodeComponent, inputs: { node: { classPropertyName: "node", publicName: "node", isSignal: true, isRequired: true, transformFunction: null } }, usesInheritance: true, ngImport: i0 }); }
|
|
13
20
|
}
|
|
14
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
21
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CustomNodeComponent, decorators: [{
|
|
15
22
|
type: Directive
|
|
16
|
-
}]
|
|
17
|
-
|
|
18
|
-
}] } });
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLW5vZGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZmbG93LWxpYi9zcmMvbGliL3ZmbG93L3B1YmxpYy1jb21wb25lbnRzL2N1c3RvbS1ub2RlL2N1c3RvbS1ub2RlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQTtBQUV4RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQzs7QUFHdkcsTUFBTSxPQUFnQixtQkFBaUMsU0FBUSx1QkFBMEI7SUFPdkUsUUFBUTtRQUN0QixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ2xCLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7U0FDOUI7UUFFRCxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUE7SUFDbEIsQ0FBQzsrR0FibUIsbUJBQW1CO21HQUFuQixtQkFBbUI7OzRGQUFuQixtQkFBbUI7a0JBRHhDLFNBQVM7OEJBTVEsSUFBSTtzQkFEbkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5wdXQsIE9uSW5pdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCJcbmltcG9ydCB7IENvbXBvbmVudE5vZGUgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL25vZGUuaW50ZXJmYWNlJztcbmltcG9ydCB7IEN1c3RvbU5vZGVCYXNlQ29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvY3VzdG9tLW5vZGUtYmFzZS9jdXN0b20tbm9kZS1iYXNlLmNvbXBvbmVudFwiO1xuXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBDdXN0b21Ob2RlQ29tcG9uZW50PFQgPSB1bmtub3duPiBleHRlbmRzIEN1c3RvbU5vZGVCYXNlQ29tcG9uZW50PFQ+IGltcGxlbWVudHMgT25Jbml0IHtcbiAgLyoqXG4gICAqIFJlZmVyZW5jZSB0byBub2RlIGJvdW5kIHRvIHRoaXMgY29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgb3ZlcnJpZGUgbm9kZSE6IENvbXBvbmVudE5vZGU8VD5cblxuICBwdWJsaWMgb3ZlcnJpZGUgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubm9kZS5kYXRhKSB7XG4gICAgICB0aGlzLmRhdGEuc2V0KHRoaXMubm9kZS5kYXRhKVxuICAgIH1cblxuICAgIHN1cGVyLm5nT25Jbml0KClcbiAgfVxufVxuXG4iXX0=
|
|
23
|
+
}] });
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLW5vZGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZmbG93LWxpYi9zcmMvbGliL3ZmbG93L3B1YmxpYy1jb21wb25lbnRzL2N1c3RvbS1ub2RlL2N1c3RvbS1ub2RlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBaUIsTUFBTSxlQUFlLENBQUE7QUFFL0QsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOERBQThELENBQUM7O0FBR3ZHLE1BQU0sT0FBZ0IsbUJBQTZCLFNBQVEsdUJBQTBCO0lBRHJGOztRQUVFOztXQUVHO1FBQ0ksU0FBSSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQW9CLENBQUE7S0FTakQ7SUFQaUIsUUFBUTtRQUN0QixJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDakMsQ0FBQztRQUVELEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQTtJQUNsQixDQUFDOytHQVptQixtQkFBbUI7bUdBQW5CLG1CQUFtQjs7NEZBQW5CLG1CQUFtQjtrQkFEeEMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgaW5wdXQsIElucHV0LCBPbkluaXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiXG5pbXBvcnQgeyBDb21wb25lbnROb2RlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9ub2RlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBDdXN0b21Ob2RlQmFzZUNvbXBvbmVudCB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL2N1c3RvbS1ub2RlLWJhc2UvY3VzdG9tLW5vZGUtYmFzZS5jb21wb25lbnRcIjtcblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQ3VzdG9tTm9kZUNvbXBvbmVudDxUID0gYW55PiBleHRlbmRzIEN1c3RvbU5vZGVCYXNlQ29tcG9uZW50PFQ+IGltcGxlbWVudHMgT25Jbml0IHtcbiAgLyoqXG4gICAqIFJlZmVyZW5jZSB0byBub2RlIGJvdW5kIHRvIHRoaXMgY29tcG9uZW50XG4gICAqL1xuICBwdWJsaWMgbm9kZSA9IGlucHV0LnJlcXVpcmVkPENvbXBvbmVudE5vZGU8VD4+KClcblxuICBwdWJsaWMgb3ZlcnJpZGUgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubm9kZSgpLmRhdGEpIHtcbiAgICAgIHRoaXMuZGF0YS5zZXQodGhpcy5ub2RlKCkuZGF0YSlcbiAgICB9XG5cbiAgICBzdXBlci5uZ09uSW5pdCgpXG4gIH1cbn1cblxuIl19
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { ChangeDetectionStrategy, Component, DestroyRef, ElementRef, Injector, inject, input, } from '@angular/core';
|
|
3
|
+
import { HandleService } from '../../services/handle.service';
|
|
4
|
+
import { HandleModel } from '../../models/handle.model';
|
|
5
|
+
import { InjectionContext, } from '../../decorators/run-in-injection-context.decorator';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
export class HandleComponent {
|
|
8
|
+
constructor() {
|
|
9
|
+
this.injector = inject(Injector);
|
|
10
|
+
this.handleService = inject(HandleService);
|
|
11
|
+
this.element = inject(ElementRef).nativeElement;
|
|
12
|
+
this.destroyRef = inject(DestroyRef);
|
|
13
|
+
/**
|
|
14
|
+
* At what side of node this component should be placed
|
|
15
|
+
*/
|
|
16
|
+
this.position = input.required();
|
|
17
|
+
/**
|
|
18
|
+
* Source or target
|
|
19
|
+
*/
|
|
20
|
+
this.type = input.required();
|
|
21
|
+
/**
|
|
22
|
+
* Should be used if node has more than one source/target
|
|
23
|
+
*/
|
|
24
|
+
this.id = input();
|
|
25
|
+
this.template = input();
|
|
26
|
+
}
|
|
27
|
+
ngOnInit() {
|
|
28
|
+
const node = this.handleService.node();
|
|
29
|
+
if (node) {
|
|
30
|
+
this.model = new HandleModel({
|
|
31
|
+
position: this.position(),
|
|
32
|
+
type: this.type(),
|
|
33
|
+
id: this.id(),
|
|
34
|
+
parentReference: this.element.parentElement,
|
|
35
|
+
template: this.template(),
|
|
36
|
+
}, node);
|
|
37
|
+
this.handleService.createHandle(this.model);
|
|
38
|
+
requestAnimationFrame(() => this.model.updateParent());
|
|
39
|
+
this.destroyRef.onDestroy(() => this.handleService.destroyHandle(this.model));
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: HandleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
43
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.12", type: HandleComponent, isStandalone: true, selector: "handle", inputs: { position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: true, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: true, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, template: { classPropertyName: "template", publicName: "template", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "", changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
44
|
+
}
|
|
45
|
+
__decorate([
|
|
46
|
+
InjectionContext
|
|
47
|
+
], HandleComponent.prototype, "ngOnInit", null);
|
|
48
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: HandleComponent, decorators: [{
|
|
49
|
+
type: Component,
|
|
50
|
+
args: [{ standalone: true, selector: 'handle', changeDetection: ChangeDetectionStrategy.OnPush, template: "" }]
|
|
51
|
+
}], propDecorators: { ngOnInit: [] } });
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZGxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy9wdWJsaWMtY29tcG9uZW50cy9oYW5kbGUvaGFuZGxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy9wdWJsaWMtY29tcG9uZW50cy9oYW5kbGUvaGFuZGxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsVUFBVSxFQUNWLFFBQVEsRUFHUixNQUFNLEVBQ04sS0FBSyxHQUNOLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDeEQsT0FBTyxFQUNMLGdCQUFnQixHQUVqQixNQUFNLHFEQUFxRCxDQUFDOztBQVE3RCxNQUFNLE9BQU8sZUFBZTtJQU41QjtRQU9TLGFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDM0Isa0JBQWEsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDdEMsWUFBTyxHQUFHLE1BQU0sQ0FBMEIsVUFBVSxDQUFDLENBQUMsYUFBYSxDQUFDO1FBQ3BFLGVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFeEM7O1dBRUc7UUFDSSxhQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBWSxDQUFDO1FBRTdDOztXQUVHO1FBQ0ksU0FBSSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQXVCLENBQUM7UUFFcEQ7O1dBRUc7UUFDSSxPQUFFLEdBQUcsS0FBSyxFQUFVLENBQUM7UUFFckIsYUFBUSxHQUFHLEtBQUssRUFBb0IsQ0FBQztLQTZCN0M7SUF4QlEsUUFBUTtRQUNiLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFdkMsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNULElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxXQUFXLENBQzFCO2dCQUNFLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFO2dCQUN6QixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRTtnQkFDakIsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUU7Z0JBQ2IsZUFBZSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYztnQkFDNUMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUU7YUFDMUIsRUFDRCxJQUFJLENBQ0wsQ0FBQztZQUVGLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUU1QyxxQkFBcUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7WUFFdkQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQzdCLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FDN0MsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDOytHQWpEVSxlQUFlO21HQUFmLGVBQWUsa2pCQ3pCNUIsRUFBQTs7QURtRFM7SUFETixnQkFBZ0I7K0NBd0JoQjs0RkFqRFUsZUFBZTtrQkFOM0IsU0FBUztpQ0FDSSxJQUFJLFlBQ04sUUFBUSxtQkFFRCx1QkFBdUIsQ0FBQyxNQUFNOzhCQTRCeEMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIERlc3Ryb3lSZWYsXG4gIEVsZW1lbnRSZWYsXG4gIEluamVjdG9yLFxuICBPbkluaXQsXG4gIFRlbXBsYXRlUmVmLFxuICBpbmplY3QsXG4gIGlucHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFBvc2l0aW9uIH0gZnJvbSAnLi4vLi4vdHlwZXMvcG9zaXRpb24udHlwZSc7XG5pbXBvcnQgeyBIYW5kbGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvaGFuZGxlLnNlcnZpY2UnO1xuaW1wb3J0IHsgSGFuZGxlTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvaGFuZGxlLm1vZGVsJztcbmltcG9ydCB7XG4gIEluamVjdGlvbkNvbnRleHQsXG4gIFdpdGhJbmplY3Rvcixcbn0gZnJvbSAnLi4vLi4vZGVjb3JhdG9ycy9ydW4taW4taW5qZWN0aW9uLWNvbnRleHQuZGVjb3JhdG9yJztcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnaGFuZGxlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2hhbmRsZS5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBIYW5kbGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIFdpdGhJbmplY3RvciB7XG4gIHB1YmxpYyBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG4gIHByaXZhdGUgaGFuZGxlU2VydmljZSA9IGluamVjdChIYW5kbGVTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBlbGVtZW50ID0gaW5qZWN0PEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PihFbGVtZW50UmVmKS5uYXRpdmVFbGVtZW50O1xuICBwcml2YXRlIGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgLyoqXG4gICAqIEF0IHdoYXQgc2lkZSBvZiBub2RlIHRoaXMgY29tcG9uZW50IHNob3VsZCBiZSBwbGFjZWRcbiAgICovXG4gIHB1YmxpYyBwb3NpdGlvbiA9IGlucHV0LnJlcXVpcmVkPFBvc2l0aW9uPigpO1xuXG4gIC8qKlxuICAgKiBTb3VyY2Ugb3IgdGFyZ2V0XG4gICAqL1xuICBwdWJsaWMgdHlwZSA9IGlucHV0LnJlcXVpcmVkPCdzb3VyY2UnIHwgJ3RhcmdldCc+KCk7XG5cbiAgLyoqXG4gICAqIFNob3VsZCBiZSB1c2VkIGlmIG5vZGUgaGFzIG1vcmUgdGhhbiBvbmUgc291cmNlL3RhcmdldFxuICAgKi9cbiAgcHVibGljIGlkID0gaW5wdXQ8c3RyaW5nPigpO1xuXG4gIHB1YmxpYyB0ZW1wbGF0ZSA9IGlucHV0PFRlbXBsYXRlUmVmPGFueT4+KCk7XG5cbiAgcHVibGljIG1vZGVsITogSGFuZGxlTW9kZWw7XG5cbiAgQEluamVjdGlvbkNvbnRleHRcbiAgcHVibGljIG5nT25Jbml0KCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmhhbmRsZVNlcnZpY2Uubm9kZSgpO1xuXG4gICAgaWYgKG5vZGUpIHtcbiAgICAgIHRoaXMubW9kZWwgPSBuZXcgSGFuZGxlTW9kZWwoXG4gICAgICAgIHtcbiAgICAgICAgICBwb3NpdGlvbjogdGhpcy5wb3NpdGlvbigpLFxuICAgICAgICAgIHR5cGU6IHRoaXMudHlwZSgpLFxuICAgICAgICAgIGlkOiB0aGlzLmlkKCksXG4gICAgICAgICAgcGFyZW50UmVmZXJlbmNlOiB0aGlzLmVsZW1lbnQucGFyZW50RWxlbWVudCEsXG4gICAgICAgICAgdGVtcGxhdGU6IHRoaXMudGVtcGxhdGUoKSxcbiAgICAgICAgfSxcbiAgICAgICAgbm9kZSxcbiAgICAgICk7XG5cbiAgICAgIHRoaXMuaGFuZGxlU2VydmljZS5jcmVhdGVIYW5kbGUodGhpcy5tb2RlbCk7XG5cbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB0aGlzLm1vZGVsLnVwZGF0ZVBhcmVudCgpKTtcblxuICAgICAgdGhpcy5kZXN0cm95UmVmLm9uRGVzdHJveSgoKSA9PlxuICAgICAgICB0aGlzLmhhbmRsZVNlcnZpY2UuZGVzdHJveUhhbmRsZSh0aGlzLm1vZGVsKSxcbiAgICAgICk7XG4gICAgfVxuICB9XG59XG4iLCIiXX0=
|
|
@@ -1,13 +1,12 @@
|
|
|
1
|
-
import { Component, computed, inject, Injector,
|
|
1
|
+
import { Component, computed, inject, Injector, signal, input, viewChild, } from '@angular/core';
|
|
2
2
|
import { FlowEntitiesService } from '../../services/flow-entities.service';
|
|
3
3
|
import { MinimapModel } from '../../models/minimap.model';
|
|
4
4
|
import { FlowSettingsService } from '../../services/flow-settings.service';
|
|
5
5
|
import { getViewportForBounds } from '../../utils/viewport';
|
|
6
6
|
import { getNodesBounds } from '../../utils/nodes';
|
|
7
7
|
import { ViewportService } from '../../services/viewport.service';
|
|
8
|
+
import { DefaultNodeComponent } from '../../components/default-node/default-node.component';
|
|
8
9
|
import * as i0 from "@angular/core";
|
|
9
|
-
import * as i1 from "@angular/common";
|
|
10
|
-
import * as i2 from "../../components/default-node/default-node.component";
|
|
11
10
|
export class MiniMapComponent {
|
|
12
11
|
constructor() {
|
|
13
12
|
this.entitiesService = inject(FlowEntitiesService);
|
|
@@ -17,38 +16,61 @@ export class MiniMapComponent {
|
|
|
17
16
|
/**
|
|
18
17
|
* The color outside the viewport (invisible area)
|
|
19
18
|
*/
|
|
20
|
-
this.maskColor = `rgba(215, 215, 215, 0.6)
|
|
19
|
+
this.maskColor = input(`rgba(215, 215, 215, 0.6)`);
|
|
21
20
|
/**
|
|
22
21
|
* The minimap stroke color
|
|
23
22
|
*/
|
|
24
|
-
this.strokeColor = `rgb(200, 200, 200)
|
|
23
|
+
this.strokeColor = input(`rgb(200, 200, 200)`);
|
|
24
|
+
/**
|
|
25
|
+
* The corner of the flow where to render a mini-map
|
|
26
|
+
*/
|
|
27
|
+
this.position = input('bottom-right');
|
|
28
|
+
/**
|
|
29
|
+
* Make a minimap bigger on hover
|
|
30
|
+
*/
|
|
31
|
+
this.scaleOnHover = input(false);
|
|
32
|
+
this.minimap = viewChild.required('minimap');
|
|
25
33
|
this.minimapOffset = 10;
|
|
26
34
|
this.minimapScale = computed(() => {
|
|
27
|
-
if (this.
|
|
35
|
+
if (this.scaleOnHover()) {
|
|
28
36
|
return this.hovered() ? 0.4 : 0.2;
|
|
29
37
|
}
|
|
30
38
|
return 0.2;
|
|
31
39
|
});
|
|
32
|
-
this.viewportColor = computed(() =>
|
|
40
|
+
this.viewportColor = computed(() => {
|
|
41
|
+
const bg = this.flowSettingsService.background();
|
|
42
|
+
if (bg.type === 'dots' || bg.type === 'solid') {
|
|
43
|
+
return bg.color ?? '#fff';
|
|
44
|
+
}
|
|
45
|
+
return '#fff';
|
|
46
|
+
});
|
|
33
47
|
this.hovered = signal(false);
|
|
34
48
|
this.minimapPoint = computed(() => {
|
|
35
|
-
switch (this.
|
|
49
|
+
switch (this.position()) {
|
|
36
50
|
case 'top-left':
|
|
37
51
|
return { x: this.minimapOffset, y: this.minimapOffset };
|
|
38
52
|
case 'top-right':
|
|
39
53
|
return {
|
|
40
|
-
x: this.flowSettingsService.computedFlowWidth() -
|
|
41
|
-
|
|
54
|
+
x: this.flowSettingsService.computedFlowWidth() -
|
|
55
|
+
this.minimapWidth() -
|
|
56
|
+
this.minimapOffset,
|
|
57
|
+
y: this.minimapOffset,
|
|
42
58
|
};
|
|
43
59
|
case 'bottom-left':
|
|
44
60
|
return {
|
|
45
61
|
x: this.minimapOffset,
|
|
46
|
-
y: this.flowSettingsService.computedFlowHeight() -
|
|
62
|
+
y: this.flowSettingsService.computedFlowHeight() -
|
|
63
|
+
this.minimapHeight() -
|
|
64
|
+
this.minimapOffset,
|
|
47
65
|
};
|
|
48
66
|
case 'bottom-right':
|
|
49
67
|
return {
|
|
50
|
-
x: this.flowSettingsService.computedFlowWidth() -
|
|
51
|
-
|
|
68
|
+
x: this.flowSettingsService.computedFlowWidth() -
|
|
69
|
+
this.minimapWidth() -
|
|
70
|
+
this.minimapOffset,
|
|
71
|
+
y: this.flowSettingsService.computedFlowHeight() -
|
|
72
|
+
this.minimapHeight() -
|
|
73
|
+
this.minimapOffset,
|
|
52
74
|
};
|
|
53
75
|
}
|
|
54
76
|
});
|
|
@@ -75,45 +97,20 @@ export class MiniMapComponent {
|
|
|
75
97
|
const scale = vport.zoom * this.minimapScale();
|
|
76
98
|
return `translate(${x} ${y}) scale(${scale})`;
|
|
77
99
|
});
|
|
78
|
-
this.minimapPosition = signal('bottom-right');
|
|
79
|
-
this.scaleOnHoverSignal = signal(false);
|
|
80
|
-
}
|
|
81
|
-
/**
|
|
82
|
-
* The corner of the flow where to render a mini-map
|
|
83
|
-
*/
|
|
84
|
-
set position(value) {
|
|
85
|
-
this.minimapPosition.set(value);
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* Make a minimap bigger on hover
|
|
89
|
-
*/
|
|
90
|
-
set scaleOnHover(value) {
|
|
91
|
-
this.scaleOnHoverSignal.set(value);
|
|
92
100
|
}
|
|
93
101
|
ngOnInit() {
|
|
94
102
|
const model = new MinimapModel();
|
|
95
|
-
model.template.set(this.minimap);
|
|
103
|
+
model.template.set(this.minimap());
|
|
96
104
|
this.entitiesService.minimap.set(model);
|
|
97
105
|
}
|
|
98
106
|
trackNodes(idx, { node }) {
|
|
99
107
|
return node;
|
|
100
108
|
}
|
|
101
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
102
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
109
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MiniMapComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
110
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: MiniMapComponent, isStandalone: true, selector: "mini-map", inputs: { maskColor: { classPropertyName: "maskColor", publicName: "maskColor", isSignal: true, isRequired: false, transformFunction: null }, strokeColor: { classPropertyName: "strokeColor", publicName: "strokeColor", isSignal: true, isRequired: false, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, scaleOnHover: { classPropertyName: "scaleOnHover", publicName: "scaleOnHover", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "minimap", first: true, predicate: ["minimap"], descendants: true, isSignal: true }], ngImport: i0, template: "<ng-template #minimap>\n <svg:rect\n [attr.x]=\"minimapPoint().x\"\n [attr.y]=\"minimapPoint().y\"\n [attr.width]=\"minimapWidth()\"\n [attr.height]=\"minimapHeight()\"\n [attr.stroke]=\"strokeColor()\"\n fill=\"none\"\n />\n\n <svg:svg\n [attr.x]=\"minimapPoint().x\"\n [attr.y]=\"minimapPoint().y\"\n [attr.width]=\"minimapWidth()\"\n [attr.height]=\"minimapHeight()\"\n (mouseover)=\"hovered.set(true)\"\n (mouseleave)=\"hovered.set(false)\"\n >\n <svg:rect\n [attr.width]=\"minimapWidth()\"\n [attr.height]=\"minimapHeight()\"\n [attr.fill]=\"maskColor()\"\n />\n\n <svg:g [attr.transform]=\"minimapTransform()\">\n <svg:rect\n [attr.fill]=\"viewportColor()\"\n [attr.transform]=\"viewportTransform()\"\n [attr.width]=\"minimapWidth()\"\n [attr.height]=\"minimapHeight()\"\n />\n\n @for (model of entitiesService.nodes(); track trackNodes($index, model)) {\n <ng-container>\n @if (\n model.node.type === \"default\" ||\n model.node.type === \"html-template\" ||\n model.isComponentType\n ) {\n <svg:foreignObject\n [attr.transform]=\"model.pointTransform()\"\n [attr.width]=\"model.size().width\"\n [attr.height]=\"model.size().height\"\n >\n <default-node\n [selected]=\"model.selected()\"\n [style.width.px]=\"model.size().width\"\n [style.height.px]=\"model.size().height\"\n [style.max-width.px]=\"model.size().width\"\n [style.max-height.px]=\"model.size().height\"\n >\n <div [outerHTML]=\"model.text()\"></div>\n </default-node>\n </svg:foreignObject>\n }\n @if (\n model.node.type === \"default-group\" ||\n model.node.type === \"template-group\"\n ) {\n <svg:rect\n class=\"default-group-node\"\n rx=\"5\"\n ry=\"5\"\n [attr.transform]=\"model.pointTransform()\"\n [class.default-group-node_selected]=\"model.selected()\"\n [attr.width]=\"model.size().width\"\n [attr.height]=\"model.size().height\"\n [style.stroke]=\"model.color()\"\n [style.fill]=\"model.color()\"\n />\n }\n </ng-container>\n }\n </svg:g>\n </svg:svg>\n</ng-template>\n", styles: [".default-group-node{stroke-width:1.5px;fill-opacity:.05}.default-group-node_selected{stroke-width:2px}\n"], dependencies: [{ kind: "component", type: DefaultNodeComponent, selector: "default-node", inputs: ["selected"] }] }); }
|
|
103
111
|
}
|
|
104
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
112
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MiniMapComponent, decorators: [{
|
|
105
113
|
type: Component,
|
|
106
|
-
args: [{ selector: 'mini-map', template: "<ng-template #minimap>\n <svg:rect\n [attr.x]=\"minimapPoint().x\"\n [attr.y]=\"minimapPoint().y\"\n [attr.width]=\"minimapWidth()\"\n [attr.height]=\"minimapHeight()\"\n [attr.stroke]=\"strokeColor\"\n fill=\"none\"\n />\n\n <svg:svg\n [attr.x]=\"minimapPoint().x\"\n [attr.y]=\"minimapPoint().y\"\n [attr.width]=\"minimapWidth()\"\n [attr.height]=\"minimapHeight()\"\n (mouseover)=\"hovered.set(true)\"\n (mouseleave)=\"hovered.set(false)\"\n >\n <svg:rect\n [attr.width]=\"minimapWidth()\"\n [attr.height]=\"minimapHeight()\"\n [attr.fill]=\"maskColor\"\n />\n\n <svg:g [attr.transform]=\"minimapTransform()\">\n <svg:rect\n [attr.fill]=\"viewportColor()\"\n [attr.transform]=\"viewportTransform()\"\n [attr.width]=\"minimapWidth()\"\n [attr.height]=\"minimapHeight()\"\n />\n\n
|
|
107
|
-
}]
|
|
108
|
-
type: Input
|
|
109
|
-
}], maskColor: [{
|
|
110
|
-
type: Input
|
|
111
|
-
}], strokeColor: [{
|
|
112
|
-
type: Input
|
|
113
|
-
}], scaleOnHover: [{
|
|
114
|
-
type: Input
|
|
115
|
-
}], minimap: [{
|
|
116
|
-
type: ViewChild,
|
|
117
|
-
args: ['minimap', { static: true }]
|
|
118
|
-
}] } });
|
|
119
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWluaW1hcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3NyYy9saWIvdmZsb3cvcHVibGljLWNvbXBvbmVudHMvbWluaW1hcC9taW5pbWFwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy9wdWJsaWMtY29tcG9uZW50cy9taW5pbWFwL21pbmltYXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFlLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNySCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFMUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDM0UsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7OztBQVNsRSxNQUFNLE9BQU8sZ0JBQWdCO0lBTDdCO1FBTVksb0JBQWUsR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQTtRQUM3Qyx3QkFBbUIsR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQTtRQUNqRCxvQkFBZSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQTtRQUN6QyxhQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBVXJDOztXQUVHO1FBRUksY0FBUyxH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eEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDakMsQ0FBQztJQWNEOztPQUVHO0lBQ0gsSUFDVyxZQUFZLENBQUMsS0FBYztRQUNwQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ3BDLENBQUM7SUE0Rk0sUUFBUTtRQUNiLE1BQU0sS0FBSyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUE7UUFDaEMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBRWhDLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUN6QyxDQUFDO0lBRVMsVUFBVSxDQUFDLEdBQVcsRUFBRSxFQUFFLElBQUksRUFBYTtRQUNuRCxPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7K0dBcklVLGdCQUFnQjttR0FBaEIsZ0JBQWdCLHNSQ2hCN0IsNHZFQXFFQTs7NEZEckRhLGdCQUFnQjtrQkFMNUIsU0FBUzsrQkFDRSxVQUFVOzhCQWNULFFBQVE7c0JBRGxCLEtBQUs7Z0JBU0MsU0FBUztzQkFEZixLQUFLO2dCQU9DLFdBQVc7c0JBRGpCLEtBQUs7Z0JBT0ssWUFBWTtzQkFEdEIsS0FBSztnQkFNRSxPQUFPO3NCQURkLFNBQVM7dUJBQUMsU0FBUyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIGluamVjdCwgSW5qZWN0b3IsIElucHV0LCBPbkluaXQsIHNpZ25hbCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmxvd0VudGl0aWVzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Zsb3ctZW50aXRpZXMuc2VydmljZSc7XG5pbXBvcnQgeyBNaW5pbWFwTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvbWluaW1hcC5tb2RlbCc7XG5pbXBvcnQgeyBOb2RlTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvbm9kZS5tb2RlbCc7XG5pbXBvcnQgeyBGbG93U2V0dGluZ3NTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZmxvdy1zZXR0aW5ncy5zZXJ2aWNlJztcbmltcG9ydCB7IGdldFZpZXdwb3J0Rm9yQm91bmRzIH0gZnJvbSAnLi4vLi4vdXRpbHMvdmlld3BvcnQnO1xuaW1wb3J0IHsgZ2V0Tm9kZXNCb3VuZHMgfSBmcm9tICcuLi8uLi91dGlscy9ub2Rlcyc7XG5pbXBvcnQgeyBWaWV3cG9ydFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy92aWV3cG9ydC5zZXJ2aWNlJztcblxuZXhwb3J0IHR5cGUgTWluaU1hcFBvc2l0aW9uID0gJ3RvcC1sZWZ0JyB8ICd0b3AtcmlnaHQnIHwgJ2JvdHRvbS1sZWZ0JyB8ICdib3R0b20tcmlnaHQnXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21pbmktbWFwJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21pbmltYXAuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFtgLi9taW5pbWFwLmNvbXBvbmVudC5zY3NzYF1cbn0pXG5leHBvcnQgY2xhc3MgTWluaU1hcENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHByb3RlY3RlZCBlbnRpdGllc1NlcnZpY2UgPSBpbmplY3QoRmxvd0VudGl0aWVzU2VydmljZSlcbiAgcHJvdGVjdGVkIGZsb3dTZXR0aW5nc1NlcnZpY2UgPSBpbmplY3QoRmxvd1NldHRpbmdzU2VydmljZSlcbiAgcHJvdGVjdGVkIHZpZXdwb3J0U2VydmljZSA9IGluamVjdChWaWV3cG9ydFNlcnZpY2UpXG4gIHByb3RlY3RlZCBpbmplY3RvciA9IGluamVjdChJbmplY3RvcilcblxuICAvKipcbiAgICogVGhlIGNvcm5lciBvZiB0aGUgZmxvdyB3aGVyZSB0byByZW5kZXIgYSBtaW5pLW1hcFxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBwb3NpdGlvbih2YWx1ZTogTWluaU1hcFBvc2l0aW9uKSB7XG4gICAgdGhpcy5taW5pbWFwUG9zaXRpb24uc2V0KHZhbHVlKVxuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBjb2xvciBvdXRzaWRlIHRoZSB2aWV3cG9ydCAoaW52aXNpYmxlIGFyZWEpXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgbWFza0NvbG9yID0gYHJnYmEoMjE1LCAyMTUsIDIxNSwgMC42KWBcblxuICAvKipcbiAgICogVGhlIG1pbmltYXAgc3Ryb2tlIGNvbG9yXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc3Ryb2tlQ29sb3IgPSBgcmdiKDIwMCwgMjAwLCAyMDApYFxuXG4gIC8qKlxuICAgKiBNYWtlIGEgbWluaW1hcCBiaWdnZXIgb24gaG92ZXJcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgc2NhbGVPbkhvdmVyKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5zY2FsZU9uSG92ZXJTaWduYWwuc2V0KHZhbHVlKVxuICB9XG5cbiAgQFZpZXdDaGlsZCgnbWluaW1hcCcsIHsgc3RhdGljOiB0cnVlIH0pXG4gIHByaXZhdGUgbWluaW1hcCE6IFRlbXBsYXRlUmVmPHVua25vd24+XG5cbiAgcHJpdmF0ZSByZWFkb25seSBtaW5pbWFwT2Zmc2V0ID0gMTBcblxuICBwcml2YXRlIHJlYWRvbmx5IG1pbmltYXBTY2FsZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAodGhpcy5zY2FsZU9uSG92ZXJTaWduYWwoKSkge1xuICAgICAgcmV0dXJuIHRoaXMuaG92ZXJlZCgpID8gMC40IDogMC4yXG4gICAgfVxuXG4gICAgcmV0dXJuIDAuMlxuICB9KVxuXG4gIHByb3RlY3RlZCB2aWV3cG9ydENvbG9yID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5mbG93U2V0dGluZ3NTZXJ2aWNlLmJhY2tncm91bmQoKS5jb2xvciA/PyAnI2ZmZicpXG5cbiAgcHJvdGVjdGVkIGhvdmVyZWQgPSBzaWduYWwoZmFsc2UpXG5cbiAgcHJvdGVjdGVkIG1pbmltYXBQb2ludCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBzd2l0Y2ggKHRoaXMubWluaW1hcFBvc2l0aW9uKCkpIHtcbiAgICAgIGNhc2UgJ3RvcC1sZWZ0JzpcbiAgICAgICAgcmV0dXJuIHsgeDogdGhpcy5taW5pbWFwT2Zmc2V0LCB5OiB0aGlzLm1pbmltYXBPZmZzZXQgfVxuICAgICAgY2FzZSAndG9wLXJpZ2h0JzpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB4OiB0aGlzLmZsb3dTZXR0aW5nc1NlcnZpY2UuY29tcHV0ZWRGbG93V2lkdGgoKSAtIHRoaXMubWluaW1hcFdpZHRoKCkgLSB0aGlzLm1pbmltYXBPZmZzZXQsXG4gICAgICAgICAgeTogdGhpcy5taW5pbWFwT2Zmc2V0XG4gICAgICAgIH1cbiAgICAgIGNhc2UgJ2JvdHRvbS1sZWZ0JzpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB4OiB0aGlzLm1pbmltYXBPZmZzZXQsXG4gICAgICAgICAgeTogdGhpcy5mbG93U2V0dGluZ3NTZXJ2aWNlLmNvbXB1dGVkRmxvd0hlaWdodCgpIC0gdGhpcy5taW5pbWFwSGVpZ2h0KCkgLSB0aGlzLm1pbmltYXBPZmZzZXRcbiAgICAgICAgfVxuICAgICAgY2FzZSAnYm90dG9tLXJpZ2h0JzpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB4OiB0aGlzLmZsb3dTZXR0aW5nc1NlcnZpY2UuY29tcHV0ZWRGbG93V2lkdGgoKSAtIHRoaXMubWluaW1hcFdpZHRoKCkgLSB0aGlzLm1pbmltYXBPZmZzZXQsXG4gICAgICAgICAgeTogdGhpcy5mbG93U2V0dGluZ3NTZXJ2aWNlLmNvbXB1dGVkRmxvd0hlaWdodCgpIC0gdGhpcy5taW5pbWFwSGVpZ2h0KCkgLSB0aGlzLm1pbmltYXBPZmZzZXRcbiAgICAgICAgfVxuICAgIH1cbiAgfSlcblxuICBwcm90ZWN0ZWQgbWluaW1hcFdpZHRoID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLmZsb3dTZXR0aW5nc1NlcnZpY2UuY29tcHV0ZWRGbG93V2lkdGgoKSAqIHRoaXMubWluaW1hcFNjYWxlKClcbiAgKVxuICBwcm90ZWN0ZWQgbWluaW1hcEhlaWdodCA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy5mbG93U2V0dGluZ3NTZXJ2aWNlLmNvbXB1dGVkRmxvd0hlaWdodCgpICogdGhpcy5taW5pbWFwU2NhbGUoKVxuICApXG5cbiAgcHJvdGVjdGVkIHZpZXdwb3J0VHJhbnNmb3JtID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHZpZXdwb3J0ID0gdGhpcy52aWV3cG9ydFNlcnZpY2UucmVhZGFibGVWaWV3cG9ydCgpO1xuICAgIGxldCBzY2FsZSA9IDEgLyB2aWV3cG9ydC56b29tXG5cbiAgICBsZXQgeCA9IC0odmlld3BvcnQueCAqIHRoaXMubWluaW1hcFNjYWxlKCkpICogc2NhbGVcbiAgICB4IC89IHRoaXMubWluaW1hcFNjYWxlKClcblxuICAgIGxldCB5ID0gLSh2aWV3cG9ydC55ICogdGhpcy5taW5pbWFwU2NhbGUoKSkgKiBzY2FsZVxuICAgIHkgLz0gdGhpcy5taW5pbWFwU2NhbGUoKVxuXG4gICAgc2NhbGUgLz0gdGhpcy5taW5pbWFwU2NhbGUoKVxuXG4gICAgcmV0dXJuIGB0cmFuc2xhdGUoJHt4fSwgJHt5fSkgc2NhbGUoJHtzY2FsZX0pYDtcbiAgfSk7XG5cblxuICBwcm90ZWN0ZWQgYm91bmRzVmlld3BvcnQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3Qgbm9kZXMgPSB0aGlzLmVudGl0aWVzU2VydmljZS5ub2RlcygpXG5cbiAgICByZXR1cm4gZ2V0Vmlld3BvcnRGb3JCb3VuZHMoXG4gICAgICBnZXROb2Rlc0JvdW5kcyhub2RlcyksXG4gICAgICB0aGlzLmZsb3dTZXR0aW5nc1NlcnZpY2UuY29tcHV0ZWRGbG93V2lkdGgoKSxcbiAgICAgIHRoaXMuZmxvd1NldHRpbmdzU2VydmljZS5jb21wdXRlZEZsb3dIZWlnaHQoKSxcbiAgICAgIC1JbmZpbml0eSxcbiAgICAgIDEuNSxcbiAgICAgIDBcbiAgICApXG5cbiAgfSlcblxuICBwcm90ZWN0ZWQgbWluaW1hcFRyYW5zZm9ybSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCB2cG9ydCA9IHRoaXMuYm91bmRzVmlld3BvcnQoKVxuXG4gICAgY29uc3QgeCA9IHZwb3J0LnggKiB0aGlzLm1pbmltYXBTY2FsZSgpXG4gICAgY29uc3QgeSA9IHZwb3J0LnkgKiB0aGlzLm1pbmltYXBTY2FsZSgpXG4gICAgY29uc3Qgc2NhbGUgPSB2cG9ydC56b29tICogdGhpcy5taW5pbWFwU2NhbGUoKVxuXG4gICAgcmV0dXJuIGB0cmFuc2xhdGUoJHt4fSAke3l9KSBzY2FsZSgke3NjYWxlfSlgXG4gIH0pXG5cbiAgcHJpdmF0ZSBtaW5pbWFwUG9zaXRpb24gPSBzaWduYWw8TWluaU1hcFBvc2l0aW9uPignYm90dG9tLXJpZ2h0JylcblxuICBwcml2YXRlIHNjYWxlT25Ib3ZlclNpZ25hbCA9IHNpZ25hbChmYWxzZSlcblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgY29uc3QgbW9kZWwgPSBuZXcgTWluaW1hcE1vZGVsKClcbiAgICBtb2RlbC50ZW1wbGF0ZS5zZXQodGhpcy5taW5pbWFwKVxuXG4gICAgdGhpcy5lbnRpdGllc1NlcnZpY2UubWluaW1hcC5zZXQobW9kZWwpXG4gIH1cblxuICBwcm90ZWN0ZWQgdHJhY2tOb2RlcyhpZHg6IG51bWJlciwgeyBub2RlIH06IE5vZGVNb2RlbCkge1xuICAgIHJldHVybiBub2RlXG4gIH1cbn1cbiIsIjxuZy10ZW1wbGF0ZSAjbWluaW1hcD5cbiAgPHN2ZzpyZWN0XG4gICAgW2F0dHIueF09XCJtaW5pbWFwUG9pbnQoKS54XCJcbiAgICBbYXR0ci55XT1cIm1pbmltYXBQb2ludCgpLnlcIlxuICAgIFthdHRyLndpZHRoXT1cIm1pbmltYXBXaWR0aCgpXCJcbiAgICBbYXR0ci5oZWlnaHRdPVwibWluaW1hcEhlaWdodCgpXCJcbiAgICBbYXR0ci5zdHJva2VdPVwic3Ryb2tlQ29sb3JcIlxuICAgIGZpbGw9XCJub25lXCJcbiAgLz5cblxuICA8c3ZnOnN2Z1xuICAgIFthdHRyLnhdPVwibWluaW1hcFBvaW50KCkueFwiXG4gICAgW2F0dHIueV09XCJtaW5pbWFwUG9pbnQoKS55XCJcbiAgICBbYXR0ci53aWR0aF09XCJtaW5pbWFwV2lkdGgoKVwiXG4gICAgW2F0dHIuaGVpZ2h0XT1cIm1pbmltYXBIZWlnaHQoKVwiXG4gICAgKG1vdXNlb3Zlcik9XCJob3ZlcmVkLnNldCh0cnVlKVwiXG4gICAgKG1vdXNlbGVhdmUpPVwiaG92ZXJlZC5zZXQoZmFsc2UpXCJcbiAgPlxuICAgIDxzdmc6cmVjdFxuICAgICAgW2F0dHIud2lkdGhdPVwibWluaW1hcFdpZHRoKClcIlxuICAgICAgW2F0dHIuaGVpZ2h0XT1cIm1pbmltYXBIZWlnaHQoKVwiXG4gICAgICBbYXR0ci5maWxsXT1cIm1hc2tDb2xvclwiXG4gICAgLz5cblxuICAgIDxzdmc6ZyBbYXR0ci50cmFuc2Zvcm1dPVwibWluaW1hcFRyYW5zZm9ybSgpXCI+XG4gICAgICA8c3ZnOnJlY3RcbiAgICAgICAgW2F0dHIuZmlsbF09XCJ2aWV3cG9ydENvbG9yKClcIlxuICAgICAgICBbYXR0ci50cmFuc2Zvcm1dPVwidmlld3BvcnRUcmFuc2Zvcm0oKVwiXG4gICAgICAgIFthdHRyLndpZHRoXT1cIm1pbmltYXBXaWR0aCgpXCJcbiAgICAgICAgW2F0dHIuaGVpZ2h0XT1cIm1pbmltYXBIZWlnaHQoKVwiXG4gICAgICAvPlxuXG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ0Zvcj1cImxldCBtb2RlbCBvZiBlbnRpdGllc1NlcnZpY2Uubm9kZXMoKTsgdHJhY2tCeTogdHJhY2tOb2Rlc1wiXG4gICAgICA+XG4gICAgICAgIDxzdmc6Zm9yZWlnbk9iamVjdFxuICAgICAgICAgICpuZ0lmPVwibW9kZWwubm9kZS50eXBlID09PSAnZGVmYXVsdCcgfHwgbW9kZWwubm9kZS50eXBlID09PSAnaHRtbC10ZW1wbGF0ZScgfHwgbW9kZWwuaXNDb21wb25lbnRUeXBlXCJcbiAgICAgICAgICBbYXR0ci50cmFuc2Zvcm1dPVwibW9kZWwucG9pbnRUcmFuc2Zvcm0oKVwiXG4gICAgICAgICAgW2F0dHIud2lkdGhdPVwibW9kZWwuc2l6ZSgpLndpZHRoXCJcbiAgICAgICAgICBbYXR0ci5oZWlnaHRdPVwibW9kZWwuc2l6ZSgpLmhlaWdodFwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGVmYXVsdC1ub2RlXG4gICAgICAgICAgICBbc2VsZWN0ZWRdPVwibW9kZWwuc2VsZWN0ZWQoKVwiXG4gICAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwibW9kZWwuc2l6ZSgpLndpZHRoXCJcbiAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwibW9kZWwuc2l6ZSgpLmhlaWdodFwiXG4gICAgICAgICAgICBbc3R5bGUubWF4LXdpZHRoLnB4XT1cIm1vZGVsLnNpemUoKS53aWR0aFwiXG4gICAgICAgICAgICBbc3R5bGUubWF4LWhlaWdodC5weF09XCJtb2RlbC5zaXplKCkuaGVpZ2h0XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IFtvdXRlckhUTUxdPVwibW9kZWwudGV4dCgpXCI+PC9kaXY+XG4gICAgICAgICAgPC9kZWZhdWx0LW5vZGU+XG4gICAgICAgIDwvc3ZnOmZvcmVpZ25PYmplY3Q+XG5cbiAgICAgICAgPHN2ZzpyZWN0XG4gICAgICAgICAgKm5nSWY9XCJtb2RlbC5ub2RlLnR5cGUgPT09ICdkZWZhdWx0LWdyb3VwJyB8fCBtb2RlbC5ub2RlLnR5cGUgPT09ICd0ZW1wbGF0ZS1ncm91cCdcIlxuICAgICAgICAgIGNsYXNzPVwiZGVmYXVsdC1ncm91cC1ub2RlXCJcbiAgICAgICAgICByeD1cIjVcIlxuICAgICAgICAgIHJ5PVwiNVwiXG4gICAgICAgICAgW2F0dHIudHJhbnNmb3JtXT1cIm1vZGVsLnBvaW50VHJhbnNmb3JtKClcIlxuICAgICAgICAgIFtjbGFzcy5kZWZhdWx0LWdyb3VwLW5vZGVfc2VsZWN0ZWRdPVwibW9kZWwuc2VsZWN0ZWQoKVwiXG4gICAgICAgICAgW2F0dHIud2lkdGhdPVwibW9kZWwuc2l6ZSgpLndpZHRoXCJcbiAgICAgICAgICBbYXR0ci5oZWlnaHRdPVwibW9kZWwuc2l6ZSgpLmhlaWdodFwiXG4gICAgICAgICAgW3N0eWxlLnN0cm9rZV09XCJtb2RlbC5jb2xvcigpXCJcbiAgICAgICAgICBbc3R5bGUuZmlsbF09XCJtb2RlbC5jb2xvcigpXCJcbiAgICAgICAgLz5cblxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9zdmc6Zz5cbiAgPC9zdmc6c3ZnPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
114
|
+
args: [{ standalone: true, selector: 'mini-map', imports: [DefaultNodeComponent], template: "<ng-template #minimap>\n <svg:rect\n [attr.x]=\"minimapPoint().x\"\n [attr.y]=\"minimapPoint().y\"\n [attr.width]=\"minimapWidth()\"\n [attr.height]=\"minimapHeight()\"\n [attr.stroke]=\"strokeColor()\"\n fill=\"none\"\n />\n\n <svg:svg\n [attr.x]=\"minimapPoint().x\"\n [attr.y]=\"minimapPoint().y\"\n [attr.width]=\"minimapWidth()\"\n [attr.height]=\"minimapHeight()\"\n (mouseover)=\"hovered.set(true)\"\n (mouseleave)=\"hovered.set(false)\"\n >\n <svg:rect\n [attr.width]=\"minimapWidth()\"\n [attr.height]=\"minimapHeight()\"\n [attr.fill]=\"maskColor()\"\n />\n\n <svg:g [attr.transform]=\"minimapTransform()\">\n <svg:rect\n [attr.fill]=\"viewportColor()\"\n [attr.transform]=\"viewportTransform()\"\n [attr.width]=\"minimapWidth()\"\n [attr.height]=\"minimapHeight()\"\n />\n\n @for (model of entitiesService.nodes(); track trackNodes($index, model)) {\n <ng-container>\n @if (\n model.node.type === \"default\" ||\n model.node.type === \"html-template\" ||\n model.isComponentType\n ) {\n <svg:foreignObject\n [attr.transform]=\"model.pointTransform()\"\n [attr.width]=\"model.size().width\"\n [attr.height]=\"model.size().height\"\n >\n <default-node\n [selected]=\"model.selected()\"\n [style.width.px]=\"model.size().width\"\n [style.height.px]=\"model.size().height\"\n [style.max-width.px]=\"model.size().width\"\n [style.max-height.px]=\"model.size().height\"\n >\n <div [outerHTML]=\"model.text()\"></div>\n </default-node>\n </svg:foreignObject>\n }\n @if (\n model.node.type === \"default-group\" ||\n model.node.type === \"template-group\"\n ) {\n <svg:rect\n class=\"default-group-node\"\n rx=\"5\"\n ry=\"5\"\n [attr.transform]=\"model.pointTransform()\"\n [class.default-group-node_selected]=\"model.selected()\"\n [attr.width]=\"model.size().width\"\n [attr.height]=\"model.size().height\"\n [style.stroke]=\"model.color()\"\n [style.fill]=\"model.color()\"\n />\n }\n </ng-container>\n }\n </svg:g>\n </svg:svg>\n</ng-template>\n", styles: [".default-group-node{stroke-width:1.5px;fill-opacity:.05}.default-group-node_selected{stroke-width:2px}\n"] }]
|
|
115
|
+
}] });
|
|
116
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWluaW1hcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3NyYy9saWIvdmZsb3cvcHVibGljLWNvbXBvbmVudHMvbWluaW1hcC9taW5pbWFwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy9wdWJsaWMtY29tcG9uZW50cy9taW5pbWFwL21pbmltYXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFFBQVEsRUFHUixNQUFNLEVBRU4sS0FBSyxFQUNMLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFMUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDM0UsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxzREFBc0QsQ0FBQzs7QUFlNUYsTUFBTSxPQUFPLGdCQUFnQjtJQVA3QjtRQVFZLG9CQUFlLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDOUMsd0JBQW1CLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDbEQsb0JBQWUsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDMUMsYUFBUSxHQUFHLE1BQU0s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QUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUVwQyxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN4QyxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN4QyxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUUvQyxPQUFPLGFBQWEsQ0FBQyxJQUFJLENBQUMsV0FBVyxLQUFLLEdBQUcsQ0FBQztRQUNoRCxDQUFDLENBQUMsQ0FBQztLQVlKO0lBVlEsUUFBUTtRQUNiLE1BQU0sS0FBSyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDakMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFFbkMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFUyxVQUFVLENBQUMsR0FBVyxFQUFFLEVBQUUsSUFBSSxFQUFhO1FBQ25ELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQzsrR0ExSVUsZ0JBQWdCO21HQUFoQixnQkFBZ0IsZ3VCQ2xDN0IscytFQTRFQSxrS0Q1Q1ksb0JBQW9COzs0RkFFbkIsZ0JBQWdCO2tCQVA1QixTQUFTO2lDQUNJLElBQUksWUFDTixVQUFVLFdBR1gsQ0FBQyxvQkFBb0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgY29tcHV0ZWQsXG4gIGluamVjdCxcbiAgSW5qZWN0b3IsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIHNpZ25hbCxcbiAgVGVtcGxhdGVSZWYsXG4gIGlucHV0LFxuICB2aWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmxvd0VudGl0aWVzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Zsb3ctZW50aXRpZXMuc2VydmljZSc7XG5pbXBvcnQgeyBNaW5pbWFwTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvbWluaW1hcC5tb2RlbCc7XG5pbXBvcnQgeyBOb2RlTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvbm9kZS5tb2RlbCc7XG5pbXBvcnQgeyBGbG93U2V0dGluZ3NTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZmxvdy1zZXR0aW5ncy5zZXJ2aWNlJztcbmltcG9ydCB7IGdldFZpZXdwb3J0Rm9yQm91bmRzIH0gZnJvbSAnLi4vLi4vdXRpbHMvdmlld3BvcnQnO1xuaW1wb3J0IHsgZ2V0Tm9kZXNCb3VuZHMgfSBmcm9tICcuLi8uLi91dGlscy9ub2Rlcyc7XG5pbXBvcnQgeyBWaWV3cG9ydFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy92aWV3cG9ydC5zZXJ2aWNlJztcbmltcG9ydCB7IERlZmF1bHROb2RlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9kZWZhdWx0LW5vZGUvZGVmYXVsdC1ub2RlLmNvbXBvbmVudCc7XG5cbmV4cG9ydCB0eXBlIE1pbmlNYXBQb3NpdGlvbiA9XG4gIHwgJ3RvcC1sZWZ0J1xuICB8ICd0b3AtcmlnaHQnXG4gIHwgJ2JvdHRvbS1sZWZ0J1xuICB8ICdib3R0b20tcmlnaHQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICdtaW5pLW1hcCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9taW5pbWFwLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbYC4vbWluaW1hcC5jb21wb25lbnQuc2Nzc2BdLFxuICBpbXBvcnRzOiBbRGVmYXVsdE5vZGVDb21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBNaW5pTWFwQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHJvdGVjdGVkIGVudGl0aWVzU2VydmljZSA9IGluamVjdChGbG93RW50aXRpZXNTZXJ2aWNlKTtcbiAgcHJvdGVjdGVkIGZsb3dTZXR0aW5nc1NlcnZpY2UgPSBpbmplY3QoRmxvd1NldHRpbmdzU2VydmljZSk7XG4gIHByb3RlY3RlZCB2aWV3cG9ydFNlcnZpY2UgPSBpbmplY3QoVmlld3BvcnRTZXJ2aWNlKTtcbiAgcHJvdGVjdGVkIGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcblxuICAvKipcbiAgICogVGhlIGNvbG9yIG91dHNpZGUgdGhlIHZpZXdwb3J0IChpbnZpc2libGUgYXJlYSlcbiAgICovXG4gIHB1YmxpYyBtYXNrQ29sb3IgPSBpbnB1dChgcmdiYSgyMTUsIDIxNSwgMjE1LCAwLjYpYCk7XG5cbiAgLyoqXG4gICAqIFRoZSBtaW5pbWFwIHN0cm9rZSBjb2xvclxuICAgKi9cbiAgcHVibGljIHN0cm9rZUNvbG9yID0gaW5wdXQoYHJnYigyMDAsIDIwMCwgMjAwKWApO1xuXG4gIC8qKlxuICAgKiBUaGUgY29ybmVyIG9mIHRoZSBmbG93IHdoZXJlIHRvIHJlbmRlciBhIG1pbmktbWFwXG4gICAqL1xuICBwdWJsaWMgcG9zaXRpb24gPSBpbnB1dDxNaW5pTWFwUG9zaXRpb24+KCdib3R0b20tcmlnaHQnKTtcblxuICAvKipcbiAgICogTWFrZSBhIG1pbmltYXAgYmlnZ2VyIG9uIGhvdmVyXG4gICAqL1xuICBwdWJsaWMgc2NhbGVPbkhvdmVyID0gaW5wdXQoZmFsc2UpO1xuXG4gIHByaXZhdGUgbWluaW1hcCA9IHZpZXdDaGlsZC5yZXF1aXJlZDxUZW1wbGF0ZVJlZjx1bmtub3duPj4oJ21pbmltYXAnKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IG1pbmltYXBPZmZzZXQgPSAxMDtcblxuICBwcml2YXRlIHJlYWRvbmx5IG1pbmltYXBTY2FsZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAodGhpcy5zY2FsZU9uSG92ZXIoKSkge1xuICAgICAgcmV0dXJuIHRoaXMuaG92ZXJlZCgpID8gMC40IDogMC4yO1xuICAgIH1cblxuICAgIHJldHVybiAwLjI7XG4gIH0pO1xuXG4gIHByb3RlY3RlZCB2aWV3cG9ydENvbG9yID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGJnID0gdGhpcy5mbG93U2V0dGluZ3NTZXJ2aWNlLmJhY2tncm91bmQoKTtcblxuICAgIGlmIChiZy50eXBlID09PSAnZG90cycgfHwgYmcudHlwZSA9PT0gJ3NvbGlkJykge1xuICAgICAgcmV0dXJuIGJnLmNvbG9yID8/ICcjZmZmJztcbiAgICB9XG5cbiAgICByZXR1cm4gJyNmZmYnO1xuICB9KTtcblxuICBwcm90ZWN0ZWQgaG92ZXJlZCA9IHNpZ25hbChmYWxzZSk7XG5cbiAgcHJvdGVjdGVkIG1pbmltYXBQb2ludCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBzd2l0Y2ggKHRoaXMucG9zaXRpb24oKSkge1xuICAgICAgY2FzZSAndG9wLWxlZnQnOlxuICAgICAgICByZXR1cm4geyB4OiB0aGlzLm1pbmltYXBPZmZzZXQsIHk6IHRoaXMubWluaW1hcE9mZnNldCB9O1xuICAgICAgY2FzZSAndG9wLXJpZ2h0JzpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB4OlxuICAgICAgICAgICAgdGhpcy5mbG93U2V0dGluZ3NTZXJ2aWNlLmNvbXB1dGVkRmxvd1dpZHRoKCkgLVxuICAgICAgICAgICAgdGhpcy5taW5pbWFwV2lkdGgoKSAtXG4gICAgICAgICAgICB0aGlzLm1pbmltYXBPZmZzZXQsXG4gICAgICAgICAgeTogdGhpcy5taW5pbWFwT2Zmc2V0LFxuICAgICAgICB9O1xuICAgICAgY2FzZSAnYm90dG9tLWxlZnQnOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHg6IHRoaXMubWluaW1hcE9mZnNldCxcbiAgICAgICAgICB5OlxuICAgICAgICAgICAgdGhpcy5mbG93U2V0dGluZ3NTZXJ2aWNlLmNvbXB1dGVkRmxvd0hlaWdodCgpIC1cbiAgICAgICAgICAgIHRoaXMubWluaW1hcEhlaWdodCgpIC1cbiAgICAgICAgICAgIHRoaXMubWluaW1hcE9mZnNldCxcbiAgICAgICAgfTtcbiAgICAgIGNhc2UgJ2JvdHRvbS1yaWdodCc6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgeDpcbiAgICAgICAgICAgIHRoaXMuZmxvd1NldHRpbmdzU2VydmljZS5jb21wdXRlZEZsb3dXaWR0aCgpIC1cbiAgICAgICAgICAgIHRoaXMubWluaW1hcFdpZHRoKCkgLVxuICAgICAgICAgICAgdGhpcy5taW5pbWFwT2Zmc2V0LFxuICAgICAgICAgIHk6XG4gICAgICAgICAgICB0aGlzLmZsb3dTZXR0aW5nc1NlcnZpY2UuY29tcHV0ZWRGbG93SGVpZ2h0KCkgLVxuICAgICAgICAgICAgdGhpcy5taW5pbWFwSGVpZ2h0KCkgLVxuICAgICAgICAgICAgdGhpcy5taW5pbWFwT2Zmc2V0LFxuICAgICAgICB9O1xuICAgIH1cbiAgfSk7XG5cbiAgcHJvdGVjdGVkIG1pbmltYXBXaWR0aCA9IGNvbXB1dGVkKFxuICAgICgpID0+IHRoaXMuZmxvd1NldHRpbmdzU2VydmljZS5jb21wdXRlZEZsb3dXaWR0aCgpICogdGhpcy5taW5pbWFwU2NhbGUoKSxcbiAgKTtcbiAgcHJvdGVjdGVkIG1pbmltYXBIZWlnaHQgPSBjb21wdXRlZChcbiAgICAoKSA9PiB0aGlzLmZsb3dTZXR0aW5nc1NlcnZpY2UuY29tcHV0ZWRGbG93SGVpZ2h0KCkgKiB0aGlzLm1pbmltYXBTY2FsZSgpLFxuICApO1xuXG4gIHByb3RlY3RlZCB2aWV3cG9ydFRyYW5zZm9ybSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCB2aWV3cG9ydCA9IHRoaXMudmlld3BvcnRTZXJ2aWNlLnJlYWRhYmxlVmlld3BvcnQoKTtcbiAgICBsZXQgc2NhbGUgPSAxIC8gdmlld3BvcnQuem9vbTtcblxuICAgIGxldCB4ID0gLSh2aWV3cG9ydC54ICogdGhpcy5taW5pbWFwU2NhbGUoKSkgKiBzY2FsZTtcbiAgICB4IC89IHRoaXMubWluaW1hcFNjYWxlKCk7XG5cbiAgICBsZXQgeSA9IC0odmlld3BvcnQueSAqIHRoaXMubWluaW1hcFNjYWxlKCkpICogc2NhbGU7XG4gICAgeSAvPSB0aGlzLm1pbmltYXBTY2FsZSgpO1xuXG4gICAgc2NhbGUgLz0gdGhpcy5taW5pbWFwU2NhbGUoKTtcblxuICAgIHJldHVybiBgdHJhbnNsYXRlKCR7eH0sICR7eX0pIHNjYWxlKCR7c2NhbGV9KWA7XG4gIH0pO1xuXG4gIHByb3RlY3RlZCBib3VuZHNWaWV3cG9ydCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBub2RlcyA9IHRoaXMuZW50aXRpZXNTZXJ2aWNlLm5vZGVzKCk7XG5cbiAgICByZXR1cm4gZ2V0Vmlld3BvcnRGb3JCb3VuZHMoXG4gICAgICBnZXROb2Rlc0JvdW5kcyhub2RlcyksXG4gICAgICB0aGlzLmZsb3dTZXR0aW5nc1NlcnZpY2UuY29tcHV0ZWRGbG93V2lkdGgoKSxcbiAgICAgIHRoaXMuZmxvd1NldHRpbmdzU2VydmljZS5jb21wdXRlZEZsb3dIZWlnaHQoKSxcbiAgICAgIC1JbmZpbml0eSxcbiAgICAgIDEuNSxcbiAgICAgIDAsXG4gICAgKTtcbiAgfSk7XG5cbiAgcHJvdGVjdGVkIG1pbmltYXBUcmFuc2Zvcm0gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgdnBvcnQgPSB0aGlzLmJvdW5kc1ZpZXdwb3J0KCk7XG5cbiAgICBjb25zdCB4ID0gdnBvcnQueCAqIHRoaXMubWluaW1hcFNjYWxlKCk7XG4gICAgY29uc3QgeSA9IHZwb3J0LnkgKiB0aGlzLm1pbmltYXBTY2FsZSgpO1xuICAgIGNvbnN0IHNjYWxlID0gdnBvcnQuem9vbSAqIHRoaXMubWluaW1hcFNjYWxlKCk7XG5cbiAgICByZXR1cm4gYHRyYW5zbGF0ZSgke3h9ICR7eX0pIHNjYWxlKCR7c2NhbGV9KWA7XG4gIH0pO1xuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCBtb2RlbCA9IG5ldyBNaW5pbWFwTW9kZWwoKTtcbiAgICBtb2RlbC50ZW1wbGF0ZS5zZXQodGhpcy5taW5pbWFwKCkpO1xuXG4gICAgdGhpcy5lbnRpdGllc1NlcnZpY2UubWluaW1hcC5zZXQobW9kZWwpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHRyYWNrTm9kZXMoaWR4OiBudW1iZXIsIHsgbm9kZSB9OiBOb2RlTW9kZWwpIHtcbiAgICByZXR1cm4gbm9kZTtcbiAgfVxufVxuIiwiPG5nLXRlbXBsYXRlICNtaW5pbWFwPlxuICA8c3ZnOnJlY3RcbiAgICBbYXR0ci54XT1cIm1pbmltYXBQb2ludCgpLnhcIlxuICAgIFthdHRyLnldPVwibWluaW1hcFBvaW50KCkueVwiXG4gICAgW2F0dHIud2lkdGhdPVwibWluaW1hcFdpZHRoKClcIlxuICAgIFthdHRyLmhlaWdodF09XCJtaW5pbWFwSGVpZ2h0KClcIlxuICAgIFthdHRyLnN0cm9rZV09XCJzdHJva2VDb2xvcigpXCJcbiAgICBmaWxsPVwibm9uZVwiXG4gIC8+XG5cbiAgPHN2ZzpzdmdcbiAgICBbYXR0ci54XT1cIm1pbmltYXBQb2ludCgpLnhcIlxuICAgIFthdHRyLnldPVwibWluaW1hcFBvaW50KCkueVwiXG4gICAgW2F0dHIud2lkdGhdPVwibWluaW1hcFdpZHRoKClcIlxuICAgIFthdHRyLmhlaWdodF09XCJtaW5pbWFwSGVpZ2h0KClcIlxuICAgIChtb3VzZW92ZXIpPVwiaG92ZXJlZC5zZXQodHJ1ZSlcIlxuICAgIChtb3VzZWxlYXZlKT1cImhvdmVyZWQuc2V0KGZhbHNlKVwiXG4gID5cbiAgICA8c3ZnOnJlY3RcbiAgICAgIFthdHRyLndpZHRoXT1cIm1pbmltYXBXaWR0aCgpXCJcbiAgICAgIFthdHRyLmhlaWdodF09XCJtaW5pbWFwSGVpZ2h0KClcIlxuICAgICAgW2F0dHIuZmlsbF09XCJtYXNrQ29sb3IoKVwiXG4gICAgLz5cblxuICAgIDxzdmc6ZyBbYXR0ci50cmFuc2Zvcm1dPVwibWluaW1hcFRyYW5zZm9ybSgpXCI+XG4gICAgICA8c3ZnOnJlY3RcbiAgICAgICAgW2F0dHIuZmlsbF09XCJ2aWV3cG9ydENvbG9yKClcIlxuICAgICAgICBbYXR0ci50cmFuc2Zvcm1dPVwidmlld3BvcnRUcmFuc2Zvcm0oKVwiXG4gICAgICAgIFthdHRyLndpZHRoXT1cIm1pbmltYXBXaWR0aCgpXCJcbiAgICAgICAgW2F0dHIuaGVpZ2h0XT1cIm1pbmltYXBIZWlnaHQoKVwiXG4gICAgICAvPlxuXG4gICAgICBAZm9yIChtb2RlbCBvZiBlbnRpdGllc1NlcnZpY2Uubm9kZXMoKTsgdHJhY2sgdHJhY2tOb2RlcygkaW5kZXgsIG1vZGVsKSkge1xuICAgICAgICA8bmctY29udGFpbmVyPlxuICAgICAgICAgIEBpZiAoXG4gICAgICAgICAgICBtb2RlbC5ub2RlLnR5cGUgPT09IFwiZGVmYXVsdFwiIHx8XG4gICAgICAgICAgICBtb2RlbC5ub2RlLnR5cGUgPT09IFwiaHRtbC10ZW1wbGF0ZVwiIHx8XG4gICAgICAgICAgICBtb2RlbC5pc0NvbXBvbmVudFR5cGVcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIDxzdmc6Zm9yZWlnbk9iamVjdFxuICAgICAgICAgICAgICBbYXR0ci50cmFuc2Zvcm1dPVwibW9kZWwucG9pbnRUcmFuc2Zvcm0oKVwiXG4gICAgICAgICAgICAgIFthdHRyLndpZHRoXT1cIm1vZGVsLnNpemUoKS53aWR0aFwiXG4gICAgICAgICAgICAgIFthdHRyLmhlaWdodF09XCJtb2RlbC5zaXplKCkuaGVpZ2h0XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRlZmF1bHQtbm9kZVxuICAgICAgICAgICAgICAgIFtzZWxlY3RlZF09XCJtb2RlbC5zZWxlY3RlZCgpXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwibW9kZWwuc2l6ZSgpLndpZHRoXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIm1vZGVsLnNpemUoKS5oZWlnaHRcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5tYXgtd2lkdGgucHhdPVwibW9kZWwuc2l6ZSgpLndpZHRoXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUubWF4LWhlaWdodC5weF09XCJtb2RlbC5zaXplKCkuaGVpZ2h0XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXYgW291dGVySFRNTF09XCJtb2RlbC50ZXh0KClcIj48L2Rpdj5cbiAgICAgICAgICAgICAgPC9kZWZhdWx0LW5vZGU+XG4gICAgICAgICAgICA8L3N2Zzpmb3JlaWduT2JqZWN0PlxuICAgICAgICAgIH1cbiAgICAgICAgICBAaWYgKFxuICAgICAgICAgICAgbW9kZWwubm9kZS50eXBlID09PSBcImRlZmF1bHQtZ3JvdXBcIiB8fFxuICAgICAgICAgICAgbW9kZWwubm9kZS50eXBlID09PSBcInRlbXBsYXRlLWdyb3VwXCJcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIDxzdmc6cmVjdFxuICAgICAgICAgICAgICBjbGFzcz1cImRlZmF1bHQtZ3JvdXAtbm9kZVwiXG4gICAgICAgICAgICAgIHJ4PVwiNVwiXG4gICAgICAgICAgICAgIHJ5PVwiNVwiXG4gICAgICAgICAgICAgIFthdHRyLnRyYW5zZm9ybV09XCJtb2RlbC5wb2ludFRyYW5zZm9ybSgpXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmRlZmF1bHQtZ3JvdXAtbm9kZV9zZWxlY3RlZF09XCJtb2RlbC5zZWxlY3RlZCgpXCJcbiAgICAgICAgICAgICAgW2F0dHIud2lkdGhdPVwibW9kZWwuc2l6ZSgpLndpZHRoXCJcbiAgICAgICAgICAgICAgW2F0dHIuaGVpZ2h0XT1cIm1vZGVsLnNpemUoKS5oZWlnaHRcIlxuICAgICAgICAgICAgICBbc3R5bGUuc3Ryb2tlXT1cIm1vZGVsLmNvbG9yKClcIlxuICAgICAgICAgICAgICBbc3R5bGUuZmlsbF09XCJtb2RlbC5jb2xvcigpXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgfVxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIH1cbiAgICA8L3N2ZzpnPlxuICA8L3N2Zzpzdmc+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, ElementRef, inject,
|
|
1
|
+
import { ChangeDetectionStrategy, Component, ElementRef, inject, input, viewChild, effect, forwardRef } from '@angular/core';
|
|
2
2
|
import { Directive } from '@angular/core';
|
|
3
3
|
import { ToolbarModel } from '../../models/toolbar.model';
|
|
4
4
|
import { OverlaysService } from '../../services/overlays.service';
|
|
@@ -8,59 +8,56 @@ export class NodeToolbarComponent {
|
|
|
8
8
|
constructor() {
|
|
9
9
|
this.overlaysService = inject(OverlaysService);
|
|
10
10
|
this.nodeService = inject(NodeAccessorService);
|
|
11
|
+
this.position = input('top');
|
|
12
|
+
this.toolbarContentTemplate = viewChild.required('toolbar');
|
|
11
13
|
this.model = new ToolbarModel(this.nodeService.model());
|
|
12
|
-
|
|
13
|
-
set position(value) {
|
|
14
|
-
this.model.position.set(value);
|
|
14
|
+
effect(() => this.model.position.set(this.position()), { allowSignalWrites: true });
|
|
15
15
|
}
|
|
16
16
|
ngOnInit() {
|
|
17
|
-
this.model.template.set(this.toolbarContentTemplate);
|
|
17
|
+
this.model.template.set(this.toolbarContentTemplate());
|
|
18
18
|
this.overlaysService.addToolbar(this.model);
|
|
19
19
|
}
|
|
20
20
|
ngOnDestroy() {
|
|
21
21
|
this.overlaysService.removeToolbar(this.model);
|
|
22
22
|
}
|
|
23
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
24
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
23
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NodeToolbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "17.3.12", type: NodeToolbarComponent, isStandalone: true, selector: "node-toolbar", inputs: { position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "toolbarContentTemplate", first: true, predicate: ["toolbar"], descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
25
25
|
<ng-template #toolbar>
|
|
26
26
|
<div class="wrapper" nodeToolbarWrapper [model]="model">
|
|
27
27
|
<ng-content />
|
|
28
28
|
</div>
|
|
29
29
|
</ng-template>
|
|
30
|
-
`, isInline: true, styles: [".wrapper{width:max-content}\n"], dependencies: [{ kind: "directive", type: i0.forwardRef(
|
|
30
|
+
`, isInline: true, styles: [".wrapper{width:max-content}\n"], dependencies: [{ kind: "directive", type: i0.forwardRef(() => NodeToolbarWrapperDirective), selector: "[nodeToolbarWrapper]", inputs: ["model"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
31
31
|
}
|
|
32
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
32
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NodeToolbarComponent, decorators: [{
|
|
33
33
|
type: Component,
|
|
34
|
-
args: [{ selector: 'node-toolbar', template: `
|
|
34
|
+
args: [{ standalone: true, selector: 'node-toolbar', template: `
|
|
35
35
|
<ng-template #toolbar>
|
|
36
36
|
<div class="wrapper" nodeToolbarWrapper [model]="model">
|
|
37
37
|
<ng-content />
|
|
38
38
|
</div>
|
|
39
39
|
</ng-template>
|
|
40
|
-
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [".wrapper{width:max-content}\n"] }]
|
|
41
|
-
}],
|
|
42
|
-
type: Input
|
|
43
|
-
}], toolbarContentTemplate: [{
|
|
44
|
-
type: ViewChild,
|
|
45
|
-
args: ['toolbar', { static: true }]
|
|
46
|
-
}] } });
|
|
40
|
+
`, changeDetection: ChangeDetectionStrategy.OnPush, imports: [forwardRef(() => NodeToolbarWrapperDirective)], styles: [".wrapper{width:max-content}\n"] }]
|
|
41
|
+
}], ctorParameters: () => [] });
|
|
47
42
|
export class NodeToolbarWrapperDirective {
|
|
48
43
|
constructor() {
|
|
49
44
|
this.element = inject(ElementRef);
|
|
45
|
+
this.model = input.required();
|
|
50
46
|
}
|
|
51
47
|
ngOnInit() {
|
|
52
|
-
this.model.size.set({
|
|
48
|
+
this.model().size.set({
|
|
53
49
|
width: this.element.nativeElement.clientWidth,
|
|
54
|
-
height: this.element.nativeElement.clientHeight
|
|
50
|
+
height: this.element.nativeElement.clientHeight,
|
|
55
51
|
});
|
|
56
52
|
}
|
|
57
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
58
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "
|
|
53
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NodeToolbarWrapperDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
54
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "17.3.12", type: NodeToolbarWrapperDirective, isStandalone: true, selector: "[nodeToolbarWrapper]", inputs: { model: { classPropertyName: "model", publicName: "model", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0 }); }
|
|
59
55
|
}
|
|
60
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
56
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NodeToolbarWrapperDirective, decorators: [{
|
|
61
57
|
type: Directive,
|
|
62
|
-
args: [{
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
58
|
+
args: [{
|
|
59
|
+
selector: '[nodeToolbarWrapper]',
|
|
60
|
+
standalone: true
|
|
61
|
+
}]
|
|
62
|
+
}] });
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS10b29sYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy9wdWJsaWMtY29tcG9uZW50cy9ub2RlLXRvb2xiYXIvbm9kZS10b29sYmFyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQXFCLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUF5QyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkwsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUxQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDOztBQXNCM0UsTUFBTSxPQUFPLG9CQUFvQjtJQVUvQjtRQVRRLG9CQUFlLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzFDLGdCQUFXLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFFM0MsYUFBUSxHQUFHLEtBQUssQ0FBVyxLQUFLLENBQUMsQ0FBQztRQUVsQywyQkFBc0IsR0FBRyxTQUFTLENBQUMsUUFBUSxDQUF1QixTQUFTLENBQUMsQ0FBQztRQUUxRSxVQUFLLEdBQUcsSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUcsQ0FBQyxDQUFDO1FBRzVELE1BQU0sQ0FDSixHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLEVBQzlDLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLENBQzVCLENBQUM7SUFDSixDQUFDO0lBRU0sUUFBUTtRQUNiLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQyxDQUFDO1FBRXZELElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakQsQ0FBQzsrR0F6QlUsb0JBQW9CO21HQUFwQixvQkFBb0Isd1ZBakJyQjs7Ozs7O0dBTVQsMkhBMkNVLDJCQUEyQjs7NEZBaEMzQixvQkFBb0I7a0JBcEJoQyxTQUFTO2lDQUNJLElBQUksWUFDTixjQUFjLFlBQ2Q7Ozs7OztHQU1ULG1CQVFnQix1QkFBdUIsQ0FBQyxNQUFNLFdBQ3RDLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLDJCQUEyQixDQUFDLENBQUM7O0FBa0MxRCxNQUFNLE9BQU8sMkJBQTJCO0lBSnhDO1FBS1UsWUFBTyxHQUFHLE1BQU0sQ0FBMEIsVUFBVSxDQUFDLENBQUM7UUFFdkQsVUFBSyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQWdCLENBQUM7S0FRL0M7SUFOUSxRQUFRO1FBQ2IsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7WUFDcEIsS0FBSyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLFdBQVc7WUFDN0MsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLFlBQVk7U0FDaEQsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzsrR0FWVSwyQkFBMkI7bUdBQTNCLDJCQUEyQjs7NEZBQTNCLDJCQUEyQjtrQkFKdkMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsc0JBQXNCO29CQUNoQyxVQUFVLEVBQUUsSUFBSTtpQkFDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgaW5qZWN0LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIFRlbXBsYXRlUmVmLCBpbnB1dCwgdmlld0NoaWxkLCBlZmZlY3QsIGZvcndhcmRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERpcmVjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUG9zaXRpb24gfSBmcm9tICcuLi8uLi90eXBlcy9wb3NpdGlvbi50eXBlJztcbmltcG9ydCB7IFRvb2xiYXJNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy90b29sYmFyLm1vZGVsJztcbmltcG9ydCB7IE92ZXJsYXlzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL292ZXJsYXlzLnNlcnZpY2UnO1xuaW1wb3J0IHsgTm9kZUFjY2Vzc29yU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL25vZGUtYWNjZXNzb3Iuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ25vZGUtdG9vbGJhcicsXG4gIHRlbXBsYXRlOiBgXG4gICAgPG5nLXRlbXBsYXRlICN0b29sYmFyPlxuICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIiBub2RlVG9vbGJhcldyYXBwZXIgW21vZGVsXT1cIm1vZGVsXCI+XG4gICAgICAgIDxuZy1jb250ZW50IC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICAud3JhcHBlciB7XG4gICAgICAgIHdpZHRoOiBtYXgtY29udGVudDtcbiAgICAgIH1cbiAgICBgLFxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW2ZvcndhcmRSZWYoKCkgPT4gTm9kZVRvb2xiYXJXcmFwcGVyRGlyZWN0aXZlKV0sXG59KVxuZXhwb3J0IGNsYXNzIE5vZGVUb29sYmFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIG92ZXJsYXlzU2VydmljZSA9IGluamVjdChPdmVybGF5c1NlcnZpY2UpO1xuICBwcml2YXRlIG5vZGVTZXJ2aWNlID0gaW5qZWN0KE5vZGVBY2Nlc3NvclNlcnZpY2UpO1xuXG4gIHB1YmxpYyBwb3NpdGlvbiA9IGlucHV0PFBvc2l0aW9uPigndG9wJyk7XG5cbiAgcHVibGljIHRvb2xiYXJDb250ZW50VGVtcGxhdGUgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8VGVtcGxhdGVSZWY8dW5rbm93bj4+KCd0b29sYmFyJyk7XG5cbiAgcHJvdGVjdGVkIG1vZGVsID0gbmV3IFRvb2xiYXJNb2RlbCh0aGlzLm5vZGVTZXJ2aWNlLm1vZGVsKCkhKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBlZmZlY3QoXG4gICAgICAoKSA9PiB0aGlzLm1vZGVsLnBvc2l0aW9uLnNldCh0aGlzLnBvc2l0aW9uKCkpLFxuICAgICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9XG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLm1vZGVsLnRlbXBsYXRlLnNldCh0aGlzLnRvb2xiYXJDb250ZW50VGVtcGxhdGUoKSk7XG5cbiAgICB0aGlzLm92ZXJsYXlzU2VydmljZS5hZGRUb29sYmFyKHRoaXMubW9kZWwpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMub3ZlcmxheXNTZXJ2aWNlLnJlbW92ZVRvb2xiYXIodGhpcy5tb2RlbCk7XG4gIH1cbn1cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW25vZGVUb29sYmFyV3JhcHBlcl0nLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIE5vZGVUb29sYmFyV3JhcHBlckRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHByaXZhdGUgZWxlbWVudCA9IGluamVjdDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj4oRWxlbWVudFJlZik7XG5cbiAgcHVibGljIG1vZGVsID0gaW5wdXQucmVxdWlyZWQ8VG9vbGJhck1vZGVsPigpO1xuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLm1vZGVsKCkuc2l6ZS5zZXQoe1xuICAgICAgd2lkdGg6IHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoLFxuICAgICAgaGVpZ2h0OiB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5jbGllbnRIZWlnaHQsXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|