ngx-vflow 0.3.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/esm2022/lib/vflow/components/edge/edge.component.mjs +18 -6
  2. package/esm2022/lib/vflow/components/handle/handle.component.mjs +7 -7
  3. package/esm2022/lib/vflow/components/node/node.component.mjs +23 -8
  4. package/esm2022/lib/vflow/components/vflow/vflow.component.mjs +63 -22
  5. package/esm2022/lib/vflow/decorators/run-in-injection-context.decorator.mjs +6 -14
  6. package/esm2022/lib/vflow/directives/changes-controller.directive.mjs +115 -14
  7. package/esm2022/lib/vflow/directives/map-context.directive.mjs +31 -4
  8. package/esm2022/lib/vflow/directives/pointer.directive.mjs +84 -0
  9. package/esm2022/lib/vflow/directives/root-pointer.directive.mjs +42 -0
  10. package/esm2022/lib/vflow/directives/root-svg-context.directive.mjs +5 -2
  11. package/esm2022/lib/vflow/directives/selectable.directive.mjs +39 -0
  12. package/esm2022/lib/vflow/directives/space-point-context.directive.mjs +10 -6
  13. package/esm2022/lib/vflow/interfaces/flow-entity.interface.mjs +2 -0
  14. package/esm2022/lib/vflow/interfaces/template-context.interface.mjs +1 -1
  15. package/esm2022/lib/vflow/models/edge.model.mjs +3 -1
  16. package/esm2022/lib/vflow/models/node.model.mjs +9 -12
  17. package/esm2022/lib/vflow/services/edge-changes.service.mjs +6 -2
  18. package/esm2022/lib/vflow/services/flow-entities.service.mjs +5 -1
  19. package/esm2022/lib/vflow/services/flow-settings.service.mjs +25 -0
  20. package/esm2022/lib/vflow/services/node-changes.service.mjs +7 -3
  21. package/esm2022/lib/vflow/services/node-rendering.service.mjs +22 -0
  22. package/esm2022/lib/vflow/services/selection.service.mjs +45 -0
  23. package/esm2022/lib/vflow/types/edge-change.type.mjs +1 -1
  24. package/esm2022/lib/vflow/types/node-change.type.mjs +1 -1
  25. package/esm2022/lib/vflow/vflow.module.mjs +15 -4
  26. package/esm2022/public-api.mjs +2 -1
  27. package/fesm2022/ngx-vflow.mjs +582 -161
  28. package/fesm2022/ngx-vflow.mjs.map +1 -1
  29. package/lib/vflow/components/edge/edge.component.d.ts +5 -2
  30. package/lib/vflow/components/handle/handle.component.d.ts +4 -3
  31. package/lib/vflow/components/node/node.component.d.ts +10 -4
  32. package/lib/vflow/components/vflow/vflow.component.d.ts +12 -6
  33. package/lib/vflow/decorators/run-in-injection-context.decorator.d.ts +2 -5
  34. package/lib/vflow/directives/changes-controller.directive.d.ts +35 -9
  35. package/lib/vflow/directives/map-context.directive.d.ts +5 -0
  36. package/lib/vflow/directives/pointer.directive.d.ts +21 -0
  37. package/lib/vflow/directives/root-pointer.directive.d.ts +40 -0
  38. package/lib/vflow/directives/selectable.directive.d.ts +11 -0
  39. package/lib/vflow/directives/space-point-context.directive.d.ts +13 -3
  40. package/lib/vflow/interfaces/flow-entity.interface.d.ts +4 -0
  41. package/lib/vflow/interfaces/template-context.interface.d.ts +1 -0
  42. package/lib/vflow/models/edge.model.d.ts +8 -20
  43. package/lib/vflow/models/node.model.d.ts +6 -9
  44. package/lib/vflow/services/edge-changes.service.d.ts +5 -0
  45. package/lib/vflow/services/flow-entities.service.d.ts +5 -2
  46. package/lib/vflow/services/flow-settings.service.d.ts +20 -0
  47. package/lib/vflow/services/node-changes.service.d.ts +5 -0
  48. package/lib/vflow/services/node-rendering.service.d.ts +9 -0
  49. package/lib/vflow/services/selection.service.d.ts +19 -0
  50. package/lib/vflow/types/edge-change.type.d.ts +5 -1
  51. package/lib/vflow/types/node-change.type.d.ts +5 -1
  52. package/lib/vflow/vflow.module.d.ts +6 -3
  53. package/package.json +3 -3
  54. package/public-api.d.ts +1 -0
  55. package/esm2022/lib/vflow/models/flow.model.mjs +0 -18
  56. package/lib/vflow/models/flow.model.d.ts +0 -16
@@ -4,14 +4,17 @@ import { zoom, zoomIdentity } from 'd3-zoom';
4
4
  import { ViewportService } from '../services/viewport.service';
5
5
  import { isDefined } from '../utils/is-defined';
6
6
  import { RootSvgReferenceDirective } from './reference.directive';
7
+ import { SelectionService } from '../services/selection.service';
7
8
  import * as i0 from "@angular/core";
