ngx-vflow 1.7.0 → 1.8.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 (27) hide show
  1. package/esm2022/lib/vflow/components/vflow/vflow.component.mjs +43 -20
  2. package/esm2022/lib/vflow/interfaces/intersecting-nodes-options.interface.mjs +2 -0
  3. package/esm2022/lib/vflow/interfaces/point.interface.mjs +1 -1
  4. package/esm2022/lib/vflow/models/node.model.mjs +8 -10
  5. package/esm2022/lib/vflow/public-components/node-toolbar/node-toolbar.component.mjs +12 -2
  6. package/esm2022/lib/vflow/services/node-changes.service.mjs +9 -5
  7. package/esm2022/lib/vflow/services/node-rendering.service.mjs +1 -6
  8. package/esm2022/lib/vflow/testing-utils/component-mocks/vflow-mock.component.mjs +19 -2
  9. package/esm2022/lib/vflow/utils/get-overlapping-area.mjs +6 -0
  10. package/esm2022/lib/vflow/utils/get-space-points.mjs +25 -0
  11. package/esm2022/lib/vflow/utils/identity-checker/reference-identity-checker.mjs +2 -5
  12. package/esm2022/lib/vflow/utils/nodes.mjs +25 -1
  13. package/esm2022/public-api.mjs +2 -1
  14. package/fesm2022/ngx-vflow.mjs +135 -42
  15. package/fesm2022/ngx-vflow.mjs.map +1 -1
  16. package/lib/vflow/components/vflow/vflow.component.d.ts +31 -5
  17. package/lib/vflow/interfaces/intersecting-nodes-options.interface.d.ts +3 -0
  18. package/lib/vflow/interfaces/point.interface.d.ts +3 -0
  19. package/lib/vflow/models/node.model.d.ts +7 -6
  20. package/lib/vflow/public-components/node-toolbar/node-toolbar.component.d.ts +3 -0
  21. package/lib/vflow/services/node-changes.service.d.ts +1 -5
  22. package/lib/vflow/testing-utils/component-mocks/vflow-mock.component.d.ts +10 -2
  23. package/lib/vflow/utils/get-overlapping-area.d.ts +2 -0
  24. package/lib/vflow/utils/get-space-points.d.ts +10 -0
  25. package/lib/vflow/utils/nodes.d.ts +3 -0
  26. package/package.json +1 -1
  27. package/public-api.d.ts +1 -0
@@ -49,9 +49,26 @@ export class VflowMockComponent {
49
49
  }
50
50
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
51
51
  fitView(options) { }
52
- documentPointToFlowPoint(point) {
52
+ documentPointToFlowPoint(point, options) {
53
+ if (options?.spaces) {
54
+ return [
55
+ {
56
+ nodeId: null,
57
+ x: point.x,
58
+ y: point.y,
59
+ },
60
+ ];
61
+ }
53
62
  return point;
54
63
  }
64
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
65
+ getIntesectingNodes(nodeId, options) {
66
+ return [];
67
+ }
68
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
69
+ toNodeSpace(nodeId, spaceNodeId) {
70
+ return { x: 0, y: 0 };
71
+ }
55
72
  getNode(id) {
56
73
  return this.nodes.find((node) => node.id === id);
57
74
  }
@@ -276,4 +293,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
276
293
  }], elevateEdgesOnSelect: [{
277
294
  type: Input
278
295
  }] } });
