ngx-vflow 1.16.4 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (181) hide show
  1. package/README.md +35 -69
  2. package/fesm2022/ngx-vflow-testing.mjs +77 -67
  3. package/fesm2022/ngx-vflow-testing.mjs.map +1 -1
  4. package/fesm2022/ngx-vflow.mjs +926 -559
  5. package/fesm2022/ngx-vflow.mjs.map +1 -1
  6. package/lib/vflow/components/custom-node-base/custom-node-base.component.d.ts +1 -1
  7. package/lib/vflow/components/vflow/vflow.component.d.ts +18 -9
  8. package/lib/vflow/directives/auto-pan.directive.d.ts +16 -0
  9. package/lib/vflow/directives/changes-controller.directive.d.ts +13 -87
  10. package/lib/vflow/directives/connection-controller.directive.d.ts +8 -10
  11. package/lib/vflow/directives/space-point-context.directive.d.ts +2 -1
  12. package/lib/vflow/interfaces/component-node-event.interface.d.ts +1 -2
  13. package/lib/vflow/interfaces/connection-events.interface.d.ts +66 -0
  14. package/lib/vflow/interfaces/connection-settings.interface.d.ts +7 -1
  15. package/lib/vflow/interfaces/connection.interface.d.ts +0 -5
  16. package/lib/vflow/interfaces/curve-factory.interface.d.ts +2 -2
  17. package/lib/vflow/interfaces/edge-label.interface.d.ts +0 -4
  18. package/lib/vflow/interfaces/edge.interface.d.ts +36 -8
  19. package/lib/vflow/interfaces/node.interface.d.ts +44 -63
  20. package/lib/vflow/interfaces/selection-strategy.interface.d.ts +16 -0
  21. package/lib/vflow/interfaces/template-context.interface.d.ts +8 -3
  22. package/lib/vflow/models/connection.model.d.ts +1 -1
  23. package/lib/vflow/models/edge.model.d.ts +20 -23
  24. package/lib/vflow/models/handle.model.d.ts +1 -1
  25. package/lib/vflow/models/node.model.d.ts +4 -7
  26. package/lib/vflow/public-components/custom-node/custom-node.component.d.ts +1 -1
  27. package/lib/vflow/public-components/custom-template-edge/custom-template-edge.component.d.ts +2 -1
  28. package/lib/vflow/public-components/minimap/minimap.component.d.ts +1 -1
  29. package/lib/vflow/services/draggable.service.d.ts +3 -0
  30. package/lib/vflow/services/flow-entities.service.d.ts +2 -2
  31. package/lib/vflow/services/flow-settings.service.d.ts +3 -0
  32. package/lib/vflow/services/flow-status.service.d.ts +35 -7
  33. package/lib/vflow/services/selection.service.d.ts +4 -1
  34. package/lib/vflow/strategies/default-selection.strategy.d.ts +6 -0
  35. package/lib/vflow/strategies/manual-selection.strategy.d.ts +5 -0
  36. package/lib/vflow/types/selection-mode.type.d.ts +1 -0
  37. package/lib/vflow/types/unwrap-signal.type.d.ts +4 -0
  38. package/lib/vflow/utils/adjust-direction.d.ts +2 -6
  39. package/lib/vflow/utils/identity-checker/reference-identity-checker.d.ts +2 -2
  40. package/lib/vflow/utils/is-vflow-component.d.ts +0 -2
  41. package/lib/vflow/utils/signals/to-lazy-signal.d.ts +4 -4
  42. package/package.json +3 -7
  43. package/public-api.d.ts +3 -2
  44. package/testing/component-mocks/vflow-mock.component.d.ts +8 -6
  45. package/testing/directive-mocks/connection-controller-mock.directive.d.ts +8 -6
  46. package/esm2022/lib/vflow/components/alignment-helper/alignment-helper.component.mjs +0 -103
  47. package/esm2022/lib/vflow/components/background/background.component.mjs +0 -121
  48. package/esm2022/lib/vflow/components/connection/connection.component.mjs +0 -157
  49. package/esm2022/lib/vflow/components/custom-node-base/custom-node-base.component.mjs +0 -57
  50. package/esm2022/lib/vflow/components/default-node/default-node.component.mjs +0 -16
  51. package/esm2022/lib/vflow/components/defs/defs.component.mjs +0 -16
  52. package/esm2022/lib/vflow/components/edge/edge.component.mjs +0 -54
  53. package/esm2022/lib/vflow/components/edge-label/edge-label.component.mjs +0 -76
  54. package/esm2022/lib/vflow/components/node/node.component.mjs +0 -107
  55. package/esm2022/lib/vflow/components/preview-flow/draw-node.mjs +0 -100
  56. package/esm2022/lib/vflow/components/preview-flow/preview-flow.component.mjs +0 -62
  57. package/esm2022/lib/vflow/components/vflow/vflow.component.mjs +0 -437
  58. package/esm2022/lib/vflow/constants/magic-number-to-fix-glitch-in-chrome.constant.mjs +0 -4
  59. package/esm2022/lib/vflow/decorators/microtask.decorator.mjs +0 -11
  60. package/esm2022/lib/vflow/directives/changes-controller.directive.mjs +0 -165
  61. package/esm2022/lib/vflow/directives/connection-controller.directive.mjs +0 -145
  62. package/esm2022/lib/vflow/directives/drag-handle.directive.mjs +0 -28
  63. package/esm2022/lib/vflow/directives/flow-size-controller.directive.mjs +0 -40
  64. package/esm2022/lib/vflow/directives/handle-size-controller.directive.mjs +0 -41
  65. package/esm2022/lib/vflow/directives/map-context.directive.mjs +0 -116
  66. package/esm2022/lib/vflow/directives/node-handles-controller.directive.mjs +0 -33
  67. package/esm2022/lib/vflow/directives/node-resize-controller.directive.mjs +0 -37
  68. package/esm2022/lib/vflow/directives/pointer.directive.mjs +0 -84
  69. package/esm2022/lib/vflow/directives/reference.directive.mjs +0 -17
  70. package/esm2022/lib/vflow/directives/root-pointer.directive.mjs +0 -58
  71. package/esm2022/lib/vflow/directives/root-svg-context.directive.mjs +0 -35
  72. package/esm2022/lib/vflow/directives/selectable.directive.mjs +0 -48
  73. package/esm2022/lib/vflow/directives/space-point-context.directive.mjs +0 -42
  74. package/esm2022/lib/vflow/directives/template.directive.mjs +0 -119
  75. package/esm2022/lib/vflow/interfaces/alignment-helper-settings.interface.mjs +0 -2
  76. package/esm2022/lib/vflow/interfaces/box.mjs +0 -2
  77. package/esm2022/lib/vflow/interfaces/component-node-event.interface.mjs +0 -2
  78. package/esm2022/lib/vflow/interfaces/connection-settings.interface.mjs +0 -2
  79. package/esm2022/lib/vflow/interfaces/connection.interface.mjs +0 -2
  80. package/esm2022/lib/vflow/interfaces/connection.internal.interface.mjs +0 -2
  81. package/esm2022/lib/vflow/interfaces/contextable.interface.mjs +0 -2
  82. package/esm2022/lib/vflow/interfaces/curve-factory.interface.mjs +0 -2
  83. package/esm2022/lib/vflow/interfaces/edge-label.interface.mjs +0 -2
  84. package/esm2022/lib/vflow/interfaces/edge.interface.mjs +0 -2
  85. package/esm2022/lib/vflow/interfaces/fit-view-options.interface.mjs +0 -2
  86. package/esm2022/lib/vflow/interfaces/flow-entity.interface.mjs +0 -2
  87. package/esm2022/lib/vflow/interfaces/intersecting-nodes-options.interface.mjs +0 -2
  88. package/esm2022/lib/vflow/interfaces/marker.interface.mjs +0 -2
  89. package/esm2022/lib/vflow/interfaces/node-preview.interface.mjs +0 -2
  90. package/esm2022/lib/vflow/interfaces/node.interface.mjs +0 -53
  91. package/esm2022/lib/vflow/interfaces/optimization.interface.mjs +0 -7
  92. package/esm2022/lib/vflow/interfaces/point.interface.mjs +0 -2
  93. package/esm2022/lib/vflow/interfaces/rect.mjs +0 -10
  94. package/esm2022/lib/vflow/interfaces/template-context.interface.mjs +0 -2
  95. package/esm2022/lib/vflow/interfaces/viewport.interface.mjs +0 -2
  96. package/esm2022/lib/vflow/math/edge-path/bezier-path.mjs +0 -66
  97. package/esm2022/lib/vflow/math/edge-path/smooth-step-path.mjs +0 -226
  98. package/esm2022/lib/vflow/math/edge-path/straigh-path.mjs +0 -12
  99. package/esm2022/lib/vflow/math/point-on-line-by-ratio.mjs +0 -12
  100. package/esm2022/lib/vflow/models/connection.model.mjs +0 -31
  101. package/esm2022/lib/vflow/models/edge-label.model.mjs +0 -8
  102. package/esm2022/lib/vflow/models/edge.model.mjs +0 -208
  103. package/esm2022/lib/vflow/models/handle.model.mjs +0 -98
  104. package/esm2022/lib/vflow/models/minimap.model.mjs +0 -7
  105. package/esm2022/lib/vflow/models/node.model.mjs +0 -181
  106. package/esm2022/lib/vflow/models/toolbar.model.mjs +0 -36
  107. package/esm2022/lib/vflow/public-components/custom-dynamic-node/custom-dynamic-node.component.mjs +0 -25
  108. package/esm2022/lib/vflow/public-components/custom-node/custom-node.component.mjs +0 -24
  109. package/esm2022/lib/vflow/public-components/custom-template-edge/custom-template-edge.component.mjs +0 -29
  110. package/esm2022/lib/vflow/public-components/handle/handle.component.mjs +0 -53
  111. package/esm2022/lib/vflow/public-components/minimap/minimap.component.mjs +0 -108
  112. package/esm2022/lib/vflow/public-components/node-toolbar/node-toolbar.component.mjs +0 -73
  113. package/esm2022/lib/vflow/public-components/resizable/resizable.component.mjs +0 -272
  114. package/esm2022/lib/vflow/services/component-event-bus.service.mjs +0 -18
  115. package/esm2022/lib/vflow/services/draggable.service.mjs +0 -124
  116. package/esm2022/lib/vflow/services/edge-changes.service.mjs +0 -43
  117. package/esm2022/lib/vflow/services/edge-rendering.service.mjs +0 -40
  118. package/esm2022/lib/vflow/services/flow-entities.service.mjs +0 -56
  119. package/esm2022/lib/vflow/services/flow-rendering.service.mjs +0 -41
  120. package/esm2022/lib/vflow/services/flow-settings.service.mjs +0 -33
  121. package/esm2022/lib/vflow/services/flow-status.service.mjs +0 -49
  122. package/esm2022/lib/vflow/services/handle.service.mjs +0 -30
  123. package/esm2022/lib/vflow/services/keyboard.service.mjs +0 -47
  124. package/esm2022/lib/vflow/services/node-accessor.service.mjs +0 -16
  125. package/esm2022/lib/vflow/services/node-changes.service.mjs +0 -41
  126. package/esm2022/lib/vflow/services/node-rendering.service.mjs +0 -66
  127. package/esm2022/lib/vflow/services/overlays.service.mjs +0 -35
  128. package/esm2022/lib/vflow/services/preview-flow-render-strategy.service.mjs +0 -21
  129. package/esm2022/lib/vflow/services/selection.service.mjs +0 -54
  130. package/esm2022/lib/vflow/services/viewport.service.mjs +0 -64
  131. package/esm2022/lib/vflow/types/background.type.mjs +0 -2
  132. package/esm2022/lib/vflow/types/connection-mode.type.mjs +0 -2
  133. package/esm2022/lib/vflow/types/edge-change.type.mjs +0 -2
  134. package/esm2022/lib/vflow/types/handle-type.type.mjs +0 -2
  135. package/esm2022/lib/vflow/types/keyboard-action.type.mjs +0 -2
  136. package/esm2022/lib/vflow/types/node-change.type.mjs +0 -2
  137. package/esm2022/lib/vflow/types/position.type.mjs +0 -2
  138. package/esm2022/lib/vflow/types/viewport-change-type.type.mjs +0 -2
  139. package/esm2022/lib/vflow/utils/add-nodes-to-edges.mjs +0 -11
  140. package/esm2022/lib/vflow/utils/adjust-direction.mjs +0 -30
  141. package/esm2022/lib/vflow/utils/align-number.mjs +0 -4
  142. package/esm2022/lib/vflow/utils/assert-injector.mjs +0 -27
  143. package/esm2022/lib/vflow/utils/event.mjs +0 -4
  144. package/esm2022/lib/vflow/utils/get-os.mjs +0 -24
  145. package/esm2022/lib/vflow/utils/get-overlapping-area.mjs +0 -6
  146. package/esm2022/lib/vflow/utils/get-space-points.mjs +0 -25
  147. package/esm2022/lib/vflow/utils/hash.mjs +0 -7
  148. package/esm2022/lib/vflow/utils/id.mjs +0 -5
  149. package/esm2022/lib/vflow/utils/identity-checker/reference-identity-checker.mjs +0 -28
  150. package/esm2022/lib/vflow/utils/is-callable.mjs +0 -10
  151. package/esm2022/lib/vflow/utils/is-defined.mjs +0 -4
  152. package/esm2022/lib/vflow/utils/is-group-node.mjs +0 -4
  153. package/esm2022/lib/vflow/utils/is-vflow-component.mjs +0 -9
  154. package/esm2022/lib/vflow/utils/nodes.mjs +0 -60
  155. package/esm2022/lib/vflow/utils/resizable.mjs +0 -11
  156. package/esm2022/lib/vflow/utils/round.mjs +0 -2
  157. package/esm2022/lib/vflow/utils/signals/extended-computed.mjs +0 -15
  158. package/esm2022/lib/vflow/utils/signals/to-lazy-signal.mjs +0 -35
  159. package/esm2022/lib/vflow/utils/to-unified-node.mjs +0 -24
  160. package/esm2022/lib/vflow/utils/transform-background.mjs +0 -4
  161. package/esm2022/lib/vflow/utils/viewport.mjs +0 -51
  162. package/esm2022/lib/vflow/vflow.mjs +0 -29
  163. package/esm2022/ngx-vflow.mjs +0 -5
  164. package/esm2022/public-api.mjs +0 -55
  165. package/esm2022/testing/component-mocks/custom-template-edge-mock.component.mjs +0 -16
  166. package/esm2022/testing/component-mocks/handle-mock.component.mjs +0 -26
  167. package/esm2022/testing/component-mocks/minimap-mock.component.mjs +0 -24
  168. package/esm2022/testing/component-mocks/node-toolbar-mock.component.mjs +0 -23
  169. package/esm2022/testing/component-mocks/resizable-mock.component.mjs +0 -27
  170. package/esm2022/testing/component-mocks/vflow-mock.component.mjs +0 -299
  171. package/esm2022/testing/directive-mocks/connection-controller-mock.directive.mjs +0 -29
  172. package/esm2022/testing/directive-mocks/drag-handle-mock.directive.mjs +0 -11
  173. package/esm2022/testing/directive-mocks/selectable-mock.directive.mjs +0 -14
  174. package/esm2022/testing/directive-mocks/template-mock.directive.mjs +0 -101
  175. package/esm2022/testing/ngx-vflow-testing.mjs +0 -5
  176. package/esm2022/testing/provide-custom-node-mocks.mjs +0 -60
  177. package/esm2022/testing/public-api.mjs +0 -13
  178. package/esm2022/testing/types.mjs +0 -2
  179. package/esm2022/testing/vflow-mocks.mjs +0 -28
  180. package/lib/vflow/public-components/custom-dynamic-node/custom-dynamic-node.component.d.ts +0 -13
  181. package/lib/vflow/utils/to-unified-node.d.ts +0 -2