8
9
  export class MapContextDirective {
9
10
  constructor() {
10
11
  this.rootSvg = inject(RootSvgReferenceDirective).element;
11
12
  this.host = inject(ElementRef).nativeElement;
13
+ this.selectionService = inject(SelectionService);
12
14
  this.viewportService = inject(ViewportService);
13
15
  this.rootSvgSelection = select(this.rootSvg);
14
16
  this.zoomableSelection = select(this.host);
17
+ this.viewportForSelection = {};
15
18
  // under the hood this effect triggers handleZoom, so error throws without this flag
16
19
  // TODO: hack with timer fixes wrong node scaling (handle positions not matched with content size)
17
20
  this.manualViewportChangeEffect = effect(() => setTimeout(() => {
@@ -38,15 +41,32 @@ export class MapContextDirective {
38
41
  }), { allowSignalWrites: true });
39
42
  this.handleZoom = ({ transform }) => {
40
43
  // update public signal for user to read
41
- this.viewportService.readableViewport.set({ zoom: transform.k, x: transform.x, y: transform.y });
44
+ this.viewportService.readableViewport.set(mapTransformToViewportState(transform));
42
45
  this.zoomableSelection.attr('transform', transform.toString());
43
46
  };
44
47
  }
45
48
  ngOnInit() {
46
49
  this.zoomBehavior = zoom()
47
50
  .scaleExtent([this.minZoom, this.maxZoom])
48
- .on('zoom', this.handleZoom);
49
- this.rootSvgSelection.call(this.zoomBehavior);
51
+ .on('start', (event) => this.onD3zoomStart(event))
52
+ .on('zoom', (event) => this.handleZoom(event))
53
+ .on('end', (event) => this.onD3zoomEnd(event));
54
+ this.rootSvgSelection
55
+ .call(this.zoomBehavior)
56
+ .on('dblclick.zoom', null);
57
+ }
58
+ onD3zoomStart({ transform }) {
59
+ this.viewportForSelection = {
60
+ start: mapTransformToViewportState(transform)
61
+ };
62
+ }
63
+ onD3zoomEnd({ transform, sourceEvent }) {
64
+ this.viewportForSelection = {
65
+ ...this.viewportForSelection,
66
+ end: mapTransformToViewportState(transform),
67
+ target: evTarget(sourceEvent)
68
+ };
69
+ this.selectionService.setViewport(this.viewportForSelection);
50
70
  }
51
71
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MapContextDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
52
72
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: MapContextDirective, selector: "g[mapContext]", inputs: { minZoom: "minZoom", maxZoom: "maxZoom" }, ngImport: i0 }); }
@@ -59,4 +79,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
59
79
  }], maxZoom: [{
60
80
  type: Input
61
81
  }] } });
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLWNvbnRleHQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZmbG93LWxpYi9zcmMvbGliL3ZmbG93L2RpcmVjdGl2ZXMvbWFwLWNvbnRleHQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFZLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxFQUF5QixNQUFNLGVBQWUsQ0FBQztBQUN0SCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3RDLE9BQU8sRUFBNkIsSUFBSSxFQUFFLFlBQVksRUFBaUIsTUFBTSxTQUFTLENBQUM7QUFDdkYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFLbEUsTUFBTSxPQUFPLG1CQUFtQjtJQURoQztRQVFZLFlBQU8sR0FBRyxNQUFNLENBQUMseUJBQXlCLENBQUMsQ0FBQyxPQUFPLENBQUE7UUFDbkQsU0FBSSxHQUFHLE1BQU0sQ0FBMEIsVUFBVSxDQUFDLENBQUMsYUFBYSxDQUFBO1FBQ2hFLG9CQUFlLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFBO1FBRXpDLHFCQUFnQixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDdkMsc0JBQWlCLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUUvQyxvRkFBb0Y7UUFDcEYsa0dBQWtHO1FBQ3hGLCtCQUEwQixHQUFHLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2xFLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQTtZQUN4RCxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFBO1lBRTVCLElBQUksUUFBUSxDQUFDLFVBQVUsS0FBSyxTQUFTLEVBQUU7Z0JBQ3JDLE9BQU07YUFDUDtZQUVELHdCQUF3QjtZQUN4QixJQUFJLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ3pFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFBO2dCQUVqRSxPQUFNO2FBQ1A7WUFFRCx1QkFBdUI7WUFDdkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDeEUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQTtnQkFFM0UsT0FBTTthQUNQO1lBRUQsa0NBQWtDO1lBQ2xDLElBQUksU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ3JFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQ3BELFlBQVksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FDM0QsQ0FBQTtnQkFFRCxPQUFNO2FBQ1A7UUFDSCxDQUFDLENBQUMsRUFBRSxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxDQUFDLENBQUE7UUFZeEIsZUFBVSxHQUFHLENBQUMsRUFBRSxTQUFTLEVBQWEsRUFBRSxFQUFFO1lBQ2hELHdDQUF3QztZQUN4QyxJQUFJLENBQUMsZUFBZSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQTtZQUVoRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQTtRQUNoRSxDQUFDLENBQUE7S0FDRjtJQWRRLFFBQVE7UUFDYixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksRUFBMEI7YUFDL0MsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDekMsRUFBRSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUE7UUFFOUIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUE7SUFDL0MsQ0FBQzsrR0F4RFUsbUJBQW1CO21HQUFuQixtQkFBbUI7OzRGQUFuQixtQkFBbUI7a0JBRC9CLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsZUFBZSxFQUFFOzhCQUcvQixPQUFPO3NCQURiLEtBQUs7Z0JBSUMsT0FBTztzQkFEYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBJbmplY3RvciwgSW5wdXQsIE9uSW5pdCwgZWZmZWN0LCBpbmplY3QsIHJ1bkluSW5qZWN0aW9uQ29udGV4dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgc2VsZWN0IH0gZnJvbSAnZDMtc2VsZWN0aW9uJztcbmltcG9ydCB7IEQzWm9vbUV2ZW50LCBab29tQmVoYXZpb3IsIHpvb20sIHpvb21JZGVudGl0eSwgem9vbVRyYW5zZm9ybSB9IGZyb20gJ2QzLXpvb20nO1xuaW1wb3J0IHsgVmlld3BvcnRTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvdmlld3BvcnQuc2VydmljZSc7XG5pbXBvcnQgeyBpc0RlZmluZWQgfSBmcm9tICcuLi91dGlscy9pcy1kZWZpbmVkJztcbmltcG9ydCB7IFJvb3RTdmdSZWZlcmVuY2VEaXJlY3RpdmUgfSBmcm9tICcuL3JlZmVyZW5jZS5kaXJlY3RpdmUnO1xuXG50eXBlIFpvb21FdmVudCA9IEQzWm9vbUV2ZW50PFNWR1NWR0VsZW1lbnQsIHVua25vd24+XG5cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ2dbbWFwQ29udGV4dF0nIH0pXG5leHBvcnQgY2xhc3MgTWFwQ29udGV4dERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBtaW5ab29tITogbnVtYmVyXG5cbiAgQElucHV0KClcbiAgcHVibGljIG1heFpvb20hOiBudW1iZXJcblxuICBwcm90ZWN0ZWQgcm9vdFN2ZyA9IGluamVjdChSb290U3ZnUmVmZXJlbmNlRGlyZWN0aXZlKS5lbGVtZW50XG4gIHByb3RlY3RlZCBob3N0ID0gaW5qZWN0PEVsZW1lbnRSZWY8U1ZHR0VsZW1lbnQ+PihFbGVtZW50UmVmKS5uYXRpdmVFbGVtZW50XG4gIHByb3RlY3RlZCB2aWV3cG9ydFNlcnZpY2UgPSBpbmplY3QoVmlld3BvcnRTZXJ2aWNlKVxuXG4gIHByb3RlY3RlZCByb290U3ZnU2VsZWN0aW9uID0gc2VsZWN0KHRoaXMucm9vdFN2ZylcbiAgcHJvdGVjdGVkIHpvb21hYmxlU2VsZWN0aW9uID0gc2VsZWN0KHRoaXMuaG9zdClcblxuICAvLyB1bmRlciB0aGUgaG9vZCB0aGlzIGVmZmVjdCB0cmlnZ2VycyBoYW5kbGVab29tLCBzbyBlcnJvciB0aHJvd3Mgd2l0aG91dCB0aGlzIGZsYWdcbiAgLy8gVE9ETzogaGFjayB3aXRoIHRpbWVyIGZpeGVzIHdyb25nIG5vZGUgc2NhbGluZyAoaGFuZGxlIHBvc2l0aW9ucyBub3QgbWF0Y2hlZCB3aXRoIGNvbnRlbnQgc2l6ZSlcbiAgcHJvdGVjdGVkIG1hbnVhbFZpZXdwb3J0Q2hhbmdlRWZmZWN0ID0gZWZmZWN0KCgpID0+IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgIGNvbnN0IHZpZXdwb3J0ID0gdGhpcy52aWV3cG9ydFNlcnZpY2Uud3JpdGFibGVWaWV3cG9ydCgpXG4gICAgY29uc3Qgc3RhdGUgPSB2aWV3cG9ydC5zdGF0ZVxuXG4gICAgaWYgKHZpZXdwb3J0LmNoYW5nZVR5cGUgPT09ICdpbml0aWFsJykge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gSWYgb25seSB6b29tIHByb3ZpZGVkXG4gICAgaWYgKGlzRGVmaW5lZChzdGF0ZS56b29tKSAmJiAoIWlzRGVmaW5lZChzdGF0ZS54KSAmJiAhaXNEZWZpbmVkKHN0YXRlLnkpKSkge1xuICAgICAgdGhpcy5yb290U3ZnU2VsZWN0aW9uLmNhbGwodGhpcy56b29tQmVoYXZpb3Iuc2NhbGVUbywgc3RhdGUuem9vbSlcblxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gSWYgb25seSBwYW4gcHJvdmlkZWRcbiAgICBpZiAoKGlzRGVmaW5lZChzdGF0ZS54KSAmJiBpc0RlZmluZWQoc3RhdGUueSkpICYmICFpc0RlZmluZWQoc3RhdGUuem9vbSkpIHtcbiAgICAgIHRoaXMucm9vdFN2Z1NlbGVjdGlvbi5jYWxsKHRoaXMuem9vbUJlaGF2aW9yLnRyYW5zbGF0ZVRvLCBzdGF0ZS54LCBzdGF0ZS55KVxuXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICAvLyBJZiB3aG9sZSB2aWV3b3J0IHN0YXRlIHByb3ZpZGVkXG4gICAgaWYgKGlzRGVmaW5lZChzdGF0ZS54KSAmJiBpc0RlZmluZWQoc3RhdGUueSkgJiYgaXNEZWZpbmVkKHN0YXRlLnpvb20pKSB7XG4gICAgICB0aGlzLnJvb3RTdmdTZWxlY3Rpb24uY2FsbCh0aGlzLnpvb21CZWhhdmlvci50cmFuc2Zvcm0sXG4gICAgICAgIHpvb21JZGVudGl0eS50cmFuc2xhdGUoc3RhdGUueCwgc3RhdGUueSkuc2NhbGUoc3RhdGUuem9vbSlcbiAgICAgIClcblxuICAgICAgcmV0dXJuXG4gICAgfVxuICB9KSwgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9KVxuXG4gIHByb3RlY3RlZCB6b29tQmVoYXZpb3IhOiBab29tQmVoYXZpb3I8U1ZHU1ZHRWxlbWVudCwgdW5rbm93bj47XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuem9vbUJlaGF2aW9yID0gem9vbTxTVkdTVkdFbGVtZW50LCB1bmtub3duPigpXG4gICAgICAuc2NhbGVFeHRlbnQoW3RoaXMubWluWm9vbSwgdGhpcy5tYXhab29tXSlcbiAgICAgIC5vbignem9vbScsIHRoaXMuaGFuZGxlWm9vbSlcblxuICAgIHRoaXMucm9vdFN2Z1NlbGVjdGlvbi5jYWxsKHRoaXMuem9vbUJlaGF2aW9yKVxuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVab29tID0gKHsgdHJhbnNmb3JtIH06IFpvb21FdmVudCkgPT4ge1xuICAgIC8vIHVwZGF0ZSBwdWJsaWMgc2lnbmFsIGZvciB1c2VyIHRvIHJlYWRcbiAgICB0aGlzLnZpZXdwb3J0U2VydmljZS5yZWFkYWJsZVZpZXdwb3J0LnNldCh7IHpvb206IHRyYW5zZm9ybS5rLCB4OiB0cmFuc2Zvcm0ueCwgeTogdHJhbnNmb3JtLnkgfSlcblxuICAgIHRoaXMuem9vbWFibGVTZWxlY3Rpb24uYXR0cigndHJhbnNmb3JtJywgdHJhbnNmb3JtLnRvU3RyaW5nKCkpXG4gIH1cbn1cbiJdfQ==
82
+ const mapTransformToViewportState = (transform) => ({ zoom: transform.k, x: transform.x, y: transform.y });
83
+ const evTarget = (anyEvent) => {
84
+ if (anyEvent instanceof Event && anyEvent.target instanceof Element) {
85
+ return anyEvent.target;
86
+ }
87
+ return undefined;
88
+ };
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLWNvbnRleHQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZmbG93LWxpYi9zcmMvbGliL3ZmbG93L2RpcmVjdGl2ZXMvbWFwLWNvbnRleHQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDdEMsT0FBTyxFQUE0QyxJQUFJLEVBQUUsWUFBWSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFbEUsT0FBTyxFQUFFLGdCQUFnQixFQUF3QixNQUFNLCtCQUErQixDQUFDOztBQUt2RixNQUFNLE9BQU8sbUJBQW1CO0lBRGhDO1FBUVksWUFBTyxHQUFHLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLE9BQU8sQ0FBQTtRQUNuRCxTQUFJLEdBQUcsTUFBTSxDQUEwQixVQUFVLENBQUMsQ0FBQyxhQUFhLENBQUE7UUFDaEUscUJBQWdCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUE7UUFDM0Msb0JBQWUsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUE7UUFFekMscUJBQWdCLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUN2QyxzQkFBaUIsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBRXJDLHlCQUFvQixHQUFrQyxFQUFFLENBQUE7UUFF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U0FBUyxDQUFDO0FBQ25CLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSW5wdXQsIE9uSW5pdCwgZWZmZWN0LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHNlbGVjdCB9IGZyb20gJ2QzLXNlbGVjdGlvbic7XG5pbXBvcnQgeyBEM1pvb21FdmVudCwgWm9vbUJlaGF2aW9yLCBab29tVHJhbnNmb3JtLCB6b29tLCB6b29tSWRlbnRpdHkgfSBmcm9tICdkMy16b29tJztcbmltcG9ydCB7IFZpZXdwb3J0U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3ZpZXdwb3J0LnNlcnZpY2UnO1xuaW1wb3J0IHsgaXNEZWZpbmVkIH0gZnJvbSAnLi4vdXRpbHMvaXMtZGVmaW5lZCc7XG5pbXBvcnQgeyBSb290U3ZnUmVmZXJlbmNlRGlyZWN0aXZlIH0gZnJvbSAnLi9yZWZlcmVuY2UuZGlyZWN0aXZlJztcbmltcG9ydCB7IFZpZXdwb3J0U3RhdGUgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3ZpZXdwb3J0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBTZWxlY3Rpb25TZXJ2aWNlLCBWaWV3cG9ydEZvclNlbGVjdGlvbiB9IGZyb20gJy4uL3NlcnZpY2VzL3NlbGVjdGlvbi5zZXJ2aWNlJztcblxudHlwZSBab29tRXZlbnQgPSBEM1pvb21FdmVudDxTVkdTVkdFbGVtZW50LCB1bmtub3duPlxuXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdnW21hcENvbnRleHRdJyB9KVxuZXhwb3J0IGNsYXNzIE1hcENvbnRleHREaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKVxuICBwdWJsaWMgbWluWm9vbSE6IG51bWJlclxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBtYXhab29tITogbnVtYmVyXG5cbiAgcHJvdGVjdGVkIHJvb3RTdmcgPSBpbmplY3QoUm9vdFN2Z1JlZmVyZW5jZURpcmVjdGl2ZSkuZWxlbWVudFxuICBwcm90ZWN0ZWQgaG9zdCA9IGluamVjdDxFbGVtZW50UmVmPFNWR0dFbGVtZW50Pj4oRWxlbWVudFJlZikubmF0aXZlRWxlbWVudFxuICBwcm90ZWN0ZWQgc2VsZWN0aW9uU2VydmljZSA9IGluamVjdChTZWxlY3Rpb25TZXJ2aWNlKVxuICBwcm90ZWN0ZWQgdmlld3BvcnRTZXJ2aWNlID0gaW5qZWN0KFZpZXdwb3J0U2VydmljZSlcblxuICBwcm90ZWN0ZWQgcm9vdFN2Z1NlbGVjdGlvbiA9IHNlbGVjdCh0aGlzLnJvb3RTdmcpXG4gIHByb3RlY3RlZCB6b29tYWJsZVNlbGVjdGlvbiA9IHNlbGVjdCh0aGlzLmhvc3QpXG5cbiAgcHJvdGVjdGVkIHZpZXdwb3J0Rm9yU2VsZWN0aW9uOiBQYXJ0aWFsPFZpZXdwb3J0Rm9yU2VsZWN0aW9uPiA9IHt9XG5cbiAgLy8gdW5kZXIgdGhlIGhvb2QgdGhpcyBlZmZlY3QgdHJpZ2dlcnMgaGFuZGxlWm9vbSwgc28gZXJyb3IgdGhyb3dzIHdpdGhvdXQgdGhpcyBmbGFnXG4gIC8vIFRPRE86IGhhY2sgd2l0aCB0aW1lciBmaXhlcyB3cm9uZyBub2RlIHNjYWxpbmcgKGhhbmRsZSBwb3NpdGlvbnMgbm90IG1hdGNoZWQgd2l0aCBjb250ZW50IHNpemUpXG4gIHByb3RlY3RlZCBtYW51YWxWaWV3cG9ydENoYW5nZUVmZmVjdCA9IGVmZmVjdCgoKSA9PiBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICBjb25zdCB2aWV3cG9ydCA9IHRoaXMudmlld3BvcnRTZXJ2aWNlLndyaXRhYmxlVmlld3BvcnQoKVxuICAgIGNvbnN0IHN0YXRlID0gdmlld3BvcnQuc3RhdGVcblxuICAgIGlmICh2aWV3cG9ydC5jaGFuZ2VUeXBlID09PSAnaW5pdGlhbCcpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIElmIG9ubHkgem9vbSBwcm92aWRlZFxuICAgIGlmIChpc0RlZmluZWQoc3RhdGUuem9vbSkgJiYgKCFpc0RlZmluZWQoc3RhdGUueCkgJiYgIWlzRGVmaW5lZChzdGF0ZS55KSkpIHtcbiAgICAgIHRoaXMucm9vdFN2Z1NlbGVjdGlvbi5jYWxsKHRoaXMuem9vbUJlaGF2aW9yLnNjYWxlVG8sIHN0YXRlLnpvb20pXG5cbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIElmIG9ubHkgcGFuIHByb3ZpZGVkXG4gICAgaWYgKChpc0RlZmluZWQoc3RhdGUueCkgJiYgaXNEZWZpbmVkKHN0YXRlLnkpKSAmJiAhaXNEZWZpbmVkKHN0YXRlLnpvb20pKSB7XG4gICAgICB0aGlzLnJvb3RTdmdTZWxlY3Rpb24uY2FsbCh0aGlzLnpvb21CZWhhdmlvci50cmFuc2xhdGVUbywgc3RhdGUueCwgc3RhdGUueSlcblxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gSWYgd2hvbGUgdmlld29ydCBzdGF0ZSBwcm92aWRlZFxuICAgIGlmIChpc0RlZmluZWQoc3RhdGUueCkgJiYgaXNEZWZpbmVkKHN0YXRlLnkpICYmIGlzRGVmaW5lZChzdGF0ZS56b29tKSkge1xuICAgICAgdGhpcy5yb290U3ZnU2VsZWN0aW9uLmNhbGwodGhpcy56b29tQmVoYXZpb3IudHJhbnNmb3JtLFxuICAgICAgICB6b29tSWRlbnRpdHkudHJhbnNsYXRlKHN0YXRlLngsIHN0YXRlLnkpLnNjYWxlKHN0YXRlLnpvb20pXG4gICAgICApXG5cbiAgICAgIHJldHVyblxuICAgIH1cbiAgfSksIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSlcblxuICBwcm90ZWN0ZWQgem9vbUJlaGF2aW9yITogWm9vbUJlaGF2aW9yPFNWR1NWR0VsZW1lbnQsIHVua25vd24+O1xuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnpvb21CZWhhdmlvciA9IHpvb208U1ZHU1ZHRWxlbWVudCwgdW5rbm93bj4oKVxuICAgICAgLnNjYWxlRXh0ZW50KFt0aGlzLm1pblpvb20sIHRoaXMubWF4Wm9vbV0pXG4gICAgICAub24oJ3N0YXJ0JywgKGV2ZW50OiBab29tRXZlbnQpID0+IHRoaXMub25EM3pvb21TdGFydChldmVudCkpXG4gICAgICAub24oJ3pvb20nLCAoZXZlbnQ6IFpvb21FdmVudCkgPT4gdGhpcy5oYW5kbGVab29tKGV2ZW50KSlcbiAgICAgIC5vbignZW5kJywgKGV2ZW50OiBab29tRXZlbnQpID0+IHRoaXMub25EM3pvb21FbmQoZXZlbnQpKVxuXG4gICAgdGhpcy5yb290U3ZnU2VsZWN0aW9uXG4gICAgICAuY2FsbCh0aGlzLnpvb21CZWhhdmlvcilcbiAgICAgIC5vbignZGJsY2xpY2suem9vbScsIG51bGwpXG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVpvb20gPSAoeyB0cmFuc2Zvcm0gfTogWm9vbUV2ZW50KSA9PiB7XG4gICAgLy8gdXBkYXRlIHB1YmxpYyBzaWduYWwgZm9yIHVzZXIgdG8gcmVhZFxuICAgIHRoaXMudmlld3BvcnRTZXJ2aWNlLnJlYWRhYmxlVmlld3BvcnQuc2V0KG1hcFRyYW5zZm9ybVRvVmlld3BvcnRTdGF0ZSh0cmFuc2Zvcm0pKVxuXG4gICAgdGhpcy56b29tYWJsZVNlbGVjdGlvbi5hdHRyKCd0cmFuc2Zvcm0nLCB0cmFuc2Zvcm0udG9TdHJpbmcoKSlcbiAgfVxuXG4gIHByaXZhdGUgb25EM3pvb21TdGFydCh7IHRyYW5zZm9ybSB9OiBab29tRXZlbnQpIHtcbiAgICB0aGlzLnZpZXdwb3J0Rm9yU2VsZWN0aW9uID0ge1xuICAgICAgc3RhcnQ6IG1hcFRyYW5zZm9ybVRvVmlld3BvcnRTdGF0ZSh0cmFuc2Zvcm0pXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBvbkQzem9vbUVuZCh7IHRyYW5zZm9ybSwgc291cmNlRXZlbnQgfTogWm9vbUV2ZW50KSB7XG4gICAgdGhpcy52aWV3cG9ydEZvclNlbGVjdGlvbiA9IHtcbiAgICAgIC4uLnRoaXMudmlld3BvcnRGb3JTZWxlY3Rpb24sXG4gICAgICBlbmQ6IG1hcFRyYW5zZm9ybVRvVmlld3BvcnRTdGF0ZSh0cmFuc2Zvcm0pLFxuICAgICAgdGFyZ2V0OiBldlRhcmdldChzb3VyY2VFdmVudClcbiAgICB9XG5cbiAgICB0aGlzLnNlbGVjdGlvblNlcnZpY2Uuc2V0Vmlld3BvcnQoXG4gICAgICB0aGlzLnZpZXdwb3J0Rm9yU2VsZWN0aW9uIGFzIFZpZXdwb3J0Rm9yU2VsZWN0aW9uXG4gICAgKVxuICB9XG59XG5cbmNvbnN0IG1hcFRyYW5zZm9ybVRvVmlld3BvcnRTdGF0ZSA9ICh0cmFuc2Zvcm06IFpvb21UcmFuc2Zvcm0pOiBWaWV3cG9ydFN0YXRlID0+XG4gICh7IHpvb206IHRyYW5zZm9ybS5rLCB4OiB0cmFuc2Zvcm0ueCwgeTogdHJhbnNmb3JtLnkgfSlcblxuY29uc3QgZXZUYXJnZXQgPSAoYW55RXZlbnQ6IGFueSk6IEVsZW1lbnQgfCB1bmRlZmluZWQgPT4ge1xuICBpZiAoYW55RXZlbnQgaW5zdGFuY2VvZiBFdmVudCAmJiBhbnlFdmVudC50YXJnZXQgaW5zdGFuY2VvZiBFbGVtZW50KSB7XG4gICAgcmV0dXJuIGFueUV2ZW50LnRhcmdldFxuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cbiJdfQ==
@@ -0,0 +1,84 @@
1
+ import { Directive, ElementRef, EventEmitter, HostListener, Output, inject } from '@angular/core';
2
+ import { filter, tap } from 'rxjs';
3
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
4
+ import { RootPointerDirective } from './root-pointer.directive';
5
+ import * as i0 from "@angular/core";
6
+ export class PointerDirective {
7
+ constructor() {
8
+ this.hostElement = inject(ElementRef).nativeElement;
9
+ this.pointerMovementDirective = inject(RootPointerDirective);
10
+ this.pointerOver = new EventEmitter();
11
+ this.pointerOut = new EventEmitter();
12
+ this.pointerStart = new EventEmitter();
13
+ this.pointerEnd = new EventEmitter();
14
+ this.wasPointerOver = false;
15
+ // TODO check if i could avoid global touch end
16
+ this.touchEnd = this.pointerMovementDirective.touchEnd$
17
+ .pipe(filter(({ target }) => target === this.hostElement), tap(({ originalEvent }) => this.pointerEnd.emit(originalEvent)), takeUntilDestroyed())
18
+ .subscribe();
19
+ this.touchOverOut = this.pointerMovementDirective.touchMovement$
20
+ .pipe(tap(({ target, originalEvent }) => {
21
+ this.handleTouchOverAndOut(target, originalEvent);
22
+ }), takeUntilDestroyed())
23
+ .subscribe();
24
+ }
25
+ onPointerStart(event) {
26
+ this.pointerStart.emit(event);
27
+ if (event instanceof TouchEvent) {
28
+ this.pointerMovementDirective.setInitialTouch(event);
29
+ }
30
+ }
31
+ onPointerEnd(event) {
32
+ this.pointerEnd.emit(event);
33
+ }
34
+ onMouseOver(event) {
35
+ this.pointerOver.emit(event);
36
+ }
37
+ onMouseOut(event) {
38
+ this.pointerOut.emit(event);
39
+ }
40
+ // TODO: dirty imperative implementation
41
+ handleTouchOverAndOut(target, event) {
42
+ if (target === this.hostElement) {
43
+ this.pointerOver.emit(event);
44
+ this.wasPointerOver = true;
45
+ }
46
+ else {
47
+ // should not emit before pointerOver
48
+ if (this.wasPointerOver) {
49
+ this.pointerOut.emit(event);
50
+ }
51
+ this.wasPointerOver = false;
52
+ }
53
+ }
54
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PointerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
55
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: PointerDirective, selector: "[pointerStart], [pointerEnd], [pointerOver], [pointerOut]", outputs: { pointerOver: "pointerOver", pointerOut: "pointerOut", pointerStart: "pointerStart", pointerEnd: "pointerEnd" }, host: { listeners: { "mousedown": "onPointerStart($event)", "touchstart": "onPointerStart($event)", "mouseup": "onPointerEnd($event)", "mouseover": "onMouseOver($event)", "mouseout": "onMouseOut($event)" } }, ngImport: i0 }); }
56
+ }
57
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PointerDirective, decorators: [{
58
+ type: Directive,
59
+ args: [{ selector: '[pointerStart], [pointerEnd], [pointerOver], [pointerOut]' }]
60
+ }], propDecorators: { pointerOver: [{
61
+ type: Output
62
+ }], pointerOut: [{
63
+ type: Output
64
+ }], pointerStart: [{
65
+ type: Output
66
+ }], pointerEnd: [{
67
+ type: Output
68
+ }], onPointerStart: [{
69
+ type: HostListener,
70
+ args: ['mousedown', ['$event']]
71
+ }, {
72
+ type: HostListener,
73
+ args: ['touchstart', ['$event']]
74
+ }], onPointerEnd: [{
75
+ type: HostListener,
76
+ args: ['mouseup', ['$event']]
77
+ }], onMouseOver: [{
78
+ type: HostListener,
79
+ args: ['mouseover', ['$event']]
80
+ }], onMouseOut: [{
81
+ type: HostListener,
82
+ args: ['mouseout', ['$event']]
83
+ }] } });
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9pbnRlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3NyYy9saWIvdmZsb3cvZGlyZWN0aXZlcy9wb2ludGVyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUcsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbkMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7O0FBR2hFLE1BQU0sT0FBTyxnQkFBZ0I7SUFEN0I7UUFFWSxnQkFBVyxHQUFHLE1BQU0sQ0FBc0IsVUFBVSxDQUFDLENBQUMsYUFBYSxDQUFBO1FBQ25FLDZCQUF3QixHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFBO1FBR3ZELGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVMsQ0FBQTtRQUd2QyxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQVMsQ0FBQTtRQUd0QyxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFTLENBQUE7UUFHeEMsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFTLENBQUE7UUEyQnhDLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBRS9CLCtDQUErQztRQUNyQyxhQUFRLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFNBQVM7YUFDekQsSUFBSSxDQUNILE1BQU0sQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQ25ELEdBQUcsQ0FBQyxDQUFDLEVBQUUsYUFBYSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLEVBQy9ELGtCQUFrQixFQUFFLENBQ3JCO2FBQ0EsU0FBUyxFQUFFLENBQUE7UUFFSixpQkFBWSxHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxjQUFjO2FBQ2xFLElBQUksQ0FDSCxHQUFHLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsRUFBRSxFQUFFO1lBQ2hDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLENBQUE7UUFDbkQsQ0FBQyxDQUFDLEVBQ0Ysa0JBQWtCLEVBQUUsQ0FDckI7YUFDQSxTQUFTLEVBQUUsQ0FBQTtLQWdCZjtJQXpEVyxjQUFjLENBQUMsS0FBWTtRQUNuQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUU3QixJQUFJLEtBQUssWUFBWSxVQUFVLEVBQUU7WUFDL0IsSUFBSSxDQUFDLHdCQUF3QixDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUN0RDtJQUNILENBQUM7SUFHUyxZQUFZLENBQUMsS0FBWTtRQUNqQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUM3QixDQUFDO0lBR1MsV0FBVyxDQUFDLEtBQVk7UUFDaEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDOUIsQ0FBQztJQUdTLFVBQVUsQ0FBQyxLQUFZO1FBQy9CLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQzdCLENBQUM7SUFzQkQsd0NBQXdDO0lBQ2hDLHFCQUFxQixDQUFDLE1BQXNCLEVBQUUsS0FBaUI7UUFDckUsSUFBSSxNQUFNLEtBQUssSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUMvQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtZQUM1QixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztTQUM1QjthQUFNO1lBQ0wscUNBQXFDO1lBQ3JDLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRTtnQkFDdkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7YUFDNUI7WUFFRCxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztTQUM3QjtJQUNILENBQUM7K0dBMUVVLGdCQUFnQjttR0FBaEIsZ0JBQWdCOzs0RkFBaEIsZ0JBQWdCO2tCQUQ1QixTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLDJEQUEyRCxFQUFFOzhCQU14RSxXQUFXO3NCQURwQixNQUFNO2dCQUlHLFVBQVU7c0JBRG5CLE1BQU07Z0JBSUcsWUFBWTtzQkFEckIsTUFBTTtnQkFJRyxVQUFVO3NCQURuQixNQUFNO2dCQUtHLGNBQWM7c0JBRnZCLFlBQVk7dUJBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDOztzQkFDcEMsWUFBWTt1QkFBQyxZQUFZLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBVTVCLFlBQVk7c0JBRHJCLFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQU16QixXQUFXO3NCQURwQixZQUFZO3VCQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFNM0IsVUFBVTtzQkFEbkIsWUFBWTt1QkFBQyxVQUFVLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBPdXRwdXQsIGVmZmVjdCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmaWx0ZXIsIHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgUm9vdFBvaW50ZXJEaXJlY3RpdmUgfSBmcm9tICcuL3Jvb3QtcG9pbnRlci5kaXJlY3RpdmUnO1xuXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdbcG9pbnRlclN0YXJ0XSwgW3BvaW50ZXJFbmRdLCBbcG9pbnRlck92ZXJdLCBbcG9pbnRlck91dF0nIH0pXG5leHBvcnQgY2xhc3MgUG9pbnRlckRpcmVjdGl2ZSB7XG4gIHByb3RlY3RlZCBob3N0RWxlbWVudCA9IGluamVjdDxFbGVtZW50UmVmPEVsZW1lbnQ+PihFbGVtZW50UmVmKS5uYXRpdmVFbGVtZW50XG4gIHByb3RlY3RlZCBwb2ludGVyTW92ZW1lbnREaXJlY3RpdmUgPSBpbmplY3QoUm9vdFBvaW50ZXJEaXJlY3RpdmUpXG5cbiAgQE91dHB1dCgpXG4gIHByb3RlY3RlZCBwb2ludGVyT3ZlciA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnQ+KClcblxuICBAT3V0cHV0KClcbiAgcHJvdGVjdGVkIHBvaW50ZXJPdXQgPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50PigpXG5cbiAgQE91dHB1dCgpXG4gIHByb3RlY3RlZCBwb2ludGVyU3RhcnQgPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50PigpXG5cbiAgQE91dHB1dCgpXG4gIHByb3RlY3RlZCBwb2ludGVyRW5kID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKVxuXG4gIEBIb3N0TGlzdGVuZXIoJ21vdXNlZG93bicsIFsnJGV2ZW50J10pXG4gIEBIb3N0TGlzdGVuZXIoJ3RvdWNoc3RhcnQnLCBbJyRldmVudCddKVxuICBwcm90ZWN0ZWQgb25Qb2ludGVyU3RhcnQoZXZlbnQ6IEV2ZW50KSB7XG4gICAgdGhpcy5wb2ludGVyU3RhcnQuZW1pdChldmVudClcblxuICAgIGlmIChldmVudCBpbnN0YW5jZW9mIFRvdWNoRXZlbnQpIHtcbiAgICAgIHRoaXMucG9pbnRlck1vdmVtZW50RGlyZWN0aXZlLnNldEluaXRpYWxUb3VjaChldmVudCk7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignbW91c2V1cCcsIFsnJGV2ZW50J10pXG4gIHByb3RlY3RlZCBvblBvaW50ZXJFbmQoZXZlbnQ6IEV2ZW50KSB7XG4gICAgdGhpcy5wb2ludGVyRW5kLmVtaXQoZXZlbnQpXG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdtb3VzZW92ZXInLCBbJyRldmVudCddKVxuICBwcm90ZWN0ZWQgb25Nb3VzZU92ZXIoZXZlbnQ6IEV2ZW50KSB7XG4gICAgdGhpcy5wb2ludGVyT3Zlci5lbWl0KGV2ZW50KVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignbW91c2VvdXQnLCBbJyRldmVudCddKVxuICBwcm90ZWN0ZWQgb25Nb3VzZU91dChldmVudDogRXZlbnQpIHtcbiAgICB0aGlzLnBvaW50ZXJPdXQuZW1pdChldmVudClcbiAgfVxuXG4gIHByaXZhdGUgd2FzUG9pbnRlck92ZXIgPSBmYWxzZTtcblxuICAvLyBUT0RPIGNoZWNrIGlmIGkgY291bGQgYXZvaWQgZ2xvYmFsIHRvdWNoIGVuZFxuICBwcm90ZWN0ZWQgdG91Y2hFbmQgPSB0aGlzLnBvaW50ZXJNb3ZlbWVudERpcmVjdGl2ZS50b3VjaEVuZCRcbiAgICAucGlwZShcbiAgICAgIGZpbHRlcigoeyB0YXJnZXQgfSkgPT4gdGFyZ2V0ID09PSB0aGlzLmhvc3RFbGVtZW50KSxcbiAgICAgIHRhcCgoeyBvcmlnaW5hbEV2ZW50IH0pID0+IHRoaXMucG9pbnRlckVuZC5lbWl0KG9yaWdpbmFsRXZlbnQpKSxcbiAgICAgIHRha2VVbnRpbERlc3Ryb3llZCgpXG4gICAgKVxuICAgIC5zdWJzY3JpYmUoKVxuXG4gIHByb3RlY3RlZCB0b3VjaE92ZXJPdXQgPSB0aGlzLnBvaW50ZXJNb3ZlbWVudERpcmVjdGl2ZS50b3VjaE1vdmVtZW50JFxuICAgIC5waXBlKFxuICAgICAgdGFwKCh7IHRhcmdldCwgb3JpZ2luYWxFdmVudCB9KSA9PiB7XG4gICAgICAgIHRoaXMuaGFuZGxlVG91Y2hPdmVyQW5kT3V0KHRhcmdldCwgb3JpZ2luYWxFdmVudClcbiAgICAgIH0pLFxuICAgICAgdGFrZVVudGlsRGVzdHJveWVkKClcbiAgICApXG4gICAgLnN1YnNjcmliZSgpXG5cbiAgLy8gVE9ETzogZGlydHkgaW1wZXJhdGl2ZSBpbXBsZW1lbnRhdGlvblxuICBwcml2YXRlIGhhbmRsZVRvdWNoT3ZlckFuZE91dCh0YXJnZXQ6IEVsZW1lbnQgfCBudWxsLCBldmVudDogVG91Y2hFdmVudCkge1xuICAgIGlmICh0YXJnZXQgPT09IHRoaXMuaG9zdEVsZW1lbnQpIHtcbiAgICAgIHRoaXMucG9pbnRlck92ZXIuZW1pdChldmVudClcbiAgICAgIHRoaXMud2FzUG9pbnRlck92ZXIgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBzaG91bGQgbm90IGVtaXQgYmVmb3JlIHBvaW50ZXJPdmVyXG4gICAgICBpZiAodGhpcy53YXNQb2ludGVyT3Zlcikge1xuICAgICAgICB0aGlzLnBvaW50ZXJPdXQuZW1pdChldmVudClcbiAgICAgIH1cblxuICAgICAgdGhpcy53YXNQb2ludGVyT3ZlciA9IGZhbHNlO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -0,0 +1,42 @@
1
+ import { Directive, ElementRef, inject } from '@angular/core';
2
+ import { Subject, animationFrameScheduler, fromEvent, map, merge, observeOn, share, tap } from 'rxjs';
3
+ import * as i0 from "@angular/core";
4
+ export class RootPointerDirective {
5
+ constructor() {
6
+ this.host = inject(ElementRef).nativeElement;
7
+ this.initialTouch$ = new Subject();
8
+ // TODO: do not emit if mouse not down
9
+ this.mouseMovement$ = fromEvent(this.host, 'mousemove').pipe(map(event => ({
10
+ x: event.clientX,
11
+ y: event.clientY,
12
+ originalEvent: event
13
+ })), observeOn(animationFrameScheduler), share());
14
+ this.touchMovement$ = merge(this.initialTouch$, fromEvent(this.host, 'touchmove')).pipe(tap((event) => event.preventDefault()), map((originalEvent) => {
15
+ const x = originalEvent.touches[0]?.clientX ?? 0;
16
+ const y = originalEvent.touches[0]?.clientY ?? 0;
17
+ const target = document.elementFromPoint(x, y);
18
+ return { x, y, target, originalEvent };
19
+ }), observeOn(animationFrameScheduler), share());
20
+ this.touchEnd$ = fromEvent(this.host, 'touchend').pipe(map((originalEvent) => {
21
+ const x = originalEvent.changedTouches[0]?.clientX ?? 0;
22
+ const y = originalEvent.changedTouches[0]?.clientY ?? 0;
23
+ const target = document.elementFromPoint(x, y);
24
+ return { x, y, target, originalEvent };
25
+ }), share());
26
+ this.pointerMovement$ = merge(this.mouseMovement$, this.touchMovement$);
27
+ }
28
+ /**
29
+ * We should know when user started a touch in order to not
30
+ * show old touch position when connection creation is started
31
+ */
32
+ setInitialTouch(event) {
33
+ this.initialTouch$.next(event);
34
+ }
35
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RootPointerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
36
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: RootPointerDirective, selector: "svg[rootPointer]", ngImport: i0 }); }
37
+ }
38
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RootPointerDirective, decorators: [{
39
+ type: Directive,
40
+ args: [{ selector: 'svg[rootPointer]' }]
41
+ }] });
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9vdC1wb2ludGVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy9kaXJlY3RpdmVzL3Jvb3QtcG9pbnRlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBYyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBUSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBSXhILE1BQU0sT0FBTyxvQkFBb0I7SUFEakM7UUFFVSxTQUFJLEdBQUcsTUFBTSxDQUE0QixVQUFVLENBQUMsQ0FBQyxhQUFhLENBQUE7UUFFbEUsa0JBQWEsR0FBRyxJQUFJLE9BQU8sRUFBYyxDQUFBO1FBRWpELHNDQUFzQztRQUMvQixtQkFBYyxHQUFHLFNBQVMsQ0FBYSxJQUFJLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FDeEUsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNaLENBQUMsRUFBRSxLQUFLLENBQUMsT0FBTztZQUNoQixDQUFDLEVBQUUsS0FBSyxDQUFDLE9BQU87WUFDaEIsYUFBYSxFQUFFLEtBQUs7U0FDckIsQ0FBQyxDQUFDLEVBQ0gsU0FBUyxDQUFDLHVCQUF1QixDQUFDLEVBQ2xDLEtBQUssRUFBRSxDQUNvQixDQUFDO1FBRXZCLG1CQUFjLEdBQUcsS0FBSyxDQUMzQixJQUFJLENBQUMsYUFBYSxFQUNsQixTQUFTLENBQWEsSUFBSSxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FDOUMsQ0FBQyxJQUFJLENBQ0osR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUMsRUFDdEMsR0FBRyxDQUFDLENBQUMsYUFBYSxFQUFFLEVBQUU7WUFDcEIsTUFBTSxDQUFDLEdBQUcsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLElBQUksQ0FBQyxDQUFBO1lBQ2hELE1BQU0sQ0FBQyxHQUFHLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxJQUFJLENBQUMsQ0FBQTtZQUNoRCxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO1lBRTlDLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsQ0FBQTtRQUN4QyxDQUFDLENBQUMsRUFDRixTQUFTLENBQUMsdUJBQXVCLENBQUMsRUFDbEMsS0FBSyxFQUFFLENBQ29CLENBQUM7UUFFdkIsY0FBUyxHQUFHLFNBQVMsQ0FBYSxJQUFJLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FDbEUsR0FBRyxDQUFDLENBQUMsYUFBYSxFQUFFLEVBQUU7WUFDcEIsTUFBTSxDQUFDLEdBQUcsYUFBYSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLElBQUksQ0FBQyxDQUFBO1lBQ3ZELE1BQU0sQ0FBQyxHQUFHLGFBQWEsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxJQUFJLENBQUMsQ0FBQTtZQUN2RCxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO1lBRTlDLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsQ0FBQTtRQUN4QyxDQUFDLENBQUMsRUFDRixLQUFLLEVBQUUsQ0FDb0IsQ0FBQTtRQUV0QixxQkFBZ0IsR0FBRyxLQUFLLENBQzdCLElBQUksQ0FBQyxjQUFjLEVBQ25CLElBQUksQ0FBQyxjQUFjLENBQ3BCLENBQUE7S0FRRjtJQVBDOzs7T0FHRztJQUNJLGVBQWUsQ0FBQyxLQUFpQjtRQUN0QyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUNoQyxDQUFDOytHQXJEVSxvQkFBb0I7bUdBQXBCLG9CQUFvQjs7NEZBQXBCLG9CQUFvQjtrQkFEaEMsU0FBUzttQkFBQyxFQUFFLFFBQVEsRUFBRSxrQkFBa0IsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCBhbmltYXRpb25GcmFtZVNjaGVkdWxlciwgZnJvbUV2ZW50LCBtYXAsIG1lcmdlLCBvYnNlcnZlT24sIHNoYXJlLCBza2lwLCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFBvaW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9wb2ludC5pbnRlcmZhY2UnO1xuXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdzdmdbcm9vdFBvaW50ZXJdJyB9KVxuZXhwb3J0IGNsYXNzIFJvb3RQb2ludGVyRGlyZWN0aXZlIHtcbiAgcHJpdmF0ZSBob3N0ID0gaW5qZWN0PEVsZW1lbnRSZWY8U1ZHU1ZHRWxlbWVudD4+KEVsZW1lbnRSZWYpLm5hdGl2ZUVsZW1lbnRcblxuICBwcml2YXRlIGluaXRpYWxUb3VjaCQgPSBuZXcgU3ViamVjdDxUb3VjaEV2ZW50PigpXG5cbiAgLy8gVE9ETzogZG8gbm90IGVtaXQgaWYgbW91c2Ugbm90IGRvd25cbiAgcHVibGljIG1vdXNlTW92ZW1lbnQkID0gZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KHRoaXMuaG9zdCwgJ21vdXNlbW92ZScpLnBpcGUoXG4gICAgbWFwKGV2ZW50ID0+ICh7XG4gICAgICB4OiBldmVudC5jbGllbnRYLFxuICAgICAgeTogZXZlbnQuY2xpZW50WSxcbiAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2ZW50XG4gICAgfSkpLFxuICAgIG9ic2VydmVPbihhbmltYXRpb25GcmFtZVNjaGVkdWxlciksXG4gICAgc2hhcmUoKVxuICApIHNhdGlzZmllcyBPYnNlcnZhYmxlPFBvaW50PjtcblxuICBwdWJsaWMgdG91Y2hNb3ZlbWVudCQgPSBtZXJnZShcbiAgICB0aGlzLmluaXRpYWxUb3VjaCQsXG4gICAgZnJvbUV2ZW50PFRvdWNoRXZlbnQ+KHRoaXMuaG9zdCwgJ3RvdWNobW92ZScpXG4gICkucGlwZShcbiAgICB0YXAoKGV2ZW50KSA9PiBldmVudC5wcmV2ZW50RGVmYXVsdCgpKSxcbiAgICBtYXAoKG9yaWdpbmFsRXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IHggPSBvcmlnaW5hbEV2ZW50LnRvdWNoZXNbMF0/LmNsaWVudFggPz8gMFxuICAgICAgY29uc3QgeSA9IG9yaWdpbmFsRXZlbnQudG91Y2hlc1swXT8uY2xpZW50WSA/PyAwXG4gICAgICBjb25zdCB0YXJnZXQgPSBkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KHgsIHkpXG5cbiAgICAgIHJldHVybiB7IHgsIHksIHRhcmdldCwgb3JpZ2luYWxFdmVudCB9XG4gICAgfSksXG4gICAgb2JzZXJ2ZU9uKGFuaW1hdGlvbkZyYW1lU2NoZWR1bGVyKSxcbiAgICBzaGFyZSgpXG4gICkgc2F0aXNmaWVzIE9ic2VydmFibGU8UG9pbnQ+O1xuXG4gIHB1YmxpYyB0b3VjaEVuZCQgPSBmcm9tRXZlbnQ8VG91Y2hFdmVudD4odGhpcy5ob3N0LCAndG91Y2hlbmQnKS5waXBlKFxuICAgIG1hcCgob3JpZ2luYWxFdmVudCkgPT4ge1xuICAgICAgY29uc3QgeCA9IG9yaWdpbmFsRXZlbnQuY2hhbmdlZFRvdWNoZXNbMF0/LmNsaWVudFggPz8gMFxuICAgICAgY29uc3QgeSA9IG9yaWdpbmFsRXZlbnQuY2hhbmdlZFRvdWNoZXNbMF0/LmNsaWVudFkgPz8gMFxuICAgICAgY29uc3QgdGFyZ2V0ID0gZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludCh4LCB5KVxuXG4gICAgICByZXR1cm4geyB4LCB5LCB0YXJnZXQsIG9yaWdpbmFsRXZlbnQgfVxuICAgIH0pLFxuICAgIHNoYXJlKClcbiAgKSBzYXRpc2ZpZXMgT2JzZXJ2YWJsZTxQb2ludD5cblxuICBwdWJsaWMgcG9pbnRlck1vdmVtZW50JCA9IG1lcmdlKFxuICAgIHRoaXMubW91c2VNb3ZlbWVudCQsXG4gICAgdGhpcy50b3VjaE1vdmVtZW50JFxuICApXG4gIC8qKlxuICAgKiBXZSBzaG91bGQga25vdyB3aGVuIHVzZXIgc3RhcnRlZCBhIHRvdWNoIGluIG9yZGVyIHRvIG5vdFxuICAgKiBzaG93IG9sZCB0b3VjaCBwb3NpdGlvbiB3aGVuIGNvbm5lY3Rpb24gY3JlYXRpb24gaXMgc3RhcnRlZFxuICAgKi9cbiAgcHVibGljIHNldEluaXRpYWxUb3VjaChldmVudDogVG91Y2hFdmVudCkge1xuICAgIHRoaXMuaW5pdGlhbFRvdWNoJC5uZXh0KGV2ZW50KVxuICB9XG59XG4iXX0=
@@ -14,7 +14,7 @@ export class RootSvgContextDirective {
14
14
  }