279
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmZsb3ctbW9jay5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3NyYy9saWIvdmZsb3cvdGVzdGluZy11dGlscy9jb21wb25lbnQtbW9ja3MvdmZsb3ctbW9jay5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sR0FHUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQVduRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFMUQsT0FBTyxFQUNMLCtCQUErQixFQUMvQixrQ0FBa0MsRUFDbEMseUJBQXlCLEVBQ3pCLDhCQUE4QixFQUM5Qiw2QkFBNkIsR0FDOUIsTUFBTSw0Q0FBNEMsQ0FBQztBQUVwRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sK0JBQStCLENBQUM7O0FBaUdoRSxNQUFNLE9BQU8sa0JBQWtCO0lBOUYvQjtRQXNHa0IsU0FBSSxHQUE4QixDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUc3QyxZQUFPLEdBQUcsR0FBRyxDQUFDO1FBR2QsWUFBTyxHQUFHLENBQUMsQ0FBQztRQUdaLGVBQVUsR0FBd0IsTUFBTSxDQUFDO1FBRXpDLGlCQUFZLEdBQUcsS0FBSyxDQUFlO1lBQ2pELG1CQUFtQixFQUFFLEtBQUs7U0FDM0IsQ0FBQyxDQUFDO1FBR2EsdUJBQWtCLEdBQUcsSUFBSSxDQUFDO1FBRzFCLHNCQUFpQixHQUFzQjtZQUNyRCxjQUFjLEVBQUUsSUFBSTtTQUNyQixDQUFDO1FBS2MsZUFBVSxHQUFvQixJQUFJLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQVd0RSwrREFB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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdUZUO29CQUNELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsT0FBTyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7aUJBQzVCOzhCQUdpQixLQUFLO3NCQURwQixLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFJVCxLQUFLO3NCQURwQixLQUFLO2dCQUlVLElBQUk7c0JBRG5CLEtBQUs7Z0JBSVUsT0FBTztzQkFEdEIsS0FBSztnQkFJVSxPQUFPO3NCQUR0QixLQUFLO2dCQUlVLFVBQVU7c0JBRHpCLEtBQUs7Z0JBUVUsa0JBQWtCO3NCQURqQyxLQUFLO2dCQUlVLGlCQUFpQjtzQkFEaEMsS0FBSztnQkFRVSxVQUFVO3NCQUh6QixLQUFLO3VCQUFDO3dCQUNMLFNBQVMsRUFBRSxDQUFDLFFBQTRCLEVBQUUsRUFBRSxDQUFDLElBQUksZUFBZSxDQUFDLFFBQVEsQ0FBQztxQkFDM0U7Z0JBSWUsUUFBUTtzQkFEdkIsS0FBSztnQkFJQyxvQkFBb0I7c0JBRDFCLEtBQUs7Z0JBSUMsb0JBQW9CO3NCQUQxQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgY29udGVudENoaWxkLFxuICBJbnB1dCxcbiAgaW5wdXQsXG4gIG91dHB1dCxcbiAgc2lnbmFsLFxuICBXcml0YWJsZVNpZ25hbCxcbiAgT25Jbml0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTm9kZSwgRHluYW1pY05vZGUgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL25vZGUuaW50ZXJmYWNlJztcbmltcG9ydCB7IEVkZ2UgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2VkZ2UuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvaW50IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9wb2ludC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQmFja2dyb3VuZCB9IGZyb20gJy4uLy4uL3R5cGVzL2JhY2tncm91bmQudHlwZSc7XG5pbXBvcnQgeyBPcHRpbWl6YXRpb24gfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL29wdGltaXphdGlvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgS2V5Ym9hcmRTaG9ydGN1dHMgfSBmcm9tICcuLi8uLi90eXBlcy9rZXlib2FyZC1hY3Rpb24udHlwZSc7XG5pbXBvcnQgeyBDb25uZWN0aW9uU2V0dGluZ3MgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2Nvbm5lY3Rpb24tc2V0dGluZ3MuaW50ZXJmYWNlJztcbmltcG9ydCB7IFZpZXdwb3J0U3RhdGUgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3ZpZXdwb3J0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBOb2RlQ2hhbmdlIH0gZnJvbSAnLi4vLi4vdHlwZXMvbm9kZS1jaGFuZ2UudHlwZSc7XG5pbXBvcnQgeyBFZGdlQ2hhbmdlIH0gZnJvbSAnLi4vLi4vdHlwZXMvZWRnZS1jaGFuZ2UudHlwZSc7XG5pbXBvcnQgeyB0b09ic2VydmFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBGaXRWaWV3T3B0aW9ucyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvZml0LXZpZXctb3B0aW9ucy5pbnRlcmZhY2UnO1xuaW1wb3J0IHtcbiAgQ29ubmVjdGlvblRlbXBsYXRlTW9ja0RpcmVjdGl2ZSxcbiAgRWRnZUxhYmVsSHRtbFRlbXBsYXRlTW9ja0RpcmVjdGl2ZSxcbiAgRWRnZVRlbXBsYXRlTW9ja0RpcmVjdGl2ZSxcbiAgR3JvdXBOb2RlVGVtcGxhdGVNb2NrRGlyZWN0aXZlLFxuICBOb2RlSHRtbFRlbXBsYXRlTW9ja0RpcmVjdGl2ZSxcbn0gZnJvbSAnLi4vZGlyZWN0aXZlLW1vY2tzL3RlbXBsYXRlLW1vY2suZGlyZWN0aXZlJztcbmltcG9ydCB7IFZmbG93Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy92Zmxvdy92Zmxvdy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29ubmVjdGlvbk1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2Nvbm5lY3Rpb24ubW9kZWwnO1xuaW1wb3J0IHsgQXNJbnRlcmZhY2UgfSBmcm9tICcuLi90eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZmbG93JyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bmctY29udGVudCAvPlxuXG4gICAgQGZvciAobm9kZSBvZiBub2RlczsgdHJhY2sgJGluZGV4KSB7XG4gICAgICBAaWYgKG5vZGUudHlwZSA9PT0gJ2h0bWwtdGVtcGxhdGUnKSB7XG4gICAgICAgIDxuZy1jb21wb25lbnRcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJub2RlVGVtcGxhdGVEaXJlY3RpdmUoKT8udGVtcGxhdGVSZWYgPz8gbnVsbFwiXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAgICRpbXBsaWNpdDoge1xuICAgICAgICAgICAgICBub2RlOiBub2RlLFxuICAgICAgICAgICAgICBzZWxlY3RlZDogY3JlYXRlU2lnbmFsKGZhbHNlKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfVwiIC8+XG4gICAgICB9XG5cbiAgICAgIEBpZiAobm9kZS50eXBlID09PSAndGVtcGxhdGUtZ3JvdXAnKSB7XG4gICAgICAgIDxuZy1jb21wb25lbnRcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJncm91cE5vZGVUZW1wbGF0ZURpcmVjdGl2ZSgpPy50ZW1wbGF0ZVJlZiA/PyBudWxsXCJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuICAgICAgICAgICAgJGltcGxpY2l0OiB7XG4gICAgICAgICAgICAgIG5vZGU6IG5vZGUsXG4gICAgICAgICAgICAgIHNlbGVjdGVkOiBjcmVhdGVTaWduYWwoZmFsc2UpLFxuICAgICAgICAgICAgICB3aWR0aDogY3JlYXRlU2lnbmFsKG5vZGUud2lkdGgpLFxuICAgICAgICAgICAgICBoZWlnaHQ6IGNyZWF0ZVNpZ25hbChub2RlLmhlaWdodCksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH1cIiAvPlxuICAgICAgfVxuICAgIH1cblxuICAgIEBmb3IgKGVkZ2Ugb2YgZWRnZXM7IHRyYWNrICRpbmRleCkge1xuICAgICAgQGlmIChlZGdlLnR5cGUgPT09ICd0ZW1wbGF0ZScpIHtcbiAgICAgICAgPG5nLWNvbXBvbmVudFxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImVkZ2VUZW1wbGF0ZURpcmVjdGl2ZSgpPy50ZW1wbGF0ZVJlZiA/PyBudWxsXCJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuICAgICAgICAgICAgJGltcGxpY2l0OiB7XG4gICAgICAgICAgICAgIGVkZ2U6IGVkZ2UsXG4gICAgICAgICAgICAgIHNlbGVjdGVkOiBjcmVhdGVTaWduYWwoZmFsc2UpLFxuICAgICAgICAgICAgICBwYXRoOiBjcmVhdGVTaWduYWwoJycpLFxuICAgICAgICAgICAgICBtYXJrZXJTdGFydDogY3JlYXRlU2lnbmFsKCcnKSxcbiAgICAgICAgICAgICAgbWFya2VyRW5kOiBjcmVhdGVTaWduYWwoJycpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9XCIgLz5cblxuICAgICAgICBAaWYgKGVkZ2UuZWRnZUxhYmVscz8uc3RhcnQpIHtcbiAgICAgICAgICA8bmctY29tcG9uZW50XG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJlZGdlTGFiZWxIdG1sRGlyZWN0aXZlKCk/LnRlbXBsYXRlUmVmID8/IG51bGxcIlxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAgICAgJGltcGxpY2l0OiB7XG4gICAgICAgICAgICAgICAgZWRnZTogZWRnZSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH1cIiAvPlxuICAgICAgICB9XG5cbiAgICAgICAgQGlmIChlZGdlLmVkZ2VMYWJlbHM/LmNlbnRlcikge1xuICAgICAgICAgIDxuZy1jb21wb25lbnRcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImVkZ2VMYWJlbEh0bWxEaXJlY3RpdmUoKT8udGVtcGxhdGVSZWYgPz8gbnVsbFwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuICAgICAgICAgICAgICAkaW1wbGljaXQ6IHtcbiAgICAgICAgICAgICAgICBlZGdlOiBlZGdlLFxuICAgICAgICAgICAgICAgIGxhYmVsOiBlZGdlLmVkZ2VMYWJlbHM/LmNlbnRlcixcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH1cIiAvPlxuICAgICAgICB9XG5cbiAgICAgICAgQGlmIChlZGdlLmVkZ2VMYWJlbHM/LmVuZCkge1xuICAgICAgICAgIDxuZy1jb21wb25lbnRcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImVkZ2VMYWJlbEh0bWxEaXJlY3RpdmUoKT8udGVtcGxhdGVSZWYgPz8gbnVsbFwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuICAgICAgICAgICAgICAkaW1wbGljaXQ6IHtcbiAgICAgICAgICAgICAgICBlZGdlOiBlZGdlLFxuICAgICAgICAgICAgICAgIGxhYmVsOiBlZGdlLmVkZ2VMYWJlbHM/LmVuZCxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH1cIiAvPlxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgQGlmIChjb25uZWN0aW9uLnR5cGUgPT09ICd0ZW1wbGF0ZScpIHtcbiAgICAgIDxuZy1jb21wb25lbnRcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29ubmVjdGlvblRlbXBsYXRlRGlyZWN0aXZlKCk/LnRlbXBsYXRlUmVmID8/IG51bGxcIlxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuICAgICAgICAgICRpbXBsaWNpdDoge1xuICAgICAgICAgICAgcGF0aDogY3JlYXRlU2lnbmFsKCcnKSxcbiAgICAgICAgICAgIG1hcmtlcjogY3JlYXRlU2lnbmFsKCcnKSxcbiAgICAgICAgICB9LFxuICAgICAgICB9XCIgLz5cbiAgICB9XG4gIGAsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbTmdUZW1wbGF0ZU91dGxldF0sXG59KVxuZXhwb3J0IGNsYXNzIFZmbG93TW9ja0NvbXBvbmVudCBpbXBsZW1lbnRzIEFzSW50ZXJmYWNlPFZmbG93Q29tcG9uZW50PiwgT25Jbml0IHtcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgcHVibGljIHJlYWRvbmx5IG5vZGVzITogTm9kZVtdIHwgRHluYW1pY05vZGVbXTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgcmVhZG9ubHkgZWRnZXMhOiBFZGdlW107XG5cbiAgQElucHV0KClcbiAgcHVibGljIHJlYWRvbmx5IHZpZXc6IFtudW1iZXIsIG51bWJlcl0gfCAnYXV0bycgPSBbNDAwLCA0MDBdO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyByZWFkb25seSBtaW5ab29tID0gMC41O1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyByZWFkb25seSBtYXhab29tID0gMztcblxuICBASW5wdXQoKVxuICBwdWJsaWMgcmVhZG9ubHkgYmFja2dyb3VuZDogQmFja2dyb3VuZCB8IHN0cmluZyA9ICcjZmZmJztcblxuICBwdWJsaWMgcmVhZG9ubHkgb3B0aW1pemF0aW9uID0gaW5wdXQ8T3B0aW1pemF0aW9uPih7XG4gICAgZGV0YWNoZWRHcm91cHNMYXllcjogZmFsc2UsXG4gIH0pO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyByZWFkb25seSBlbnRpdGllc1NlbGVjdGFibGUgPSB0cnVlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyByZWFkb25seSBrZXlib2FyZFNob3J0Y3V0czogS2V5Ym9hcmRTaG9ydGN1dHMgPSB7XG4gICAgbXVsdGlTZWxlY3Rpb246IG51bGwsXG4gIH07XG5cbiAgQElucHV0KHtcbiAgICB0cmFuc2Zvcm06IChzZXR0aW5nczogQ29ubmVjdGlvblNldHRpbmdzKSA9PiBuZXcgQ29ubmVjdGlvbk1vZGVsKHNldHRpbmdzKSxcbiAgfSlcbiAgcHVibGljIHJlYWRvbmx5IGNvbm5lY3Rpb246IENvbm5lY3Rpb25Nb2RlbCA9IG5ldyBDb25uZWN0aW9uTW9kZWwoe30pO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyByZWFkb25seSBzbmFwR3JpZCE6IFtudW1iZXIsIG51bWJlcl07XG5cbiAgQElucHV0KClcbiAgcHVibGljIGVsZXZhdGVOb2Rlc09uU2VsZWN0ITogYm9vbGVhbjtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZWxldmF0ZUVkZ2VzT25TZWxlY3QhOiBib29sZWFuO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW9uLXByZWZpeFxuICBwdWJsaWMgcmVhZG9ubHkgb25Db21wb25lbnROb2RlRXZlbnQgPSBvdXRwdXQ8YW55PigpO1xuXG4gIHByb3RlY3RlZCBub2RlVGVtcGxhdGVEaXJlY3RpdmUgPSBjb250ZW50Q2hpbGQoTm9kZUh0bWxUZW1wbGF0ZU1vY2tEaXJlY3RpdmUpO1xuXG4gIHByb3RlY3RlZCBncm91cE5vZGVUZW1wbGF0ZURpcmVjdGl2ZSA9IGNvbnRlbnRDaGlsZChHcm91cE5vZGVUZW1wbGF0ZU1vY2tEaXJlY3RpdmUpO1xuXG4gIHByb3RlY3RlZCBlZGdlVGVtcGxhdGVEaXJlY3RpdmUgPSBjb250ZW50Q2hpbGQoRWRnZVRlbXBsYXRlTW9ja0RpcmVjdGl2ZSk7XG5cbiAgcHJvdGVjdGVkIGVkZ2VMYWJlbEh0bWxEaXJlY3RpdmUgPSBjb250ZW50Q2hpbGQoRWRnZUxhYmVsSHRtbFRlbXBsYXRlTW9ja0RpcmVjdGl2ZSk7XG5cbiAgcHJvdGVjdGVkIGNvbm5lY3Rpb25UZW1wbGF0ZURpcmVjdGl2ZSA9IGNvbnRlbnRDaGlsZChDb25uZWN0aW9uVGVtcGxhdGVNb2NrRGlyZWN0aXZlKTtcblxuICBwdWJsaWMgdmlld3BvcnQgPSBzaWduYWw8Vmlld3BvcnRTdGF0ZT4oe1xuICAgIHg6IDAsXG4gICAgeTogMCxcbiAgICB6b29tOiAxLFxuICB9KTtcblxuICBwdWJsaWMgbm9kZXNDaGFuZ2UgPSBzaWduYWw8Tm9kZUNoYW5nZVtdPihbXSk7XG4gIHB1YmxpYyBlZGdlc0NoYW5nZSA9IHNpZ25hbDxFZGdlQ2hhbmdlW10+KFtdKTtcblxuICBwdWJsaWMgdmlld3BvcnRDaGFuZ2UkID0gdG9PYnNlcnZhYmxlKHRoaXMudmlld3BvcnQpO1xuXG4gIHB1YmxpYyBub2Rlc0NoYW5nZSQgPSB0b09ic2VydmFibGUodGhpcy5ub2Rlc0NoYW5nZSk7XG4gIHB1YmxpYyBlZGdlc0NoYW5nZSQgPSB0b09ic2VydmFibGUodGhpcy5lZGdlc0NoYW5nZSk7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1lbXB0eS1saWZlY3ljbGUtbWV0aG9kXG4gIHB1YmxpYyBuZ09uSW5pdCgpIHt9XG5cbiAgcHVibGljIHZpZXdwb3J0VG8odmlld3BvcnQ6IFZpZXdwb3J0U3RhdGUpOiB2b2lkIHtcbiAgICB0aGlzLnZpZXdwb3J0LnNldCh2aWV3cG9ydCk7XG4gIH1cblxuICBwdWJsaWMgem9vbVRvKHpvb206IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMudmlld3BvcnQudXBkYXRlKChwcmV2KSA9PiAoeyAuLi5wcmV2LCB6b29tIH0pKTtcbiAgfVxuXG4gIHB1YmxpYyBwYW5Ubyhwb2ludDogUG9pbnQpOiB2b2lkIHtcbiAgICB0aGlzLnZpZXdwb3J0LnVwZGF0ZSgocHJldikgPT4gKHsgLi4ucHJldiwgeDogcG9pbnQueCwgeTogcG9pbnQueSB9KSk7XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gIHB1YmxpYyBmaXRWaWV3KG9wdGlvbnM/OiBGaXRWaWV3T3B0aW9ucyk6IHZvaWQge31cblxuICBwdWJsaWMgZG9jdW1lbnRQb2ludFRvRmxvd1BvaW50KHBvaW50OiBQb2ludCk6IFBvaW50IHtcbiAgICByZXR1cm4gcG9pbnQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0Tm9kZTxUID0gdW5rbm93bj4oaWQ6IHN0cmluZyk6IE5vZGU8VD4gfCBEeW5hbWljTm9kZTxUPiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMubm9kZXMuZmluZCgobm9kZSkgPT4gbm9kZS5pZCA9PT0gaWQpO1xuICB9XG5cbiAgcHVibGljIGdldERldGFjaGVkRWRnZXMoKTogRWRnZVtdIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICBwcm90ZWN0ZWQgY3JlYXRlU2lnbmFsPFQ+KHZhbHVlOiBUKTogV3JpdGFibGVTaWduYWw8VD4ge1xuICAgIHJldHVybiBzaWduYWwodmFsdWUpO1xuICB9XG59XG4iXX0=
296
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmZsb3ctbW9jay5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3NyYy9saWIvdmZsb3cvdGVzdGluZy11dGlscy9jb21wb25lbnQtbW9ja3MvdmZsb3ctbW9jay5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sR0FHUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQVduRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFMUQsT0FBTyxFQUNMLCtCQUErQixFQUMvQixrQ0FBa0MsRUFDbEMseUJBQXlCLEVBQ3pCLDhCQUE4QixFQUM5Qiw2QkFBNkIsR0FDOUIsTUFBTSw0Q0FBNEMsQ0FBQztBQUVwRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sK0JBQStCLENBQUM7O0FBa0doRSxNQUFNLE9BQU8sa0JBQWtCO0lBOUYvQjtRQXNHa0IsU0FBSSxHQUE4QixDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUc3QyxZQUFPLEdBQUcsR0FBRyxDQUFDO1FBR2QsWUFBTyxHQUFHLENBQUMsQ0FBQztRQUdaLGVBQVUsR0FBd0IsTUFBTSxDQUFDO1FBRXpDLGlCQUFZLEdBQUcsS0FBSyxDQUFlO1lBQ2pELG1CQUFtQixFQUFFLEtBQUs7U0FDM0IsQ0FBQyxDQUFDO1FBR2EsdUJBQWtCLEdBQUcsSUFBSSxDQUFDO1FBRzFCLHNCQUFpQixHQUFzQjtZQUNyRCxjQUFjLEVBQUUsSUFBSTtTQUNyQixDQUFDO1FBS2MsZUFBVSxHQUFvQixJQUFJLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQVd0RSwrREFBK0Q7UUFDL0MseUJBQW9CLEdBQUcsTUFBTSxFQUFPLENBQUM7UUFFM0MsMEJBQXFCLEdBQUcsWUFBWSxDQUFDLDZCQUE2QixDQUFDLENBQUM7UUFFcEUsK0JBQTBCLEdBQUcsWUFBWSxDQUFDLDhCQUE4QixDQUFDLENBQUM7UUFFMUUsMEJBQXFCLEdBQUcsWUFBWSxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFFaEUsMkJBQXNCLEdBQUcsWUFBWSxDQUFDLGtDQUFrQyxDQUFDLENBQUM7UUFFMUUsZ0NBQTJCLEdBQUcsWUFBWSxDQUFDLCtCQUErQixDQUFDLENBQUM7UUFFL0UsYUFBUSxHQUFHLE1BQU0sQ0FBZ0I7WUFDdEMsQ0FBQyxFQUFFLENBQUM7WUFDSixDQUFDLEVBQUUsQ0FBQztZQUNKLElBQUksRUFBRSxDQUFDO1NBQ1IsQ0FBQyxDQUFDO1FBRUksZ0JBQVcsR0FBRyxNQUFNLENBQWUsRUFBRSxDQUFDLENBQUM7UUFDdkMsZ0JBQVcsR0FBRyxNQUFNLENBQWUsRUFBRSxDQUFDLENBQUM7UUFFdkMsb0JBQWUsR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRTlDLGlCQUFZLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM5QyxpQkFBWSxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7S0F5RHREO0lBdkRDLHFFQUFxRTtJQUM5RCxRQUFRLEtBQUksQ0FBQztJQUViLFVBQVUsQ0FBQyxRQUF1QjtRQUN2QyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRU0sTUFBTSxDQUFDLElBQVk7UUFDeEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVNLEtBQUssQ0FBQyxLQUFZO1FBQ3ZCLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVELDZEQUE2RDtJQUN0RCxPQUFPLENBQUMsT0FBd0IsSUFBUyxDQUFDO0lBSTFDLHdCQUF3QixDQUFDLEtBQVksRUFBRSxPQUE2QjtRQUN6RSxJQUFJLE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUNwQixPQUFPO2dCQUNMO29CQUNFLE1BQU0sRUFBRSxJQUFJO29CQUNaLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztvQkFDVixDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7aUJBQ1g7YUFDRixDQUFDO1FBQ0osQ0FBQztRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELDZEQUE2RDtJQUN0RCxtQkFBbUIsQ0FBQyxNQUFjLEVBQUUsT0FBa0M7UUFDM0UsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsNkRBQTZEO0lBQ3RELFdBQVcsQ0FBQyxNQUFjLEVBQUUsV0FBbUI7UUFDcEQsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFTSxPQUFPLENBQWMsRUFBVTtRQUNwQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFTSxnQkFBZ0I7UUFDckIsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRVMsWUFBWSxDQUFJLEtBQVE7UUFDaEMsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkIsQ0FBQzsrR0E5SFUsa0JBQWtCO21HQUFsQixrQkFBa0IsMDJDQWdDaEIsQ0FBQyxRQUE0QixFQUFFLEVBQUUsQ0FBQyxJQUFJLGVBQWUsQ0FBQyxRQUFRLENBQUMsMGxCQWdCN0IsNkJBQTZCLDZHQUV4Qiw4QkFBOEIsd0dBRW5DLHlCQUF5Qix5R0FFeEIsa0NBQWtDLDhHQUU3QiwrQkFBK0IsZ0VBcEoxRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdUZULDREQUdTLGdCQUFnQjs7NEZBRWYsa0JBQWtCO2tCQTlGOUIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsT0FBTztvQkFDakIsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1RlQ7b0JBQ0QsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLFVBQVUsRUFBRSxJQUFJO29CQUNoQixPQUFPLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztpQkFDNUI7OEJBR2lCLEtBQUs7c0JBRHBCLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQUlULEtBQUs7c0JBRHBCLEtBQUs7Z0JBSVUsSUFBSTtzQkFEbkIsS0FBSztnQkFJVSxPQUFPO3NCQUR0QixLQUFLO2dCQUlVLE9BQU87c0JBRHRCLEtBQUs7Z0JBSVUsVUFBVTtzQkFEekIsS0FBSztnQkFRVSxrQkFBa0I7c0JBRGpDLEtBQUs7Z0JBSVUsaUJBQWlCO3NCQURoQyxLQUFLO2dCQVFVLFVBQVU7c0JBSHpCLEtBQUs7dUJBQUM7d0JBQ0wsU0FBUyxFQUFFLENBQUMsUUFBNEIsRUFBRSxFQUFFLENBQUMsSUFBSSxlQUFlLENBQUMsUUFBUSxDQUFDO3FCQUMzRTtnQkFJZSxRQUFRO3NCQUR2QixLQUFLO2dCQUlDLG9CQUFvQjtzQkFEMUIsS0FBSztnQkFJQyxvQkFBb0I7c0JBRDFCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBjb250ZW50Q2hpbGQsXG4gIElucHV0LFxuICBpbnB1dCxcbiAgb3V0cHV0LFxuICBzaWduYWwsXG4gIFdyaXRhYmxlU2lnbmFsLFxuICBPbkluaXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOb2RlLCBEeW5hbWljTm9kZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvbm9kZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRWRnZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvZWRnZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgU3BhY2VQb2ludCwgUG9pbnQgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3BvaW50LmludGVyZmFjZSc7XG5pbXBvcnQgeyBCYWNrZ3JvdW5kIH0gZnJvbSAnLi4vLi4vdHlwZXMvYmFja2dyb3VuZC50eXBlJztcbmltcG9ydCB7IE9wdGltaXphdGlvbiB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvb3B0aW1pemF0aW9uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBLZXlib2FyZFNob3J0Y3V0cyB9IGZyb20gJy4uLy4uL3R5cGVzL2tleWJvYXJkLWFjdGlvbi50eXBlJztcbmltcG9ydCB7IENvbm5lY3Rpb25TZXR0aW5ncyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvY29ubmVjdGlvbi1zZXR0aW5ncy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgVmlld3BvcnRTdGF0ZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvdmlld3BvcnQuaW50ZXJmYWNlJztcbmltcG9ydCB7IE5vZGVDaGFuZ2UgfSBmcm9tICcuLi8uLi90eXBlcy9ub2RlLWNoYW5nZS50eXBlJztcbmltcG9ydCB7IEVkZ2VDaGFuZ2UgfSBmcm9tICcuLi8uLi90eXBlcy9lZGdlLWNoYW5nZS50eXBlJztcbmltcG9ydCB7IHRvT2JzZXJ2YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IEZpdFZpZXdPcHRpb25zIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9maXQtdmlldy1vcHRpb25zLmludGVyZmFjZSc7XG5pbXBvcnQge1xuICBDb25uZWN0aW9uVGVtcGxhdGVNb2NrRGlyZWN0aXZlLFxuICBFZGdlTGFiZWxIdG1sVGVtcGxhdGVNb2NrRGlyZWN0aXZlLFxuICBFZGdlVGVtcGxhdGVNb2NrRGlyZWN0aXZlLFxuICBHcm91cE5vZGVUZW1wbGF0ZU1vY2tEaXJlY3RpdmUsXG4gIE5vZGVIdG1sVGVtcGxhdGVNb2NrRGlyZWN0aXZlLFxufSBmcm9tICcuLi9kaXJlY3RpdmUtbW9ja3MvdGVtcGxhdGUtbW9jay5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgVmZsb3dDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL3ZmbG93L3ZmbG93LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb25uZWN0aW9uTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvY29ubmVjdGlvbi5tb2RlbCc7XG5pbXBvcnQgeyBBc0ludGVyZmFjZSB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IEludGVyc2VjdGluZ05vZGVzT3B0aW9ucyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvaW50ZXJzZWN0aW5nLW5vZGVzLW9wdGlvbnMuaW50ZXJmYWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmZsb3cnLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxuZy1jb250ZW50IC8+XG5cbiAgICBAZm9yIChub2RlIG9mIG5vZGVzOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgIEBpZiAobm9kZS50eXBlID09PSAnaHRtbC10ZW1wbGF0ZScpIHtcbiAgICAgICAgPG5nLWNvbXBvbmVudFxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm5vZGVUZW1wbGF0ZURpcmVjdGl2ZSgpPy50ZW1wbGF0ZVJlZiA/PyBudWxsXCJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuICAgICAgICAgICAgJGltcGxpY2l0OiB7XG4gICAgICAgICAgICAgIG5vZGU6IG5vZGUsXG4gICAgICAgICAgICAgIHNlbGVjdGVkOiBjcmVhdGVTaWduYWwoZmFsc2UpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9XCIgLz5cbiAgICAgIH1cblxuICAgICAgQGlmIChub2RlLnR5cGUgPT09ICd0ZW1wbGF0ZS1ncm91cCcpIHtcbiAgICAgICAgPG5nLWNvbXBvbmVudFxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImdyb3VwTm9kZVRlbXBsYXRlRGlyZWN0aXZlKCk/LnRlbXBsYXRlUmVmID8/IG51bGxcIlxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgICAgICAkaW1wbGljaXQ6IHtcbiAgICAgICAgICAgICAgbm9kZTogbm9kZSxcbiAgICAgICAgICAgICAgc2VsZWN0ZWQ6IGNyZWF0ZVNpZ25hbChmYWxzZSksXG4gICAgICAgICAgICAgIHdpZHRoOiBjcmVhdGVTaWduYWwobm9kZS53aWR0aCksXG4gICAgICAgICAgICAgIGhlaWdodDogY3JlYXRlU2lnbmFsKG5vZGUuaGVpZ2h0KSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfVwiIC8+XG4gICAgICB9XG4gICAgfVxuXG4gICAgQGZvciAoZWRnZSBvZiBlZGdlczsgdHJhY2sgJGluZGV4KSB7XG4gICAgICBAaWYgKGVkZ2UudHlwZSA9PT0gJ3RlbXBsYXRlJykge1xuICAgICAgICA8bmctY29tcG9uZW50XG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZWRnZVRlbXBsYXRlRGlyZWN0aXZlKCk/LnRlbXBsYXRlUmVmID8/IG51bGxcIlxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgICAgICAkaW1wbGljaXQ6IHtcbiAgICAgICAgICAgICAgZWRnZTogZWRnZSxcbiAgICAgICAgICAgICAgc2VsZWN0ZWQ6IGNyZWF0ZVNpZ25hbChmYWxzZSksXG4gICAgICAgICAgICAgIHBhdGg6IGNyZWF0ZVNpZ25hbCgnJyksXG4gICAgICAgICAgICAgIG1hcmtlclN0YXJ0OiBjcmVhdGVTaWduYWwoJycpLFxuICAgICAgICAgICAgICBtYXJrZXJFbmQ6IGNyZWF0ZVNpZ25hbCgnJyksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH1cIiAvPlxuXG4gICAgICAgIEBpZiAoZWRnZS5lZGdlTGFiZWxzPy5zdGFydCkge1xuICAgICAgICAgIDxuZy1jb21wb25lbnRcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImVkZ2VMYWJlbEh0bWxEaXJlY3RpdmUoKT8udGVtcGxhdGVSZWYgPz8gbnVsbFwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuICAgICAgICAgICAgICAkaW1wbGljaXQ6IHtcbiAgICAgICAgICAgICAgICBlZGdlOiBlZGdlLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfVwiIC8+XG4gICAgICAgIH1cblxuICAgICAgICBAaWYgKGVkZ2UuZWRnZUxhYmVscz8uY2VudGVyKSB7XG4gICAgICAgICAgPG5nLWNvbXBvbmVudFxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZWRnZUxhYmVsSHRtbERpcmVjdGl2ZSgpPy50ZW1wbGF0ZVJlZiA/PyBudWxsXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgICAgICAgICRpbXBsaWNpdDoge1xuICAgICAgICAgICAgICAgIGVkZ2U6IGVkZ2UsXG4gICAgICAgICAgICAgICAgbGFiZWw6IGVkZ2UuZWRnZUxhYmVscz8uY2VudGVyLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfVwiIC8+XG4gICAgICAgIH1cblxuICAgICAgICBAaWYgKGVkZ2UuZWRnZUxhYmVscz8uZW5kKSB7XG4gICAgICAgICAgPG5nLWNvbXBvbmVudFxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZWRnZUxhYmVsSHRtbERpcmVjdGl2ZSgpPy50ZW1wbGF0ZVJlZiA/PyBudWxsXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgICAgICAgICRpbXBsaWNpdDoge1xuICAgICAgICAgICAgICAgIGVkZ2U6IGVkZ2UsXG4gICAgICAgICAgICAgICAgbGFiZWw6IGVkZ2UuZWRnZUxhYmVscz8uZW5kLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfVwiIC8+XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBAaWYgKGNvbm5lY3Rpb24udHlwZSA9PT0gJ3RlbXBsYXRlJykge1xuICAgICAgPG5nLWNvbXBvbmVudFxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjb25uZWN0aW9uVGVtcGxhdGVEaXJlY3RpdmUoKT8udGVtcGxhdGVSZWYgPz8gbnVsbFwiXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgICAgJGltcGxpY2l0OiB7XG4gICAgICAgICAgICBwYXRoOiBjcmVhdGVTaWduYWwoJycpLFxuICAgICAgICAgICAgbWFya2VyOiBjcmVhdGVTaWduYWwoJycpLFxuICAgICAgICAgIH0sXG4gICAgICAgIH1cIiAvPlxuICAgIH1cbiAgYCxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtOZ1RlbXBsYXRlT3V0bGV0XSxcbn0pXG5leHBvcnQgY2xhc3MgVmZsb3dNb2NrQ29tcG9uZW50IGltcGxlbWVudHMgQXNJbnRlcmZhY2U8VmZsb3dDb21wb25lbnQ+LCBPbkluaXQge1xuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KVxuICBwdWJsaWMgcmVhZG9ubHkgbm9kZXMhOiBOb2RlW10gfCBEeW5hbWljTm9kZVtdO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyByZWFkb25seSBlZGdlcyE6IEVkZ2VbXTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgcmVhZG9ubHkgdmlldzogW251bWJlciwgbnVtYmVyXSB8ICdhdXRvJyA9IFs0MDAsIDQwMF07XG5cbiAgQElucHV0KClcbiAgcHVibGljIHJlYWRvbmx5IG1pblpvb20gPSAwLjU7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHJlYWRvbmx5IG1heFpvb20gPSAzO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyByZWFkb25seSBiYWNrZ3JvdW5kOiBCYWNrZ3JvdW5kIHwgc3RyaW5nID0gJyNmZmYnO1xuXG4gIHB1YmxpYyByZWFkb25seSBvcHRpbWl6YXRpb24gPSBpbnB1dDxPcHRpbWl6YXRpb24+KHtcbiAgICBkZXRhY2hlZEdyb3Vwc0xheWVyOiBmYWxzZSxcbiAgfSk7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHJlYWRvbmx5IGVudGl0aWVzU2VsZWN0YWJsZSA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHJlYWRvbmx5IGtleWJvYXJkU2hvcnRjdXRzOiBLZXlib2FyZFNob3J0Y3V0cyA9IHtcbiAgICBtdWx0aVNlbGVjdGlvbjogbnVsbCxcbiAgfTtcblxuICBASW5wdXQoe1xuICAgIHRyYW5zZm9ybTogKHNldHRpbmdzOiBDb25uZWN0aW9uU2V0dGluZ3MpID0+IG5ldyBDb25uZWN0aW9uTW9kZWwoc2V0dGluZ3MpLFxuICB9KVxuICBwdWJsaWMgcmVhZG9ubHkgY29ubmVjdGlvbjogQ29ubmVjdGlvbk1vZGVsID0gbmV3IENvbm5lY3Rpb25Nb2RlbCh7fSk7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHJlYWRvbmx5IHNuYXBHcmlkITogW251bWJlciwgbnVtYmVyXTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZWxldmF0ZU5vZGVzT25TZWxlY3QhOiBib29sZWFuO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBlbGV2YXRlRWRnZXNPblNlbGVjdCE6IGJvb2xlYW47XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtb24tcHJlZml4XG4gIHB1YmxpYyByZWFkb25seSBvbkNvbXBvbmVudE5vZGVFdmVudCA9IG91dHB1dDxhbnk+KCk7XG5cbiAgcHJvdGVjdGVkIG5vZGVUZW1wbGF0ZURpcmVjdGl2ZSA9IGNvbnRlbnRDaGlsZChOb2RlSHRtbFRlbXBsYXRlTW9ja0RpcmVjdGl2ZSk7XG5cbiAgcHJvdGVjdGVkIGdyb3VwTm9kZVRlbXBsYXRlRGlyZWN0aXZlID0gY29udGVudENoaWxkKEdyb3VwTm9kZVRlbXBsYXRlTW9ja0RpcmVjdGl2ZSk7XG5cbiAgcHJvdGVjdGVkIGVkZ2VUZW1wbGF0ZURpcmVjdGl2ZSA9IGNvbnRlbnRDaGlsZChFZGdlVGVtcGxhdGVNb2NrRGlyZWN0aXZlKTtcblxuICBwcm90ZWN0ZWQgZWRnZUxhYmVsSHRtbERpcmVjdGl2ZSA9IGNvbnRlbnRDaGlsZChFZGdlTGFiZWxIdG1sVGVtcGxhdGVNb2NrRGlyZWN0aXZlKTtcblxuICBwcm90ZWN0ZWQgY29ubmVjdGlvblRlbXBsYXRlRGlyZWN0aXZlID0gY29udGVudENoaWxkKENvbm5lY3Rpb25UZW1wbGF0ZU1vY2tEaXJlY3RpdmUpO1xuXG4gIHB1YmxpYyB2aWV3cG9ydCA9IHNpZ25hbDxWaWV3cG9ydFN0YXRlPih7XG4gICAgeDogMCxcbiAgICB5OiAwLFxuICAgIHpvb206IDEsXG4gIH0pO1xuXG4gIHB1YmxpYyBub2Rlc0NoYW5nZSA9IHNpZ25hbDxOb2RlQ2hhbmdlW10+KFtdKTtcbiAgcHVibGljIGVkZ2VzQ2hhbmdlID0gc2lnbmFsPEVkZ2VDaGFuZ2VbXT4oW10pO1xuXG4gIHB1YmxpYyB2aWV3cG9ydENoYW5nZSQgPSB0b09ic2VydmFibGUodGhpcy52aWV3cG9ydCk7XG5cbiAgcHVibGljIG5vZGVzQ2hhbmdlJCA9IHRvT2JzZXJ2YWJsZSh0aGlzLm5vZGVzQ2hhbmdlKTtcbiAgcHVibGljIGVkZ2VzQ2hhbmdlJCA9IHRvT2JzZXJ2YWJsZSh0aGlzLmVkZ2VzQ2hhbmdlKTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWVtcHR5LWxpZmVjeWNsZS1tZXRob2RcbiAgcHVibGljIG5nT25Jbml0KCkge31cblxuICBwdWJsaWMgdmlld3BvcnRUbyh2aWV3cG9ydDogVmlld3BvcnRTdGF0ZSk6IHZvaWQge1xuICAgIHRoaXMudmlld3BvcnQuc2V0KHZpZXdwb3J0KTtcbiAgfVxuXG4gIHB1YmxpYyB6b29tVG8oem9vbTogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy52aWV3cG9ydC51cGRhdGUoKHByZXYpID0+ICh7IC4uLnByZXYsIHpvb20gfSkpO1xuICB9XG5cbiAgcHVibGljIHBhblRvKHBvaW50OiBQb2ludCk6IHZvaWQge1xuICAgIHRoaXMudmlld3BvcnQudXBkYXRlKChwcmV2KSA9PiAoeyAuLi5wcmV2LCB4OiBwb2ludC54LCB5OiBwb2ludC55IH0pKTtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgcHVibGljIGZpdFZpZXcob3B0aW9ucz86IEZpdFZpZXdPcHRpb25zKTogdm9pZCB7fVxuXG4gIHB1YmxpYyBkb2N1bWVudFBvaW50VG9GbG93UG9pbnQocG9pbnQ6IFBvaW50LCBvcHRpb25zPzogeyBzcGFjZXM6IGZhbHNlIH0pOiBQb2ludDtcbiAgcHVibGljIGRvY3VtZW50UG9pbnRUb0Zsb3dQb2ludChwb2ludDogUG9pbnQsIG9wdGlvbnM6IHsgc3BhY2VzOiB0cnVlIH0pOiBTcGFjZVBvaW50W107XG4gIHB1YmxpYyBkb2N1bWVudFBvaW50VG9GbG93UG9pbnQocG9pbnQ6IFBvaW50LCBvcHRpb25zPzogeyBzcGFjZXM6IGJvb2xlYW4gfSk6IHVua25vd24ge1xuICAgIGlmIChvcHRpb25zPy5zcGFjZXMpIHtcbiAgICAgIHJldHVybiBbXG4gICAgICAgIHtcbiAgICAgICAgICBub2RlSWQ6IG51bGwsXG4gICAgICAgICAgeDogcG9pbnQueCxcbiAgICAgICAgICB5OiBwb2ludC55LFxuICAgICAgICB9LFxuICAgICAgXTtcbiAgICB9XG5cbiAgICByZXR1cm4gcG9pbnQ7XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gIHB1YmxpYyBnZXRJbnRlc2VjdGluZ05vZGVzKG5vZGVJZDogc3RyaW5nLCBvcHRpb25zPzogSW50ZXJzZWN0aW5nTm9kZXNPcHRpb25zKTogTm9kZVtdIHwgRHluYW1pY05vZGVbXSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICBwdWJsaWMgdG9Ob2RlU3BhY2Uobm9kZUlkOiBzdHJpbmcsIHNwYWNlTm9kZUlkOiBzdHJpbmcpOiBQb2ludCB7XG4gICAgcmV0dXJuIHsgeDogMCwgeTogMCB9O1xuICB9XG5cbiAgcHVibGljIGdldE5vZGU8VCA9IHVua25vd24+KGlkOiBzdHJpbmcpOiBOb2RlPFQ+IHwgRHluYW1pY05vZGU8VD4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLm5vZGVzLmZpbmQoKG5vZGUpID0+IG5vZGUuaWQgPT09IGlkKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXREZXRhY2hlZEVkZ2VzKCk6IEVkZ2VbXSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNyZWF0ZVNpZ25hbDxUPih2YWx1ZTogVCk6IFdyaXRhYmxlU2lnbmFsPFQ+IHtcbiAgICByZXR1cm4gc2lnbmFsKHZhbHVlKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,6 @@
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
@@ -0,0 +1,25 @@
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
@@ -8,10 +8,7 @@ export class ReferenceIdentityChecker {
8
8
  const oldNodesMap = new Map();
9
9
  oldNodeModels.forEach((model) => oldNodesMap.set(model.rawNode, model));
10
10
  return newNodes.map((newNode) => {
11
- if (oldNodesMap.has(newNode))
12
- return oldNodesMap.get(newNode);
13
- else
14
- return new NodeModel(newNode);
11
+ return oldNodesMap.get(newNode) ?? new NodeModel(newNode);
15
12
  });
16
13
  }