@@ -1,41 +0,0 @@
1
- import { Injectable, inject } from '@angular/core';
2
- import { FlowEntitiesService } from './flow-entities.service';
3
- import { toObservable } from '@angular/core/rxjs-interop';
4
- import { asyncScheduler, distinctUntilChanged, filter, map, merge, observeOn, pairwise, skip, switchMap, } from 'rxjs';
5
- import * as i0 from "@angular/core";
6
- // this delay fixes the cases when change triggered
7
- // but the flow not yet fylly re-rendered
8
- const DELAY_FOR_SCHEDULER = 25;
9
- export class NodesChangeService {
10
- constructor() {
11
- this.entitiesService = inject(FlowEntitiesService);
12
- this.nodesPositionChange$ = toObservable(this.entitiesService.nodes).pipe(
13
- // Check for nodes list change and watch for specific node from this list change its position
14
- switchMap((nodes) => merge(...nodes.map((node) => node.point$.pipe(
15
- // skip initial position from signal
16
- skip(1), map(() => node))))), map((changedNode) => {
17
- return [
18
- { type: 'position', id: changedNode.rawNode.id, point: changedNode.point() },
19
- // TODO: emits even if node is not change position
20
- ...this.entitiesService
21
- .nodes()
22
- .filter((node) => node !== changedNode && node.selected())
23
- .map((node) => ({ type: 'position', id: node.rawNode.id, point: node.point() })),
24
- ];
25
- }));
26
- this.nodeSizeChange$ = toObservable(this.entitiesService.nodes).pipe(switchMap((nodes) => merge(...nodes.map((node) => node.size$.pipe(skip(1), map(() => node))))), map((changedNode) => [{ type: 'size', id: changedNode.rawNode.id, size: changedNode.size() }]));
27
- this.nodeAddChange$ = toObservable(this.entitiesService.nodes).pipe(pairwise(), map(([oldList, newList]) => newList.filter((node) => !oldList.includes(node))), filter((nodes) => !!nodes.length), map((nodes) => nodes.map((node) => ({ type: 'add', id: node.rawNode.id }))));
28
- this.nodeRemoveChange$ = toObservable(this.entitiesService.nodes).pipe(pairwise(), map(([oldList, newList]) => oldList.filter((node) => !newList.includes(node))), filter((nodes) => !!nodes.length), map((nodes) => nodes.map((node) => ({ type: 'remove', id: node.rawNode.id }))));
29
- this.nodeSelectedChange$ = toObservable(this.entitiesService.nodes).pipe(switchMap((nodes) => merge(...nodes.map((node) => node.selected$.pipe(distinctUntilChanged(), skip(1), map(() => node))))), map((changedNode) => [{ type: 'select', id: changedNode.rawNode.id, selected: changedNode.selected() }]));
30
- this.changes$ = merge(this.nodesPositionChange$, this.nodeSizeChange$, this.nodeAddChange$, this.nodeRemoveChange$, this.nodeSelectedChange$).pipe(
31
- // this fixes a bug when on fire node event change,
32
- // you can't get valid list of detached edges
33
- observeOn(asyncScheduler, DELAY_FOR_SCHEDULER));
34
- }
35
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NodesChangeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
36
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NodesChangeService }); }
37
- }
38
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NodesChangeService, decorators: [{
39
- type: Injectable
40
- }] });
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1jaGFuZ2VzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3NyYy9saWIvdmZsb3cvc2VydmljZXMvbm9kZS1jaGFuZ2VzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFFTCxjQUFjLEVBQ2Qsb0JBQW9CLEVBQ3BCLE1BQU0sRUFDTixHQUFHLEVBQ0gsS0FBSyxFQUNMLFNBQVMsRUFDVCxRQUFRLEVBQ1IsSUFBSSxFQUNKLFNBQVMsR0FDVixNQUFNLE1BQU0sQ0FBQzs7QUFHZCxtREFBbUQ7QUFDbkQseUNBQXlDO0FBQ3pDLE1BQU0sbUJBQW1CLEdBQUcsRUFBRSxDQUFDO0FBRy9CLE1BQU0sT0FBTyxrQkFBa0I7SUFEL0I7UUFFWSxvQkFBZSxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBRTlDLHlCQUFvQixHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUk7UUFDNUUsNkZBQTZGO1FBQzdGLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQ2xCLEtBQUssQ0FDSCxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUNwQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUk7UUFDZCxvQ0FBb0M7UUFDcEMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUNQLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FDaEIsQ0FDRixDQUNGLENBQ0YsRUFDRCxHQUFHLENB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ZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGbG93RW50aXRpZXNTZXJ2aWNlIH0gZnJvbSAnLi9mbG93LWVudGl0aWVzLnNlcnZpY2UnO1xuaW1wb3J0IHsgdG9PYnNlcnZhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHtcbiAgT2JzZXJ2YWJsZSxcbiAgYXN5bmNTY2hlZHVsZXIsXG4gIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuICBmaWx0ZXIsXG4gIG1hcCxcbiAgbWVyZ2UsXG4gIG9ic2VydmVPbixcbiAgcGFpcndpc2UsXG4gIHNraXAsXG4gIHN3aXRjaE1hcCxcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBOb2RlQ2hhbmdlIH0gZnJvbSAnLi4vdHlwZXMvbm9kZS1jaGFuZ2UudHlwZSc7XG5cbi8vIHRoaXMgZGVsYXkgZml4ZXMgdGhlIGNhc2VzIHdoZW4gY2hhbmdlIHRyaWdnZXJlZFxuLy8gYnV0IHRoZSBmbG93IG5vdCB5ZXQgZnlsbHkgcmUtcmVuZGVyZWRcbmNvbnN0IERFTEFZX0ZPUl9TQ0hFRFVMRVIgPSAyNTtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE5vZGVzQ2hhbmdlU2VydmljZSB7XG4gIHByb3RlY3RlZCBlbnRpdGllc1NlcnZpY2UgPSBpbmplY3QoRmxvd0VudGl0aWVzU2VydmljZSk7XG5cbiAgcHJvdGVjdGVkIG5vZGVzUG9zaXRpb25DaGFuZ2UkID0gdG9PYnNlcnZhYmxlKHRoaXMuZW50aXRpZXNTZXJ2aWNlLm5vZGVzKS5waXBlKFxuICAgIC8vIENoZWNrIGZvciBub2RlcyBsaXN0IGNoYW5nZSBhbmQgd2F0Y2ggZm9yIHNwZWNpZmljIG5vZGUgZnJvbSB0aGlzIGxpc3QgY2hhbmdlIGl0cyBwb3NpdGlvblxuICAgIHN3aXRjaE1hcCgobm9kZXMpID0+XG4gICAgICBtZXJnZShcbiAgICAgICAgLi4ubm9kZXMubWFwKChub2RlKSA9PlxuICAgICAgICAgIG5vZGUucG9pbnQkLnBpcGUoXG4gICAgICAgICAgICAvLyBza2lwIGluaXRpYWwgcG9zaXRpb24gZnJvbSBzaWduYWxcbiAgICAgICAgICAgIHNraXAoMSksXG4gICAgICAgICAgICBtYXAoKCkgPT4gbm9kZSksXG4gICAgICAgICAgKSxcbiAgICAgICAgKSxcbiAgICAgICksXG4gICAgKSxcbiAgICBtYXAoKGNoYW5nZWROb2RlKSA9PiB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICB7IHR5cGU6ICdwb3NpdGlvbicsIGlkOiBjaGFuZ2VkTm9kZS5yYXdOb2RlLmlkLCBwb2ludDogY2hhbmdlZE5vZGUucG9pbnQoKSB9IGFzIE5vZGVDaGFuZ2UsXG4gICAgICAgIC8vIFRPRE86IGVtaXRzIGV2ZW4gaWYgbm9kZSBpcyBub3QgY2hhbmdlIHBvc2l0aW9uXG4gICAgICAgIC4uLih0aGlzLmVudGl0aWVzU2VydmljZVxuICAgICAgICAgIC5ub2RlcygpXG4gICAgICAgICAgLmZpbHRlcigobm9kZSkgPT4gbm9kZSAhPT0gY2hhbmdlZE5vZGUgJiYgbm9kZS5zZWxlY3RlZCgpKVxuICAgICAgICAgIC5tYXAoKG5vZGUpID0+ICh7IHR5cGU6ICdwb3NpdGlvbicsIGlkOiBub2RlLnJhd05vZGUuaWQsIHBvaW50OiBub2RlLnBvaW50KCkgfSkpIGFzIE5vZGVDaGFuZ2VbXSksXG4gICAgICBdO1xuICAgIH0pLFxuICApIHNhdGlzZmllcyBPYnNlcnZhYmxlPE5vZGVDaGFuZ2VbXT47XG5cbiAgcHJvdGVjdGVkIG5vZGVTaXplQ2hhbmdlJCA9IHRvT2JzZXJ2YWJsZSh0aGlzLmVudGl0aWVzU2VydmljZS5ub2RlcykucGlwZShcbiAgICBzd2l0Y2hNYXAoKG5vZGVzKSA9PlxuICAgICAgbWVyZ2UoXG4gICAgICAgIC4uLm5vZGVzLm1hcCgobm9kZSkgPT5cbiAgICAgICAgICBub2RlLnNpemUkLnBpcGUoXG4gICAgICAgICAgICBza2lwKDEpLFxuICAgICAgICAgICAgbWFwKCgpID0+IG5vZGUpLFxuICAgICAgICAgICksXG4gICAgICAgICksXG4gICAgICApLFxuICAgICksXG4gICAgbWFwKChjaGFuZ2VkTm9kZSkgPT4gW3sgdHlwZTogJ3NpemUnLCBpZDogY2hhbmdlZE5vZGUucmF3Tm9kZS5pZCwgc2l6ZTogY2hhbmdlZE5vZGUuc2l6ZSgpIH1dKSxcbiAgKSBzYXRpc2ZpZXMgT2JzZXJ2YWJsZTxOb2RlQ2hhbmdlW10+O1xuXG4gIHByb3RlY3RlZCBub2RlQWRkQ2hhbmdlJCA9IHRvT2JzZXJ2YWJsZSh0aGlzLmVudGl0aWVzU2VydmljZS5ub2RlcykucGlwZShcbiAgICBwYWlyd2lzZSgpLFxuICAgIG1hcCgoW29sZExpc3QsIG5ld0xpc3RdKSA9PiBuZXdMaXN0LmZpbHRlcigobm9kZSkgPT4gIW9sZExpc3QuaW5jbHVkZXMobm9kZSkpKSxcbiAgICBmaWx0ZXIoKG5vZGVzKSA9PiAhIW5vZGVzLmxlbmd0aCksXG4gICAgbWFwKChub2RlcykgPT4gbm9kZXMubWFwKChub2RlKSA9PiAoeyB0eXBlOiAnYWRkJywgaWQ6IG5vZGUucmF3Tm9kZS5pZCB9KSkpLFxuICApIHNhdGlzZmllcyBPYnNlcnZhYmxlPE5vZGVDaGFuZ2VbXT47XG5cbiAgcHJvdGVjdGVkIG5vZGVSZW1vdmVDaGFuZ2UkID0gdG9PYnNlcnZhYmxlKHRoaXMuZW50aXRpZXNTZXJ2aWNlLm5vZGVzKS5waXBlKFxuICAgIHBhaXJ3aXNlKCksXG4gICAgbWFwKChbb2xkTGlzdCwgbmV3TGlzdF0pID0+IG9sZExpc3QuZmlsdGVyKChub2RlKSA9PiAhbmV3TGlzdC5pbmNsdWRlcyhub2RlKSkpLFxuICAgIGZpbHRlcigobm9kZXMpID0+ICEhbm9kZXMubGVuZ3RoKSxcbiAgICBtYXAoKG5vZGVzKSA9PiBub2Rlcy5tYXAoKG5vZGUpID0+ICh7IHR5cGU6ICdyZW1vdmUnLCBpZDogbm9kZS5yYXdOb2RlLmlkIH0pKSksXG4gICkgc2F0aXNmaWVzIE9ic2VydmFibGU8Tm9kZUNoYW5nZVtdPjtcblxuICBwcm90ZWN0ZWQgbm9kZVNlbGVjdGVkQ2hhbmdlJCA9IHRvT2JzZXJ2YWJsZSh0aGlzLmVudGl0aWVzU2VydmljZS5ub2RlcykucGlwZShcbiAgICBzd2l0Y2hNYXAoKG5vZGVzKSA9PlxuICAgICAgbWVyZ2UoXG4gICAgICAgIC4uLm5vZGVzLm1hcCgobm9kZSkgPT5cbiAgICAgICAgICBub2RlLnNlbGVjdGVkJC5waXBlKFxuICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgICAgIHNraXAoMSksXG4gICAgICAgICAgICBtYXAoKCkgPT4gbm9kZSksXG4gICAgICAgICAgKSxcbiAgICAgICAgKSxcbiAgICAgICksXG4gICAgKSxcbiAgICBtYXAoKGNoYW5nZWROb2RlKSA9PiBbeyB0eXBlOiAnc2VsZWN0JywgaWQ6IGNoYW5nZWROb2RlLnJhd05vZGUuaWQsIHNlbGVjdGVkOiBjaGFuZ2VkTm9kZS5zZWxlY3RlZCgpIH1dKSxcbiAgKSBzYXRpc2ZpZXMgT2JzZXJ2YWJsZTxOb2RlQ2hhbmdlW10+O1xuXG4gIHB1YmxpYyByZWFkb25seSBjaGFuZ2VzJDogT2JzZXJ2YWJsZTxOb2RlQ2hhbmdlW10+ID0gbWVyZ2UoXG4gICAgdGhpcy5ub2Rlc1Bvc2l0aW9uQ2hhbmdlJCxcbiAgICB0aGlzLm5vZGVTaXplQ2hhbmdlJCxcbiAgICB0aGlzLm5vZGVBZGRDaGFuZ2UkLFxuICAgIHRoaXMubm9kZVJlbW92ZUNoYW5nZSQsXG4gICAgdGhpcy5ub2RlU2VsZWN0ZWRDaGFuZ2UkLFxuICApLnBpcGUoXG4gICAgLy8gdGhpcyBmaXhlcyBhIGJ1ZyB3aGVuIG9uIGZpcmUgbm9kZSBldmVudCBjaGFuZ2UsXG4gICAgLy8geW91IGNhbid0IGdldCB2YWxpZCBsaXN0IG9mIGRldGFjaGVkIGVkZ2VzXG4gICAgb2JzZXJ2ZU9uKGFzeW5jU2NoZWR1bGVyLCBERUxBWV9GT1JfU0NIRURVTEVSKSxcbiAgKTtcbn1cbiJdfQ==
@@ -1,66 +0,0 @@
1
- import { Injectable, computed, inject } from '@angular/core';
2
- import { FlowEntitiesService } from './flow-entities.service';
3
- import { FlowSettingsService } from './flow-settings.service';
4
- import { isRectInViewport } from '../utils/viewport';
5
- import { ViewportService } from './viewport.service';
6
- import { toObservable } from '@angular/core/rxjs-interop';
7
- import { asyncScheduler, debounceTime, filter, map, merge, observeOn } from 'rxjs';
8
- import { toLazySignal } from '../utils/signals/to-lazy-signal';
9
- import { isGroupNode } from '../utils/is-group-node';
10
- import * as i0 from "@angular/core";
11
- export class NodeRenderingService {
12
- constructor() {
13
- this.flowEntitiesService = inject(FlowEntitiesService);
14
- this.flowSettingsService = inject(FlowSettingsService);
15
- this.viewportService = inject(ViewportService);
16
- this.nodes = computed(() => {
17
- if (!this.flowSettingsService.optimization().virtualization) {
18
- return [...this.flowEntitiesService.nodes()].sort((aNode, bNode) => aNode.renderOrder() - bNode.renderOrder());
19
- }
20
- return this.viewportNodesAfterInteraction().sort((aNode, bNode) => aNode.renderOrder() - bNode.renderOrder());
21
- });
22
- this.groups = computed(() => {
23
- return this.nodes().filter((n) => !!n.children().length || isGroupNode(n));
24
- });
25
- this.nonGroups = computed(() => {
26
- return this.nodes().filter((n) => !this.groups().includes(n));
27
- });
28
- this.viewportNodes = computed(() => {
29
- const nodes = this.flowEntitiesService.nodes();
30
- const viewport = this.viewportService.readableViewport();
31
- const flowWidth = this.flowSettingsService.computedFlowWidth();
32
- const flowHeight = this.flowSettingsService.computedFlowHeight();
33
- return nodes.filter((n) => {
34
- const { x, y } = n.globalPoint();
35
- const width = n.width();
36
- const height = n.height();
37
- return isRectInViewport({ x, y, width, height }, viewport, flowWidth, flowHeight);
38
- });
39
- });
40
- this.viewportNodesAfterInteraction = toLazySignal(merge(
41
- // TODO: maybe there is a better way wait when viewport is ready?
42
- // (to correctly calculate viewport nodes on first render)
43
- toObservable(this.flowEntitiesService.nodes).pipe(observeOn(asyncScheduler), filter((nodes) => !!nodes.length)), this.viewportService.viewportChangeEnd$.pipe(debounceTime(300))).pipe(map(() => {
44
- const viewport = this.viewportService.readableViewport();
45
- const zoomThreshold = this.flowSettingsService.optimization().virtualizationZoomThreshold;
46
- return viewport.zoom < zoomThreshold ? [] : this.viewportNodes();
47
- })), {
48
- initialValue: [],
49
- });
50
- this.maxOrder = computed(() => {
51
- return Math.max(...this.flowEntitiesService.nodes().map((n) => n.renderOrder()));
52
- });
53
- }
54
- pullNode(node) {
55
- // pull node
56
- node.renderOrder.set(this.maxOrder() + 1);
57
- // pull children
58
- node.children().forEach((n) => this.pullNode(n));
59
- }
60
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NodeRenderingService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
61
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NodeRenderingService }); }
62
- }
63
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NodeRenderingService, decorators: [{
64
- type: Injectable
65
- }] });
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1yZW5kZXJpbmcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy9zZXJ2aWNlcy9ub2RlLXJlbmRlcmluZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU5RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDL0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQUdyRCxNQUFNLE9BQU8sb0JBQW9CO0lBRGpDO1FBRVUsd0JBQW1CLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDbEQsd0JBQW1CLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDbEQsb0JBQWUsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFFbEMsVUFBSyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDcEMsSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxj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QyxZQUFZLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQztZQUUxRixPQUFPLFFBQVEsQ0FBQyxJQUFJLEdBQUcsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNuRSxDQUFDLENBQUMsQ0FDSCxFQUNEO1lBQ0UsWUFBWSxFQUFFLEVBQUU7U0FDakIsQ0FDRixDQUFDO1FBRU0sYUFBUSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDL0IsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNuRixDQUFDLENBQUMsQ0FBQztLQVNKO0lBUFEsUUFBUSxDQUFDLElBQWU7UUFDN0IsWUFBWTtRQUNaLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUUxQyxnQkFBZ0I7UUFDaEIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25ELENBQUM7K0dBckVVLG9CQUFvQjttSEFBcEIsb0JBQW9COzs0RkFBcEIsb0JBQW9CO2tCQURoQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgY29tcHV0ZWQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmxvd0VudGl0aWVzU2VydmljZSB9IGZyb20gJy4vZmxvdy1lbnRpdGllcy5zZXJ2aWNlJztcbmltcG9ydCB7IE5vZGVNb2RlbCB9IGZyb20gJy4uL21vZGVscy9ub2RlLm1vZGVsJztcbmltcG9ydCB7IEZsb3dTZXR0aW5nc1NlcnZpY2UgfSBmcm9tICcuL2Zsb3ctc2V0dGluZ3Muc2VydmljZSc7XG5pbXBvcnQgeyBpc1JlY3RJblZpZXdwb3J0IH0gZnJvbSAnLi4vdXRpbHMvdmlld3BvcnQnO1xuaW1wb3J0IHsgVmlld3BvcnRTZXJ2aWNlIH0gZnJvbSAnLi92aWV3cG9ydC5zZXJ2aWNlJztcbmltcG9ydCB7IHRvT2JzZXJ2YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IGFzeW5jU2NoZWR1bGVyLCBkZWJvdW5jZVRpbWUsIGZpbHRlciwgbWFwLCBtZXJnZSwgb2JzZXJ2ZU9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0b0xhenlTaWduYWwgfSBmcm9tICcuLi91dGlscy9zaWduYWxzL3RvLWxhenktc2lnbmFsJztcbmltcG9ydCB7IGlzR3JvdXBOb2RlIH0gZnJvbSAnLi4vdXRpbHMvaXMtZ3JvdXAtbm9kZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBOb2RlUmVuZGVyaW5nU2VydmljZSB7XG4gIHByaXZhdGUgZmxvd0VudGl0aWVzU2VydmljZSA9IGluamVjdChGbG93RW50aXRpZXNTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBmbG93U2V0dGluZ3NTZXJ2aWNlID0gaW5qZWN0KEZsb3dTZXR0aW5nc1NlcnZpY2UpO1xuICBwcml2YXRlIHZpZXdwb3J0U2VydmljZSA9IGluamVjdChWaWV3cG9ydFNlcnZpY2UpO1xuXG4gIHB1YmxpYyByZWFkb25seSBub2RlcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAoIXRoaXMuZmxvd1NldHRpbmdzU2VydmljZS5vcHRpbWl6YXRpb24oKS52aXJ0dWFsaXphdGlvbikge1xuICAgICAgcmV0dXJuIFsuLi50aGlzLmZsb3dFbnRpdGllc1NlcnZpY2Uubm9kZXMoKV0uc29ydCgoYU5vZGUsIGJOb2RlKSA9PiBhTm9kZS5yZW5kZXJPcmRlcigpIC0gYk5vZGUucmVuZGVyT3JkZXIoKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMudmlld3BvcnROb2Rlc0FmdGVySW50ZXJhY3Rpb24oKS5zb3J0KChhTm9kZSwgYk5vZGUpID0+IGFOb2RlLnJlbmRlck9yZGVyKCkgLSBiTm9kZS5yZW5kZXJPcmRlcigpKTtcbiAgfSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGdyb3VwcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5ub2RlcygpLmZpbHRlcigobikgPT4gISFuLmNoaWxkcmVuKCkubGVuZ3RoIHx8IGlzR3JvdXBOb2RlKG4pKTtcbiAgfSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IG5vbkdyb3VwcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5ub2RlcygpLmZpbHRlcigobikgPT4gIXRoaXMuZ3JvdXBzKCkuaW5jbHVkZXMobikpO1xuICB9KTtcblxuICBwdWJsaWMgdmlld3BvcnROb2RlcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBub2RlcyA9IHRoaXMuZmxvd0VudGl0aWVzU2VydmljZS5ub2RlcygpO1xuICAgIGNvbnN0IHZpZXdwb3J0ID0gdGhpcy52aWV3cG9ydFNlcnZpY2UucmVhZGFibGVWaWV3cG9ydCgpO1xuICAgIGNvbnN0IGZsb3dXaWR0aCA9IHRoaXMuZmxvd1NldHRpbmdzU2VydmljZS5jb21wdXRlZEZsb3dXaWR0aCgpO1xuICAgIGNvbnN0IGZsb3dIZWlnaHQgPSB0aGlzLmZsb3dTZXR0aW5nc1NlcnZpY2UuY29tcHV0ZWRGbG93SGVpZ2h0KCk7XG5cbiAgICByZXR1cm4gbm9kZXMuZmlsdGVyKChuKSA9PiB7XG4gICAgICBjb25zdCB7IHgsIHkgfSA9IG4uZ2xvYmFsUG9pbnQoKTtcbiAgICAgIGNvbnN0IHdpZHRoID0gbi53aWR0aCgpO1xuICAgICAgY29uc3QgaGVpZ2h0ID0gbi5oZWlnaHQoKTtcblxuICAgICAgcmV0dXJuIGlzUmVjdEluVmlld3BvcnQoeyB4LCB5LCB3aWR0aCwgaGVpZ2h0IH0sIHZpZXdwb3J0LCBmbG93V2lkdGgsIGZsb3dIZWlnaHQpO1xuICAgIH0pO1xuICB9KTtcblxuICBwcml2YXRlIHZpZXdwb3J0Tm9kZXNBZnRlckludGVyYWN0aW9uID0gdG9MYXp5U2lnbmFsKFxuICAgIG1lcmdlKFxuICAgICAgLy8gVE9ETzogbWF5YmUgdGhlcmUgaXMgYSBiZXR0ZXIgd2F5IHdhaXQgd2hlbiB2aWV3cG9ydCBpcyByZWFkeT9cbiAgICAgIC8vICh0byBjb3JyZWN0bHkgY2FsY3VsYXRlIHZpZXdwb3J0IG5vZGVzIG9uIGZpcnN0IHJlbmRlcilcbiAgICAgIHRvT2JzZXJ2YWJsZSh0aGlzLmZsb3dFbnRpdGllc1NlcnZpY2Uubm9kZXMpLnBpcGUoXG4gICAgICAgIG9ic2VydmVPbihhc3luY1NjaGVkdWxlciksXG4gICAgICAgIGZpbHRlcigobm9kZXMpID0+ICEhbm9kZXMubGVuZ3RoKSxcbiAgICAgICksXG5cbiAgICAgIHRoaXMudmlld3BvcnRTZXJ2aWNlLnZpZXdwb3J0Q2hhbmdlRW5kJC5waXBlKGRlYm91bmNlVGltZSgzMDApKSxcbiAgICApLnBpcGUoXG4gICAgICBtYXAoKCkgPT4ge1xuICAgICAgICBjb25zdCB2aWV3cG9ydCA9IHRoaXMudmlld3BvcnRTZXJ2aWNlLnJlYWRhYmxlVmlld3BvcnQoKTtcbiAgICAgICAgY29uc3Qgem9vbVRocmVzaG9sZCA9IHRoaXMuZmxvd1NldHRpbmdzU2VydmljZS5vcHRpbWl6YXRpb24oKS52aXJ0dWFsaXphdGlvblpvb21UaHJlc2hvbGQ7XG5cbiAgICAgICAgcmV0dXJuIHZpZXdwb3J0Lnpvb20gPCB6b29tVGhyZXNob2xkID8gW10gOiB0aGlzLnZpZXdwb3J0Tm9kZXMoKTtcbiAgICAgIH0pLFxuICAgICksXG4gICAge1xuICAgICAgaW5pdGlhbFZhbHVlOiBbXSxcbiAgICB9LFxuICApO1xuXG4gIHByaXZhdGUgbWF4T3JkZXIgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIE1hdGgubWF4KC4uLnRoaXMuZmxvd0VudGl0aWVzU2VydmljZS5ub2RlcygpLm1hcCgobikgPT4gbi5yZW5kZXJPcmRlcigpKSk7XG4gIH0pO1xuXG4gIHB1YmxpYyBwdWxsTm9kZShub2RlOiBOb2RlTW9kZWwpIHtcbiAgICAvLyBwdWxsIG5vZGVcbiAgICBub2RlLnJlbmRlck9yZGVyLnNldCh0aGlzLm1heE9yZGVyKCkgKyAxKTtcblxuICAgIC8vIHB1bGwgY2hpbGRyZW5cbiAgICBub2RlLmNoaWxkcmVuKCkuZm9yRWFjaCgobikgPT4gdGhpcy5wdWxsTm9kZShuKSk7XG4gIH1cbn1cbiJdfQ==
@@ -1,35 +0,0 @@
1
- import { __decorate } from "tslib";
2
- import { computed, Injectable, signal } from '@angular/core';
3
- import { Microtask } from '../decorators/microtask.decorator';
4
- import * as i0 from "@angular/core";
5
- export class OverlaysService {
6
- constructor() {
7
- this.toolbars = signal([]);
8
- this.nodeToolbarsMap = computed(() => {
9
- const map = new Map();
10
- this.toolbars().forEach((toolbar) => {
11
- const existing = map.get(toolbar.node) ?? [];
12
- map.set(toolbar.node, [...existing, toolbar]);
13
- });
14
- return map;
15
- });
16
- }
17
- addToolbar(toolbar) {
18
- this.toolbars.update((toolbars) => [...toolbars, toolbar]);
19
- }
20
- removeToolbar(toolbar) {
21
- this.toolbars.update((toolbars) => toolbars.filter((t) => t !== toolbar));
22
- }
23
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: OverlaysService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
24
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: OverlaysService }); }
25
- }
26
- __decorate([
27
- Microtask
28
- ], OverlaysService.prototype, "addToolbar", null);
29
- __decorate([
30
- Microtask
31
- ], OverlaysService.prototype, "removeToolbar", null);
32
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: OverlaysService, decorators: [{
33
- type: Injectable
34
- }], propDecorators: { addToolbar: [], removeToolbar: [] } });
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheXMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy9zZXJ2aWNlcy9vdmVybGF5cy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHN0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDOztBQUc5RCxNQUFNLE9BQU8sZUFBZTtJQUQ1QjtRQUVtQixhQUFRLEdBQUcsTUFBTSxDQUFpQixFQUFFLENBQUMsQ0FBQztRQUVoRCxvQkFBZSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDckMsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQTZCLENBQUM7WUFFakQsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO2dCQUNsQyxNQUFNLFFBQVEsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQzdDLEdBQUcsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDaEQsQ0FBQyxDQUFDLENBQUM7WUFFSCxPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUMsQ0FBQyxDQUFDO0tBV0o7SUFSUSxVQUFVLENBQUMsT0FBcUI7UUFDckMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBR00sYUFBYSxDQUFDLE9BQXFCO1FBQ3hDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQztJQUM1RSxDQUFDOytHQXRCVSxlQUFlO21IQUFmLGVBQWU7O0FBZW5CO0lBRE4sU0FBUztpREFHVDtBQUdNO0lBRE4sU0FBUztvREFHVDs0RkF0QlUsZUFBZTtrQkFEM0IsVUFBVTs4QkFnQkYsVUFBVSxNQUtWLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb21wdXRlZCwgSW5qZWN0YWJsZSwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUb29sYmFyTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvdG9vbGJhci5tb2RlbCc7XG5pbXBvcnQgeyBOb2RlTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvbm9kZS5tb2RlbCc7XG5pbXBvcnQgeyBNaWNyb3Rhc2sgfSBmcm9tICcuLi9kZWNvcmF0b3JzL21pY3JvdGFzay5kZWNvcmF0b3InO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgT3ZlcmxheXNTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSB0b29sYmFycyA9IHNpZ25hbDxUb29sYmFyTW9kZWxbXT4oW10pO1xuXG4gIHB1YmxpYyBub2RlVG9vbGJhcnNNYXAgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgbWFwID0gbmV3IE1hcDxOb2RlTW9kZWwsIFRvb2xiYXJNb2RlbFtdPigpO1xuXG4gICAgdGhpcy50b29sYmFycygpLmZvckVhY2goKHRvb2xiYXIpID0+IHtcbiAgICAgIGNvbnN0IGV4aXN0aW5nID0gbWFwLmdldCh0b29sYmFyLm5vZGUpID8/IFtdO1xuICAgICAgbWFwLnNldCh0b29sYmFyLm5vZGUsIFsuLi5leGlzdGluZywgdG9vbGJhcl0pO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIG1hcDtcbiAgfSk7XG5cbiAgQE1pY3JvdGFza1xuICBwdWJsaWMgYWRkVG9vbGJhcih0b29sYmFyOiBUb29sYmFyTW9kZWwpOiB2b2lkIHtcbiAgICB0aGlzLnRvb2xiYXJzLnVwZGF0ZSgodG9vbGJhcnMpID0+IFsuLi50b29sYmFycywgdG9vbGJhcl0pO1xuICB9XG5cbiAgQE1pY3JvdGFza1xuICBwdWJsaWMgcmVtb3ZlVG9vbGJhcih0b29sYmFyOiBUb29sYmFyTW9kZWwpOiB2b2lkIHtcbiAgICB0aGlzLnRvb2xiYXJzLnVwZGF0ZSgodG9vbGJhcnMpID0+IHRvb2xiYXJzLmZpbHRlcigodCkgPT4gdCAhPT0gdG9vbGJhcikpO1xuICB9XG59XG4iXX0=
@@ -1,21 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class PreviewFlowRenderStrategyService {
4
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PreviewFlowRenderStrategyService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
5
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PreviewFlowRenderStrategyService }); }
6
- }
7
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PreviewFlowRenderStrategyService, decorators: [{
8
- type: Injectable
9
- }] });
10
- export class ViewportPreviewFlowRenderStrategyService extends PreviewFlowRenderStrategyService {
11
- shouldRenderNode(node) {
12
- // Do not render preview node if the real node is visible
13
- return !node.isVisible();
14
- }
15
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ViewportPreviewFlowRenderStrategyService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
16
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ViewportPreviewFlowRenderStrategyService }); }
17
- }
18
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ViewportPreviewFlowRenderStrategyService, decorators: [{
19
- type: Injectable
20
- }] });
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJldmlldy1mbG93LXJlbmRlci1zdHJhdGVneS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZmbG93LWxpYi9zcmMvbGliL3ZmbG93L3NlcnZpY2VzL3ByZXZpZXctZmxvdy1yZW5kZXItc3RyYXRlZ3kuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUkzQyxNQUFNLE9BQWdCLGdDQUFnQzsrR0FBaEMsZ0NBQWdDO21IQUFoQyxnQ0FBZ0M7OzRGQUFoQyxnQ0FBZ0M7a0JBRHJELFVBQVU7O0FBTVgsTUFBTSxPQUFPLHdDQUF5QyxTQUFRLGdDQUFnQztJQUNyRixnQkFBZ0IsQ0FBQyxJQUFlO1FBQ3JDLHlEQUF5RDtRQUN6RCxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQzNCLENBQUM7K0dBSlUsd0NBQXdDO21IQUF4Qyx3Q0FBd0M7OzRGQUF4Qyx3Q0FBd0M7a0JBRHBELFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOb2RlTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvbm9kZS5tb2RlbCc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBQcmV2aWV3Rmxvd1JlbmRlclN0cmF0ZWd5U2VydmljZSB7XG4gIHB1YmxpYyBhYnN0cmFjdCBzaG91bGRSZW5kZXJOb2RlKG5vZGU6IE5vZGVNb2RlbCk6IGJvb2xlYW47XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBWaWV3cG9ydFByZXZpZXdGbG93UmVuZGVyU3RyYXRlZ3lTZXJ2aWNlIGV4dGVuZHMgUHJldmlld0Zsb3dSZW5kZXJTdHJhdGVneVNlcnZpY2Uge1xuICBwdWJsaWMgc2hvdWxkUmVuZGVyTm9kZShub2RlOiBOb2RlTW9kZWwpOiBib29sZWFuIHtcbiAgICAvLyBEbyBub3QgcmVuZGVyIHByZXZpZXcgbm9kZSBpZiB0aGUgcmVhbCBub2RlIGlzIHZpc2libGVcbiAgICByZXR1cm4gIW5vZGUuaXNWaXNpYmxlKCk7XG4gIH1cbn1cbiJdfQ==
@@ -1,54 +0,0 @@
1
- import { Injectable, inject } from '@angular/core';
2
- import { FlowEntitiesService } from './flow-entities.service';
3
- import { Subject, tap } from 'rxjs';
4
- import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
5
- import { KeyboardService } from './keyboard.service';
6
- import * as i0 from "@angular/core";
7
- export class SelectionService {
8
- constructor() {
9
- this.flowEntitiesService = inject(FlowEntitiesService);
10
- this.keyboardService = inject(KeyboardService);
11
- this.viewport$ = new Subject();
12
- this.resetSelection = this.viewport$
13
- .pipe(tap(({ start, end, target }) => {
14
- if (start && end && target) {
15
- const delta = SelectionService.delta;
16
- const diffX = Math.abs(end.x - start.x);
17
- const diffY = Math.abs(end.y - start.y);
18
- // click (not drag)
19
- const isClick = diffX < delta && diffY < delta;
20
- // do not reset if event chain contains selectable elems
21
- const isNotSelectable = !target.closest('.selectable');
22
- if (isClick && isNotSelectable) {
23
- this.select(null);
24
- }
25
- }
26
- }), takeUntilDestroyed())
27
- .subscribe();
28
- }
29
- static { this.delta = 6; }
30
- setViewport(viewport) {
31
- this.viewport$.next(viewport);
32
- }
33
- select(entity) {
34
- // ? May be not a responsibility of this method
35
- // if entity already selected - do nothing
36
- if (entity?.selected()) {
37
- return;
38
- }
39
- if (!this.keyboardService.isActiveAction('multiSelection')) {
40
- // undo select for previously selected nodes
41
- this.flowEntitiesService.entities().forEach((n) => n.selected.set(false));
42
- }
43
- if (entity) {
44
- // select passed entity
45
- entity.selected.set(true);
46
- }
47
- }
48
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SelectionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
49
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SelectionService }); }
50
- }
51
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SelectionService, decorators: [{
52
- type: Injectable
53
- }] });
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3NyYy9saWIvdmZsb3cvc2VydmljZXMvc2VsZWN0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFOUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDOztBQVlyRCxNQUFNLE9BQU8sZ0JBQWdCO0lBRDdCO1FBSVUsd0JBQW1CLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDbEQsb0JBQWUsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFFeEMsY0FBUyxHQUFHLElBQUksT0FBTyxFQUF3QixDQUFDO1FBRWhELG1CQUFjLEdBQUcsSUFBSSxDQUFDLFNBQVM7YUFDdEMsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFO1lBQzdCLElBQUksS0FBSyxJQUFJLEdBQUcsSUFBSSxNQUFNLEVBQUUsQ0FBQztnQkFDM0IsTUFBTSxLQUFLLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO2dCQUVyQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN4QyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUV4QyxtQkFBbUI7Z0JBQ25CLE1BQU0sT0FBTyxHQUFHLEtBQUssR0FBRyxLQUFLLElBQUksS0FBSyxHQUFHLEtBQUssQ0FBQztnQkFDL0Msd0RBQXdEO2dCQUN4RCxNQUFNLGVBQWUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7Z0JBRXZELElBQUksT0FBTyxJQUFJLGVBQWUsRUFBRSxDQUFDO29CQUMvQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNwQixDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUMsQ0FBQyxFQUNGLGtCQUFrQixFQUFFLENBQ3JCO2FBQ0EsU0FBUyxFQUFFLENBQUM7S0F1QmhCO2FBbkRnQixVQUFLLEdBQUcsQ0FBQyxBQUFKLENBQUs7SUE4QmxCLFdBQVcsQ0FBQyxRQUE4QjtRQUMvQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRU0sTUFBTSxDQUFDLE1BQXlCO1FBQ3JDLCtDQUErQztRQUMvQywwQ0FBMEM7UUFDMUMsSUFBSSxNQUFNLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQztZQUN2QixPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUM7WUFDM0QsNENBQTRDO1lBQzVDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDNUUsQ0FBQztRQUVELElBQUksTUFBTSxFQUFFLENBQUM7WUFDWCx1QkFBdUI7WUFDdkIsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUIsQ0FBQztJQUNILENBQUM7K0dBbkRVLGdCQUFnQjttSEFBaEIsZ0JBQWdCOzs0RkFBaEIsZ0JBQWdCO2tCQUQ1QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBWaWV3cG9ydFN0YXRlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy92aWV3cG9ydC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRmxvd0VudGl0aWVzU2VydmljZSB9IGZyb20gJy4vZmxvdy1lbnRpdGllcy5zZXJ2aWNlJztcbmltcG9ydCB7IEZsb3dFbnRpdHkgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2Zsb3ctZW50aXR5LmludGVyZmFjZSc7XG5pbXBvcnQgeyBTdWJqZWN0LCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IEtleWJvYXJkU2VydmljZSB9IGZyb20gJy4va2V5Ym9hcmQuc2VydmljZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmlld3BvcnRGb3JTZWxlY3Rpb24ge1xuICBzdGFydDogVmlld3BvcnRTdGF0ZTtcbiAgZW5kOiBWaWV3cG9ydFN0YXRlO1xuICAvKipcbiAgICogVGFyZ2V0IG1heSBub3QgZXhpc3QgaWYgdmlld3BvcnQgY2hhbmdlIG1hZGUgcHJvZ3JhbW1hdGljYWxseVxuICAgKi9cbiAgdGFyZ2V0PzogRWxlbWVudDtcbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFNlbGVjdGlvblNlcnZpY2Uge1xuICBwcml2YXRlIHN0YXRpYyBkZWx0YSA9IDY7XG5cbiAgcHJpdmF0ZSBmbG93RW50aXRpZXNTZXJ2aWNlID0gaW5qZWN0KEZsb3dFbnRpdGllc1NlcnZpY2UpO1xuICBwcml2YXRlIGtleWJvYXJkU2VydmljZSA9IGluamVjdChLZXlib2FyZFNlcnZpY2UpO1xuXG4gIHByb3RlY3RlZCB2aWV3cG9ydCQgPSBuZXcgU3ViamVjdDxWaWV3cG9ydEZvclNlbGVjdGlvbj4oKTtcblxuICBwcm90ZWN0ZWQgcmVzZXRTZWxlY3Rpb24gPSB0aGlzLnZpZXdwb3J0JFxuICAgIC5waXBlKFxuICAgICAgdGFwKCh7IHN0YXJ0LCBlbmQsIHRhcmdldCB9KSA9PiB7XG4gICAgICAgIGlmIChzdGFydCAmJiBlbmQgJiYgdGFyZ2V0KSB7XG4gICAgICAgICAgY29uc3QgZGVsdGEgPSBTZWxlY3Rpb25TZXJ2aWNlLmRlbHRhO1xuXG4gICAgICAgICAgY29uc3QgZGlmZlggPSBNYXRoLmFicyhlbmQueCAtIHN0YXJ0LngpO1xuICAgICAgICAgIGNvbnN0IGRpZmZZID0gTWF0aC5hYnMoZW5kLnkgLSBzdGFydC55KTtcblxuICAgICAgICAgIC8vIGNsaWNrIChub3QgZHJhZylcbiAgICAgICAgICBjb25zdCBpc0NsaWNrID0gZGlmZlggPCBkZWx0YSAmJiBkaWZmWSA8IGRlbHRhO1xuICAgICAgICAgIC8vIGRvIG5vdCByZXNldCBpZiBldmVudCBjaGFpbiBjb250YWlucyBzZWxlY3RhYmxlIGVsZW1zXG4gICAgICAgICAgY29uc3QgaXNOb3RTZWxlY3RhYmxlID0gIXRhcmdldC5jbG9zZXN0KCcuc2VsZWN0YWJsZScpO1xuXG4gICAgICAgICAgaWYgKGlzQ2xpY2sgJiYgaXNOb3RTZWxlY3RhYmxlKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdChudWxsKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgdGFrZVVudGlsRGVzdHJveWVkKCksXG4gICAgKVxuICAgIC5zdWJzY3JpYmUoKTtcblxuICBwdWJsaWMgc2V0Vmlld3BvcnQodmlld3BvcnQ6IFZpZXdwb3J0Rm9yU2VsZWN0aW9uKSB7XG4gICAgdGhpcy52aWV3cG9ydCQubmV4dCh2aWV3cG9ydCk7XG4gIH1cblxuICBwdWJsaWMgc2VsZWN0KGVudGl0eTogRmxvd0VudGl0eSB8IG51bGwpIHtcbiAgICAvLyA/IE1heSBiZSBub3QgYSByZXNwb25zaWJpbGl0eSBvZiB0aGlzIG1ldGhvZFxuICAgIC8vIGlmIGVudGl0eSBhbHJlYWR5IHNlbGVjdGVkIC0gZG8gbm90aGluZ1xuICAgIGlmIChlbnRpdHk/LnNlbGVjdGVkKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMua2V5Ym9hcmRTZXJ2aWNlLmlzQWN0aXZlQWN0aW9uKCdtdWx0aVNlbGVjdGlvbicpKSB7XG4gICAgICAvLyB1bmRvIHNlbGVjdCBmb3IgcHJldmlvdXNseSBzZWxlY3RlZCBub2Rlc1xuICAgICAgdGhpcy5mbG93RW50aXRpZXNTZXJ2aWNlLmVudGl0aWVzKCkuZm9yRWFjaCgobikgPT4gbi5zZWxlY3RlZC5zZXQoZmFsc2UpKTtcbiAgICB9XG5cbiAgICBpZiAoZW50aXR5KSB7XG4gICAgICAvLyBzZWxlY3QgcGFzc2VkIGVudGl0eVxuICAgICAgZW50aXR5LnNlbGVjdGVkLnNldCh0cnVlKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -1,64 +0,0 @@
1
- import { Injectable, inject, signal } from '@angular/core';
2
- import { getNodesBounds } from '../utils/nodes';
3
- import { FlowEntitiesService } from './flow-entities.service';
4
- import { getViewportForBounds } from '../utils/viewport';
5
- import { FlowSettingsService } from './flow-settings.service';
6
- import { Subject } from 'rxjs';
7
- import * as i0 from "@angular/core";
8
- export class ViewportService {
9
- constructor() {
10
- this.entitiesService = inject(FlowEntitiesService);
11
- this.flowSettingsService = inject(FlowSettingsService);
12
- /**
13
- * Internal signal that accepts value from user by lib api
14
- * When this signal changes, lib sets new view state and update readableViewport signal
15
- */
16
- this.writableViewport = signal({
17
- changeType: 'initial',
18
- state: ViewportService.getDefaultViewport(),
19
- duration: 0,
20
- });
21
- /**
22
- * Public signal with viewport state. User can directly read from this signal. It's updated by:
23
- * - user events on flow
24
- * - writableViewport signal
25
- */
26
- this.readableViewport = signal(ViewportService.getDefaultViewport());
27
- this.viewportChangeEnd$ = new Subject();
28
- }
29
- /**
30
- * The default value used by d3, just copy it here
31
- *
32
- * @returns default viewport value
33
- */
34
- static getDefaultViewport() {
35
- return { zoom: 1, x: 0, y: 0 };
36
- }
37
- // TODO: add writableViewportWithConstraints (to apply min zoom/max zoom values)
38
- fitView(options = { padding: 0.1, duration: 0, nodes: [] }) {
39
- const nodes = this.getBoundsNodes(options.nodes ?? []);
40
- const state = getViewportForBounds(getNodesBounds(nodes), this.flowSettingsService.computedFlowWidth(), this.flowSettingsService.computedFlowHeight(), this.flowSettingsService.minZoom(), this.flowSettingsService.maxZoom(), options.padding ?? 0.1);
41
- const duration = options.duration ?? 0;
42
- this.writableViewport.set({ changeType: 'absolute', state, duration });
43
- }
44
- triggerViewportChangeEvent(type) {
45
- if (type === 'end') {
46
- this.viewportChangeEnd$.next();
47
- }
48
- }
49
- getBoundsNodes(nodeIds) {
50
- return !nodeIds?.length
51
- ? // If nodes option not passed or the list is empty, then get fit the whole view
52
- this.entitiesService.nodes()
53
- : // Otherwise fit to specific nodes
54
- nodeIds
55
- .map((nodeId) => this.entitiesService.nodes().find(({ rawNode }) => rawNode.id === nodeId))
56
- .filter((node) => !!node);
57
- }
58
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ViewportService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
59
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ViewportService }); }
60
- }
61
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ViewportService, decorators: [{
62
- type: Injectable
63
- }] });
64
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy9zZXJ2aWNlcy92aWV3cG9ydC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWtCLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRzlELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBRy9CLE1BQU0sT0FBTyxlQUFlO0lBRDVCO1FBRVUsb0JBQWUsR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUM5Qyx3QkFBbUIsR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQVcxRDs7O1dBR0c7UUFDYSxxQkFBZ0IsR0FBcUMsTUFBTSxDQUFDO1lBQzFFLFVBQVUsRUFBRSxTQUFTO1lBQ3JCLEtBQUssRUFBRSxlQUFlLENBQUMsa0JBQWtCLEVBQUU7WUFDM0MsUUFBUSxFQUFFLENBQUM7U0FDWixDQUFDLENBQUM7UUFFSDs7OztXQUlHO1FBQ2EscUJBQWdCLEdBQWtDLE1BQU0sQ0FBQyxlQUFlLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO1FBRS9GLHVCQUFrQixHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7S0FvQzFEO0lBOURDOzs7O09BSUc7SUFDSyxNQUFNLENBQUMsa0JBQWtCO1FBQy9CLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFxQkQsZ0ZBQWdGO0lBRXpFLE9BQU8sQ0FBQyxVQUEwQixFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFO1FBQy9FLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQztRQUV2RCxNQUFNLEtBQUssR0FBRyxvQkFBb0IsQ0FDaEMsY0FBYyxDQUFDLEtBQUssQ0FBQyxFQUNyQixJQUFJLENBQUMsbUJBQW1CLENBQUMsaUJBQWlCLEVBQUUsRUFDNUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGtCQUFrQixFQUFFLEVBQzdDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsRUFDbEMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxFQUNsQyxPQUFPLENBQUMsT0FBTyxJQUFJLEdBQUcsQ0FDdkIsQ0FBQztRQUVGLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDO1FBRXZDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFTSwwQkFBMEIsQ0FBQyxJQUFXO1FBQzNDLElBQUksSUFBSSxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNqQyxDQUFDO0lBQ0gsQ0FBQztJQUVPLGNBQWMsQ0FBQyxPQUFpQjtRQUN0QyxPQUFPLENBQUMsT0FBTyxFQUFFLE1BQU07WUFDckIsQ0FBQyxDQUFDLCtFQUErRTtnQkFDL0UsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUU7WUFDOUIsQ0FBQyxDQUFDLGtDQUFrQztnQkFDbEMsT0FBTztxQkFDSixHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxNQUFNLENBQUMsQ0FBQztxQkFDMUYsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFxQixFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JELENBQUM7K0dBakVVLGVBQWU7bUhBQWYsZUFBZTs7NEZBQWYsZUFBZTtrQkFEM0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIFdyaXRhYmxlU2lnbmFsLCBpbmplY3QsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVmlld3BvcnRTdGF0ZSwgV3JpdGFibGVWaWV3cG9ydCB9IGZyb20gJy4uL2ludGVyZmFjZXMvdmlld3BvcnQuaW50ZXJmYWNlJztcbmltcG9ydCB7IGdldE5vZGVzQm91bmRzIH0gZnJvbSAnLi4vdXRpbHMvbm9kZXMnO1xuaW1wb3J0IHsgRmxvd0VudGl0aWVzU2VydmljZSB9IGZyb20gJy4vZmxvdy1lbnRpdGllcy5zZXJ2aWNlJztcbmltcG9ydCB7IGdldFZpZXdwb3J0Rm9yQm91bmRzIH0gZnJvbSAnLi4vdXRpbHMvdmlld3BvcnQnO1xuaW1wb3J0IHsgRmxvd1NldHRpbmdzU2VydmljZSB9IGZyb20gJy4vZmxvdy1zZXR0aW5ncy5zZXJ2aWNlJztcbmltcG9ydCB7IEZpdFZpZXdPcHRpb25zIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9maXQtdmlldy1vcHRpb25zLmludGVyZmFjZSc7XG5pbXBvcnQgeyBOb2RlTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvbm9kZS5tb2RlbCc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBWaWV3cG9ydFNlcnZpY2Uge1xuICBwcml2YXRlIGVudGl0aWVzU2VydmljZSA9IGluamVjdChGbG93RW50aXRpZXNTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBmbG93U2V0dGluZ3NTZXJ2aWNlID0gaW5qZWN0KEZsb3dTZXR0aW5nc1NlcnZpY2UpO1xuXG4gIC8qKlxuICAgKiBUaGUgZGVmYXVsdCB2YWx1ZSB1c2VkIGJ5IGQzLCBqdXN0IGNvcHkgaXQgaGVyZVxuICAgKlxuICAgKiBAcmV0dXJucyBkZWZhdWx0IHZpZXdwb3J0IHZhbHVlXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBnZXREZWZhdWx0Vmlld3BvcnQoKTogVmlld3BvcnRTdGF0ZSB7XG4gICAgcmV0dXJuIHsgem9vbTogMSwgeDogMCwgeTogMCB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEludGVybmFsIHNpZ25hbCB0aGF0IGFjY2VwdHMgdmFsdWUgZnJvbSB1c2VyIGJ5IGxpYiBhcGlcbiAgICogV2hlbiB0aGlzIHNpZ25hbCBjaGFuZ2VzLCBsaWIgc2V0cyBuZXcgdmlldyBzdGF0ZSBhbmQgdXBkYXRlIHJlYWRhYmxlVmlld3BvcnQgc2lnbmFsXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgd3JpdGFibGVWaWV3cG9ydDogV3JpdGFibGVTaWduYWw8V3JpdGFibGVWaWV3cG9ydD4gPSBzaWduYWwoe1xuICAgIGNoYW5nZVR5cGU6ICdpbml0aWFsJyxcbiAgICBzdGF0ZTogVmlld3BvcnRTZXJ2aWNlLmdldERlZmF1bHRWaWV3cG9ydCgpLFxuICAgIGR1cmF0aW9uOiAwLFxuICB9KTtcblxuICAvKipcbiAgICogUHVibGljIHNpZ25hbCB3aXRoIHZpZXdwb3J0IHN0YXRlLiBVc2VyIGNhbiBkaXJlY3RseSByZWFkIGZyb20gdGhpcyBzaWduYWwuIEl0J3MgdXBkYXRlZCBieTpcbiAgICogLSB1c2VyIGV2ZW50cyBvbiBmbG93XG4gICAqIC0gd3JpdGFibGVWaWV3cG9ydCBzaWduYWxcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSByZWFkYWJsZVZpZXdwb3J0OiBXcml0YWJsZVNpZ25hbDxWaWV3cG9ydFN0YXRlPiA9IHNpZ25hbChWaWV3cG9ydFNlcnZpY2UuZ2V0RGVmYXVsdFZpZXdwb3J0KCkpO1xuXG4gIHB1YmxpYyByZWFkb25seSB2aWV3cG9ydENoYW5nZUVuZCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIC8vIFRPRE86IGFkZCB3cml0YWJsZVZpZXdwb3J0V2l0aENvbnN0cmFpbnRzICh0byBhcHBseSBtaW4gem9vbS9tYXggem9vbSB2YWx1ZXMpXG5cbiAgcHVibGljIGZpdFZpZXcob3B0aW9uczogRml0Vmlld09wdGlvbnMgPSB7IHBhZGRpbmc6IDAuMSwgZHVyYXRpb246IDAsIG5vZGVzOiBbXSB9KSB7XG4gICAgY29uc3Qgbm9kZXMgPSB0aGlzLmdldEJvdW5kc05vZGVzKG9wdGlvbnMubm9kZXMgPz8gW10pO1xuXG4gICAgY29uc3Qgc3RhdGUgPSBnZXRWaWV3cG9ydEZvckJvdW5kcyhcbiAgICAgIGdldE5vZGVzQm91bmRzKG5vZGVzKSxcbiAgICAgIHRoaXMuZmxvd1NldHRpbmdzU2VydmljZS5jb21wdXRlZEZsb3dXaWR0aCgpLFxuICAgICAgdGhpcy5mbG93U2V0dGluZ3NTZXJ2aWNlLmNvbXB1dGVkRmxvd0hlaWdodCgpLFxuICAgICAgdGhpcy5mbG93U2V0dGluZ3NTZXJ2aWNlLm1pblpvb20oKSxcbiAgICAgIHRoaXMuZmxvd1NldHRpbmdzU2VydmljZS5tYXhab29tKCksXG4gICAgICBvcHRpb25zLnBhZGRpbmcgPz8gMC4xLFxuICAgICk7XG5cbiAgICBjb25zdCBkdXJhdGlvbiA9IG9wdGlvbnMuZHVyYXRpb24gPz8gMDtcblxuICAgIHRoaXMud3JpdGFibGVWaWV3cG9ydC5zZXQoeyBjaGFuZ2VUeXBlOiAnYWJzb2x1dGUnLCBzdGF0ZSwgZHVyYXRpb24gfSk7XG4gIH1cblxuICBwdWJsaWMgdHJpZ2dlclZpZXdwb3J0Q2hhbmdlRXZlbnQodHlwZTogJ2VuZCcpIHtcbiAgICBpZiAodHlwZSA9PT0gJ2VuZCcpIHtcbiAgICAgIHRoaXMudmlld3BvcnRDaGFuZ2VFbmQkLm5leHQoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldEJvdW5kc05vZGVzKG5vZGVJZHM6IHN0cmluZ1tdKSB7XG4gICAgcmV0dXJuICFub2RlSWRzPy5sZW5ndGhcbiAgICAgID8gLy8gSWYgbm9kZXMgb3B0aW9uIG5vdCBwYXNzZWQgb3IgdGhlIGxpc3QgaXMgZW1wdHksIHRoZW4gZ2V0IGZpdCB0aGUgd2hvbGUgdmlld1xuICAgICAgICB0aGlzLmVudGl0aWVzU2VydmljZS5ub2RlcygpXG4gICAgICA6IC8vIE90aGVyd2lzZSBmaXQgdG8gc3BlY2lmaWMgbm9kZXNcbiAgICAgICAgbm9kZUlkc1xuICAgICAgICAgIC5tYXAoKG5vZGVJZCkgPT4gdGhpcy5lbnRpdGllc1NlcnZpY2Uubm9kZXMoKS5maW5kKCh7IHJhd05vZGUgfSkgPT4gcmF3Tm9kZS5pZCA9PT0gbm9kZUlkKSlcbiAgICAgICAgICAuZmlsdGVyKChub2RlKTogbm9kZSBpcyBOb2RlTW9kZWwgPT4gISFub2RlKTtcbiAgfVxufVxuIl19
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFja2dyb3VuZC50eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZmbG93LWxpYi9zcmMvbGliL3ZmbG93L3R5cGVzL2JhY2tncm91bmQudHlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgQmFja2dyb3VuZCA9IENvbG9yQmFja2dyb3VuZCB8IERvdHNCYWNrZ3JvdW5kIHwgSW1hZ2VCYWNrZ3JvdW5kO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbG9yQmFja2dyb3VuZCB7XG4gIHR5cGU6ICdzb2xpZCc7XG4gIGNvbG9yOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRG90c0JhY2tncm91bmQge1xuICB0eXBlOiAnZG90cyc7XG4gIC8qKlxuICAgKiBHYXAgYmV0d2VlbiBkb3RzXG4gICAqL1xuICBnYXA/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIENvbG9yIG9mIHRoZSBkb3RcbiAgICovXG4gIGNvbG9yPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEaWFtZXRlciBvZiB0aGUgZG90XG4gICAqL1xuICBzaXplPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBDb2xvciBiZWhpbmQgdGhhIGRvdCBwYXR0ZXJuXG4gICAqL1xuICBiYWNrZ3JvdW5kQ29sb3I/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW1hZ2VCYWNrZ3JvdW5kIHtcbiAgdHlwZTogJ2ltYWdlJztcbiAgLyoqXG4gICAqIFBhdGggdG8gaW1hZ2UuIFBhc3NlcyBhcyBhIGhyZWYgdG8gdGhpcyBlbGVtZW50OlxuICAgKlxuICAgKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9TVkcvRWxlbWVudC9pbWFnZVxuICAgKi9cbiAgc3JjOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIElmIHRydWUsIGltYWdlIHdpbGwgYmUgZml4ZWQgb24gdGhlIGJhY2tncm91bmQgKG5vdCBtb3Zpbmcgd2l0aCB0aGUgZmxvdywgem9vbSBhbHNvIGRvZXNuJ3QgYWZmZWN0IGl0KVxuICAgKi9cbiAgZml4ZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJZiB0cnVlLCBpbWFnZSB3aWxsIGJlIHJlcGVhdGVkXG4gICAqL1xuICByZXBlYXQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTY2FsZSByZWxhdGl2ZSB0byBuYXR1cmFsIGltYWdlIHNpemUuXG4gICAqXG4gICAqIEZvciBleGFtcGxlLCBpZiBpbWFnZSBpcyAxMDB4MTAwIGFuZCBzY2FsZSBpcyAwLjUsIGl0IHdpbGwgYmUgcmVuZGVyZWQgYXMgNTB4NTBcbiAgICovXG4gIHNjYWxlPzogbnVtYmVyO1xufVxuIl19
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29ubmVjdGlvbi1tb2RlLnR5cGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3NyYy9saWIvdmZsb3cvdHlwZXMvY29ubmVjdGlvbi1tb2RlLnR5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIENvbm5lY3Rpb25Nb2RlID0gJ2xvb3NlJyB8ICdzdHJpY3QnO1xuIl19
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRnZS1jaGFuZ2UudHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy90eXBlcy9lZGdlLWNoYW5nZS50eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBFZGdlQ2hhbmdlID0gRWRnZURldGFjaGVkQ2hhbmdlIHwgRWRnZUFkZENoYW5nZSB8IEVkZ2VSZW1vdmVDaGFuZ2UgfCBFZGdlU2VsZWN0Q2hhbmdlO1xuXG4vKipcbiAqIEBleHBlcmltZW50YWxcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFZGdlRGV0YWNoZWRDaGFuZ2UgZXh0ZW5kcyBFZGdlQ2hhbmdlU2hhcmVkIHtcbiAgdHlwZTogJ2RldGFjaGVkJztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFZGdlQWRkQ2hhbmdlIGV4dGVuZHMgRWRnZUNoYW5nZVNoYXJlZCB7XG4gIHR5cGU6ICdhZGQnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVkZ2VSZW1vdmVDaGFuZ2UgZXh0ZW5kcyBFZGdlQ2hhbmdlU2hhcmVkIHtcbiAgdHlwZTogJ3JlbW92ZSc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRWRnZVNlbGVjdENoYW5nZSBleHRlbmRzIEVkZ2VDaGFuZ2VTaGFyZWQge1xuICB0eXBlOiAnc2VsZWN0JztcbiAgc2VsZWN0ZWQ6IGJvb2xlYW47XG59XG5cbmludGVyZmFjZSBFZGdlQ2hhbmdlU2hhcmVkIHtcbiAgaWQ6IHN0cmluZztcbn1cbiJdfQ==
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZGxlLXR5cGUudHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy90eXBlcy9oYW5kbGUtdHlwZS50eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBIYW5kbGVUeXBlID0gJ3NvdXJjZScgfCAndGFyZ2V0JztcbiJdfQ==
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5Ym9hcmQtYWN0aW9uLnR5cGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3NyYy9saWIvdmZsb3cvdHlwZXMva2V5Ym9hcmQtYWN0aW9uLnR5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIEtleWJvYXJkQWN0aW9uID0gJ211bHRpU2VsZWN0aW9uJztcblxuZXhwb3J0IHR5cGUgS2V5Ym9hcmRTaG9ydGN1dHMgPSBSZWNvcmQ8S2V5Ym9hcmRBY3Rpb24sIG51bGwgfCBzdHJpbmdbXT47XG4iXX0=
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1jaGFuZ2UudHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy90eXBlcy9ub2RlLWNoYW5nZS50eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQb2ludCB9IGZyb20gJy4uL2ludGVyZmFjZXMvcG9pbnQuaW50ZXJmYWNlJztcblxuZXhwb3J0IHR5cGUgTm9kZUNoYW5nZSA9IE5vZGVQb3NpdGlvbkNoYW5nZSB8IE5vZGVTaXplQ2hhbmdlIHwgTm9kZUFkZENoYW5nZSB8IE5vZGVSZW1vdmVDaGFuZ2UgfCBOb2RlU2VsZWN0ZWRDaGFuZ2U7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTm9kZVBvc2l0aW9uQ2hhbmdlIGV4dGVuZHMgTm9kZUNoYW5nZVNoYXJlZCB7XG4gIHR5cGU6ICdwb3NpdGlvbic7XG4gIHBvaW50OiBQb2ludDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOb2RlU2l6ZUNoYW5nZSBleHRlbmRzIE5vZGVDaGFuZ2VTaGFyZWQge1xuICB0eXBlOiAnc2l6ZSc7XG4gIHNpemU6IHsgd2lkdGg6IG51bWJlcjsgaGVpZ2h0OiBudW1iZXIgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOb2RlQWRkQ2hhbmdlIGV4dGVuZHMgTm9kZUNoYW5nZVNoYXJlZCB7XG4gIHR5cGU6ICdhZGQnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5vZGVSZW1vdmVDaGFuZ2UgZXh0ZW5kcyBOb2RlQ2hhbmdlU2hhcmVkIHtcbiAgdHlwZTogJ3JlbW92ZSc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTm9kZVNlbGVjdGVkQ2hhbmdlIGV4dGVuZHMgTm9kZUNoYW5nZVNoYXJlZCB7XG4gIHR5cGU6ICdzZWxlY3QnO1xuICBzZWxlY3RlZDogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIE5vZGVDaGFuZ2VTaGFyZWQge1xuICBpZDogc3RyaW5nO1xufVxuIl19
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9zaXRpb24udHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy90eXBlcy9wb3NpdGlvbi50eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBQb3NpdGlvbiA9ICd0b3AnIHwgJ2JvdHRvbScgfCAncmlnaHQnIHwgJ2xlZnQnO1xuIl19
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQtY2hhbmdlLXR5cGUudHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy90eXBlcy92aWV3cG9ydC1jaGFuZ2UtdHlwZS50eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBWaWV3cG9ydENoYW5nZVR5cGUgPVxuICB8ICdpbml0aWFsJyAvLyBmaXJzdCBjaGFuZ2UsIHNldCBieSBsaWJyYXJ5XG4gIHwgJ2Fic29sdXRlJyAvLyBsYXRlciBhYnNvbHVlIHZhbHVlIGNoYW5nZXMsIHNldCBieSB1c2VyXG4gIHwgJ3JlbGF0aXZlJzsgLy8gbGF0ZXIgcmVsYXRpdmUgdmFsdWUgY2hhbmdlcywgc2V0IGJ5IHVzZXJcbiJdfQ==
@@ -1,11 +0,0 @@
1
- export function addNodesToEdges(nodes, edges) {
2
- const nodesById = nodes.reduce((acc, n) => {
3
- acc[n.rawNode.id] = n;
4
- return acc;
5
- }, {});
6
- edges.forEach((e) => {
7
- e.source.set(nodesById[e.edge.source]);
8
- e.target.set(nodesById[e.edge.target]);
9
- });
10
- }
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLW5vZGVzLXRvLWVkZ2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZmbG93LWxpYi9zcmMvbGliL3ZmbG93L3V0aWxzL2FkZC1ub2Rlcy10by1lZGdlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxNQUFNLFVBQVUsZUFBZSxDQUFDLEtBQWtCLEVBQUUsS0FBa0I7SUFDcEUsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FDNUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDVCxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFdEIsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDLEVBQ0QsRUFBcUMsQ0FDdEMsQ0FBQztJQUVGLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtRQUNsQixDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ3ZDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDekMsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWRnZU1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL2VkZ2UubW9kZWwnO1xuaW1wb3J0IHsgTm9kZU1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL25vZGUubW9kZWwnO1xuXG5leHBvcnQgZnVuY3Rpb24gYWRkTm9kZXNUb0VkZ2VzKG5vZGVzOiBOb2RlTW9kZWxbXSwgZWRnZXM6IEVkZ2VNb2RlbFtdKTogdm9pZCB7XG4gIGNvbnN0IG5vZGVzQnlJZCA9IG5vZGVzLnJlZHVjZShcbiAgICAoYWNjLCBuKSA9PiB7XG4gICAgICBhY2Nbbi5yYXdOb2RlLmlkXSA9IG47XG5cbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSxcbiAgICB7fSBhcyB7IFtub2RlSWQ6IHN0cmluZ106IE5vZGVNb2RlbCB9LFxuICApO1xuXG4gIGVkZ2VzLmZvckVhY2goKGUpID0+IHtcbiAgICBlLnNvdXJjZS5zZXQobm9kZXNCeUlkW2UuZWRnZS5zb3VyY2VdKTtcbiAgICBlLnRhcmdldC5zZXQobm9kZXNCeUlkW2UuZWRnZS50YXJnZXRdKTtcbiAgfSk7XG59XG4iXX0=
@@ -1,30 +0,0 @@
1
- /**
2
- * This function contains a hack-y behavior.
3
- * If the handles are of the same type (source-source or target-target),
4
- * it returns nodes where source === target and
5
- * handles where sourceHandle === targetHandle
6
- *
7
- * This leads to that notSelfValidator returns false for these cases,
8
- * exactly what we need for strict connection type
9
- */
10
- export function adjustDirection(connection) {
11
- const result = {};
12
- if (connection.sourceHandle.rawHandle.type === 'source') {
13
- result.source = connection.source;
14
- result.sourceHandle = connection.sourceHandle;
15
- }
16
- else {
17
- result.source = connection.target;
18
- result.sourceHandle = connection.targetHandle;
19
- }
20
- if (connection.targetHandle.rawHandle.type === 'target') {
21
- result.target = connection.target;
22
- result.targetHandle = connection.targetHandle;
23
- }
24
- else {
25
- result.target = connection.source;
26
- result.targetHandle = connection.sourceHandle;
27
- }
28
- return result;
29
- }
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRqdXN0LWRpcmVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy91dGlscy9hZGp1c3QtZGlyZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxVQUFVLGVBQWUsQ0FBQyxVQUE4QjtJQUM1RCxNQUFNLE1BQU0sR0FBRyxFQUF3QixDQUFDO0lBRXhDLElBQUksVUFBVSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQ3hELE1BQU0sQ0FBQyxNQUFNLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQztRQUNsQyxNQUFNLENBQUMsWUFBWSxHQUFHLFVBQVUsQ0FBQyxZQUFZLENBQUM7SUFDaEQsQ0FBQztTQUFNLENBQUM7UUFDTixNQUFNLENBQUMsTUFBTSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUM7UUFDbEMsTUFBTSxDQUFDLFlBQVksR0FBRyxVQUFVLENBQUMsWUFBWSxDQUFDO0lBQ2hELENBQUM7SUFFRCxJQUFJLFVBQVUsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUN4RCxNQUFNLENBQUMsTUFBTSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUM7UUFDbEMsTUFBTSxDQUFDLFlBQVksR0FBRyxVQUFVLENBQUMsWUFBWSxDQUFDO0lBQ2hELENBQUM7U0FBTSxDQUFDO1FBQ04sTUFBTSxDQUFDLE1BQU0sR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDO1FBQ2xDLE1BQU0sQ0FBQyxZQUFZLEdBQUcsVUFBVSxDQUFDLFlBQVksQ0FBQztJQUNoRCxDQUFDO0lBRUQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbm5lY3Rpb25JbnRlcm5hbCB9IGZyb20gJy4uL2ludGVyZmFjZXMvY29ubmVjdGlvbi5pbnRlcm5hbC5pbnRlcmZhY2UnO1xuXG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gY29udGFpbnMgYSBoYWNrLXkgYmVoYXZpb3IuXG4gKiBJZiB0aGUgaGFuZGxlcyBhcmUgb2YgdGhlIHNhbWUgdHlwZSAoc291cmNlLXNvdXJjZSBvciB0YXJnZXQtdGFyZ2V0KSxcbiAqIGl0IHJldHVybnMgbm9kZXMgd2hlcmUgc291cmNlID09PSB0YXJnZXQgYW5kXG4gKiBoYW5kbGVzIHdoZXJlIHNvdXJjZUhhbmRsZSA9PT0gdGFyZ2V0SGFuZGxlXG4gKlxuICogVGhpcyBsZWFkcyB0byB0aGF0IG5vdFNlbGZWYWxpZGF0b3IgcmV0dXJucyBmYWxzZSBmb3IgdGhlc2UgY2FzZXMsXG4gKiBleGFjdGx5IHdoYXQgd2UgbmVlZCBmb3Igc3RyaWN0IGNvbm5lY3Rpb24gdHlwZVxuICovXG5leHBvcnQgZnVuY3Rpb24gYWRqdXN0RGlyZWN0aW9uKGNvbm5lY3Rpb246IENvbm5lY3Rpb25JbnRlcm5hbCk6IENvbm5lY3Rpb25JbnRlcm5hbCB7XG4gIGNvbnN0IHJlc3VsdCA9IHt9IGFzIENvbm5lY3Rpb25JbnRlcm5hbDtcblxuICBpZiAoY29ubmVjdGlvbi5zb3VyY2VIYW5kbGUucmF3SGFuZGxlLnR5cGUgPT09ICdzb3VyY2UnKSB7XG4gICAgcmVzdWx0LnNvdXJjZSA9IGNvbm5lY3Rpb24uc291cmNlO1xuICAgIHJlc3VsdC5zb3VyY2VIYW5kbGUgPSBjb25uZWN0aW9uLnNvdXJjZUhhbmRsZTtcbiAgfSBlbHNlIHtcbiAgICByZXN1bHQuc291cmNlID0gY29ubmVjdGlvbi50YXJnZXQ7XG4gICAgcmVzdWx0LnNvdXJjZUhhbmRsZSA9IGNvbm5lY3Rpb24udGFyZ2V0SGFuZGxlO1xuICB9XG5cbiAgaWYgKGNvbm5lY3Rpb24udGFyZ2V0SGFuZGxlLnJhd0hhbmRsZS50eXBlID09PSAndGFyZ2V0Jykge1xuICAgIHJlc3VsdC50YXJnZXQgPSBjb25uZWN0aW9uLnRhcmdldDtcbiAgICByZXN1bHQudGFyZ2V0SGFuZGxlID0gY29ubmVjdGlvbi50YXJnZXRIYW5kbGU7XG4gIH0gZWxzZSB7XG4gICAgcmVzdWx0LnRhcmdldCA9IGNvbm5lY3Rpb24uc291cmNlO1xuICAgIHJlc3VsdC50YXJnZXRIYW5kbGUgPSBjb25uZWN0aW9uLnNvdXJjZUhhbmRsZTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG4iXX0=
@@ -1,4 +0,0 @@
1
- export function align(num, constant) {
2
- return Math.ceil(num / constant) * constant;
3
- }
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxpZ24tbnVtYmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZmbG93LWxpYi9zcmMvbGliL3ZmbG93L3V0aWxzL2FsaWduLW51bWJlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLFVBQVUsS0FBSyxDQUFDLEdBQVcsRUFBRSxRQUFnQjtJQUNqRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLFFBQVEsQ0FBQyxHQUFHLFFBQVEsQ0FBQztBQUM5QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGFsaWduKG51bTogbnVtYmVyLCBjb25zdGFudDogbnVtYmVyKTogbnVtYmVyIHtcbiAgcmV0dXJuIE1hdGguY2VpbChudW0gLyBjb25zdGFudCkgKiBjb25zdGFudDtcbn1cbiJdfQ==
@@ -1,27 +0,0 @@
1
- // MIT License
2
- // Copyright (c) 2023 Chau Tran
3
- // Permission is hereby granted, free of charge, to any person obtaining a copy
4
- // of this software and associated documentation files (the "Software"), to deal
5
- // in the Software without restriction, including without limitation the rights
6
- // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
- // copies of the Software, and to permit persons to whom the Software is
8
- // furnished to do so, subject to the following conditions:
9
- // The above copyright notice and this permission notice shall be included in all
10
- // copies or substantial portions of the Software.
11
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
12
- // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
13
- // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
14
- // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
15
- // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
16
- // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
17
- // SOFTWARE.
18
- /* eslint-disable @typescript-eslint/ban-types */
19
- import { Injector, assertInInjectionContext, inject, runInInjectionContext } from '@angular/core';
20
- export function assertInjector(fn, injector, runner) {
21
- !injector && assertInInjectionContext(fn);
22
- const assertedInjector = injector ?? inject(Injector);
23
- if (!runner)
24
- return assertedInjector;
25
- return runInInjectionContext(assertedInjector, runner);
26
- }
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXJ0LWluamVjdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZmbG93LWxpYi9zcmMvbGliL3ZmbG93L3V0aWxzL2Fzc2VydC1pbmplY3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjO0FBRWQsK0JBQStCO0FBRS9CLCtFQUErRTtBQUMvRSxnRkFBZ0Y7QUFDaEYsK0VBQStFO0FBQy9FLDRFQUE0RTtBQUM1RSx3RUFBd0U7QUFDeEUsMkRBQTJEO0FBRTNELGlGQUFpRjtBQUNqRixrREFBa0Q7QUFFbEQsNkVBQTZFO0FBQzdFLDJFQUEyRTtBQUMzRSw4RUFBOEU7QUFDOUUseUVBQXlFO0FBQ3pFLGdGQUFnRjtBQUNoRixnRkFBZ0Y7QUFDaEYsWUFBWTtBQUVaLGlEQUFpRDtBQUNqRCxPQUFPLEVBQUUsUUFBUSxFQUFFLHdCQUF3QixFQUFFLE1BQU0sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQWlEbEcsTUFBTSxVQUFVLGNBQWMsQ0FBQyxFQUFZLEVBQUUsUUFBcUMsRUFBRSxNQUFrQjtJQUNwRyxDQUFDLFFBQVEsSUFBSSx3QkFBd0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMxQyxNQUFNLGdCQUFnQixHQUFHLFFBQVEsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFdEQsSUFBSSxDQUFDLE1BQU07UUFBRSxPQUFPLGdCQUFnQixDQUFDO0lBQ3JDLE9BQU8scUJBQXFCLENBQUMsZ0JBQWdCLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDekQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIE1JVCBMaWNlbnNlXG5cbi8vIENvcHlyaWdodCAoYykgMjAyMyBDaGF1IFRyYW5cblxuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbi8vIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG5cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcbi8vIFNPRlRXQVJFLlxuXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXR5cGVzICovXG5pbXBvcnQgeyBJbmplY3RvciwgYXNzZXJ0SW5JbmplY3Rpb25Db250ZXh0LCBpbmplY3QsIHJ1bkluSW5qZWN0aW9uQ29udGV4dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIGBhc3NlcnRJbmplY3RvcmAgZXh0ZW5kcyBgYXNzZXJ0SW5JbmplY3Rpb25Db250ZXh0YCB3aXRoIGFuIG9wdGlvbmFsIGBJbmplY3RvcmBcbiAqIEFmdGVyIGFzc2VydGlvbiwgYGFzc2VydEluamVjdG9yYCBydW5zIHRoZSBgcnVubmVyYCBmdW5jdGlvbiB3aXRoIHRoZSBndWFyYW50ZWVkIGBJbmplY3RvcmBcbiAqIHdoZXRoZXIgaXQgaXMgdGhlIGRlZmF1bHQgYEluamVjdG9yYCB3aXRoaW4gdGhlIGN1cnJlbnQgKipJbmplY3Rpb24gQ29udGV4dCoqXG4gKiBvciB0aGUgY3VzdG9tIGBJbmplY3RvcmAgdGhhdCB3YXMgcGFzc2VkIGluLlxuICpcbiAqIEB0ZW1wbGF0ZSB7KCkgPT4gYW55fSBSdW5uZXIgLSBSdW5uZXIgaXMgYSBmdW5jdGlvbiB0aGF0IGNhbiByZXR1cm4gYW55dGhpbmdcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZuIC0gdGhlIEZ1bmN0aW9uIHRvIHBhc3MgaW4gYGFzc2VydEluSW5qZWN0aW9uQ29udGV4dGBcbiAqIEBwYXJhbSB7SW5qZWN0b3IgfCB1bmRlZmluZWQgfCBudWxsfSBpbmplY3RvciAtIHRoZSBvcHRpb25hbCBcImN1c3RvbVwiIEluamVjdG9yXG4gKiBAcGFyYW0ge1J1bm5lcn0gcnVubmVyIC0gdGhlIHJ1bm5lciBmblxuICogQHJldHVybnMge1JldHVyblR5cGU8UnVubmVyPn0gcmVzdWx0IC0gcmV0dXJucyB0aGUgcmVzdWx0IG9mIHRoZSBSdW5uZXJcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIGZ1bmN0aW9uIGluamVjdFZhbHVlKGluamVjdG9yPzogSW5qZWN0b3IpIHtcbiAqICByZXR1cm4gYXNzZXJ0SW5qZWN0b3IoaW5qZWN0VmFsdWUsIGluamVjdG9yLCAoKSA9PiAndmFsdWUnKTtcbiAqIH1cbiAqXG4gKiBpbmplY3RWYWx1ZSgpOyAvLyBzdHJpbmdcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0SW5qZWN0b3I8UnVubmVyIGV4dGVuZHMgKCkgPT4gYW55PihcbiAgZm46IEZ1bmN0aW9uLFxuICBpbmplY3RvcjogSW5qZWN0b3IgfCB1bmRlZmluZWQgfCBudWxsLFxuICBydW5uZXI6IFJ1bm5lcixcbik6IFJldHVyblR5cGU8UnVubmVyPjtcbi8qKlxuICogYGFzc2VydEluamVjdG9yYCBleHRlbmRzIGBhc3NlcnRJbkluamVjdGlvbkNvbnRleHRgIHdpdGggYW4gb3B0aW9uYWwgYEluamVjdG9yYFxuICogQWZ0ZXIgYXNzZXJ0aW9uLCBgYXNzZXJ0SW5qZWN0b3JgIHJldHVybnMgYSBndWFyYW50ZWVkIGBJbmplY3RvcmAgd2hldGhlciBpdCBpcyB0aGUgZGVmYXVsdCBgSW5qZWN0b3JgXG4gKiB3aXRoaW4gdGhlIGN1cnJlbnQgKipJbmplY3Rpb24gQ29udGV4dCoqIG9yIHRoZSBjdXN0b20gYEluamVjdG9yYCB0aGF0IHdhcyBwYXNzZWQgaW4uXG4gKlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZm4gLSB0aGUgRnVuY3Rpb24gdG8gcGFzcyBpbiBgYXNzZXJ0SW5JbmplY3Rpb25Db250ZXh0YFxuICogQHBhcmFtIHtJbmplY3RvciB8IHVuZGVmaW5lZCB8IG51bGx9IGluamVjdG9yIC0gdGhlIG9wdGlvbmFsIFwiY3VzdG9tXCIgSW5qZWN0b3JcbiAqIEByZXR1cm5zIEluamVjdG9yXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiBmdW5jdGlvbiBpbmplY3REZXN0cm95KGluamVjdG9yPzogSW5qZWN0b3IpIHtcbiAqICBpbmplY3RvciA9IGFzc2VydEluamVjdG9yKGluamVjdERlc3Ryb3ksIGluamVjdG9yKTtcbiAqXG4gKiAgcmV0dXJuIHJ1bkluSW5qZWN0aW9uQ29udGV4dChpbmplY3RvciwgKCkgPT4ge1xuICogICAgLy8gY29kZVxuICogIH0pXG4gKiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydEluamVjdG9yKGZuOiBGdW5jdGlvbiwgaW5qZWN0b3I6IEluamVjdG9yIHwgdW5kZWZpbmVkIHwgbnVsbCk6IEluamVjdG9yO1xuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydEluamVjdG9yKGZuOiBGdW5jdGlvbiwgaW5qZWN0b3I6IEluamVjdG9yIHwgdW5kZWZpbmVkIHwgbnVsbCwgcnVubmVyPzogKCkgPT4gYW55KSB7XG4gICFpbmplY3RvciAmJiBhc3NlcnRJbkluamVjdGlvbkNvbnRleHQoZm4pO1xuICBjb25zdCBhc3NlcnRlZEluamVjdG9yID0gaW5qZWN0b3IgPz8gaW5qZWN0KEluamVjdG9yKTtcblxuICBpZiAoIXJ1bm5lcikgcmV0dXJuIGFzc2VydGVkSW5qZWN0b3I7XG4gIHJldHVybiBydW5JbkluamVjdGlvbkNvbnRleHQoYXNzZXJ0ZWRJbmplY3RvciwgcnVubmVyKTtcbn1cbiJdfQ==
@@ -1,4 +0,0 @@
1
- export function isTouchEvent(event) {
2
- return window.TouchEvent && event instanceof TouchEvent;
3
- }
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3NyYy9saWIvdmZsb3cvdXRpbHMvZXZlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxVQUFVLFlBQVksQ0FBQyxLQUFZO0lBQ3ZDLE9BQU8sTUFBTSxDQUFDLFVBQVUsSUFBSSxLQUFLLFlBQVksVUFBVSxDQUFDO0FBQzFELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gaXNUb3VjaEV2ZW50KGV2ZW50OiBFdmVudCk6IGV2ZW50IGlzIFRvdWNoRXZlbnQge1xuICByZXR1cm4gd2luZG93LlRvdWNoRXZlbnQgJiYgZXZlbnQgaW5zdGFuY2VvZiBUb3VjaEV2ZW50O1xufVxuIl19
@@ -1,24 +0,0 @@
1
- export function getOS() {
2
- const userAgent = window.navigator.userAgent.toLowerCase();
3
- const macosPlatforms = /(macintosh|macintel|macppc|mac68k|macos)/i;
4
- const windowsPlatforms = /(win32|win64|windows|wince)/i;
5
- const iosPlatforms = /(iphone|ipad|ipod)/i;
6
- let os = null;
7
- if (macosPlatforms.test(userAgent)) {
8
- os = 'macos';
9
- }
10
- else if (iosPlatforms.test(userAgent)) {
11
- os = 'ios';
12
- }
13
- else if (windowsPlatforms.test(userAgent)) {
14
- os = 'windows';
15
- }
16
- else if (/android/.test(userAgent)) {
17
- os = 'android';
18
- }
19
- else if (!os && /linux/.test(userAgent)) {
20
- os = 'linux';
21
- }
22
- return os;
23
- }
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LW9zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZmbG93LWxpYi9zcmMvbGliL3ZmbG93L3V0aWxzL2dldC1vcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLFVBQVUsS0FBSztJQUNuQixNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUMzRCxNQUFNLGNBQWMsR0FBRywyQ0FBMkMsQ0FBQztJQUNuRSxNQUFNLGdCQUFnQixHQUFHLDhCQUE4QixDQUFDO0lBQ3hELE1BQU0sWUFBWSxHQUFHLHFCQUFxQixDQUFDO0lBRTNDLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQztJQUVkLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1FBQ25DLEVBQUUsR0FBRyxPQUFnQixDQUFDO0lBQ3hCLENBQUM7U0FBTSxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztRQUN4QyxFQUFFLEdBQUcsS0FBYyxDQUFDO0lBQ3RCLENBQUM7U0FBTSxJQUFJLGdCQUFnQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1FBQzVDLEVBQUUsR0FBRyxTQUFrQixDQUFDO0lBQzFCLENBQUM7U0FBTSxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztRQUNyQyxFQUFFLEdBQUcsU0FBa0IsQ0FBQztJQUMxQixDQUFDO1NBQU0sSUFBSSxDQUFDLEVBQUUsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7UUFDMUMsRUFBRSxHQUFHLE9BQWdCLENBQUM7SUFDeEIsQ0FBQztJQUVELE9BQU8sRUFBRSxDQUFDO0FBQ1osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBnZXRPUygpIHtcbiAgY29uc3QgdXNlckFnZW50ID0gd2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKTtcbiAgY29uc3QgbWFjb3NQbGF0Zm9ybXMgPSAvKG1hY2ludG9zaHxtYWNpbnRlbHxtYWNwcGN8bWFjNjhrfG1hY29zKS9pO1xuICBjb25zdCB3aW5kb3dzUGxhdGZvcm1zID0gLyh3aW4zMnx3aW42NHx3aW5kb3dzfHdpbmNlKS9pO1xuICBjb25zdCBpb3NQbGF0Zm9ybXMgPSAvKGlwaG9uZXxpcGFkfGlwb2QpL2k7XG5cbiAgbGV0IG9zID0gbnVsbDtcblxuICBpZiAobWFjb3NQbGF0Zm9ybXMudGVzdCh1c2VyQWdlbnQpKSB7XG4gICAgb3MgPSAnbWFjb3MnIGFzIGNvbnN0O1xuICB9IGVsc2UgaWYgKGlvc1BsYXRmb3Jtcy50ZXN0KHVzZXJBZ2VudCkpIHtcbiAgICBvcyA9ICdpb3MnIGFzIGNvbnN0O1xuICB9IGVsc2UgaWYgKHdpbmRvd3NQbGF0Zm9ybXMudGVzdCh1c2VyQWdlbnQpKSB7XG4gICAgb3MgPSAnd2luZG93cycgYXMgY29uc3Q7XG4gIH0gZWxzZSBpZiAoL2FuZHJvaWQvLnRlc3QodXNlckFnZW50KSkge1xuICAgIG9zID0gJ2FuZHJvaWQnIGFzIGNvbnN0O1xuICB9IGVsc2UgaWYgKCFvcyAmJiAvbGludXgvLnRlc3QodXNlckFnZW50KSkge1xuICAgIG9zID0gJ2xpbnV4JyBhcyBjb25zdDtcbiAgfVxuXG4gIHJldHVybiBvcztcbn1cbiJdfQ==
@@ -1,6 +0,0 @@
1
- export const getOverlappingArea = (rectA, rectB) => {
2
- const xOverlap = Math.max(0, Math.min(rectA.x + rectA.width, rectB.x + rectB.width) - Math.max(rectA.x, rectB.x));
3
- const yOverlap = Math.max(0, Math.min(rectA.y + rectA.height, rectB.y + rectB.height) - Math.max(rectA.y, rectB.y));
4
- return Math.ceil(xOverlap * yOverlap);
5
- };
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LW92ZXJsYXBwaW5nLWFyZWEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3NyYy9saWIvdmZsb3cvdXRpbHMvZ2V0LW92ZXJsYXBwaW5nLWFyZWEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxLQUFXLEVBQUUsS0FBVyxFQUFVLEVBQUU7SUFDckUsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xILE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUVwSCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQyxDQUFDO0FBQ3hDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlY3QgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3JlY3QnO1xuXG5leHBvcnQgY29uc3QgZ2V0T3ZlcmxhcHBpbmdBcmVhID0gKHJlY3RBOiBSZWN0LCByZWN0QjogUmVjdCk6IG51bWJlciA9PiB7XG4gIGNvbnN0IHhPdmVybGFwID0gTWF0aC5tYXgoMCwgTWF0aC5taW4ocmVjdEEueCArIHJlY3RBLndpZHRoLCByZWN0Qi54ICsgcmVjdEIud2lkdGgpIC0gTWF0aC5tYXgocmVjdEEueCwgcmVjdEIueCkpO1xuICBjb25zdCB5T3ZlcmxhcCA9IE1hdGgubWF4KDAsIE1hdGgubWluKHJlY3RBLnkgKyByZWN0QS5oZWlnaHQsIHJlY3RCLnkgKyByZWN0Qi5oZWlnaHQpIC0gTWF0aC5tYXgocmVjdEEueSwgcmVjdEIueSkpO1xuXG4gIHJldHVybiBNYXRoLmNlaWwoeE92ZXJsYXAgKiB5T3ZlcmxhcCk7XG59O1xuIl19
@@ -1,25 +0,0 @@
1
- /**
2
- * @todo handle regular nodes
3
- *
4
- * @param point global point in flow coordinates
5
- * @param groups sorted array of groups
6
- * @returns
7
- */
8
- export function getSpacePoints(point, groups) {
9
- const result = [];
10
- for (const group of groups) {
11
- const { x, y } = group.globalPoint();
12
- if (point.x >= x && point.x <= x + group.width() && point.y >= y && point.y <= y + group.height()) {
13
- result.push({
14
- x: point.x - x,
15
- y: point.y - y,
16
- spaceNodeId: group.rawNode.id,
17
- });
18
- }
19
- }
20
- result.reverse();
21
- // TODO: spread does not work, because the point is SVGPoint
22
- result.push({ spaceNodeId: null, x: point.x, y: point.y });
23
- return result;
24
- }
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LXNwYWNlLXBvaW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy91dGlscy9nZXQtc3BhY2UtcG9pbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxjQUFjLENBQUMsS0FBWSxFQUFFLE1BQW1CO0lBQzlELE1BQU0sTUFBTSxHQUFpQixFQUFFLENBQUM7SUFFaEMsS0FBSyxNQUFNLEtBQUssSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUMzQixNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUVyQyxJQUFJLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxLQUFLLEVBQUUsSUFBSSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQztZQUNsRyxNQUFNLENBQUMsSUFBSSxDQUFDO2dCQUNWLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUM7Z0JBQ2QsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQztnQkFDZCxXQUFXLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFO2FBQzlCLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0lBRUQsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBRWpCLDREQUE0RDtJQUM1RCxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFFM0QsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNwYWNlUG9pbnQsIFBvaW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9wb2ludC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgTm9kZU1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL25vZGUubW9kZWwnO1xuXG4vKipcbiAqIEB0b2RvIGhhbmRsZSByZWd1bGFyIG5vZGVzXG4gKlxuICogQHBhcmFtIHBvaW50IGdsb2JhbCBwb2ludCBpbiBmbG93IGNvb3JkaW5hdGVzXG4gKiBAcGFyYW0gZ3JvdXBzIHNvcnRlZCBhcnJheSBvZiBncm91cHNcbiAqIEByZXR1cm5zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTcGFjZVBvaW50cyhwb2ludDogUG9pbnQsIGdyb3VwczogTm9kZU1vZGVsW10pOiBTcGFjZVBvaW50W10ge1xuICBjb25zdCByZXN1bHQ6IFNwYWNlUG9pbnRbXSA9IFtdO1xuXG4gIGZvciAoY29uc3QgZ3JvdXAgb2YgZ3JvdXBzKSB7XG4gICAgY29uc3QgeyB4LCB5IH0gPSBncm91cC5nbG9iYWxQb2ludCgpO1xuXG4gICAgaWYgKHBvaW50LnggPj0geCAmJiBwb2ludC54IDw9IHggKyBncm91cC53aWR0aCgpICYmIHBvaW50LnkgPj0geSAmJiBwb2ludC55IDw9IHkgKyBncm91cC5oZWlnaHQoKSkge1xuICAgICAgcmVzdWx0LnB1c2goe1xuICAgICAgICB4OiBwb2ludC54IC0geCxcbiAgICAgICAgeTogcG9pbnQueSAtIHksXG4gICAgICAgIHNwYWNlTm9kZUlkOiBncm91cC5yYXdOb2RlLmlkLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcmVzdWx0LnJldmVyc2UoKTtcblxuICAvLyBUT0RPOiBzcHJlYWQgZG9lcyBub3Qgd29yaywgYmVjYXVzZSB0aGUgcG9pbnQgaXMgU1ZHUG9pbnRcbiAgcmVzdWx0LnB1c2goeyBzcGFjZU5vZGVJZDogbnVsbCwgeDogcG9pbnQueCwgeTogcG9pbnQueSB9KTtcblxuICByZXR1cm4gcmVzdWx0O1xufVxuIl19
@@ -1,7 +0,0 @@
1
- export function hashCode(str) {
2
- return str.split('').reduce((a, b) => {
3
- a = (a << 5) - a + b.charCodeAt(0);
4
- return a & a;
5
- }, 0);
6
- }
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFzaC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy91dGlscy9oYXNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sVUFBVSxRQUFRLENBQUMsR0FBVztJQUNsQyxPQUFPLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQ25DLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVuQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDZixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDUixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGhhc2hDb2RlKHN0cjogc3RyaW5nKTogbnVtYmVyIHtcbiAgcmV0dXJuIHN0ci5zcGxpdCgnJykucmVkdWNlKChhLCBiKSA9PiB7XG4gICAgYSA9IChhIDw8IDUpIC0gYSArIGIuY2hhckNvZGVBdCgwKTtcblxuICAgIHJldHVybiBhICYgYTtcbiAgfSwgMCk7XG59XG4iXX0=
@@ -1,5 +0,0 @@
1
- export function id() {
2
- const randomLetter = String.fromCharCode(65 + Math.floor(Math.random() * 26));
3
- return randomLetter + Date.now();
4
- }
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3NyYy9saWIvdmZsb3cvdXRpbHMvaWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxVQUFVLEVBQUU7SUFDaEIsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUU5RSxPQUFPLFlBQVksR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDbkMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBpZCgpOiBzdHJpbmcge1xuICBjb25zdCByYW5kb21MZXR0ZXIgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDY1ICsgTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMjYpKTtcblxuICByZXR1cm4gcmFuZG9tTGV0dGVyICsgRGF0ZS5ub3coKTtcbn1cbiJdfQ==