15
15
  }
16
16
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RootSvgContextDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
17
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: RootSvgContextDirective, selector: "svg[rootSvgContext]", host: { listeners: { "document:mouseup": "resetConnection()" } }, ngImport: i0 }); }
17
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: RootSvgContextDirective, selector: "svg[rootSvgContext]", host: { listeners: { "document:mouseup": "resetConnection()", "document:touchend": "resetConnection()" } }, ngImport: i0 }); }
18
18
  }
19
19
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RootSvgContextDirective, decorators: [{
20
20
  type: Directive,
@@ -22,5 +22,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
22
22
  }], propDecorators: { resetConnection: [{
23
23
  type: HostListener,
24
24
  args: ['document:mouseup']
25
+ }, {
26
+ type: HostListener,
27
+ args: ['document:touchend']
25
28
  }] } });
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9vdC1zdmctY29udGV4dC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3NyYy9saWIvdmZsb3cvZGlyZWN0aXZlcy9yb290LXN2Zy1jb250ZXh0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUNBQWlDLENBQUM7O0FBRXBFLGlDQUFpQztBQUVqQyxNQUFNLE9BQU8sdUJBQXVCO0lBRHBDO1FBRVUsc0JBQWlCLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUE7S0FXdEQ7SUFUQyw2Q0FBNkM7SUFFbkMsZUFBZTtRQUN2QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxFQUFFLENBQUE7UUFFOUMsSUFBSSxNQUFNLENBQUMsS0FBSyxLQUFLLGtCQUFrQixFQUFFO1lBQ3ZDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQTtTQUN2QztJQUNILENBQUM7K0dBWFUsdUJBQXVCO21HQUF2Qix1QkFBdUI7OzRGQUF2Qix1QkFBdUI7a0JBRG5DLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUscUJBQXFCLEVBQUU7OEJBTWxDLGVBQWU7c0JBRHhCLFlBQVk7dUJBQUMsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBIb3N0TGlzdGVuZXIsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmxvd1N0YXR1c1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9mbG93LXN0YXR1cy5zZXJ2aWNlJztcblxuLy8gVE9ETzogdG9vIGdlbmVyYWwgcHVycG9zZSBuYW5lXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdzdmdbcm9vdFN2Z0NvbnRleHRdJyB9KVxuZXhwb3J0IGNsYXNzIFJvb3RTdmdDb250ZXh0RGlyZWN0aXZlIHtcbiAgcHJpdmF0ZSBmbG93U3RhdHVzU2VydmljZSA9IGluamVjdChGbG93U3RhdHVzU2VydmljZSlcblxuICAvLyBUT0RPOiBjaGVjayBmb3IgbXVsdGlwbGUgaW5zdGFuY2VzIG9uIHBhZ2VcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6bW91c2V1cCcpXG4gIHByb3RlY3RlZCByZXNldENvbm5lY3Rpb24oKSB7XG4gICAgY29uc3Qgc3RhdHVzID0gdGhpcy5mbG93U3RhdHVzU2VydmljZS5zdGF0dXMoKVxuXG4gICAgaWYgKHN0YXR1cy5zdGF0ZSA9PT0gJ2Nvbm5lY3Rpb24tc3RhcnQnKSB7XG4gICAgICB0aGlzLmZsb3dTdGF0dXNTZXJ2aWNlLnNldElkbGVTdGF0dXMoKVxuICAgIH1cbiAgfVxufVxuIl19
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9vdC1zdmctY29udGV4dC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3NyYy9saWIvdmZsb3cvZGlyZWN0aXZlcy9yb290LXN2Zy1jb250ZXh0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUNBQWlDLENBQUM7O0FBR3BFLGlDQUFpQztBQUVqQyxNQUFNLE9BQU8sdUJBQXVCO0lBRHBDO1FBRVUsc0JBQWlCLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUE7S0FZdEQ7SUFWQyw2Q0FBNkM7SUFHbkMsZUFBZTtRQUN2QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxFQUFFLENBQUE7UUFFOUMsSUFBSSxNQUFNLENBQUMsS0FBSyxLQUFLLGtCQUFrQixFQUFFO1lBQ3ZDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQTtTQUN2QztJQUNILENBQUM7K0dBWlUsdUJBQXVCO21HQUF2Qix1QkFBdUI7OzRGQUF2Qix1QkFBdUI7a0JBRG5DLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUscUJBQXFCLEVBQUU7OEJBT2xDLGVBQWU7c0JBRnhCLFlBQVk7dUJBQUMsa0JBQWtCOztzQkFDL0IsWUFBWTt1QkFBQyxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEhvc3RMaXN0ZW5lciwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGbG93U3RhdHVzU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2Zsb3ctc3RhdHVzLnNlcnZpY2UnO1xuXG5cbi8vIFRPRE86IHRvbyBnZW5lcmFsIHB1cnBvc2UgbmFuZVxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnc3ZnW3Jvb3RTdmdDb250ZXh0XScgfSlcbmV4cG9ydCBjbGFzcyBSb290U3ZnQ29udGV4dERpcmVjdGl2ZSB7XG4gIHByaXZhdGUgZmxvd1N0YXR1c1NlcnZpY2UgPSBpbmplY3QoRmxvd1N0YXR1c1NlcnZpY2UpXG5cbiAgLy8gVE9ETzogY2hlY2sgZm9yIG11bHRpcGxlIGluc3RhbmNlcyBvbiBwYWdlXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50Om1vdXNldXAnKVxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDp0b3VjaGVuZCcpXG4gIHByb3RlY3RlZCByZXNldENvbm5lY3Rpb24oKSB7XG4gICAgY29uc3Qgc3RhdHVzID0gdGhpcy5mbG93U3RhdHVzU2VydmljZS5zdGF0dXMoKVxuXG4gICAgaWYgKHN0YXR1cy5zdGF0ZSA9PT0gJ2Nvbm5lY3Rpb24tc3RhcnQnKSB7XG4gICAgICB0aGlzLmZsb3dTdGF0dXNTZXJ2aWNlLnNldElkbGVTdGF0dXMoKVxuICAgIH1cbiAgfVxufVxuIl19
@@ -0,0 +1,39 @@
1
+ import { Directive, HostListener, inject } from '@angular/core';
2
+ import { SelectionService } from '../services/selection.service';
3
+ import { EdgeComponent } from '../components/edge/edge.component';
4
+ import { NodeComponent } from '../components/node/node.component';
5
+ import { FlowSettingsService } from '../services/flow-settings.service';
6
+ import * as i0 from "@angular/core";
7
+ export class SelectableDirective {
8
+ constructor() {
9
+ this.flowSettingsService = inject(FlowSettingsService);
10
+ this.selectionService = inject(SelectionService);
11
+ this.parentEdge = inject(EdgeComponent, { optional: true });
12
+ this.parentNode = inject(NodeComponent, { optional: true });
13
+ }
14
+ onMousedown() {
15
+ const entity = this.entity();
16
+ if (entity && this.flowSettingsService.entitiesSelectable()) {
17
+ this.selectionService.select(entity);
18
+ }
19
+ }
20
+ entity() {
21
+ if (this.parentNode) {
22
+ return this.parentNode.nodeModel;
23
+ }
24
+ else if (this.parentEdge) {
25
+ return this.parentEdge.model;
26
+ }
27
+ return null;
28
+ }
29
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SelectableDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
30
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: SelectableDirective, selector: "[selectable]", host: { listeners: { "mousedown": "onMousedown()" } }, ngImport: i0 }); }
31
+ }
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SelectableDirective, decorators: [{
33
+ type: Directive,
34
+ args: [{ selector: '[selectable]' }]
35
+ }], propDecorators: { onMousedown: [{
36
+ type: HostListener,
37
+ args: ['mousedown']
38
+ }] } });
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0YWJsZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3NyYy9saWIvdmZsb3cvZGlyZWN0aXZlcy9zZWxlY3RhYmxlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDakUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBR2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7QUFHeEUsTUFBTSxPQUFPLG1CQUFtQjtJQURoQztRQUVVLHdCQUFtQixHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFBO1FBQ2pELHFCQUFnQixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO1FBQzNDLGVBQVUsR0FBRyxNQUFNLENBQUMsYUFBYSxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUE7UUFDdEQsZUFBVSxHQUFHLE1BQU0sQ0FBQyxhQUFhLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQTtLQW1CL0Q7SUFoQlcsV0FBVztRQUNuQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUE7UUFDNUIsSUFBSSxNQUFNLElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFDLGtCQUFrQixFQUFFLEVBQUU7WUFDM0QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQTtTQUNyQztJQUNILENBQUM7SUFFTyxNQUFNO1FBQ1osSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ25CLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUE7U0FDakM7YUFBTSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDMUIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQTtTQUM3QjtRQUVELE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQzsrR0F0QlUsbUJBQW1CO21HQUFuQixtQkFBbUI7OzRGQUFuQixtQkFBbUI7a0JBRC9CLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFOzhCQVEzQixXQUFXO3NCQURwQixZQUFZO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEhvc3RMaXN0ZW5lciwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTZWxlY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvc2VsZWN0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgRWRnZUNvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvZWRnZS9lZGdlLmNvbXBvbmVudCc7XG5cbmltcG9ydCB7IEZsb3dFbnRpdHkgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2Zsb3ctZW50aXR5LmludGVyZmFjZSc7XG5pbXBvcnQgeyBOb2RlQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9ub2RlL25vZGUuY29tcG9uZW50JztcbmltcG9ydCB7IEZsb3dTZXR0aW5nc1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9mbG93LXNldHRpbmdzLnNlcnZpY2UnO1xuXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdbc2VsZWN0YWJsZV0nIH0pXG5leHBvcnQgY2xhc3MgU2VsZWN0YWJsZURpcmVjdGl2ZSB7XG4gIHByaXZhdGUgZmxvd1NldHRpbmdzU2VydmljZSA9IGluamVjdChGbG93U2V0dGluZ3NTZXJ2aWNlKVxuICBwcml2YXRlIHNlbGVjdGlvblNlcnZpY2UgPSBpbmplY3QoU2VsZWN0aW9uU2VydmljZSlcbiAgcHJpdmF0ZSBwYXJlbnRFZGdlID0gaW5qZWN0KEVkZ2VDb21wb25lbnQsIHsgb3B0aW9uYWw6IHRydWUgfSlcbiAgcHJpdmF0ZSBwYXJlbnROb2RlID0gaW5qZWN0KE5vZGVDb21wb25lbnQsIHsgb3B0aW9uYWw6IHRydWUgfSlcblxuICBASG9zdExpc3RlbmVyKCdtb3VzZWRvd24nKVxuICBwcm90ZWN0ZWQgb25Nb3VzZWRvd24oKSB7XG4gICAgY29uc3QgZW50aXR5ID0gdGhpcy5lbnRpdHkoKVxuICAgIGlmIChlbnRpdHkgJiYgdGhpcy5mbG93U2V0dGluZ3NTZXJ2aWNlLmVudGl0aWVzU2VsZWN0YWJsZSgpKSB7XG4gICAgICB0aGlzLnNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0KGVudGl0eSlcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGVudGl0eSgpOiBGbG93RW50aXR5IHwgbnVsbCB7XG4gICAgaWYgKHRoaXMucGFyZW50Tm9kZSkge1xuICAgICAgcmV0dXJuIHRoaXMucGFyZW50Tm9kZS5ub2RlTW9kZWxcbiAgICB9IGVsc2UgaWYgKHRoaXMucGFyZW50RWRnZSkge1xuICAgICAgcmV0dXJuIHRoaXMucGFyZW50RWRnZS5tb2RlbFxuICAgIH1cblxuICAgIHJldHVybiBudWxsXG4gIH1cbn1cbiJdfQ==
@@ -1,23 +1,27 @@
1
1
  import { Directive, ElementRef, computed, inject } from '@angular/core';