17
14
  /**
@@ -28,4 +25,4 @@ export class ReferenceIdentityChecker {
28
25
  });
29
26
  }
30
27
  }
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmZXJlbmNlLWlkZW50aXR5LWNoZWNrZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3NyYy9saWIvdmZsb3cvdXRpbHMvaWRlbnRpdHktY2hlY2tlci9yZWZlcmVuY2UtaWRlbnRpdHktY2hlY2tlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFcEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBR3BELE1BQU0sT0FBTyx3QkFBd0I7SUFDbkM7O09BRUc7SUFDSSxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQWdDLEVBQUUsYUFBMEI7UUFDOUUsTUFBTSxXQUFXLEdBQXVDLElBQUksR0FBRyxFQUFFLENBQUM7UUFDbEUsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFFeEUsT0FBTyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDOUIsSUFBSSxXQUFXLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQztnQkFBRSxPQUFPLFdBQVcsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFFLENBQUM7O2dCQUMxRCxPQUFPLElBQUksU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3JDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFnQixFQUFFLGFBQTBCO1FBQzlELE1BQU0sV0FBVyxHQUF5QixJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ3BELGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBRXJFLE9BQU8sUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQzlCLElBQUksV0FBVyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUM7Z0JBQUUsT0FBTyxXQUFXLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBRSxDQUFDOztnQkFDMUQsT0FBTyxJQUFJLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNyQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5vZGVNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9ub2RlLm1vZGVsJztcbmltcG9ydCB7IER5bmFtaWNOb2RlLCBOb2RlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9ub2RlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBFZGdlTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZWRnZS5tb2RlbCc7XG5pbXBvcnQgeyBFZGdlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9lZGdlLmludGVyZmFjZSc7XG5cbmV4cG9ydCBjbGFzcyBSZWZlcmVuY2VJZGVudGl0eUNoZWNrZXIge1xuICAvKipcbiAgICogQ3JlYXRlIG5ldyBtb2RlbHMgZm9yIG5ldyBub2RlIHJlZmVyZW5jZXMgYW5kIGtlZXAgb2xkIG1vZGVscyBmb3Igb2xkIG5vZGUgcmVmZXJlbmNlc1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBub2RlcyhuZXdOb2RlczogTm9kZVtdIHwgRHluYW1pY05vZGVbXSwgb2xkTm9kZU1vZGVsczogTm9kZU1vZGVsW10pIHtcbiAgICBjb25zdCBvbGROb2Rlc01hcDogTWFwPE5vZGUgfCBEeW5hbWljTm9kZSwgTm9kZU1vZGVsPiA9IG5ldyBNYXAoKTtcbiAgICBvbGROb2RlTW9kZWxzLmZvckVhY2goKG1vZGVsKSA9PiBvbGROb2Rlc01hcC5zZXQobW9kZWwucmF3Tm9kZSwgbW9kZWwpKTtcblxuICAgIHJldHVybiBuZXdOb2Rlcy5tYXAoKG5ld05vZGUpID0+IHtcbiAgICAgIGlmIChvbGROb2Rlc01hcC5oYXMobmV3Tm9kZSkpIHJldHVybiBvbGROb2Rlc01hcC5nZXQobmV3Tm9kZSkhO1xuICAgICAgZWxzZSByZXR1cm4gbmV3IE5vZGVNb2RlbChuZXdOb2RlKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgbmV3IG1vZGVscyBmb3IgbmV3IGVkZ2UgcmVmZXJlbmNlcyBhbmQga2VlcCBvbGQgbW9kZWxzIGZvciBvbGQgZWRnZSByZWZlcmVuY2VzXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGVkZ2VzKG5ld0VkZ2VzOiBFZGdlW10sIG9sZEVkZ2VNb2RlbHM6IEVkZ2VNb2RlbFtdKTogRWRnZU1vZGVsW10ge1xuICAgIGNvbnN0IG9sZEVkZ2VzTWFwOiBNYXA8RWRnZSwgRWRnZU1vZGVsPiA9IG5ldyBNYXAoKTtcbiAgICBvbGRFZGdlTW9kZWxzLmZvckVhY2goKG1vZGVsKSA9PiBvbGRFZGdlc01hcC5zZXQobW9kZWwuZWRnZSwgbW9kZWwpKTtcblxuICAgIHJldHVybiBuZXdFZGdlcy5tYXAoKG5ld0VkZ2UpID0+IHtcbiAgICAgIGlmIChvbGRFZGdlc01hcC5oYXMobmV3RWRnZSkpIHJldHVybiBvbGRFZGdlc01hcC5nZXQobmV3RWRnZSkhO1xuICAgICAgZWxzZSByZXR1cm4gbmV3IEVkZ2VNb2RlbChuZXdFZGdlKTtcbiAgICB9KTtcbiAgfVxufVxuIl19
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmZXJlbmNlLWlkZW50aXR5LWNoZWNrZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3NyYy9saWIvdmZsb3cvdXRpbHMvaWRlbnRpdHktY2hlY2tlci9yZWZlcmVuY2UtaWRlbnRpdHktY2hlY2tlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFcEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBR3BELE1BQU0sT0FBTyx3QkFBd0I7SUFDbkM7O09BRUc7SUFDSSxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQWdDLEVBQUUsYUFBMEI7UUFDOUUsTUFBTSxXQUFXLEdBQXVDLElBQUksR0FBRyxFQUFFLENBQUM7UUFDbEUsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFFeEUsT0FBTyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDOUIsT0FBTyxXQUFXLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzVELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFnQixFQUFFLGFBQTBCO1FBQzlELE1BQU0sV0FBVyxHQUF5QixJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ3BELGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBRXJFLE9BQU8sUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQzlCLElBQUksV0FBVyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUM7Z0JBQUUsT0FBTyxXQUFXLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBRSxDQUFDOztnQkFDMUQsT0FBTyxJQUFJLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNyQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5vZGVNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9ub2RlLm1vZGVsJztcbmltcG9ydCB7IER5bmFtaWNOb2RlLCBOb2RlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9ub2RlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBFZGdlTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZWRnZS5tb2RlbCc7XG5pbXBvcnQgeyBFZGdlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9lZGdlLmludGVyZmFjZSc7XG5cbmV4cG9ydCBjbGFzcyBSZWZlcmVuY2VJZGVudGl0eUNoZWNrZXIge1xuICAvKipcbiAgICogQ3JlYXRlIG5ldyBtb2RlbHMgZm9yIG5ldyBub2RlIHJlZmVyZW5jZXMgYW5kIGtlZXAgb2xkIG1vZGVscyBmb3Igb2xkIG5vZGUgcmVmZXJlbmNlc1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBub2RlcyhuZXdOb2RlczogTm9kZVtdIHwgRHluYW1pY05vZGVbXSwgb2xkTm9kZU1vZGVsczogTm9kZU1vZGVsW10pIHtcbiAgICBjb25zdCBvbGROb2Rlc01hcDogTWFwPE5vZGUgfCBEeW5hbWljTm9kZSwgTm9kZU1vZGVsPiA9IG5ldyBNYXAoKTtcbiAgICBvbGROb2RlTW9kZWxzLmZvckVhY2goKG1vZGVsKSA9PiBvbGROb2Rlc01hcC5zZXQobW9kZWwucmF3Tm9kZSwgbW9kZWwpKTtcblxuICAgIHJldHVybiBuZXdOb2Rlcy5tYXAoKG5ld05vZGUpID0+IHtcbiAgICAgIHJldHVybiBvbGROb2Rlc01hcC5nZXQobmV3Tm9kZSkgPz8gbmV3IE5vZGVNb2RlbChuZXdOb2RlKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgbmV3IG1vZGVscyBmb3IgbmV3IGVkZ2UgcmVmZXJlbmNlcyBhbmQga2VlcCBvbGQgbW9kZWxzIGZvciBvbGQgZWRnZSByZWZlcmVuY2VzXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGVkZ2VzKG5ld0VkZ2VzOiBFZGdlW10sIG9sZEVkZ2VNb2RlbHM6IEVkZ2VNb2RlbFtdKTogRWRnZU1vZGVsW10ge1xuICAgIGNvbnN0IG9sZEVkZ2VzTWFwOiBNYXA8RWRnZSwgRWRnZU1vZGVsPiA9IG5ldyBNYXAoKTtcbiAgICBvbGRFZGdlTW9kZWxzLmZvckVhY2goKG1vZGVsKSA9PiBvbGRFZGdlc01hcC5zZXQobW9kZWwuZWRnZSwgbW9kZWwpKTtcblxuICAgIHJldHVybiBuZXdFZGdlcy5tYXAoKG5ld0VkZ2UpID0+IHtcbiAgICAgIGlmIChvbGRFZGdlc01hcC5oYXMobmV3RWRnZSkpIHJldHVybiBvbGRFZGdlc01hcC5nZXQobmV3RWRnZSkhO1xuICAgICAgZWxzZSByZXR1cm4gbmV3IEVkZ2VNb2RlbChuZXdFZGdlKTtcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -1,3 +1,4 @@
1
+ import { getOverlappingArea } from './get-overlapping-area';
1
2
  export function getNodesBounds(nodes) {
2
3
  if (nodes.length === 0) {
3
4
  return { x: 0, y: 0, width: 0, height: 0 };
@@ -9,6 +10,21 @@ export function getNodesBounds(nodes) {
9
10
  });
10
11
  return boxToRect(box);
11
12
  }
13
+ export function getIntesectingNodes(nodeId, nodes, options) {
14
+ const node = nodes.find((n) => n.rawNode.id === nodeId);
15
+ if (!node)
16
+ return [];
17
+ const nodeRect = nodeToRect(node);
18
+ return nodes.filter((currentNode) => {
19
+ if (currentNode.rawNode.id === nodeId)
20
+ return false;
21
+ const overlappingArea = getOverlappingArea(nodeToRect(currentNode), nodeRect);
22
+ if (options?.partially) {
23
+ return overlappingArea > 0;
24
+ }
25
+ return overlappingArea >= nodeRect.width * nodeRect.height;
26
+ });
27
+ }
12
28
  function nodeToBox(node) {
13
29
  return {
14
30
  x: node.point().x,
@@ -17,6 +33,14 @@ function nodeToBox(node) {
17
33
  y2: node.point().y + node.size().height,
18
34
  };
19
35
  }
36
+ export function nodeToRect(node) {
37
+ return {
38
+ x: node.point().x,
39
+ y: node.point().y,
40
+ width: node.width(),
41
+ height: node.height(),
42
+ };
43
+ }
20
44
  function boxToRect({ x, y, x2, y2 }) {
21
45
  return {
22
46
  x,
@@ -33,4 +57,4 @@ function getBoundsOfBoxes(box1, box2) {
33
57
  y2: Math.max(box1.y2, box2.y2),
34
58
  };
35
59
  }
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3NyYy9saWIvdmZsb3cvdXRpbHMvbm9kZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsTUFBTSxVQUFVLGNBQWMsQ0FBQyxLQUFrQjtJQUMvQyxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDdkIsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUM3QyxDQUFDO0lBRUQsSUFBSSxHQUFHLEdBQVEsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLENBQUMsUUFBUSxFQUFFLEVBQUUsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBRTFFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtRQUNyQixNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEMsR0FBRyxHQUFHLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN2QyxDQUFDLENBQUMsQ0FBQztJQUVILE9BQU8sU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3hCLENBQUM7QUFFRCxTQUFTLFNBQVMsQ0FBQyxJQUFlO0lBQ2hDLE9BQU87UUFDTCxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDakIsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ2pCLEVBQUUsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLO1FBQ3RDLEVBQUUsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNO0tBQ3hDLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBUyxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQU87SUFDdEMsT0FBTztRQUNMLENBQUM7UUFDRCxDQUFDO1FBQ0QsS0FBSyxFQUFFLEVBQUUsR0FBRyxDQUFDO1FBQ2IsTUFBTSxFQUFFLEVBQUUsR0FBRyxDQUFDO0tBQ2YsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFTLGdCQUFnQixDQUFDLElBQVMsRUFBRSxJQUFTO0lBQzVDLE9BQU87UUFDTCxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDM0IsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQzNCLEVBQUUsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUM5QixFQUFFLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUM7S0FDL0IsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCb3ggfSBmcm9tICcuLi9pbnRlcmZhY2VzL2JveCc7XG5pbXBvcnQgeyBSZWN0IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9yZWN0JztcbmltcG9ydCB7IE5vZGVNb2RlbCB9IGZyb20gJy4uL21vZGVscy9ub2RlLm1vZGVsJztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldE5vZGVzQm91bmRzKG5vZGVzOiBOb2RlTW9kZWxbXSk6IFJlY3Qge1xuICBpZiAobm9kZXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIHsgeDogMCwgeTogMCwgd2lkdGg6IDAsIGhlaWdodDogMCB9O1xuICB9XG5cbiAgbGV0IGJveDogQm94ID0geyB4OiBJbmZpbml0eSwgeTogSW5maW5pdHksIHgyOiAtSW5maW5pdHksIHkyOiAtSW5maW5pdHkgfTtcblxuICBub2Rlcy5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgY29uc3Qgbm9kZUJveCA9IG5vZGVUb0JveChub2RlKTtcbiAgICBib3ggPSBnZXRCb3VuZHNPZkJveGVzKGJveCwgbm9kZUJveCk7XG4gIH0pO1xuXG4gIHJldHVybiBib3hUb1JlY3QoYm94KTtcbn1cblxuZnVuY3Rpb24gbm9kZVRvQm94KG5vZGU6IE5vZGVNb2RlbCk6IEJveCB7XG4gIHJldHVybiB7XG4gICAgeDogbm9kZS5wb2ludCgpLngsXG4gICAgeTogbm9kZS5wb2ludCgpLnksXG4gICAgeDI6IG5vZGUucG9pbnQoKS54ICsgbm9kZS5zaXplKCkud2lkdGgsXG4gICAgeTI6IG5vZGUucG9pbnQoKS55ICsgbm9kZS5zaXplKCkuaGVpZ2h0LFxuICB9O1xufVxuXG5mdW5jdGlvbiBib3hUb1JlY3QoeyB4LCB5LCB4MiwgeTIgfTogQm94KTogUmVjdCB7XG4gIHJldHVybiB7XG4gICAgeCxcbiAgICB5LFxuICAgIHdpZHRoOiB4MiAtIHgsXG4gICAgaGVpZ2h0OiB5MiAtIHksXG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldEJvdW5kc09mQm94ZXMoYm94MTogQm94LCBib3gyOiBCb3gpOiBCb3gge1xuICByZXR1cm4ge1xuICAgIHg6IE1hdGgubWluKGJveDEueCwgYm94Mi54KSxcbiAgICB5OiBNYXRoLm1pbihib3gxLnksIGJveDIueSksXG4gICAgeDI6IE1hdGgubWF4KGJveDEueDIsIGJveDIueDIpLFxuICAgIHkyOiBNYXRoLm1heChib3gxLnkyLCBib3gyLnkyKSxcbiAgfTtcbn1cbiJdfQ==
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3NyYy9saWIvdmZsb3cvdXRpbHMvbm9kZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFNUQsTUFBTSxVQUFVLGNBQWMsQ0FBQyxLQUFrQjtJQUMvQyxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDdkIsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUM3QyxDQUFDO0lBRUQsSUFBSSxHQUFHLEdBQVEsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLENBQUMsUUFBUSxFQUFFLEVBQUUsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBRTFFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtRQUNyQixNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEMsR0FBRyxHQUFHLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN2QyxDQUFDLENBQUMsQ0FBQztJQUVILE9BQU8sU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3hCLENBQUM7QUFFRCxNQUFNLFVBQVUsbUJBQW1CLENBQ2pDLE1BQWMsRUFDZCxLQUFrQixFQUNsQixPQUFrQztJQUVsQyxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxNQUFNLENBQUMsQ0FBQztJQUN4RCxJQUFJLENBQUMsSUFBSTtRQUFFLE9BQU8sRUFBRSxDQUFDO0lBRXJCLE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUVsQyxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRTtRQUNsQyxJQUFJLFdBQVcsQ0FBQyxPQUFPLENBQUMsRUFBRSxLQUFLLE1BQU07WUFBRSxPQUFPLEtBQUssQ0FBQztRQUVwRCxNQUFNLGVBQWUsR0FBRyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFFOUUsSUFBSSxPQUFPLEVBQUUsU0FBUyxFQUFFLENBQUM7WUFDdkIsT0FBTyxlQUFlLEdBQUcsQ0FBQyxDQUFDO1FBQzdCLENBQUM7UUFFRCxPQUFPLGVBQWUsSUFBSSxRQUFRLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7SUFDN0QsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsU0FBUyxTQUFTLENBQUMsSUFBZTtJQUNoQyxPQUFPO1FBQ0wsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ2pCLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUNqQixFQUFFLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSztRQUN0QyxFQUFFLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTTtLQUN4QyxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxVQUFVLENBQUMsSUFBZTtJQUN4QyxPQUFPO1FBQ0wsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ2pCLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUNqQixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRTtRQUNuQixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRTtLQUN0QixDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFPO0lBQ3RDLE9BQU87UUFDTCxDQUFDO1FBQ0QsQ0FBQztRQUNELEtBQUssRUFBRSxFQUFFLEdBQUcsQ0FBQztRQUNiLE1BQU0sRUFBRSxFQUFFLEdBQUcsQ0FBQztLQUNmLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBUyxnQkFBZ0IsQ0FBQyxJQUFTLEVBQUUsSUFBUztJQUM1QyxPQUFPO1FBQ0wsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQzNCLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUMzQixFQUFFLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDOUIsRUFBRSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDO0tBQy9CLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQm94IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9ib3gnO1xuaW1wb3J0IHsgSW50ZXJzZWN0aW5nTm9kZXNPcHRpb25zIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9pbnRlcnNlY3Rpbmctbm9kZXMtb3B0aW9ucy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUmVjdCB9IGZyb20gJy4uL2ludGVyZmFjZXMvcmVjdCc7XG5pbXBvcnQgeyBOb2RlTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvbm9kZS5tb2RlbCc7XG5pbXBvcnQgeyBnZXRPdmVybGFwcGluZ0FyZWEgfSBmcm9tICcuL2dldC1vdmVybGFwcGluZy1hcmVhJztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldE5vZGVzQm91bmRzKG5vZGVzOiBOb2RlTW9kZWxbXSk6IFJlY3Qge1xuICBpZiAobm9kZXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIHsgeDogMCwgeTogMCwgd2lkdGg6IDAsIGhlaWdodDogMCB9O1xuICB9XG5cbiAgbGV0IGJveDogQm94ID0geyB4OiBJbmZpbml0eSwgeTogSW5maW5pdHksIHgyOiAtSW5maW5pdHksIHkyOiAtSW5maW5pdHkgfTtcblxuICBub2Rlcy5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgY29uc3Qgbm9kZUJveCA9IG5vZGVUb0JveChub2RlKTtcbiAgICBib3ggPSBnZXRCb3VuZHNPZkJveGVzKGJveCwgbm9kZUJveCk7XG4gIH0pO1xuXG4gIHJldHVybiBib3hUb1JlY3QoYm94KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEludGVzZWN0aW5nTm9kZXMoXG4gIG5vZGVJZDogc3RyaW5nLFxuICBub2RlczogTm9kZU1vZGVsW10sXG4gIG9wdGlvbnM/OiBJbnRlcnNlY3RpbmdOb2Rlc09wdGlvbnMsXG4pOiBOb2RlTW9kZWxbXSB7XG4gIGNvbnN0IG5vZGUgPSBub2Rlcy5maW5kKChuKSA9PiBuLnJhd05vZGUuaWQgPT09IG5vZGVJZCk7XG4gIGlmICghbm9kZSkgcmV0dXJuIFtdO1xuXG4gIGNvbnN0IG5vZGVSZWN0ID0gbm9kZVRvUmVjdChub2RlKTtcblxuICByZXR1cm4gbm9kZXMuZmlsdGVyKChjdXJyZW50Tm9kZSkgPT4ge1xuICAgIGlmIChjdXJyZW50Tm9kZS5yYXdOb2RlLmlkID09PSBub2RlSWQpIHJldHVybiBmYWxzZTtcblxuICAgIGNvbnN0IG92ZXJsYXBwaW5nQXJlYSA9IGdldE92ZXJsYXBwaW5nQXJlYShub2RlVG9SZWN0KGN1cnJlbnROb2RlKSwgbm9kZVJlY3QpO1xuXG4gICAgaWYgKG9wdGlvbnM/LnBhcnRpYWxseSkge1xuICAgICAgcmV0dXJuIG92ZXJsYXBwaW5nQXJlYSA+IDA7XG4gICAgfVxuXG4gICAgcmV0dXJuIG92ZXJsYXBwaW5nQXJlYSA+PSBub2RlUmVjdC53aWR0aCAqIG5vZGVSZWN0LmhlaWdodDtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIG5vZGVUb0JveChub2RlOiBOb2RlTW9kZWwpOiBCb3gge1xuICByZXR1cm4ge1xuICAgIHg6IG5vZGUucG9pbnQoKS54LFxuICAgIHk6IG5vZGUucG9pbnQoKS55LFxuICAgIHgyOiBub2RlLnBvaW50KCkueCArIG5vZGUuc2l6ZSgpLndpZHRoLFxuICAgIHkyOiBub2RlLnBvaW50KCkueSArIG5vZGUuc2l6ZSgpLmhlaWdodCxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vZGVUb1JlY3Qobm9kZTogTm9kZU1vZGVsKTogUmVjdCB7XG4gIHJldHVybiB7XG4gICAgeDogbm9kZS5wb2ludCgpLngsXG4gICAgeTogbm9kZS5wb2ludCgpLnksXG4gICAgd2lkdGg6IG5vZGUud2lkdGgoKSxcbiAgICBoZWlnaHQ6IG5vZGUuaGVpZ2h0KCksXG4gIH07XG59XG5cbmZ1bmN0aW9uIGJveFRvUmVjdCh7IHgsIHksIHgyLCB5MiB9OiBCb3gpOiBSZWN0IHtcbiAgcmV0dXJuIHtcbiAgICB4LFxuICAgIHksXG4gICAgd2lkdGg6IHgyIC0geCxcbiAgICBoZWlnaHQ6IHkyIC0geSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0Qm91bmRzT2ZCb3hlcyhib3gxOiBCb3gsIGJveDI6IEJveCk6IEJveCB7XG4gIHJldHVybiB7XG4gICAgeDogTWF0aC5taW4oYm94MS54LCBib3gyLngpLFxuICAgIHk6IE1hdGgubWluKGJveDEueSwgYm94Mi55KSxcbiAgICB4MjogTWF0aC5tYXgoYm94MS54MiwgYm94Mi54MiksXG4gICAgeTI6IE1hdGgubWF4KGJveDEueTIsIGJveDIueTIpLFxuICB9O1xufVxuIl19
@@ -12,6 +12,7 @@ export * from './lib/vflow/interfaces/marker.interface';
12
12
  export * from './lib/vflow/interfaces/component-node-event.interface';
13
13
  export * from './lib/vflow/interfaces/fit-view-options.interface';
14
14
  export * from './lib/vflow/interfaces/optimization.interface';
15
+ export * from './lib/vflow/interfaces/intersecting-nodes-options.interface';
15
16
  // Types
16
17
  export * from './lib/vflow/types/node-change.type';
17
18
  export * from './lib/vflow/types/edge-change.type';
@@ -46,4 +47,4 @@ export * from './lib/vflow/testing-utils/directive-mocks/drag-handle-mock.direct
46
47
  export * from './lib/vflow/testing-utils/directive-mocks/selectable-mock.directive';
47
48
  export * from './lib/vflow/testing-utils/directive-mocks/template-mock.directive';
48
49
  export * from './lib/vflow/testing-utils/vflow-mocks';
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsa0JBQWtCO0FBQ2xCLGNBQWMsbUJBQW1CLENBQUM7QUFFbEMsYUFBYTtBQUNiLGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsNkNBQTZDLENBQUM7QUFDNUQsY0FBYyw2Q0FBNkMsQ0FBQztBQUM1RCxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMsc0RBQXNELENBQUM7QUFDckUsY0FBYyx5Q0FBeUMsQ0FBQztBQUV4RCxjQUFjLHVEQUF1RCxDQUFDO0FBQ3RFLGNBQWMsbURBQW1ELENBQUM7QUFDbEUsY0FBYywrQ0FBK0MsQ0FBQztBQUU5RCxRQUFRO0FBQ1IsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsd0NBQXdDLENBQUM7QUFFdkQsYUFBYTtBQUNiLGNBQWMsOENBQThDLENBQUM7QUFDN0QsY0FBYyx1REFBdUQsQ0FBQztBQUN0RSxjQUFjLGlFQUFpRSxDQUFDO0FBQ2hGLGNBQWMsaUZBQWlGLENBQUM7QUFDaEcsY0FBYyw2REFBNkQsQ0FBQztBQUM1RSxjQUFjLHlEQUF5RCxDQUFDO0FBQ3hFLGNBQWMsbUVBQW1FLENBQUM7QUFDbEYsY0FBYyxtRkFBbUYsQ0FBQztBQUVsRyxhQUFhO0FBQ2IsY0FBYywyQ0FBMkMsQ0FBQztBQUMxRCxjQUFjLHdEQUF3RCxDQUFDO0FBQ3ZFLGNBQWMscURBQXFELENBQUM7QUFDcEUsY0FBYyw2Q0FBNkMsQ0FBQztBQUM1RCxjQUFjLDhDQUE4QyxDQUFDO0FBRTdELFVBQVU7QUFDVixjQUFjLHFEQUFxRCxDQUFDO0FBQ3BFLGNBQWMsZ0VBQWdFLENBQUM7QUFDL0UsY0FBYyxpRUFBaUUsQ0FBQztBQUNoRixjQUFjLG9FQUFvRSxDQUFDO0FBQ25GLGNBQWMsa0VBQWtFLENBQUM7QUFDakYsY0FBYyx1RUFBdUUsQ0FBQztBQUN0RixjQUFjLGdGQUFnRixDQUFDO0FBQy9GLGNBQWMsc0VBQXNFLENBQUM7QUFDckYsY0FBYyxxRUFBcUUsQ0FBQztBQUNwRixjQUFjLG1FQUFtRSxDQUFDO0FBQ2xGLGNBQWMsdUNBQXVDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTdGFuZGFsb25lIFV0aWxcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZmbG93L3ZmbG93JztcblxuLy8gSW50ZXJmYWNlc1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdmZsb3cvaW50ZXJmYWNlcy9ub2RlLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi92Zmxvdy9pbnRlcmZhY2VzL3BvaW50LmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi92Zmxvdy9pbnRlcmZhY2VzL2VkZ2UuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZmbG93L2ludGVyZmFjZXMvZWRnZS1sYWJlbC5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdmZsb3cvaW50ZXJmYWNlcy9jb25uZWN0aW9uLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi92Zmxvdy9pbnRlcmZhY2VzL2Nvbm5lY3Rpb24uaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZmbG93L2ludGVyZmFjZXMvY29ubmVjdGlvbi1zZXR0aW5ncy5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdmZsb3cvaW50ZXJmYWNlcy9tYXJrZXIuaW50ZXJmYWNlJztcbmV4cG9ydCB7IFZpZXdwb3J0U3RhdGUgfSBmcm9tICcuL2xpYi92Zmxvdy9pbnRlcmZhY2VzL3ZpZXdwb3J0LmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi92Zmxvdy9pbnRlcmZhY2VzL2NvbXBvbmVudC1ub2RlLWV2ZW50LmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi92Zmxvdy9pbnRlcmZhY2VzL2ZpdC12aWV3LW9wdGlvbnMuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZmbG93L2ludGVyZmFjZXMvb3B0aW1pemF0aW9uLmludGVyZmFjZSc7XG5cbi8vIFR5cGVzXG5leHBvcnQgKiBmcm9tICcuL2xpYi92Zmxvdy90eXBlcy9ub2RlLWNoYW5nZS50eXBlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZmbG93L3R5cGVzL2VkZ2UtY2hhbmdlLnR5cGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdmZsb3cvdHlwZXMvcG9zaXRpb24udHlwZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi92Zmxvdy90eXBlcy9iYWNrZ3JvdW5kLnR5cGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdmZsb3cvdHlwZXMvY29ubmVjdGlvbi1tb2RlLnR5cGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdmZsb3cvdHlwZXMva2V5Ym9hcmQtYWN0aW9uLnR5cGUnO1xuXG4vLyBDb21wb25lbnRzXG5leHBvcnQgKiBmcm9tICcuL2xpYi92Zmxvdy9jb21wb25lbnRzL3ZmbG93L3ZmbG93LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi92Zmxvdy9wdWJsaWMtY29tcG9uZW50cy9oYW5kbGUvaGFuZGxlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi92Zmxvdy9wdWJsaWMtY29tcG9uZW50cy9jdXN0b20tbm9kZS9jdXN0b20tbm9kZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdmZsb3cvcHVibGljLWNvbXBvbmVudHMvY3VzdG9tLWR5bmFtaWMtbm9kZS9jdXN0b20tZHluYW1pYy1ub2RlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi92Zmxvdy9wdWJsaWMtY29tcG9uZW50cy9yZXNpemFibGUvcmVzaXphYmxlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi92Zmxvdy9wdWJsaWMtY29tcG9uZW50cy9taW5pbWFwL21pbmltYXAuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZmbG93L3B1YmxpYy1jb21wb25lbnRzL25vZGUtdG9vbGJhci9ub2RlLXRvb2xiYXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZmbG93L3B1YmxpYy1jb21wb25lbnRzL2N1c3RvbS10ZW1wbGF0ZS1lZGdlL2N1c3RvbS10ZW1wbGF0ZS1lZGdlLmNvbXBvbmVudCc7XG5cbi8vIERpcmVjdGl2ZXNcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZmbG93L2RpcmVjdGl2ZXMvdGVtcGxhdGUuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZmbG93L2RpcmVjdGl2ZXMvY29ubmVjdGlvbi1jb250cm9sbGVyLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi92Zmxvdy9kaXJlY3RpdmVzL2NoYW5nZXMtY29udHJvbGxlci5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdmZsb3cvZGlyZWN0aXZlcy9zZWxlY3RhYmxlLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi92Zmxvdy9kaXJlY3RpdmVzL2RyYWctaGFuZGxlLmRpcmVjdGl2ZSc7XG5cbi8vIFRlc3RpbmdcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZmbG93L3Rlc3RpbmctdXRpbHMvcHJvdmlkZS1jdXN0b20tbm9kZS1tb2Nrcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi92Zmxvdy90ZXN0aW5nLXV0aWxzL2NvbXBvbmVudC1tb2Nrcy92Zmxvdy1tb2NrLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi92Zmxvdy90ZXN0aW5nLXV0aWxzL2NvbXBvbmVudC1tb2Nrcy9oYW5kbGUtbW9jay5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdmZsb3cvdGVzdGluZy11dGlscy9jb21wb25lbnQtbW9ja3MvcmVzaXphYmxlLW1vY2suY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZmbG93L3Rlc3RpbmctdXRpbHMvY29tcG9uZW50LW1vY2tzL21pbmltYXAtbW9jay5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdmZsb3cvdGVzdGluZy11dGlscy9jb21wb25lbnQtbW9ja3Mvbm9kZS10b29sYmFyLW1vY2suY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZmbG93L3Rlc3RpbmctdXRpbHMvZGlyZWN0aXZlLW1vY2tzL2Nvbm5lY3Rpb24tY29udHJvbGxlci1tb2NrLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi92Zmxvdy90ZXN0aW5nLXV0aWxzL2RpcmVjdGl2ZS1tb2Nrcy9kcmFnLWhhbmRsZS1tb2NrLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi92Zmxvdy90ZXN0aW5nLXV0aWxzL2RpcmVjdGl2ZS1tb2Nrcy9zZWxlY3RhYmxlLW1vY2suZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZmbG93L3Rlc3RpbmctdXRpbHMvZGlyZWN0aXZlLW1vY2tzL3RlbXBsYXRlLW1vY2suZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZmbG93L3Rlc3RpbmctdXRpbHMvdmZsb3ctbW9ja3MnO1xuIl19
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsa0JBQWtCO0FBQ2xCLGNBQWMsbUJBQW1CLENBQUM7QUFFbEMsYUFBYTtBQUNiLGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsNkNBQTZDLENBQUM7QUFDNUQsY0FBYyw2Q0FBNkMsQ0FBQztBQUM1RCxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMsc0RBQXNELENBQUM7QUFDckUsY0FBYyx5Q0FBeUMsQ0FBQztBQUV4RCxjQUFjLHVEQUF1RCxDQUFDO0FBQ3RFLGNBQWMsbURBQW1ELENBQUM7QUFDbEUsY0FBYywrQ0FBK0MsQ0FBQztBQUM5RCxjQUFjLDZEQUE2RCxDQUFDO0FBRTVFLFFBQVE7QUFDUixjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsb0NBQW9DLENBQUM7QUFDbkQsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyx3Q0FBd0MsQ0FBQztBQUV2RCxhQUFhO0FBQ2IsY0FBYyw4Q0FBOEMsQ0FBQztBQUM3RCxjQUFjLHVEQUF1RCxDQUFDO0FBQ3RFLGNBQWMsaUVBQWlFLENBQUM7QUFDaEYsY0FBYyxpRkFBaUYsQ0FBQztBQUNoRyxjQUFjLDZEQUE2RCxDQUFDO0FBQzVFLGNBQWMseURBQXlELENBQUM7QUFDeEUsY0FBYyxtRUFBbUUsQ0FBQztBQUNsRixjQUFjLG1GQUFtRixDQUFDO0FBRWxHLGFBQWE7QUFDYixjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMsd0RBQXdELENBQUM7QUFDdkUsY0FBYyxxREFBcUQsQ0FBQztBQUNwRSxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMsOENBQThDLENBQUM7QUFFN0QsVUFBVTtBQUNWLGNBQWMscURBQXFELENBQUM7QUFDcEUsY0FBYyxnRUFBZ0UsQ0FBQztBQUMvRSxjQUFjLGlFQUFpRSxDQUFDO0FBQ2hGLGNBQWMsb0VBQW9FLENBQUM7QUFDbkYsY0FBYyxrRUFBa0UsQ0FBQztBQUNqRixjQUFjLHVFQUF1RSxDQUFDO0FBQ3RGLGNBQWMsZ0ZBQWdGLENBQUM7QUFDL0YsY0FBYyxzRUFBc0UsQ0FBQztBQUNyRixjQUFjLHFFQUFxRSxDQUFDO0FBQ3BGLGNBQWMsbUVBQW1FLENBQUM7QUFDbEYsY0FBYyx1Q0FBdUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIFN0YW5kYWxvbmUgVXRpbFxuZXhwb3J0ICogZnJvbSAnLi9saWIvdmZsb3cvdmZsb3cnO1xuXG4vLyBJbnRlcmZhY2VzXG5leHBvcnQgKiBmcm9tICcuL2xpYi92Zmxvdy9pbnRlcmZhY2VzL25vZGUuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZmbG93L2ludGVyZmFjZXMvcG9pbnQuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZmbG93L2ludGVyZmFjZXMvZWRnZS5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdmZsb3cvaW50ZXJmYWNlcy9lZGdlLWxhYmVsLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi92Zmxvdy9pbnRlcmZhY2VzL2Nvbm5lY3Rpb24uaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZmbG93L2ludGVyZmFjZXMvY29ubmVjdGlvbi5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdmZsb3cvaW50ZXJmYWNlcy9jb25uZWN0aW9uLXNldHRpbmdzLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi92Zmxvdy9pbnRlcmZhY2VzL21hcmtlci5pbnRlcmZhY2UnO1xuZXhwb3J0IHsgVmlld3BvcnRTdGF0ZSB9IGZyb20gJy4vbGliL3ZmbG93L2ludGVyZmFjZXMvdmlld3BvcnQuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZmbG93L2ludGVyZmFjZXMvY29tcG9uZW50LW5vZGUtZXZlbnQuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZmbG93L2ludGVyZmFjZXMvZml0LXZpZXctb3B0aW9ucy5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdmZsb3cvaW50ZXJmYWNlcy9vcHRpbWl6YXRpb24uaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZmbG93L2ludGVyZmFjZXMvaW50ZXJzZWN0aW5nLW5vZGVzLW9wdGlvbnMuaW50ZXJmYWNlJztcblxuLy8gVHlwZXNcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZmbG93L3R5cGVzL25vZGUtY2hhbmdlLnR5cGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdmZsb3cvdHlwZXMvZWRnZS1jaGFuZ2UudHlwZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi92Zmxvdy90eXBlcy9wb3NpdGlvbi50eXBlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZmbG93L3R5cGVzL2JhY2tncm91bmQudHlwZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi92Zmxvdy90eXBlcy9jb25uZWN0aW9uLW1vZGUudHlwZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi92Zmxvdy90eXBlcy9rZXlib2FyZC1hY3Rpb24udHlwZSc7XG5cbi8vIENvbXBvbmVudHNcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZmbG93L2NvbXBvbmVudHMvdmZsb3cvdmZsb3cuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZmbG93L3B1YmxpYy1jb21wb25lbnRzL2hhbmRsZS9oYW5kbGUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZmbG93L3B1YmxpYy1jb21wb25lbnRzL2N1c3RvbS1ub2RlL2N1c3RvbS1ub2RlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi92Zmxvdy9wdWJsaWMtY29tcG9uZW50cy9jdXN0b20tZHluYW1pYy1ub2RlL2N1c3RvbS1keW5hbWljLW5vZGUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZmbG93L3B1YmxpYy1jb21wb25lbnRzL3Jlc2l6YWJsZS9yZXNpemFibGUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZmbG93L3B1YmxpYy1jb21wb25lbnRzL21pbmltYXAvbWluaW1hcC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdmZsb3cvcHVibGljLWNvbXBvbmVudHMvbm9kZS10b29sYmFyL25vZGUtdG9vbGJhci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdmZsb3cvcHVibGljLWNvbXBvbmVudHMvY3VzdG9tLXRlbXBsYXRlLWVkZ2UvY3VzdG9tLXRlbXBsYXRlLWVkZ2UuY29tcG9uZW50JztcblxuLy8gRGlyZWN0aXZlc1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdmZsb3cvZGlyZWN0aXZlcy90ZW1wbGF0ZS5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdmZsb3cvZGlyZWN0aXZlcy9jb25uZWN0aW9uLWNvbnRyb2xsZXIuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZmbG93L2RpcmVjdGl2ZXMvY2hhbmdlcy1jb250cm9sbGVyLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi92Zmxvdy9kaXJlY3RpdmVzL3NlbGVjdGFibGUuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZmbG93L2RpcmVjdGl2ZXMvZHJhZy1oYW5kbGUuZGlyZWN0aXZlJztcblxuLy8gVGVzdGluZ1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdmZsb3cvdGVzdGluZy11dGlscy9wcm92aWRlLWN1c3RvbS1ub2RlLW1vY2tzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZmbG93L3Rlc3RpbmctdXRpbHMvY29tcG9uZW50LW1vY2tzL3ZmbG93LW1vY2suY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZmbG93L3Rlc3RpbmctdXRpbHMvY29tcG9uZW50LW1vY2tzL2hhbmRsZS1tb2NrLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi92Zmxvdy90ZXN0aW5nLXV0aWxzL2NvbXBvbmVudC1tb2Nrcy9yZXNpemFibGUtbW9jay5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdmZsb3cvdGVzdGluZy11dGlscy9jb21wb25lbnQtbW9ja3MvbWluaW1hcC1tb2NrLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi92Zmxvdy90ZXN0aW5nLXV0aWxzL2NvbXBvbmVudC1tb2Nrcy9ub2RlLXRvb2xiYXItbW9jay5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdmZsb3cvdGVzdGluZy11dGlscy9kaXJlY3RpdmUtbW9ja3MvY29ubmVjdGlvbi1jb250cm9sbGVyLW1vY2suZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZmbG93L3Rlc3RpbmctdXRpbHMvZGlyZWN0aXZlLW1vY2tzL2RyYWctaGFuZGxlLW1vY2suZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZmbG93L3Rlc3RpbmctdXRpbHMvZGlyZWN0aXZlLW1vY2tzL3NlbGVjdGFibGUtbW9jay5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdmZsb3cvdGVzdGluZy11dGlscy9kaXJlY3RpdmUtbW9ja3MvdGVtcGxhdGUtbW9jay5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdmZsb3cvdGVzdGluZy11dGlscy92Zmxvdy1tb2Nrcyc7XG4iXX0=
@@ -8,6 +8,12 @@ import { drag } from 'd3-drag';
8
8
  import { __decorate } from 'tslib';
9
9
  import { NgTemplateOutlet, NgComponentOutlet, KeyValuePipe } from '@angular/common';
10
10
 
11
+ const getOverlappingArea = (rectA, rectB) => {
12
+ const xOverlap = Math.max(0, Math.min(rectA.x + rectA.width, rectB.x + rectB.width) - Math.max(rectA.x, rectB.x));
13
+ const yOverlap = Math.max(0, Math.min(rectA.y + rectA.height, rectB.y + rectB.height) - Math.max(rectA.y, rectB.y));
14
+ return Math.ceil(xOverlap * yOverlap);
15
+ };
16
+
11
17
  function getNodesBounds(nodes) {
12
18
  if (nodes.length === 0) {
13
19
  return { x: 0, y: 0, width: 0, height: 0 };
@@ -19,6 +25,21 @@ function getNodesBounds(nodes) {
19
25
  });
20
26
  return boxToRect(box);
21
27
  }
28
+ function getIntesectingNodes(nodeId, nodes, options) {
29
+ const node = nodes.find((n) => n.rawNode.id === nodeId);
30
+ if (!node)
31
+ return [];
32
+ const nodeRect = nodeToRect(node);
33
+ return nodes.filter((currentNode) => {
34
+ if (currentNode.rawNode.id === nodeId)
35
+ return false;
36
+ const overlappingArea = getOverlappingArea(nodeToRect(currentNode), nodeRect);
37
+ if (options?.partially) {
38
+ return overlappingArea > 0;
39
+ }
40
+ return overlappingArea >= nodeRect.width * nodeRect.height;
41
+ });
42
+ }
22
43
  function nodeToBox(node) {
23
44
  return {
24
45
  x: node.point().x,
@@ -27,6 +48,14 @@ function nodeToBox(node) {
27
48
  y2: node.point().y + node.size().height,
28
49
  };
29
50
  }
51
+ function nodeToRect(node) {
52
+ return {
53
+ x: node.point().x,
54
+ y: node.point().y,
55
+ width: node.width(),
56
+ height: node.height(),
57
+ };
58
+ }
30
59
  function boxToRect({ x, y, x2, y2 }) {
31
60
  return {
32
61
  x,
@@ -936,26 +965,18 @@ class NodeModel {
936
965
  this.rawNode = rawNode;
937
966
  this.entitiesService = inject(FlowEntitiesService);
938
967
  this.point = signal({ x: 0, y: 0 });
939
- this.point$ = toObservable(this.point);
940
968
  this.width = signal(NodeModel.defaultWidth);
941
- this.width$ = toObservable(this.width);
942
969
  this.height = signal(NodeModel.defaultHeight);
943
- this.height$ = toObservable(this.height);
944
970
  /**
945
971
  * @deprecated use width or height signals
946
972
  */
947
973
  this.size = computed(() => ({ width: this.width(), height: this.height() }));
948
- /**
949
- * @deprecated use width$ or height$
950
- */
951
- this.size$ = toObservable(this.size);
952
974
  this.styleWidth = computed(() => `${this.width()}px`);
953
975
  this.styleHeight = computed(() => `${this.height()}px`);
954
976
  this.foWidth = computed(() => this.width() + MAGIC_NUMBER_TO_FIX_GLITCH_IN_CHROME);
955
977
  this.foHeight = computed(() => this.height() + MAGIC_NUMBER_TO_FIX_GLITCH_IN_CHROME);
956
978
  this.renderOrder = signal(0);
957
979
  this.selected = signal(false);
958
- this.selected$ = toObservable(this.selected);
959
980
  this.globalPoint = computed(() => {
960
981
  let parent = this.parent();
961
982
  let x = this.point().x;
@@ -969,7 +990,6 @@ class NodeModel {
969
990
  });
970
991
  this.pointTransform = computed(() => `translate(${this.globalPoint().x}, ${this.globalPoint().y})`);
971
992
  this.handles = signal([]);
972
- this.handles$ = toObservable(this.handles);
973
993
  this.draggable = signal(true);
974
994
  this.dragHandlesCount = signal(0);
975
995
  // disabled for configuration for now
@@ -1045,6 +1065,13 @@ class NodeModel {
1045
1065
  },
1046
1066
  };