2
2
  import { toSignal } from '@angular/core/rxjs-interop';
3
- import { fromEvent, map } from 'rxjs';
4
3
  import { RootSvgReferenceDirective } from './reference.directive';
4
+ import { RootPointerDirective } from './root-pointer.directive';
5
5
  import * as i0 from "@angular/core";
6
6
  export class SpacePointContextDirective {
7
7
  constructor() {
8
+ this.pointerMovementDirective = inject(RootPointerDirective);
9
+ this.rootSvg = inject(RootSvgReferenceDirective).element;
10
+ this.host = inject(ElementRef).nativeElement;
8
11
  /**
9
12
  * Signal with current mouse position in svg space
10
13
  */
11
14
  this.svgCurrentSpacePoint = computed(() => {
12
- const movement = this.mouseMovement();
15
+ const movement = this.pointerMovement();
16
+ if (!movement) {
17
+ return { x: 0, y: 0 };
18
+ }
13
19
  const point = this.rootSvg.createSVGPoint();
14
20
  point.x = movement.x;
15
21
  point.y = movement.y;
16
22
  return point.matrixTransform(this.host.getScreenCTM().inverse());
17
23
  });
18
- this.rootSvg = inject(RootSvgReferenceDirective).element;
19
- this.host = inject(ElementRef).nativeElement;
20
- this.mouseMovement = toSignal(fromEvent(this.rootSvg, 'mousemove').pipe(map(event => ({ x: event.clientX, y: event.clientY }))), { initialValue: { x: 0, y: 0 } });
24
+ this.pointerMovement = toSignal(this.pointerMovementDirective.pointerMovement$);
21
25
  }
22
26
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SpacePointContextDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
23
27
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: SpacePointContextDirective, selector: "g[spacePointContext]", ngImport: i0 }); }
@@ -26,4 +30,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
26
30
  type: Directive,
27
31
  args: [{ selector: 'g[spacePointContext]' }]
28
32
  }] });
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BhY2UtcG9pbnQtY29udGV4dC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3NyYy9saWIvdmZsb3cvZGlyZWN0aXZlcy9zcGFjZS1wb2ludC1jb250ZXh0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBVSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBYSxNQUFNLE1BQU0sQ0FBQztBQUNqRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFJbEUsTUFBTSxPQUFPLDBCQUEwQjtJQUR2QztRQUVFOztXQUVHO1FBQ0kseUJBQW9CLEdBQWtCLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDekQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFBO1lBRXJDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUE7WUFDM0MsS0FBSyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFBO1lBQ3BCLEtBQUssQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQTtZQUVwQixPQUFPLEtBQUssQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFBO1FBQ25FLENBQUMsQ0FBQyxDQUFBO1FBRU0sWUFBTyxHQUFHLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLE9BQU8sQ0FBQTtRQUNuRCxTQUFJLEdBQUcsTUFBTSxDQUEwQixVQUFVLENBQUMsQ0FBQyxhQUFhLENBQUE7UUFFaEUsa0JBQWEsR0FBRyxRQUFRLENBQzlCLFNBQVMsQ0FBYSxJQUFJLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FDbkQsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUN2RCxFQUNELEVBQUUsWUFBWSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FDakMsQ0FBQTtLQUNGOytHQXZCWSwwQkFBMEI7bUdBQTFCLDBCQUEwQjs7NEZBQTFCLDBCQUEwQjtrQkFEdEMsU0FBUzttQkFBQyxFQUFFLFFBQVEsRUFBRSxzQkFBc0IsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgU2lnbmFsLCBjb21wdXRlZCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IGZyb21FdmVudCwgbWFwLCBzdGFydFdpdGggfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFJvb3RTdmdSZWZlcmVuY2VEaXJlY3RpdmUgfSBmcm9tICcuL3JlZmVyZW5jZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgUG9pbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3BvaW50LmludGVyZmFjZSc7XG5cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ2dbc3BhY2VQb2ludENvbnRleHRdJyB9KVxuZXhwb3J0IGNsYXNzIFNwYWNlUG9pbnRDb250ZXh0RGlyZWN0aXZlIHtcbiAgLyoqXG4gICAqIFNpZ25hbCB3aXRoIGN1cnJlbnQgbW91c2UgcG9zaXRpb24gaW4gc3ZnIHNwYWNlXG4gICAqL1xuICBwdWJsaWMgc3ZnQ3VycmVudFNwYWNlUG9pbnQ6IFNpZ25hbDxQb2ludD4gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgbW92ZW1lbnQgPSB0aGlzLm1vdXNlTW92ZW1lbnQoKVxuXG4gICAgY29uc3QgcG9pbnQgPSB0aGlzLnJvb3RTdmcuY3JlYXRlU1ZHUG9pbnQoKVxuICAgIHBvaW50LnggPSBtb3ZlbWVudC54XG4gICAgcG9pbnQueSA9IG1vdmVtZW50LnlcblxuICAgIHJldHVybiBwb2ludC5tYXRyaXhUcmFuc2Zvcm0odGhpcy5ob3N0LmdldFNjcmVlbkNUTSgpIS5pbnZlcnNlKCkpXG4gIH0pXG5cbiAgcHJpdmF0ZSByb290U3ZnID0gaW5qZWN0KFJvb3RTdmdSZWZlcmVuY2VEaXJlY3RpdmUpLmVsZW1lbnRcbiAgcHJpdmF0ZSBob3N0ID0gaW5qZWN0PEVsZW1lbnRSZWY8U1ZHR0VsZW1lbnQ+PihFbGVtZW50UmVmKS5uYXRpdmVFbGVtZW50XG5cbiAgcHJpdmF0ZSBtb3VzZU1vdmVtZW50ID0gdG9TaWduYWwoXG4gICAgZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KHRoaXMucm9vdFN2ZywgJ21vdXNlbW92ZScpLnBpcGUoXG4gICAgICBtYXAoZXZlbnQgPT4gKHsgeDogZXZlbnQuY2xpZW50WCwgeTogZXZlbnQuY2xpZW50WSB9KSksXG4gICAgKSxcbiAgICB7IGluaXRpYWxWYWx1ZTogeyB4OiAwLCB5OiAwIH0gfVxuICApXG59XG4iXX0=
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BhY2UtcG9pbnQtY29udGV4dC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3NyYy9saWIvdmZsb3cvZGlyZWN0aXZlcy9zcGFjZS1wb2ludC1jb250ZXh0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBVSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVsRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7QUFHaEUsTUFBTSxPQUFPLDBCQUEwQjtJQUR2QztRQUVVLDZCQUF3QixHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFBO1FBQ3ZELFlBQU8sR0FBRyxNQUFNLENBQUMseUJBQXlCLENBQUMsQ0FBQyxPQUFPLENBQUE7UUFDbkQsU0FBSSxHQUFHLE1BQU0sQ0FBMEIsVUFBVSxDQUFDLENBQUMsYUFBYSxDQUFBO1FBRXhFOztXQUVHO1FBQ0kseUJBQW9CLEdBQWtCLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDekQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFBO1lBRXZDLElBQUksQ0FBQyxRQUFRLEVBQUU7Z0JBQ2IsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFBO2FBQ3RCO1lBRUQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQTtZQUMzQyxLQUFLLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUE7WUFDcEIsS0FBSyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFBO1lBRXBCLE9BQU8sS0FBSyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUE7UUFDbkUsQ0FBQyxDQUFDLENBQUE7UUFFSyxvQkFBZSxHQUFHLFFBQVEsQ0FDL0IsSUFBSSxDQUFDLHdCQUF3QixDQUFDLGdCQUFnQixDQUMvQyxDQUFBO0tBQ0Y7K0dBekJZLDBCQUEwQjttR0FBMUIsMEJBQTBCOzs0RkFBMUIsMEJBQTBCO2tCQUR0QyxTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLHNCQUFzQixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBTaWduYWwsIGNvbXB1dGVkLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgUm9vdFN2Z1JlZmVyZW5jZURpcmVjdGl2ZSB9IGZyb20gJy4vcmVmZXJlbmNlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBQb2ludCB9IGZyb20gJy4uL2ludGVyZmFjZXMvcG9pbnQuaW50ZXJmYWNlJztcbmltcG9ydCB7IFJvb3RQb2ludGVyRGlyZWN0aXZlIH0gZnJvbSAnLi9yb290LXBvaW50ZXIuZGlyZWN0aXZlJztcblxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnZ1tzcGFjZVBvaW50Q29udGV4dF0nIH0pXG5leHBvcnQgY2xhc3MgU3BhY2VQb2ludENvbnRleHREaXJlY3RpdmUge1xuICBwcml2YXRlIHBvaW50ZXJNb3ZlbWVudERpcmVjdGl2ZSA9IGluamVjdChSb290UG9pbnRlckRpcmVjdGl2ZSlcbiAgcHJpdmF0ZSByb290U3ZnID0gaW5qZWN0KFJvb3RTdmdSZWZlcmVuY2VEaXJlY3RpdmUpLmVsZW1lbnRcbiAgcHJpdmF0ZSBob3N0ID0gaW5qZWN0PEVsZW1lbnRSZWY8U1ZHR0VsZW1lbnQ+PihFbGVtZW50UmVmKS5uYXRpdmVFbGVtZW50XG5cbiAgLyoqXG4gICAqIFNpZ25hbCB3aXRoIGN1cnJlbnQgbW91c2UgcG9zaXRpb24gaW4gc3ZnIHNwYWNlXG4gICAqL1xuICBwdWJsaWMgc3ZnQ3VycmVudFNwYWNlUG9pbnQ6IFNpZ25hbDxQb2ludD4gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgbW92ZW1lbnQgPSB0aGlzLnBvaW50ZXJNb3ZlbWVudCgpXG5cbiAgICBpZiAoIW1vdmVtZW50KSB7XG4gICAgICByZXR1cm4geyB4OiAwLCB5OiAwIH1cbiAgICB9XG5cbiAgICBjb25zdCBwb2ludCA9IHRoaXMucm9vdFN2Zy5jcmVhdGVTVkdQb2ludCgpXG4gICAgcG9pbnQueCA9IG1vdmVtZW50LnhcbiAgICBwb2ludC55ID0gbW92ZW1lbnQueVxuXG4gICAgcmV0dXJuIHBvaW50Lm1hdHJpeFRyYW5zZm9ybSh0aGlzLmhvc3QuZ2V0U2NyZWVuQ1RNKCkhLmludmVyc2UoKSlcbiAgfSlcblxuICBwdWJsaWMgcG9pbnRlck1vdmVtZW50ID0gdG9TaWduYWwoXG4gICAgdGhpcy5wb2ludGVyTW92ZW1lbnREaXJlY3RpdmUucG9pbnRlck1vdmVtZW50JCxcbiAgKVxufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy1lbnRpdHkuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZmbG93LWxpYi9zcmMvbGliL3ZmbG93L2ludGVyZmFjZXMvZmxvdy1lbnRpdHkuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTaWduYWwsIFdyaXRhYmxlU2lnbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcblxuZXhwb3J0IGludGVyZmFjZSBGbG93RW50aXR5IHtcbiAgc2VsZWN0ZWQ6IFdyaXRhYmxlU2lnbmFsPGJvb2xlYW4+XG59XG4iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUtY29udGV4dC5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3NyYy9saWIvdmZsb3cvaW50ZXJmYWNlcy90ZW1wbGF0ZS1jb250ZXh0LmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2lnbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIlxuaW1wb3J0IHsgRWRnZSB9IGZyb20gXCIuL2VkZ2UuaW50ZXJmYWNlXCJcblxuZXhwb3J0IGludGVyZmFjZSBFZGdlQ29udGV4dCB7XG4gICRpbXBsaWNpdDoge1xuICAgIGVkZ2U6IEVkZ2VcbiAgICBwYXRoOiBTaWduYWw8c3RyaW5nPlxuICAgIG1hcmtlclN0YXJ0OiBTaWduYWw8c3RyaW5nPlxuICAgIG1hcmtlckVuZDogU2lnbmFsPHN0cmluZz5cbiAgfVxufVxuIl19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUtY29udGV4dC5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3NyYy9saWIvdmZsb3cvaW50ZXJmYWNlcy90ZW1wbGF0ZS1jb250ZXh0LmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2lnbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIlxuaW1wb3J0IHsgRWRnZSB9IGZyb20gXCIuL2VkZ2UuaW50ZXJmYWNlXCJcblxuZXhwb3J0IGludGVyZmFjZSBFZGdlQ29udGV4dCB7XG4gICRpbXBsaWNpdDoge1xuICAgIGVkZ2U6IEVkZ2VcbiAgICBwYXRoOiBTaWduYWw8c3RyaW5nPlxuICAgIG1hcmtlclN0YXJ0OiBTaWduYWw8c3RyaW5nPlxuICAgIG1hcmtlckVuZDogU2lnbmFsPHN0cmluZz5cbiAgICBzZWxlY3RlZDogU2lnbmFsPGJvb2xlYW4+XG4gIH1cbn1cbiJdfQ==
@@ -8,6 +8,8 @@ export class EdgeModel {
8
8
  this.edge = edge;
9
9
  this.source = signal(undefined);
10
10
  this.target = signal(undefined);
11
+ this.selected = signal(false);
12
+ this.selected$ = toObservable(this.selected);
11
13
  this.detached = computed(() => {
12
14
  const source = this.source();
13
15
  const target = this.target();
@@ -84,4 +86,4 @@ export class EdgeModel {
84
86
  this.usingPoints = [!!this.edgeLabels.start, !!this.edgeLabels.center, !!this.edgeLabels.end];
85
87
  }
86
88
  }
87
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRnZS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy9tb2RlbHMvZWRnZS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdqRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzlELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUczRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFMUQsTUFBTSxPQUFPLFNBQVM7SUFzRnBCLFlBQW1CLElBQVU7UUFBVixTQUFJLEdBQUosSUFBSSxDQUFNO1FBckZ0QixXQUFNLEdBQUcsTUFBTSxDQUF3QixTQUFTLENBQUMsQ0FBQTtRQUNqRCxXQUFNLEdBQUcsTUFBTSxDQUF3QixTQUFTLENBQUMsQ0FBQTtRQUlqRCxhQUFRLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUM5QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUE7WUFDNUIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFBO1lBRTVCLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxNQUFNLEVBQUU7Z0JBQ3RCLE9BQU8sSUFBSSxDQUFBO2FBQ1o7WUFFRCxJQUFJLGtCQUFrQixHQUFHLEtBQUssQ0FBQTtZQUM5QixJQUFJLGtCQUFrQixHQUFHLEtBQUssQ0FBQTtZQUU5QixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFO2dCQUMxQixrQkFBa0IsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRTtxQkFDcEMsSUFBSSxD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QUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUMvRixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb21wdXRlZCwgc2lnbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEVkZ2VMYWJlbFBvc2l0aW9uIH0gZnJvbSBcIi4uL2ludGVyZmFjZXMvZWRnZS1sYWJlbC5pbnRlcmZhY2VcIjtcbmltcG9ydCB7IEVkZ2UsIEN1cnZlLCBFZGdlVHlwZSB9IGZyb20gXCIuLi9pbnRlcmZhY2VzL2VkZ2UuaW50ZXJmYWNlXCI7XG5pbXBvcnQgeyBFZGdlTGFiZWxNb2RlbCB9IGZyb20gXCIuL2VkZ2UtbGFiZWwubW9kZWxcIjtcbmltcG9ydCB7IE5vZGVNb2RlbCB9IGZyb20gXCIuL25vZGUubW9kZWxcIjtcbmltcG9ydCB7IHN0cmFpZ2h0UGF0aCB9IGZyb20gXCIuLi9tYXRoL2VkZ2UtcGF0aC9zdHJhaWdoLXBhdGhcIjtcbmltcG9ydCB7IGJlemllclBhdGggfSBmcm9tIFwiLi4vbWF0aC9lZGdlLXBhdGgvYmV6aWVyLXBhdGhcIjtcbmltcG9ydCB7IFVzaW5nUG9pbnRzIH0gZnJvbSBcIi4uL3R5cGVzL3VzaW5nLXBvaW50cy50eXBlXCI7XG5pbXBvcnQgeyBIYW5kbGVNb2RlbCB9IGZyb20gXCIuL2hhbmRsZS5tb2RlbFwiO1xuaW1wb3J0IHsgdG9PYnNlcnZhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wXCI7XG5cbmV4cG9ydCBjbGFzcyBFZGdlTW9kZWwge1xuICBwdWJsaWMgc291cmNlID0gc2lnbmFsPE5vZGVNb2RlbCB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKVxuICBwdWJsaWMgdGFyZ2V0ID0gc2lnbmFsPE5vZGVNb2RlbCB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKVxuICBwdWJsaWMgY3VydmU6IEN1cnZlXG4gIHB1YmxpYyB0eXBlOiBFZGdlVHlwZVxuXG4gIHB1YmxpYyBkZXRhY2hlZCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBzb3VyY2UgPSB0aGlzLnNvdXJjZSgpXG4gICAgY29uc3QgdGFyZ2V0ID0gdGhpcy50YXJnZXQoKVxuXG4gICAgaWYgKCFzb3VyY2UgfHwgIXRhcmdldCkge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG5cbiAgICBsZXQgZXhpc3RzU291cmNlSGFuZGxlID0gZmFsc2VcbiAgICBsZXQgZXhpc3RzVGFyZ2V0SGFuZGxlID0gZmFsc2VcblxuICAgIGlmICh0aGlzLmVkZ2Uuc291cmNlSGFuZGxlKSB7XG4gICAgICBleGlzdHNTb3VyY2VIYW5kbGUgPSAhIXNvdXJjZS5oYW5kbGVzKClcbiAgICAgICAgLmZpbmQoaGFuZGxlID0+IGhhbmRsZS5yYXdIYW5kbGUuaWQgPT09IHRoaXMuZWRnZS5zb3VyY2VIYW5kbGUpXG4gICAgfSBlbHNlIHtcbiAgICAgIGV4aXN0c1NvdXJjZUhhbmRsZSA9ICEhc291cmNlLmhhbmRsZXMoKVxuICAgICAgICAuZmluZChoYW5kbGUgPT4gaGFuZGxlLnJhd0hhbmRsZS50eXBlID09PSAnc291cmNlJylcbiAgICB9XG5cbiAgICBpZiAodGhpcy5lZGdlLnRhcmdldEhhbmRsZSkge1xuICAgICAgZXhpc3RzVGFyZ2V0SGFuZGxlID0gISF0YXJnZXQuaGFuZGxlcygpXG4gICAgICAgIC5maW5kKGhhbmRsZSA9PiBoYW5kbGUucmF3SGFuZGxlLmlkID09PSB0aGlzLmVkZ2UudGFyZ2V0SGFuZGxlKVxuICAgIH0gZWxzZSB7XG4gICAgICBleGlzdHNUYXJnZXRIYW5kbGUgPSAhIXRhcmdldC5oYW5kbGVzKClcbiAgICAgICAgLmZpbmQoaGFuZGxlID0+IGhhbmRsZS5yYXdIYW5kbGUudHlwZSA9PT0gJ3RhcmdldCcpXG4gICAgfVxuXG4gICAgcmV0dXJuICFleGlzdHNTb3VyY2VIYW5kbGUgfHwgIWV4aXN0c1RhcmdldEhhbmRsZVxuICB9KVxuXG4gIHB1YmxpYyBkZXRhY2hlZCQgPSB0b09ic2VydmFibGUodGhpcy5kZXRhY2hlZClcblxuICBwdWJsaWMgcGF0aCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBsZXQgc291cmNlOiBIYW5kbGVNb2RlbCB8IHVuZGVmaW5lZFxuICAgIGlmICh0aGlzLmVkZ2Uuc291cmNlSGFuZGxlKSB7XG4gICAgICBzb3VyY2UgPSB0aGlzLnNvdXJjZSgpPy5oYW5kbGVzKClcbiAgICAgICAgLmZpbmQoaGFuZGxlID0+IGhhbmRsZS5yYXdIYW5kbGUuaWQgPT09IHRoaXMuZWRnZS5zb3VyY2VIYW5kbGUpXG4gICAgfSBlbHNlIHtcbiAgICAgIHNvdXJjZSA9IHRoaXMuc291cmNlKCk/LmhhbmRsZXMoKVxuICAgICAgICAuZmluZChoYW5kbGUgPT4gaGFuZGxlLnJhd0hhbmRsZS50eXBlID09PSAnc291cmNlJylcbiAgICB9XG5cbiAgICBsZXQgdGFyZ2V0OiBIYW5kbGVNb2RlbCB8IHVuZGVmaW5lZFxuICAgIGlmICh0aGlzLmVkZ2UudGFyZ2V0SGFuZGxlKSB7XG4gICAgICB0YXJnZXQgPSB0aGlzLnRhcmdldCgpPy5oYW5kbGVzKClcbiAgICAgICAgLmZpbmQoaGFuZGxlID0+IGhhbmRsZS5yYXdIYW5kbGUuaWQgPT09IHRoaXMuZWRnZS50YXJnZXRIYW5kbGUpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRhcmdldCA9IHRoaXMudGFyZ2V0KCk/LmhhbmRsZXMoKVxuICAgICAgICAuZmluZChoYW5kbGUgPT4gaGFuZGxlLnJhd0hhbmRsZS50eXBlID09PSAndGFyZ2V0JylcbiAgICB9XG5cbiAgICAvLyBUT0RPOiBkb24ndCBsaWtlIHRoaXNcbiAgICBpZiAoIXNvdXJjZSB8fCAhdGFyZ2V0KSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBwYXRoOiAnJyxcbiAgICAgICAgcG9pbnRzOiB7XG4gICAgICAgICAgc3RhcnQ6IHsgeDogMCwgeTogMCB9LFxuICAgICAgICAgIGNlbnRlcjogeyB4OiAwLCB5OiAwIH0sXG4gICAgICAgICAgZW5kOiB7IHg6IDAsIHk6IDAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgc3dpdGNoICh0aGlzLmN1cnZlKSB7XG4gICAgICBjYXNlICdzdHJhaWdodCc6XG4gICAgICAgIHJldHVybiBzdHJhaWdodFBhdGgoc291cmNlLnBvaW50QWJzb2x1dGUoKSwgdGFyZ2V0LnBvaW50QWJzb2x1dGUoKSwgdGhpcy51c2luZ1BvaW50cylcbiAgICAgIGNhc2UgJ2Jlemllcic6XG4gICAgICAgIHJldHVybiBiZXppZXJQYXRoKFxuICAgICAgICAgIHNvdXJjZS5wb2ludEFic29sdXRlKCksIHRhcmdldC5wb2ludEFic29sdXRlKCksXG4gICAgICAgICAgc291cmNlLnJhd0hhbmRsZS5wb3NpdGlvbixcbiAgICAgICAgICB0YXJnZXQucmF3SGFuZGxlLnBvc2l0aW9uLFxuICAgICAgICAgIHRoaXMudXNpbmdQb2ludHNcbiAgICAgICAgKVxuICAgIH1cbiAgfSlcblxuICBwdWJsaWMgZWRnZUxhYmVsczogeyBbcG9zaXRpb24gaW4gRWRnZUxhYmVsUG9zaXRpb25dPzogRWRnZUxhYmVsTW9kZWwgfSA9IHt9XG5cbiAgcHJpdmF0ZSB1c2luZ1BvaW50czogVXNpbmdQb2ludHNcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZWRnZTogRWRnZSkge1xuICAgIHRoaXMudHlwZSA9IGVkZ2UudHlwZSA/PyAnZGVmYXVsdCdcbiAgICB0aGlzLmN1cnZlID0gZWRnZS5jdXJ2ZSA/PyAnYmV6aWVyJ1xuXG4gICAgaWYgKGVkZ2UuZWRnZUxhYmVscz8uc3RhcnQpIHRoaXMuZWRnZUxhYmVscy5zdGFydCA9IG5ldyBFZGdlTGFiZWxNb2RlbChlZGdlLmVkZ2VMYWJlbHMuc3RhcnQpXG4gICAgaWYgKGVkZ2UuZWRnZUxhYmVscz8uY2VudGVyKSB0aGlzLmVkZ2VMYWJlbHMuY2VudGVyID0gbmV3IEVkZ2VMYWJlbE1vZGVsKGVkZ2UuZWRnZUxhYmVscy5jZW50ZXIpXG4gICAgaWYgKGVkZ2UuZWRnZUxhYmVscz8uZW5kKSB0aGlzLmVkZ2VMYWJlbHMuZW5kID0gbmV3IEVkZ2VMYWJlbE1vZGVsKGVkZ2UuZWRnZUxhYmVscy5lbmQpXG5cbiAgICB0aGlzLnVzaW5nUG9pbnRzID0gWyEhdGhpcy5lZGdlTGFiZWxzLnN0YXJ0LCAhIXRoaXMuZWRnZUxhYmVscy5jZW50ZXIsICEhdGhpcy5lZGdlTGFiZWxzLmVuZF1cbiAgfVxufVxuIl19
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRnZS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy9tb2RlbHMvZWRnZS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWtCLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHakUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXBELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFHM0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRzFELE1BQU0sT0FBTyxTQUFTO0lBeUZwQixZQUFtQixJQUFVO1FBQVYsU0FBSSxHQUFKLElBQUksQ0FBTTtRQXhGdEIsV0FBTSxHQUFHLE1BQU0sQ0FBd0IsU0FBUyxDQUFDLENBQUE7UUFDakQsV0FBTSxHQUFHLE1BQU0sQ0FBd0IsU0FBUyxDQUFDLENBQUE7UUFJakQsYUFBUSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QixjQUFTLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUV4QyxhQUFRLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUM5QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUE7WUFDNUIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFBO1lBRTVCLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxNQUFNLEVBQUU7Z0JBQ3RCLE9BQU8sSUFBSSxDQUFBO2FBQ1o7WUFFRCxJQUFJLGtCQUFrQixHQUFHLEtBQUssQ0FBQTtZQUM5QixJQUFJLGtCQUFrQixHQUFHLEtBQUssQ0FBQTtZQUU5QixJQUFJ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LENBQUMsQ0FBQTtRQUV2RixJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUMvRixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBXcml0YWJsZVNpZ25hbCwgY29tcHV0ZWQsIHNpZ25hbCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBFZGdlTGFiZWxQb3NpdGlvbiB9IGZyb20gXCIuLi9pbnRlcmZhY2VzL2VkZ2UtbGFiZWwuaW50ZXJmYWNlXCI7XG5pbXBvcnQgeyBFZGdlLCBDdXJ2ZSwgRWRnZVR5cGUgfSBmcm9tIFwiLi4vaW50ZXJmYWNlcy9lZGdlLmludGVyZmFjZVwiO1xuaW1wb3J0IHsgRWRnZUxhYmVsTW9kZWwgfSBmcm9tIFwiLi9lZGdlLWxhYmVsLm1vZGVsXCI7XG5pbXBvcnQgeyBOb2RlTW9kZWwgfSBmcm9tIFwiLi9ub2RlLm1vZGVsXCI7XG5pbXBvcnQgeyBzdHJhaWdodFBhdGggfSBmcm9tIFwiLi4vbWF0aC9lZGdlLXBhdGgvc3RyYWlnaC1wYXRoXCI7XG5pbXBvcnQgeyBiZXppZXJQYXRoIH0gZnJvbSBcIi4uL21hdGgvZWRnZS1wYXRoL2Jlemllci1wYXRoXCI7XG5pbXBvcnQgeyBVc2luZ1BvaW50cyB9IGZyb20gXCIuLi90eXBlcy91c2luZy1wb2ludHMudHlwZVwiO1xuaW1wb3J0IHsgSGFuZGxlTW9kZWwgfSBmcm9tIFwiLi9oYW5kbGUubW9kZWxcIjtcbmltcG9ydCB7IHRvT2JzZXJ2YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcFwiO1xuaW1wb3J0IHsgRmxvd0VudGl0eSB9IGZyb20gXCIuLi9pbnRlcmZhY2VzL2Zsb3ctZW50aXR5LmludGVyZmFjZVwiO1xuXG5leHBvcnQgY2xhc3MgRWRnZU1vZGVsIGltcGxlbWVudHMgRmxvd0VudGl0eSB7XG4gIHB1YmxpYyBzb3VyY2UgPSBzaWduYWw8Tm9kZU1vZGVsIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpXG4gIHB1YmxpYyB0YXJnZXQgPSBzaWduYWw8Tm9kZU1vZGVsIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpXG4gIHB1YmxpYyBjdXJ2ZTogQ3VydmVcbiAgcHVibGljIHR5cGU6IEVkZ2VUeXBlXG5cbiAgcHVibGljIHNlbGVjdGVkID0gc2lnbmFsKGZhbHNlKTtcbiAgcHVibGljIHNlbGVjdGVkJCA9IHRvT2JzZXJ2YWJsZSh0aGlzLnNlbGVjdGVkKTtcblxuICBwdWJsaWMgZGV0YWNoZWQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3Qgc291cmNlID0gdGhpcy5zb3VyY2UoKVxuICAgIGNvbnN0IHRhcmdldCA9IHRoaXMudGFyZ2V0KClcblxuICAgIGlmICghc291cmNlIHx8ICF0YXJnZXQpIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuXG4gICAgbGV0IGV4aXN0c1NvdXJjZUhhbmRsZSA9IGZhbHNlXG4gICAgbGV0IGV4aXN0c1RhcmdldEhhbmRsZSA9IGZhbHNlXG5cbiAgICBpZiAodGhpcy5lZGdlLnNvdXJjZUhhbmRsZSkge1xuICAgICAgZXhpc3RzU291cmNlSGFuZGxlID0gISFzb3VyY2UuaGFuZGxlcygpXG4gICAgICAgIC5maW5kKGhhbmRsZSA9PiBoYW5kbGUucmF3SGFuZGxlLmlkID09PSB0aGlzLmVkZ2Uuc291cmNlSGFuZGxlKVxuICAgIH0gZWxzZSB7XG4gICAgICBleGlzdHNTb3VyY2VIYW5kbGUgPSAhIXNvdXJjZS5oYW5kbGVzKClcbiAgICAgICAgLmZpbmQoaGFuZGxlID0+IGhhbmRsZS5yYXdIYW5kbGUudHlwZSA9PT0gJ3NvdXJjZScpXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZWRnZS50YXJnZXRIYW5kbGUpIHtcbiAgICAgIGV4aXN0c1RhcmdldEhhbmRsZSA9ICEhdGFyZ2V0LmhhbmRsZXMoKVxuICAgICAgICAuZmluZChoYW5kbGUgPT4gaGFuZGxlLnJhd0hhbmRsZS5pZCA9PT0gdGhpcy5lZGdlLnRhcmdldEhhbmRsZSlcbiAgICB9IGVsc2Uge1xuICAgICAgZXhpc3RzVGFyZ2V0SGFuZGxlID0gISF0YXJnZXQuaGFuZGxlcygpXG4gICAgICAgIC5maW5kKGhhbmRsZSA9PiBoYW5kbGUucmF3SGFuZGxlLnR5cGUgPT09ICd0YXJnZXQnKVxuICAgIH1cblxuICAgIHJldHVybiAhZXhpc3RzU291cmNlSGFuZGxlIHx8ICFleGlzdHNUYXJnZXRIYW5kbGVcbiAgfSlcblxuICBwdWJsaWMgZGV0YWNoZWQkID0gdG9PYnNlcnZhYmxlKHRoaXMuZGV0YWNoZWQpXG5cbiAgcHVibGljIHBhdGggPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgbGV0IHNvdXJjZTogSGFuZGxlTW9kZWwgfCB1bmRlZmluZWRcbiAgICBpZiAodGhpcy5lZGdlLnNvdXJjZUhhbmRsZSkge1xuICAgICAgc291cmNlID0gdGhpcy5zb3VyY2UoKT8uaGFuZGxlcygpXG4gICAgICAgIC5maW5kKGhhbmRsZSA9PiBoYW5kbGUucmF3SGFuZGxlLmlkID09PSB0aGlzLmVkZ2Uuc291cmNlSGFuZGxlKVxuICAgIH0gZWxzZSB7XG4gICAgICBzb3VyY2UgPSB0aGlzLnNvdXJjZSgpPy5oYW5kbGVzKClcbiAgICAgICAgLmZpbmQoaGFuZGxlID0+IGhhbmRsZS5yYXdIYW5kbGUudHlwZSA9PT0gJ3NvdXJjZScpXG4gICAgfVxuXG4gICAgbGV0IHRhcmdldDogSGFuZGxlTW9kZWwgfCB1bmRlZmluZWRcbiAgICBpZiAodGhpcy5lZGdlLnRhcmdldEhhbmRsZSkge1xuICAgICAgdGFyZ2V0ID0gdGhpcy50YXJnZXQoKT8uaGFuZGxlcygpXG4gICAgICAgIC5maW5kKGhhbmRsZSA9PiBoYW5kbGUucmF3SGFuZGxlLmlkID09PSB0aGlzLmVkZ2UudGFyZ2V0SGFuZGxlKVxuICAgIH0gZWxzZSB7XG4gICAgICB0YXJnZXQgPSB0aGlzLnRhcmdldCgpPy5oYW5kbGVzKClcbiAgICAgICAgLmZpbmQoaGFuZGxlID0+IGhhbmRsZS5yYXdIYW5kbGUudHlwZSA9PT0gJ3RhcmdldCcpXG4gICAgfVxuXG4gICAgLy8gVE9ETzogZG9uJ3QgbGlrZSB0aGlzXG4gICAgaWYgKCFzb3VyY2UgfHwgIXRhcmdldCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcGF0aDogJycsXG4gICAgICAgIHBvaW50czoge1xuICAgICAgICAgIHN0YXJ0OiB7IHg6IDAsIHk6IDAgfSxcbiAgICAgICAgICBjZW50ZXI6IHsgeDogMCwgeTogMCB9LFxuICAgICAgICAgIGVuZDogeyB4OiAwLCB5OiAwIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHN3aXRjaCAodGhpcy5jdXJ2ZSkge1xuICAgICAgY2FzZSAnc3RyYWlnaHQnOlxuICAgICAgICByZXR1cm4gc3RyYWlnaHRQYXRoKHNvdXJjZS5wb2ludEFic29sdXRlKCksIHRhcmdldC5wb2ludEFic29sdXRlKCksIHRoaXMudXNpbmdQb2ludHMpXG4gICAgICBjYXNlICdiZXppZXInOlxuICAgICAgICByZXR1cm4gYmV6aWVyUGF0aChcbiAgICAgICAgICBzb3VyY2UucG9pbnRBYnNvbHV0ZSgpLCB0YXJnZXQucG9pbnRBYnNvbHV0ZSgpLFxuICAgICAgICAgIHNvdXJjZS5yYXdIYW5kbGUucG9zaXRpb24sXG4gICAgICAgICAgdGFyZ2V0LnJhd0hhbmRsZS5wb3NpdGlvbixcbiAgICAgICAgICB0aGlzLnVzaW5nUG9pbnRzXG4gICAgICAgIClcbiAgICB9XG4gIH0pXG5cbiAgcHVibGljIGVkZ2VMYWJlbHM6IHsgW3Bvc2l0aW9uIGluIEVkZ2VMYWJlbFBvc2l0aW9uXT86IEVkZ2VMYWJlbE1vZGVsIH0gPSB7fVxuXG4gIHByaXZhdGUgdXNpbmdQb2ludHM6IFVzaW5nUG9pbnRzXG5cbiAgY29uc3RydWN0b3IocHVibGljIGVkZ2U6IEVkZ2UpIHtcbiAgICB0aGlzLnR5cGUgPSBlZGdlLnR5cGUgPz8gJ2RlZmF1bHQnXG4gICAgdGhpcy5jdXJ2ZSA9IGVkZ2UuY3VydmUgPz8gJ2JlemllcidcblxuICAgIGlmIChlZGdlLmVkZ2VMYWJlbHM/LnN0YXJ0KSB0aGlzLmVkZ2VMYWJlbHMuc3RhcnQgPSBuZXcgRWRnZUxhYmVsTW9kZWwoZWRnZS5lZGdlTGFiZWxzLnN0YXJ0KVxuICAgIGlmIChlZGdlLmVkZ2VMYWJlbHM/LmNlbnRlcikgdGhpcy5lZGdlTGFiZWxzLmNlbnRlciA9IG5ldyBFZGdlTGFiZWxNb2RlbChlZGdlLmVkZ2VMYWJlbHMuY2VudGVyKVxuICAgIGlmIChlZGdlLmVkZ2VMYWJlbHM/LmVuZCkgdGhpcy5lZGdlTGFiZWxzLmVuZCA9IG5ldyBFZGdlTGFiZWxNb2RlbChlZGdlLmVkZ2VMYWJlbHMuZW5kKVxuXG4gICAgdGhpcy51c2luZ1BvaW50cyA9IFshIXRoaXMuZWRnZUxhYmVscy5zdGFydCwgISF0aGlzLmVkZ2VMYWJlbHMuY2VudGVyLCAhIXRoaXMuZWRnZUxhYmVscy5lbmRdXG4gIH1cbn1cbiJdfQ==
@@ -1,16 +1,21 @@
1
- import { computed, signal } from '@angular/core';
1
+ import { computed, inject, signal } from '@angular/core';
2
2
  import { isDefined } from '../utils/is-defined';
3
3
  import { toObservable } from '@angular/core/rxjs-interop';
4
+ import { FlowSettingsService } from '../services/flow-settings.service';
4
5
  export class NodeModel {
5
6
  constructor(node) {
6
7
  this.node = node;
8
+ this.flowSettingsService = inject(FlowSettingsService);
7
9
  this.point = signal({ x: 0, y: 0 });
8
10
  this.point$ = toObservable(this.point);
9
11
  this.size = signal({ width: 0, height: 0 });
12
+ this.renderOrder = signal(0);
13
+ this.selected = signal(false);
14
+ this.selected$ = toObservable(this.selected);
10
15
  this.pointTransform = computed(() => `translate(${this.point().x}, ${this.point().y})`);
11
16
  // Now source and handle positions derived from parent flow
12
- this.sourcePosition = computed(() => this.flow.handlePositions().source);
13
- this.targetPosition = computed(() => this.flow.handlePositions().target);
17
+ this.sourcePosition = computed(() => this.flowSettingsService.handlePositions().source);
18
+ this.targetPosition = computed(() => this.flowSettingsService.handlePositions().target);
14
19
  this.handles = signal([]);
15
20
  this.handles$ = toObservable(this.handles);
16
21
  this.draggable = true;
@@ -20,13 +25,5 @@ export class NodeModel {
20
25
  if (isDefined(node.draggable))
21
26
  this.draggable = node.draggable;
22
27
  }
23
- /**
24
- * Bind parent flow model to node
25
- *
26
- * @param flow parent flow
27
- */
28
- bindFlow(flow) {
29
- this.flow = flow;
30
- }
31
28
  }
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy9tb2RlbHMvbm9kZS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUdoRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFBO0FBR3pELE1BQU0sT0FBTyxTQUFTO0lBd0JwQixZQUNTLElBQWE7UUFBYixTQUFJLEdBQUosSUFBSSxDQUFTO1FBeEJmLFVBQUssR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFBO1FBRTlCLFdBQU0sR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBRWpDLFNBQUksR0FBRyxNQUFNLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFBO1FBRXRDLG1CQUFjLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLGFBQWEsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUV6RiwyREFBMkQ7UUFDcEQsbUJBQWMsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUNuRSxtQkFBYyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBRW5FLFlBQU8sR0FBRyxNQUFNLENBQWdCLEVBQUUsQ0FBQyxDQUFBO1FBRW5DLGFBQVEsR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBRXJDLGNBQVMsR0FBRyxJQUFJLENBQUE7UUFFdkIscUNBQXFDO1FBQ3JCLGlCQUFZLEdBQUcsRUFBRSxDQUFBO1FBTy9CLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUUxQixJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQUUsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFBO0lBQ2hFLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksUUFBUSxDQUFDLElBQWU7UUFDN0IsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUE7SUFDbEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29tcHV0ZWQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBOb2RlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9ub2RlLmludGVyZmFjZSdcbmltcG9ydCB7IEZsb3dNb2RlbCB9IGZyb20gJy4vZmxvdy5tb2RlbCdcbmltcG9ydCB7IGlzRGVmaW5lZCB9IGZyb20gJy4uL3V0aWxzL2lzLWRlZmluZWQnXG5pbXBvcnQgeyB0b09ic2VydmFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCdcbmltcG9ydCB7IEhhbmRsZU1vZGVsIH0gZnJvbSAnLi9oYW5kbGUubW9kZWwnXG5cbmV4cG9ydCBjbGFzcyBOb2RlTW9kZWw8VCA9IHVua25vd24+IHtcbiAgcHVibGljIHBvaW50ID0gc2lnbmFsKHsgeDogMCwgeTogMCB9KVxuXG4gIHB1YmxpYyBwb2ludCQgPSB0b09ic2VydmFibGUodGhpcy5wb2ludClcblxuICBwdWJsaWMgc2l6ZSA9IHNpZ25hbCh7IHdpZHRoOiAwLCBoZWlnaHQ6IDAgfSlcblxuICBwdWJsaWMgcG9pbnRUcmFuc2Zvcm0gPSBjb21wdXRlZCgoKSA9PiBgdHJhbnNsYXRlKCR7dGhpcy5wb2ludCgpLnh9LCAke3RoaXMucG9pbnQoKS55fSlgKVxuXG4gIC8vIE5vdyBzb3VyY2UgYW5kIGhhbmRsZSBwb3NpdGlvbnMgZGVyaXZlZCBmcm9tIHBhcmVudCBmbG93XG4gIHB1YmxpYyBzb3VyY2VQb3NpdGlvbiA9IGNvbXB1dGVkKCgpID0+IHRoaXMuZmxvdy5oYW5kbGVQb3NpdGlvbnMoKS5zb3VyY2UpXG4gIHB1YmxpYyB0YXJnZXRQb3NpdGlvbiA9IGNvbXB1dGVkKCgpID0+IHRoaXMuZmxvdy5oYW5kbGVQb3NpdGlvbnMoKS50YXJnZXQpXG5cbiAgcHVibGljIGhhbmRsZXMgPSBzaWduYWw8SGFuZGxlTW9kZWxbXT4oW10pXG5cbiAgcHVibGljIGhhbmRsZXMkID0gdG9PYnNlcnZhYmxlKHRoaXMuaGFuZGxlcylcblxuICBwdWJsaWMgZHJhZ2dhYmxlID0gdHJ1ZVxuXG4gIC8vIGRpc2FibGVkIGZvciBjb25maWd1cmF0aW9uIGZvciBub3dcbiAgcHVibGljIHJlYWRvbmx5IG1hZ25ldFJhZGl1cyA9IDIwXG5cbiAgcHJpdmF0ZSBmbG93ITogRmxvd01vZGVsXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIG5vZGU6IE5vZGU8VD5cbiAgKSB7XG4gICAgdGhpcy5wb2ludC5zZXQobm9kZS5wb2ludClcblxuICAgIGlmIChpc0RlZmluZWQobm9kZS5kcmFnZ2FibGUpKSB0aGlzLmRyYWdnYWJsZSA9IG5vZGUuZHJhZ2dhYmxlXG4gIH1cblxuICAvKipcbiAgICogQmluZCBwYXJlbnQgZmxvdyBtb2RlbCB0byBub2RlXG4gICAqXG4gICAqIEBwYXJhbSBmbG93IHBhcmVudCBmbG93XG4gICAqL1xuICBwdWJsaWMgYmluZEZsb3coZmxvdzogRmxvd01vZGVsKSB7XG4gICAgdGhpcy5mbG93ID0gZmxvd1xuICB9XG59XG4iXX0=
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy9tb2RlbHMvbm9kZS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFFeEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQy9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQTtBQUd6RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQTtBQUV2RSxNQUFNLE9BQU8sU0FBUztJQTZCcEIsWUFDUyxJQUFhO1FBQWIsU0FBSSxHQUFKLElBQUksQ0FBUztRQTdCZCx3QkFBbUIsR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQTtRQUVsRCxVQUFLLEdBQUcsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUU5QixXQUFNLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUVqQyxTQUFJLEdBQUcsTUFBTSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUV0QyxnQkFBVyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUV2QixhQUFRLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ3hCLGNBQVMsR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBRXZDLG1CQUFjLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLGFBQWEsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUV6RiwyREFBMkQ7UUFDcEQsbUJBQWMsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGVBQWUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQ2xGLG1CQUFjLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUVsRixZQUFPLEdBQUcsTUFBTSxDQUFnQixFQUFFLENBQUMsQ0FBQTtRQUVuQyxhQUFRLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUVyQyxjQUFTLEdBQUcsSUFBSSxDQUFBO1FBRXZCLHFDQUFxQztRQUNyQixpQkFBWSxHQUFHLEVBQUUsQ0FBQTtRQUsvQixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7UUFFMUIsSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUFFLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQTtJQUNoRSxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb21wdXRlZCwgaW5qZWN0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgTm9kZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvbm9kZS5pbnRlcmZhY2UnXG5pbXBvcnQgeyBpc0RlZmluZWQgfSBmcm9tICcuLi91dGlscy9pcy1kZWZpbmVkJ1xuaW1wb3J0IHsgdG9PYnNlcnZhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnXG5pbXBvcnQgeyBIYW5kbGVNb2RlbCB9IGZyb20gJy4vaGFuZGxlLm1vZGVsJ1xuaW1wb3J0IHsgRmxvd0VudGl0eSB9IGZyb20gJy4uL2ludGVyZmFjZXMvZmxvdy1lbnRpdHkuaW50ZXJmYWNlJ1xuaW1wb3J0IHsgRmxvd1NldHRpbmdzU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2Zsb3ctc2V0dGluZ3Muc2VydmljZSdcblxuZXhwb3J0IGNsYXNzIE5vZGVNb2RlbDxUID0gdW5rbm93bj4gaW1wbGVtZW50cyBGbG93RW50aXR5IHtcbiAgcHJpdmF0ZSBmbG93U2V0dGluZ3NTZXJ2aWNlID0gaW5qZWN0KEZsb3dTZXR0aW5nc1NlcnZpY2UpXG5cbiAgcHVibGljIHBvaW50ID0gc2lnbmFsKHsgeDogMCwgeTogMCB9KVxuXG4gIHB1YmxpYyBwb2ludCQgPSB0b09ic2VydmFibGUodGhpcy5wb2ludClcblxuICBwdWJsaWMgc2l6ZSA9IHNpZ25hbCh7IHdpZHRoOiAwLCBoZWlnaHQ6IDAgfSlcblxuICBwdWJsaWMgcmVuZGVyT3JkZXIgPSBzaWduYWwoMClcblxuICBwdWJsaWMgc2VsZWN0ZWQgPSBzaWduYWwoZmFsc2UpXG4gIHB1YmxpYyBzZWxlY3RlZCQgPSB0b09ic2VydmFibGUodGhpcy5zZWxlY3RlZClcblxuICBwdWJsaWMgcG9pbnRUcmFuc2Zvcm0gPSBjb21wdXRlZCgoKSA9PiBgdHJhbnNsYXRlKCR7dGhpcy5wb2ludCgpLnh9LCAke3RoaXMucG9pbnQoKS55fSlgKVxuXG4gIC8vIE5vdyBzb3VyY2UgYW5kIGhhbmRsZSBwb3NpdGlvbnMgZGVyaXZlZCBmcm9tIHBhcmVudCBmbG93XG4gIHB1YmxpYyBzb3VyY2VQb3NpdGlvbiA9IGNvbXB1dGVkKCgpID0+IHRoaXMuZmxvd1NldHRpbmdzU2VydmljZS5oYW5kbGVQb3NpdGlvbnMoKS5zb3VyY2UpXG4gIHB1YmxpYyB0YXJnZXRQb3NpdGlvbiA9IGNvbXB1dGVkKCgpID0+IHRoaXMuZmxvd1NldHRpbmdzU2VydmljZS5oYW5kbGVQb3NpdGlvbnMoKS50YXJnZXQpXG5cbiAgcHVibGljIGhhbmRsZXMgPSBzaWduYWw8SGFuZGxlTW9kZWxbXT4oW10pXG5cbiAgcHVibGljIGhhbmRsZXMkID0gdG9PYnNlcnZhYmxlKHRoaXMuaGFuZGxlcylcblxuICBwdWJsaWMgZHJhZ2dhYmxlID0gdHJ1ZVxuXG4gIC8vIGRpc2FibGVkIGZvciBjb25maWd1cmF0aW9uIGZvciBub3dcbiAgcHVibGljIHJlYWRvbmx5IG1hZ25ldFJhZGl1cyA9IDIwXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIG5vZGU6IE5vZGU8VD5cbiAgKSB7XG4gICAgdGhpcy5wb2ludC5zZXQobm9kZS5wb2ludClcblxuICAgIGlmIChpc0RlZmluZWQobm9kZS5kcmFnZ2FibGUpKSB0aGlzLmRyYWdnYWJsZSA9IG5vZGUuZHJhZ2dhYmxlXG4gIH1cbn1cbiJdfQ==
@@ -28,7 +28,11 @@ export class EdgeChangesService {
28
28
  .pipe(pairwise(), map(([oldList, newList]) => {
29
29
  return oldList.filter(edge => !newList.includes(edge));
30
30
  }), filter(edges => !!edges.length), map((edges) => edges.map(({ edge }) => ({ type: 'remove', id: edge.id }))));
31
- this.changes$ = merge(this.edgeDetachedChange$, this.edgeAddChange$, this.edgeRemoveChange$)
31
+ this.edgeSelectChange$ = toObservable(this.entitiesService.edges)
32
+ .pipe(switchMap((edges) => merge(...edges.map(edge => edge.selected$.pipe(distinctUntilChanged(), skip(1), map(() => edge))))), map((changedEdge) => [
33
+ { type: 'select', id: changedEdge.edge.id, selected: changedEdge.selected() }
34
+ ]));
35
+ this.changes$ = merge(this.edgeDetachedChange$, this.edgeAddChange$, this.edgeRemoveChange$, this.edgeSelectChange$)
32
36
  .pipe(
33
37
  // this fixes the case when user gets 'deteched' changes
34
38
  // and tries to delete these edges inside stream
@@ -42,4 +46,4 @@ export class EdgeChangesService {
42
46
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EdgeChangesService, decorators: [{
43
47
  type: Injectable
44
48
  }] });
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRnZS1jaGFuZ2VzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3NyYy9saWIvdmZsb3cvc2VydmljZXMvZWRnZS1jaGFuZ2VzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQWMsY0FBYyxFQUFpQixvQkFBb0IsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQU8sR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNKLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFHMUQsTUFBTSxnQkFBZ0IsR0FBRyxDQUFJLENBQU0sRUFBRSxDQUFNLEVBQUUsRUFBRSxDQUM3QyxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxNQUFNO0lBQ3JCLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FDOUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FDckUsQ0FBQztBQUdKLE1BQU0sT0FBTyxrQkFBa0I7SUFEL0I7UUFFWSxvQkFBZSxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFBO1FBRTdDLHdCQUFtQixHQUFHLEtBQUssQ0FDbkMsWUFBWSxDQUNWLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDWixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxDQUFBO1lBQzFDLE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFBO1lBRW5ELE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FDekMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRyxDQUFDLENBQ3pELENBQUE7UUFDSCxDQUFDLENBQUMsQ0FDSCxFQUNELFlBQVksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FDM0MsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDbEIsT0FBTyxHQUFHLENBQ1IsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDbEQsQ0FBQTtRQUNILENBQUMsQ0FBQyxFQUNGLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQy9DLG1DQUFtQztRQUNuQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQ1IsQ0FDRixDQUFDLElBQUk7UUFDSixvRUFBb0U7UUFDcEUsbURBQW1EO1FBQ25ELG9CQUFvQixDQUFDLGdCQUFnQixDQUFDLEVBQ3RDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQy9CLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQ1osS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUM3RCxDQUNpQyxDQUFBO1FBRTFCLG1CQUFjLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDO2FBQ2hFLElBQUksQ0FDSCxRQUFRLEVBQUUsRUFDVixHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsRUFBRSxFQUFFO1lBQ3pCLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO1FBQ3hELENBQUMsQ0FBQyxFQUNGLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQy9CLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQ1osS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUN4RCxDQUNpQyxDQUFBO1FBRTVCLHNCQUFpQixHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQzthQUNuRSxJQUFJLENBQ0gsUUFBUSxFQUFFLEVBQ1YsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLEVBQUUsRUFBRTtZQUN6QixPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtRQUN4RCxDQUFDLENBQUMsRUFDRixNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUMvQixHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUNaLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FDM0QsQ0FDaUMsQ0FBQTtRQUV0QixhQUFRLEdBQTZCLEtBQUssQ0FDeEQsSUFBSSxDQUFDLG1CQUFtQixFQUN4QixJQUFJLENBQUMsY0FBYyxFQUNuQixJQUFJLENBQUMsaUJBQWlCLENBQ3ZCO2FBQ0UsSUFBSTtRQUNILHdEQUF3RDtRQUN4RCxnREFBZ0Q7UUFDaEQsK0RBQStEO1FBQy9ELG1DQUFtQztRQUNuQyxTQUFTLENBQUMsY0FBYyxDQUFDLENBQzFCLENBQUE7S0FDSjsrR0F0RVksa0JBQWtCO21IQUFsQixrQkFBa0I7OzRGQUFsQixrQkFBa0I7a0JBRDlCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBjb21wdXRlZCwgaW5qZWN0LCB1bnRyYWNrZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZsb3dFbnRpdGllc1NlcnZpY2UgfSBmcm9tICcuL2Zsb3ctZW50aXRpZXMuc2VydmljZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBhc3luY1NjaGVkdWxlciwgY29tYmluZUxhdGVzdCwgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgbWFwLCBtZXJnZSwgb2JzZXJ2ZU9uLCBwYWlyd2lzZSwgc2tpcCwgc3dpdGNoTWFwLCB0YXAsIHppcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdG9PYnNlcnZhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgRWRnZUNoYW5nZSB9IGZyb20gJy4uL3R5cGVzL2VkZ2UtY2hhbmdlLnR5cGUnO1xuXG5jb25zdCBoYXZlU2FtZUNvbnRlbnRzID0gPFQ+KGE6IFRbXSwgYjogVFtdKSA9PlxuICBhLmxlbmd0aCA9PT0gYi5sZW5ndGggJiZcbiAgWy4uLm5ldyBTZXQoWy4uLmEsIC4uLmJdKV0uZXZlcnkoXG4gICAgdiA9PiBhLmZpbHRlcihlID0+IGUgPT09IHYpLmxlbmd0aCA9PT0gYi5maWx0ZXIoZSA9PiBlID09PSB2KS5sZW5ndGhcbiAgKTtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEVkZ2VDaGFuZ2VzU2VydmljZSB7XG4gIHByb3RlY3RlZCBlbnRpdGllc1NlcnZpY2UgPSBpbmplY3QoRmxvd0VudGl0aWVzU2VydmljZSlcblxuICBwcm90ZWN0ZWQgZWRnZURldGFjaGVkQ2hhbmdlJCA9IG1lcmdlKFxuICAgIHRvT2JzZXJ2YWJsZShcbiAgICAgIGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgY29uc3Qgbm9kZXMgPSB0aGlzLmVudGl0aWVzU2VydmljZS5ub2RlcygpXG4gICAgICAgIGNvbnN0IGVkZ2VzID0gdW50cmFja2VkKHRoaXMuZW50aXRpZXNTZXJ2aWNlLmVkZ2VzKVxuXG4gICAgICAgIHJldHVybiBlZGdlcy5maWx0ZXIoKHsgc291cmNlLCB0YXJnZXQgfSkgPT5cbiAgICAgICAgICAhbm9kZXMuaW5jbHVkZXMoc291cmNlKCkhKSB8fCAhbm9kZXMuaW5jbHVkZXModGFyZ2V0KCkhKVxuICAgICAgICApXG4gICAgICB9KVxuICAgICksXG4gICAgdG9PYnNlcnZhYmxlKHRoaXMuZW50aXRpZXNTZXJ2aWNlLmVkZ2VzKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKChlZGdlcykgPT4ge1xuICAgICAgICByZXR1cm4gemlwKFxuICAgICAgICAgIC4uLmVkZ2VzLm1hcChlID0+IGUuZGV0YWNoZWQkLnBpcGUobWFwKCgpID0+IGUpKSlcbiAgICAgICAgKVxuICAgICAgfSksXG4gICAgICBtYXAoKGVkZ2VzKSA9PiBlZGdlcy5maWx0ZXIoZSA9PiBlLmRldGFjaGVkKCkpKSxcbiAgICAgIC8vIFRPRE8gY2hlY2sgd2h5IHRoZXJlIGFyZSAyIGVtaXRzXG4gICAgICBza2lwKDIpLFxuICAgIClcbiAgKS5waXBlKFxuICAgIC8vIGhlcmUgd2UgY2hlY2sgaWYgMiBhcHByb2FjaGVzIHRvIGRldGVjdCBkZXRhY2hlZCBlZGdlcyBlbWl0cyBzYW1lXG4gICAgLy8gYW5kIHNhbWUgdmFsdWVzICh0aGlzIG1heSBoYXBwZW4gb24gbm9kZSBkZWxldGUpXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoaGF2ZVNhbWVDb250ZW50cyksXG4gICAgZmlsdGVyKGVkZ2VzID0+ICEhZWRnZXMubGVuZ3RoKSxcbiAgICBtYXAoKGVkZ2VzKSA9PlxuICAgICAgZWRnZXMubWFwKCh7IGVkZ2UgfSkgPT4gKHsgdHlwZTogJ2RldGFjaGVkJywgaWQ6IGVkZ2UuaWQgfSkpXG4gICAgKVxuICApIHNhdGlzZmllcyBPYnNlcnZhYmxlPEVkZ2VDaGFuZ2VbXT5cblxuICBwcm90ZWN0ZWQgZWRnZUFkZENoYW5nZSQgPSB0b09ic2VydmFibGUodGhpcy5lbnRpdGllc1NlcnZpY2UuZWRnZXMpXG4gICAgLnBpcGUoXG4gICAgICBwYWlyd2lzZSgpLFxuICAgICAgbWFwKChbb2xkTGlzdCwgbmV3TGlzdF0pID0+IHtcbiAgICAgICAgcmV0dXJuIG5ld0xpc3QuZmlsdGVyKGVkZ2UgPT4gIW9sZExpc3QuaW5jbHVkZXMoZWRnZSkpXG4gICAgICB9KSxcbiAgICAgIGZpbHRlcihlZGdlcyA9PiAhIWVkZ2VzLmxlbmd0aCksXG4gICAgICBtYXAoKGVkZ2VzKSA9PlxuICAgICAgICBlZGdlcy5tYXAoKHsgZWRnZSB9KSA9PiAoeyB0eXBlOiAnYWRkJywgaWQ6IGVkZ2UuaWQgfSkpXG4gICAgICApXG4gICAgKSBzYXRpc2ZpZXMgT2JzZXJ2YWJsZTxFZGdlQ2hhbmdlW10+XG5cbiAgcHJvdGVjdGVkIGVkZ2VSZW1vdmVDaGFuZ2UkID0gdG9PYnNlcnZhYmxlKHRoaXMuZW50aXRpZXNTZXJ2aWNlLmVkZ2VzKVxuICAgIC5waXBlKFxuICAgICAgcGFpcndpc2UoKSxcbiAgICAgIG1hcCgoW29sZExpc3QsIG5ld0xpc3RdKSA9PiB7XG4gICAgICAgIHJldHVybiBvbGRMaXN0LmZpbHRlcihlZGdlID0+ICFuZXdMaXN0LmluY2x1ZGVzKGVkZ2UpKVxuICAgICAgfSksXG4gICAgICBmaWx0ZXIoZWRnZXMgPT4gISFlZGdlcy5sZW5ndGgpLFxuICAgICAgbWFwKChlZGdlcykgPT5cbiAgICAgICAgZWRnZXMubWFwKCh7IGVkZ2UgfSkgPT4gKHsgdHlwZTogJ3JlbW92ZScsIGlkOiBlZGdlLmlkIH0pKVxuICAgICAgKVxuICAgICkgc2F0aXNmaWVzIE9ic2VydmFibGU8RWRnZUNoYW5nZVtdPlxuXG4gIHB1YmxpYyByZWFkb25seSBjaGFuZ2VzJDogT2JzZXJ2YWJsZTxFZGdlQ2hhbmdlW10+ID0gbWVyZ2UoXG4gICAgdGhpcy5lZGdlRGV0YWNoZWRDaGFuZ2UkLFxuICAgIHRoaXMuZWRnZUFkZENoYW5nZSQsXG4gICAgdGhpcy5lZGdlUmVtb3ZlQ2hhbmdlJFxuICApXG4gICAgLnBpcGUoXG4gICAgICAvLyB0aGlzIGZpeGVzIHRoZSBjYXNlIHdoZW4gdXNlciBnZXRzICdkZXRlY2hlZCcgY2hhbmdlc1xuICAgICAgLy8gYW5kIHRyaWVzIHRvIGRlbGV0ZSB0aGVzZSBlZGdlcyBpbnNpZGUgc3RyZWFtXG4gICAgICAvLyBhbmd1bGFyIG1heSBpZ25vcmUgdGhpcyBjaGFuZ2UgYmVjYXVzZSBbZWRnZXNdIGlucHV0IGNoYW5nZWRcbiAgICAgIC8vIHJpZ2h0IGFmdGVyIFtub2Rlc10gaW5wdXQgY2hhbmdlXG4gICAgICBvYnNlcnZlT24oYXN5bmNTY2hlZHVsZXIpLFxuICAgIClcbn1cbiJdfQ==
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRnZS1jaGFuZ2VzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3NyYy9saWIvdmZsb3cvc2VydmljZXMvZWRnZS1jaGFuZ2VzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQWMsY0FBYyxFQUFpQixvQkFBb0IsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQU8sR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNKLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFHMUQsTUFBTSxnQkFBZ0IsR0FBRyxDQUFJLENBQU0sRUFBRSxDQUFNLEVBQUUsRUFBRSxDQUM3QyxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxNQUFNO0lBQ3JCLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FDOUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FDckUsQ0FBQztBQUdKLE1BQU0sT0FBTyxrQkFBa0I7SUFEL0I7UUFFWSxvQkFBZSxHQUFHLE1BQU0sQ0FBQyxtQkFB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LElBQUk7UUFDSCx3REFBd0Q7UUFDeEQsZ0RBQWdEO1FBQ2hELCtEQUErRDtRQUMvRCxtQ0FBbUM7UUFDbkMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxDQUMxQixDQUFBO0tBQ0o7K0dBekZZLGtCQUFrQjttSEFBbEIsa0JBQWtCOzs0RkFBbEIsa0JBQWtCO2tCQUQ5QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgY29tcHV0ZWQsIGluamVjdCwgdW50cmFja2VkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGbG93RW50aXRpZXNTZXJ2aWNlIH0gZnJvbSAnLi9mbG93LWVudGl0aWVzLnNlcnZpY2UnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgYXN5bmNTY2hlZHVsZXIsIGNvbWJpbmVMYXRlc3QsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIG1hcCwgbWVyZ2UsIG9ic2VydmVPbiwgcGFpcndpc2UsIHNraXAsIHN3aXRjaE1hcCwgdGFwLCB6aXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRvT2JzZXJ2YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IEVkZ2VDaGFuZ2UgfSBmcm9tICcuLi90eXBlcy9lZGdlLWNoYW5nZS50eXBlJztcblxuY29uc3QgaGF2ZVNhbWVDb250ZW50cyA9IDxUPihhOiBUW10sIGI6IFRbXSkgPT5cbiAgYS5sZW5ndGggPT09IGIubGVuZ3RoICYmXG4gIFsuLi5uZXcgU2V0KFsuLi5hLCAuLi5iXSldLmV2ZXJ5KFxuICAgIHYgPT4gYS5maWx0ZXIoZSA9PiBlID09PSB2KS5sZW5ndGggPT09IGIuZmlsdGVyKGUgPT4gZSA9PT0gdikubGVuZ3RoXG4gICk7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBFZGdlQ2hhbmdlc1NlcnZpY2Uge1xuICBwcm90ZWN0ZWQgZW50aXRpZXNTZXJ2aWNlID0gaW5qZWN0KEZsb3dFbnRpdGllc1NlcnZpY2UpXG5cbiAgcHJvdGVjdGVkIGVkZ2VEZXRhY2hlZENoYW5nZSQgPSBtZXJnZShcbiAgICB0b09ic2VydmFibGUoXG4gICAgICBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IG5vZGVzID0gdGhpcy5lbnRpdGllc1NlcnZpY2Uubm9kZXMoKVxuICAgICAgICBjb25zdCBlZGdlcyA9IHVudHJhY2tlZCh0aGlzLmVudGl0aWVzU2VydmljZS5lZGdlcylcblxuICAgICAgICByZXR1cm4gZWRnZXMuZmlsdGVyKCh7IHNvdXJjZSwgdGFyZ2V0IH0pID0+XG4gICAgICAgICAgIW5vZGVzLmluY2x1ZGVzKHNvdXJjZSgpISkgfHwgIW5vZGVzLmluY2x1ZGVzKHRhcmdldCgpISlcbiAgICAgICAgKVxuICAgICAgfSlcbiAgICApLFxuICAgIHRvT2JzZXJ2YWJsZSh0aGlzLmVudGl0aWVzU2VydmljZS5lZGdlcykucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoZWRnZXMpID0+IHtcbiAgICAgICAgcmV0dXJuIHppcChcbiAgICAgICAgICAuLi5lZGdlcy5tYXAoZSA9PiBlLmRldGFjaGVkJC5waXBlKG1hcCgoKSA9PiBlKSkpXG4gICAgICAgIClcbiAgICAgIH0pLFxuICAgICAgbWFwKChlZGdlcykgPT4gZWRnZXMuZmlsdGVyKGUgPT4gZS5kZXRhY2hlZCgpKSksXG4gICAgICAvLyBUT0RPIGNoZWNrIHdoeSB0aGVyZSBhcmUgMiBlbWl0c1xuICAgICAgc2tpcCgyKSxcbiAgICApXG4gICkucGlwZShcbiAgICAvLyBoZXJlIHdlIGNoZWNrIGlmIDIgYXBwcm9hY2hlcyB0byBkZXRlY3QgZGV0YWNoZWQgZWRnZXMgZW1pdHMgc2FtZVxuICAgIC8vIGFuZCBzYW1lIHZhbHVlcyAodGhpcyBtYXkgaGFwcGVuIG9uIG5vZGUgZGVsZXRlKVxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKGhhdmVTYW1lQ29udGVudHMpLFxuICAgIGZpbHRlcihlZGdlcyA9PiAhIWVkZ2VzLmxlbmd0aCksXG4gICAgbWFwKChlZGdlcykgPT5cbiAgICAgIGVkZ2VzLm1hcCgoeyBlZGdlIH0pID0+ICh7IHR5cGU6ICdkZXRhY2hlZCcsIGlkOiBlZGdlLmlkIH0pKVxuICAgIClcbiAgKSBzYXRpc2ZpZXMgT2JzZXJ2YWJsZTxFZGdlQ2hhbmdlW10+XG5cbiAgcHJvdGVjdGVkIGVkZ2VBZGRDaGFuZ2UkID0gdG9PYnNlcnZhYmxlKHRoaXMuZW50aXRpZXNTZXJ2aWNlLmVkZ2VzKVxuICAgIC5waXBlKFxuICAgICAgcGFpcndpc2UoKSxcbiAgICAgIG1hcCgoW29sZExpc3QsIG5ld0xpc3RdKSA9PiB7XG4gICAgICAgIHJldHVybiBuZXdMaXN0LmZpbHRlcihlZGdlID0+ICFvbGRMaXN0LmluY2x1ZGVzKGVkZ2UpKVxuICAgICAgfSksXG4gICAgICBmaWx0ZXIoZWRnZXMgPT4gISFlZGdlcy5sZW5ndGgpLFxuICAgICAgbWFwKChlZGdlcykgPT5cbiAgICAgICAgZWRnZXMubWFwKCh7IGVkZ2UgfSkgPT4gKHsgdHlwZTogJ2FkZCcsIGlkOiBlZGdlLmlkIH0pKVxuICAgICAgKVxuICAgICkgc2F0aXNmaWVzIE9ic2VydmFibGU8RWRnZUNoYW5nZVtdPlxuXG4gIHByb3RlY3RlZCBlZGdlUmVtb3ZlQ2hhbmdlJCA9IHRvT2JzZXJ2YWJsZSh0aGlzLmVudGl0aWVzU2VydmljZS5lZGdlcylcbiAgICAucGlwZShcbiAgICAgIHBhaXJ3aXNlKCksXG4gICAgICBtYXAoKFtvbGRMaXN0LCBuZXdMaXN0XSkgPT4ge1xuICAgICAgICByZXR1cm4gb2xkTGlzdC5maWx0ZXIoZWRnZSA9PiAhbmV3TGlzdC5pbmNsdWRlcyhlZGdlKSlcbiAgICAgIH0pLFxuICAgICAgZmlsdGVyKGVkZ2VzID0+ICEhZWRnZXMubGVuZ3RoKSxcbiAgICAgIG1hcCgoZWRnZXMpID0+XG4gICAgICAgIGVkZ2VzLm1hcCgoeyBlZGdlIH0pID0+ICh7IHR5cGU6ICdyZW1vdmUnLCBpZDogZWRnZS5pZCB9KSlcbiAgICAgIClcbiAgICApIHNhdGlzZmllcyBPYnNlcnZhYmxlPEVkZ2VDaGFuZ2VbXT5cblxuICBwcm90ZWN0ZWQgZWRnZVNlbGVjdENoYW5nZSQgPSB0b09ic2VydmFibGUodGhpcy5lbnRpdGllc1NlcnZpY2UuZWRnZXMpXG4gICAgLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKGVkZ2VzKSA9PlxuICAgICAgICBtZXJnZShcbiAgICAgICAgICAuLi5lZGdlcy5tYXAoZWRnZSA9PlxuICAgICAgICAgICAgZWRnZS5zZWxlY3RlZCQucGlwZShcbiAgICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgICAgICAgc2tpcCgxKSxcbiAgICAgICAgICAgICAgbWFwKCgpID0+IGVkZ2UpLFxuICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKSxcbiAgICAgIG1hcCgoY2hhbmdlZEVkZ2UpID0+IFtcbiAgICAgICAgeyB0eXBlOiAnc2VsZWN0JywgaWQ6IGNoYW5nZWRFZGdlLmVkZ2UuaWQsIHNlbGVjdGVkOiBjaGFuZ2VkRWRnZS5zZWxlY3RlZCgpIH1cbiAgICAgIF0pXG4gICAgKSBzYXRpc2ZpZXMgT2JzZXJ2YWJsZTxFZGdlQ2hhbmdlW10+XG5cbiAgcHVibGljIHJlYWRvbmx5IGNoYW5nZXMkOiBPYnNlcnZhYmxlPEVkZ2VDaGFuZ2VbXT4gPSBtZXJnZShcbiAgICB0aGlzLmVkZ2VEZXRhY2hlZENoYW5nZSQsXG4gICAgdGhpcy5lZGdlQWRkQ2hhbmdlJCxcbiAgICB0aGlzLmVkZ2VSZW1vdmVDaGFuZ2UkLFxuICAgIHRoaXMuZWRnZVNlbGVjdENoYW5nZSRcbiAgKVxuICAgIC5waXBlKFxuICAgICAgLy8gdGhpcyBmaXhlcyB0aGUgY2FzZSB3aGVuIHVzZXIgZ2V0cyAnZGV0ZWNoZWQnIGNoYW5nZXNcbiAgICAgIC8vIGFuZCB0cmllcyB0byBkZWxldGUgdGhlc2UgZWRnZXMgaW5zaWRlIHN0cmVhbVxuICAgICAgLy8gYW5ndWxhciBtYXkgaWdub3JlIHRoaXMgY2hhbmdlIGJlY2F1c2UgW2VkZ2VzXSBpbnB1dCBjaGFuZ2VkXG4gICAgICAvLyByaWdodCBhZnRlciBbbm9kZXNdIGlucHV0IGNoYW5nZVxuICAgICAgb2JzZXJ2ZU9uKGFzeW5jU2NoZWR1bGVyKSxcbiAgICApXG59XG4iXX0=