1047
1067
  }
1068
+ // Initialize Observables after all signal assignments
1069
+ this.point$ = toObservable(this.point);
1070
+ this.width$ = toObservable(this.width);
1071
+ this.height$ = toObservable(this.height);
1072
+ this.size$ = toObservable(this.size);
1073
+ this.selected$ = toObservable(this.selected);
1074
+ this.handles$ = toObservable(this.handles);
1048
1075
  }
1049
1076
  setPoint(point) {
1050
1077
  this.point.set(point);
@@ -1442,10 +1469,7 @@ class ReferenceIdentityChecker {
1442
1469
  const oldNodesMap = new Map();
1443
1470
  oldNodeModels.forEach((model) => oldNodesMap.set(model.rawNode, model));
1444
1471
  return newNodes.map((newNode) => {
1445
- if (oldNodesMap.has(newNode))
1446
- return oldNodesMap.get(newNode);
1447
- else
1448
- return new NodeModel(newNode);
1472
+ return oldNodesMap.get(newNode) ?? new NodeModel(newNode);
1449
1473
  });
1450
1474
  }
1451
1475
  /**
@@ -1474,10 +1498,14 @@ class NodesChangeService {
1474
1498
  switchMap((nodes) => merge(...nodes.map((node) => node.point$.pipe(
1475
1499
  // skip initial position from signal
1476
1500
  skip(1), map(() => node))))), map((changedNode) => {
1477
- return this.entitiesService
1478
- .nodes()
1479
- .filter((node) => node === changedNode || node.selected())
1480
- .map((node) => ({ type: 'position', id: node.rawNode.id, point: node.point() }));
1501
+ return [
1502
+ { type: 'position', id: changedNode.rawNode.id, point: changedNode.point() },
1503
+ // TODO: emits even if node is not change position
1504
+ ...this.entitiesService
1505
+ .nodes()
1506
+ .filter((node) => node !== changedNode && node.selected())
1507
+ .map((node) => ({ type: 'position', id: node.rawNode.id, point: node.point() })),
1508
+ ];
1481
1509
  }));
1482
1510
  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() }]));
1483
1511
  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 }))));
@@ -1713,11 +1741,6 @@ class NodeRenderingService {
1713
1741
  });
1714
1742
  }
1715
1743
  pullNode(node) {
1716
- const isAlreadyOnTop = node.renderOrder() !== 0 && this.maxOrder() === node.renderOrder();
1717
- // TODO: does not work for group nodes
1718
- if (isAlreadyOnTop) {
1719
- return;
1720
- }
1721
1744
  // pull node
1722
1745
  node.renderOrder.set(this.maxOrder() + 1);
1723
1746
  // pull children
@@ -3184,6 +3207,31 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
3184
3207
  args: ['contextmenu']
3185
3208
  }] } });
3186
3209
 
3210
+ /**
3211
+ * @todo handle regular nodes
3212
+ *
3213
+ * @param point global point in flow coordinates
3214
+ * @param groups sorted array of groups
3215
+ * @returns
3216
+ */
3217
+ function getSpacePoints(point, groups) {
3218
+ const result = [];
3219
+ for (const group of groups) {
3220
+ const { x, y } = group.globalPoint();
3221
+ if (point.x >= x && point.x <= x + group.width() && point.y >= y && point.y <= y + group.height()) {
3222
+ result.push({
3223
+ x: point.x - x,
3224
+ y: point.y - y,
3225
+ spaceNodeId: group.rawNode.id,
3226
+ });
3227
+ }
3228
+ }
3229
+ result.reverse();
3230
+ // TODO: spread does not work, because the point is SVGPoint
3231
+ result.push({ spaceNodeId: null, x: point.x, y: point.y });
3232
+ return result;
3233
+ }
3234
+
3187
3235
  const changesControllerHostDirective = {
3188
3236
  directive: ChangesControllerDirective,
3189
3237
  outputs: [
@@ -3368,10 +3416,12 @@ class VflowComponent {
3368
3416
  * Nodes to render
3369
3417
  */
3370
3418
  set nodes(newNodes) {
3371
- const newModels = runInInjectionContext(this.injector, () => ReferenceIdentityChecker.nodes(newNodes, this.flowEntitiesService.nodes()));
3419
+ const models = runInInjectionContext(this.injector, () => ReferenceIdentityChecker.nodes(newNodes, this.flowEntitiesService.nodes()));
3420
+ // TODO: consider calling only fo new nodes
3372
3421
  // quick and dirty binding nodes to edges
3373
- addNodesToEdges(newModels, this.flowEntitiesService.edges());
3374
- this.flowEntitiesService.nodes.set(newModels);
3422
+ addNodesToEdges(models, this.flowEntitiesService.edges());
3423
+ this.flowEntitiesService.nodes.set(models);
3424
+ models.forEach((model) => this.nodeRenderingService.pullNode(model));
3375
3425
  }
3376
3426
  /**
3377
3427
  * Edges to render
@@ -3382,9 +3432,6 @@ class VflowComponent {
3382
3432
  addNodesToEdges(this.nodeModels(), newModels);
3383
3433
  this.flowEntitiesService.edges.set(newModels);
3384
3434
  }
3385
- ngOnInit() {
3386
- this.setInitialNodesOrder();
3387
- }
3388
3435
  // #region METHODS_API
3389
3436
  /**
3390
3437
  * Change viewport to specified state
@@ -3439,11 +3486,43 @@ class VflowComponent {
3439
3486
  getDetachedEdges() {
3440
3487
  return this.flowEntitiesService.getDetachedEdges().map((e) => e.edge);
3441
3488
  }
3489
+ documentPointToFlowPoint(point, options) {
3490
+ const transformedPoint = this.spacePointContext().documentPointToFlowPoint(point);
3491
+ if (options?.spaces) {
3492
+ return getSpacePoints(transformedPoint, this.nodeRenderingService.groups());
3493
+ }
3494
+ return transformedPoint;
3495
+ }
3496
+ /**
3497
+ * Gets nodes that intersect with the specified node
3498
+ *
3499
+ * @template T - The type of data associated with the nodes
3500
+ * @param nodeId - The ID of the node to check intersections for
3501
+ * @param options.partially - If true, returns nodes that partially intersect. If false, only returns fully intersecting nodes
3502
+ * @returns An array of nodes that intersect with the specified node
3503
+ */
3504
+ getIntesectingNodes(nodeId, options = { partially: true }) {
3505
+ return getIntesectingNodes(nodeId, this.nodeModels(), options).map((n) => n.rawNode);
3506
+ }
3442
3507
  /**
3443
- * Convert point received from document to point on the flow
3508
+ * Converts a node's position to the coordinate space of another node
3509
+ *
3510
+ * @param nodeId - The ID of the node whose position should be converted
3511
+ * @param spaceNodeId - The ID of the node that defines the target coordinate space.
3512
+ * If null, returns the position in global coordinates
3513
+ * @returns {Point} The converted position. Returns {x: Infinity, y: Infinity} if either node is not found
3444
3514
  */
3445
- documentPointToFlowPoint(point) {
3446
- return this.spacePointContext().documentPointToFlowPoint(point);
3515
+ toNodeSpace(nodeId, spaceNodeId) {
3516
+ const node = this.nodeModels().find((n) => n.rawNode.id === nodeId);
3517
+ if (!node)
3518
+ return { x: Infinity, y: Infinity };
3519
+ if (spaceNodeId === null) {
3520
+ return node.globalPoint();
3521
+ }
3522
+ const coordinateSpaceNode = this.nodeModels().find((n) => n.rawNode.id === spaceNodeId);
3523
+ if (!coordinateSpaceNode)
3524
+ return { x: Infinity, y: Infinity };
3525
+ return getSpacePoints(node.globalPoint(), [coordinateSpaceNode])[0];
3447
3526
  }
3448
3527
  // #endregion
3449
3528
  trackNodes(idx, { rawNode: node }) {
@@ -3452,16 +3531,6 @@ class VflowComponent {
3452
3531
  trackEdges(idx, { edge }) {
3453
3532
  return edge;
3454
3533
  }
3455
- setInitialNodesOrder() {
3456
- this.nodeModels().forEach((model) => {
3457
- switch (model.rawNode.type) {
3458
- case 'default-group':
3459
- case 'template-group': {
3460
- this.nodeRenderingService.pullNode(model);
3461
- }
3462
- }
3463
- });
3464
- }
3465
3534
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: VflowComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3466
3535
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: VflowComponent, isStandalone: true, selector: "vflow", inputs: { view: { classPropertyName: "view", publicName: "view", isSignal: false, isRequired: false, transformFunction: null }, minZoom: { classPropertyName: "minZoom", publicName: "minZoom", isSignal: false, isRequired: false, transformFunction: null }, maxZoom: { classPropertyName: "maxZoom", publicName: "maxZoom", isSignal: false, isRequired: false, transformFunction: null }, background: { classPropertyName: "background", publicName: "background", isSignal: false, isRequired: false, transformFunction: null }, optimization: { classPropertyName: "optimization", publicName: "optimization", isSignal: true, isRequired: false, transformFunction: null }, entitiesSelectable: { classPropertyName: "entitiesSelectable", publicName: "entitiesSelectable", isSignal: false, isRequired: false, transformFunction: null }, keyboardShortcuts: { classPropertyName: "keyboardShortcuts", publicName: "keyboardShortcuts", isSignal: false, isRequired: false, transformFunction: null }, connection: { classPropertyName: "connection", publicName: "connection", isSignal: false, isRequired: false, transformFunction: (settings) => new ConnectionModel(settings) }, snapGrid: { classPropertyName: "snapGrid", publicName: "snapGrid", isSignal: false, isRequired: false, transformFunction: null }, elevateNodesOnSelect: { classPropertyName: "elevateNodesOnSelect", publicName: "elevateNodesOnSelect", isSignal: false, isRequired: false, transformFunction: null }, elevateEdgesOnSelect: { classPropertyName: "elevateEdgesOnSelect", publicName: "elevateEdgesOnSelect", isSignal: false, isRequired: false, transformFunction: null }, nodes: { classPropertyName: "nodes", publicName: "nodes", isSignal: false, isRequired: true, transformFunction: null }, edges: { classPropertyName: "edges", publicName: "edges", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { onComponentNodeEvent: "onComponentNodeEvent" }, providers: [
3467
3536
  DraggableService,
@@ -3782,9 +3851,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
3782
3851
  class NodeToolbarWrapperDirective {
3783
3852
  constructor() {
3784
3853
  this.element = inject(ElementRef);
3854
+ this.zone = inject(NgZone);
3855
+ this.destroyRef = inject(DestroyRef);
3785
3856
  this.model = input.required();
3786
3857
  }
3787
3858
  ngOnInit() {
3859
+ resizable([this.element.nativeElement], this.zone)
3860
+ .pipe(tap(() => this.setSize()), takeUntilDestroyed(this.destroyRef))
3861
+ .subscribe();
3862
+ }
3863
+ setSize() {
3788
3864
  this.model().size.set({
3789
3865
  width: this.element.nativeElement.clientWidth,
3790
3866
  height: this.element.nativeElement.clientHeight,
@@ -4044,9 +4120,26 @@ class VflowMockComponent {
4044
4120
  }
4045
4121
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
4046
4122
  fitView(options) { }
4047
- documentPointToFlowPoint(point) {
4123
+ documentPointToFlowPoint(point, options) {
4124
+ if (options?.spaces) {
4125
+ return [
4126
+ {
4127
+ nodeId: null,
4128
+ x: point.x,
4129
+ y: point.y,
4130
+ },
4131
+ ];
4132
+ }
4048
4133
  return point;
4049
4134
  }
4135
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
4136
+ getIntesectingNodes(nodeId, options) {
4137
+ return [];
4138
+ }
4139
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
4140
+ toNodeSpace(nodeId, spaceNodeId) {
4141
+ return { x: 0, y: 0 };
4142
+ }
4050
4143
  getNode(id) {
4051
4144
  return this.nodes.find((node) => node.id === id);
4052
4145
  }