ngx-vflow 1.11.1 → 1.12.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 (48) hide show
  1. package/esm2022/lib/vflow/components/background/background.component.mjs +4 -3
  2. package/esm2022/lib/vflow/components/node/node.component.mjs +3 -1
  3. package/esm2022/lib/vflow/components/preview-flow/draw-node.mjs +100 -0
  4. package/esm2022/lib/vflow/components/preview-flow/preview-flow.component.mjs +62 -0
  5. package/esm2022/lib/vflow/components/vflow/vflow.component.mjs +26 -12
  6. package/esm2022/lib/vflow/directives/map-context.directive.mjs +28 -18
  7. package/esm2022/lib/vflow/directives/space-point-context.directive.mjs +3 -3
  8. package/esm2022/lib/vflow/interfaces/node-preview.interface.mjs +2 -0
  9. package/esm2022/lib/vflow/interfaces/node.interface.mjs +1 -1
  10. package/esm2022/lib/vflow/interfaces/optimization.interface.mjs +6 -2
  11. package/esm2022/lib/vflow/models/edge.model.mjs +42 -15
  12. package/esm2022/lib/vflow/models/handle.model.mjs +3 -1
  13. package/esm2022/lib/vflow/models/node.model.mjs +6 -1
  14. package/esm2022/lib/vflow/services/edge-rendering.service.mjs +14 -2
  15. package/esm2022/lib/vflow/services/flow-settings.service.mjs +3 -1
  16. package/esm2022/lib/vflow/services/node-rendering.service.mjs +35 -2
  17. package/esm2022/lib/vflow/services/preview-flow-render-strategy.service.mjs +21 -0
  18. package/esm2022/lib/vflow/services/viewport.service.mjs +8 -1
  19. package/esm2022/lib/vflow/utils/assert-injector.mjs +27 -0
  20. package/esm2022/lib/vflow/utils/signals/extended-computed.mjs +15 -0
  21. package/esm2022/lib/vflow/utils/signals/to-lazy-signal.mjs +35 -0
  22. package/esm2022/lib/vflow/utils/viewport.mjs +37 -1
  23. package/esm2022/public-api.mjs +2 -1
  24. package/esm2022/testing/component-mocks/vflow-mock.component.mjs +7 -7
  25. package/fesm2022/ngx-vflow-testing.mjs +6 -6
  26. package/fesm2022/ngx-vflow-testing.mjs.map +1 -1
  27. package/fesm2022/ngx-vflow.mjs +436 -46
  28. package/fesm2022/ngx-vflow.mjs.map +1 -1
  29. package/lib/vflow/components/preview-flow/draw-node.d.ts +2 -0
  30. package/lib/vflow/components/preview-flow/preview-flow.component.d.ts +15 -0
  31. package/lib/vflow/components/vflow/vflow.component.d.ts +5 -2
  32. package/lib/vflow/directives/map-context.directive.d.ts +3 -2
  33. package/lib/vflow/interfaces/node-preview.interface.d.ts +3 -0
  34. package/lib/vflow/interfaces/node.interface.d.ts +3 -0
  35. package/lib/vflow/interfaces/optimization.interface.d.ts +17 -1
  36. package/lib/vflow/models/node.model.d.ts +3 -0
  37. package/lib/vflow/services/edge-rendering.service.d.ts +2 -0
  38. package/lib/vflow/services/flow-settings.service.d.ts +2 -0
  39. package/lib/vflow/services/node-rendering.service.d.ts +4 -0
  40. package/lib/vflow/services/preview-flow-render-strategy.service.d.ts +12 -0
  41. package/lib/vflow/services/viewport.service.d.ts +3 -0
  42. package/lib/vflow/utils/assert-injector.d.ts +44 -0
  43. package/lib/vflow/utils/signals/extended-computed.d.ts +5 -0
  44. package/lib/vflow/utils/signals/to-lazy-signal.d.ts +20 -0
  45. package/lib/vflow/utils/viewport.d.ts +19 -0
  46. package/package.json +1 -1
  47. package/public-api.d.ts +1 -0
  48. package/testing/component-mocks/vflow-mock.component.d.ts +3 -3
@@ -0,0 +1,27 @@
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==
@@ -0,0 +1,15 @@
1
+ // MIT License
2
+ import { computed as ngComputed } from '@angular/core';
3
+ /**
4
+ * @todo Use `linkedSignal` after Angular update
5
+ */
6
+ export function extendedComputed(computedCallback, options) {
7
+ if (!options) {
8
+ options = { equal: Object.is };
9
+ }
10
+ let currentValue = undefined;
11
+ return ngComputed(() => {
12
+ return (currentValue = computedCallback(currentValue));
13
+ }, options);
14
+ }
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5kZWQtY29tcHV0ZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3NyYy9saWIvdmZsb3cvdXRpbHMvc2lnbmFscy9leHRlbmRlZC1jb21wdXRlZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjO0FBdUJkLE9BQU8sRUFBRSxRQUFRLElBQUksVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXZEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQixDQUM5QixnQkFBa0QsRUFDbEQsT0FBdUM7SUFFdkMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2IsT0FBTyxHQUFHLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRUQsSUFBSSxZQUFZLEdBQVcsU0FBVSxDQUFDO0lBQ3RDLE9BQU8sVUFBVSxDQUFDLEdBQUcsRUFBRTtRQUNyQixPQUFPLENBQUMsWUFBWSxHQUFHLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7SUFDekQsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ2QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIE1JVCBMaWNlbnNlXG5cbi8vIENvcHlyaWdodCAoYykgMjAyMyBDaGF1IFRyYW5cblxuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbi8vIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG5cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcbi8vIFNPRlRXQVJFLlxuXG5pbXBvcnQgdHlwZSB7IENyZWF0ZUNvbXB1dGVkT3B0aW9ucyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY29tcHV0ZWQgYXMgbmdDb21wdXRlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIEB0b2RvIFVzZSBgbGlua2VkU2lnbmFsYCBhZnRlciBBbmd1bGFyIHVwZGF0ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZXh0ZW5kZWRDb21wdXRlZDxUVmFsdWU+KFxuICBjb21wdXRlZENhbGxiYWNrOiAoY3VycmVudFZhbHVlOiBUVmFsdWUpID0+IFRWYWx1ZSxcbiAgb3B0aW9ucz86IENyZWF0ZUNvbXB1dGVkT3B0aW9uczxUVmFsdWU+LFxuKSB7XG4gIGlmICghb3B0aW9ucykge1xuICAgIG9wdGlvbnMgPSB7IGVxdWFsOiBPYmplY3QuaXMgfTtcbiAgfVxuXG4gIGxldCBjdXJyZW50VmFsdWU6IFRWYWx1ZSA9IHVuZGVmaW5lZCE7XG4gIHJldHVybiBuZ0NvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gKGN1cnJlbnRWYWx1ZSA9IGNvbXB1dGVkQ2FsbGJhY2soY3VycmVudFZhbHVlKSk7XG4gIH0sIG9wdGlvbnMpO1xufVxuIl19
@@ -0,0 +1,35 @@
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
+ import { computed, untracked } from '@angular/core';
19
+ import { toSignal } from '@angular/core/rxjs-interop';
20
+ import { assertInjector } from '../assert-injector';
21
+ /**
22
+ * Function `toLazySignal()` is a proxy function that will call the original
23
+ * `toSignal()` function when the returned signal is read for the first time.
24
+ */
25
+ export function toLazySignal(source, options) {
26
+ const injector = assertInjector(toLazySignal, options?.injector);
27
+ let s;
28
+ return computed(() => {
29
+ if (!s) {
30
+ s = untracked(() => toSignal(source, { ...options, injector }));
31
+ }
32
+ return s();
33
+ });
34
+ }
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG8tbGF6eS1zaWduYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3NyYy9saWIvdmZsb3cvdXRpbHMvc2lnbmFscy90by1sYXp5LXNpZ25hbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjO0FBRWQsK0JBQStCO0FBRS9CLCtFQUErRTtBQUMvRSxnRkFBZ0Y7QUFDaEYsK0VBQStFO0FBQy9FLDRFQUE0RTtBQUM1RSx3RUFBd0U7QUFDeEUsMkRBQTJEO0FBRTNELGlGQUFpRjtBQUNqRixrREFBa0Q7QUFFbEQsNkVBQTZFO0FBQzdFLDJFQUEyRTtBQUMzRSw4RUFBOEU7QUFDOUUseUVBQXlFO0FBQ3pFLGdGQUFnRjtBQUNoRixnRkFBZ0Y7QUFDaEYsWUFBWTtBQUVaLE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFlLE1BQU0sZUFBZSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxRQUFRLEVBQXdCLE1BQU0sNEJBQTRCLENBQUM7QUFFNUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBNkJwRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsWUFBWSxDQUMxQixNQUF1QyxFQUN2QyxPQUFnRDtJQUVoRCxNQUFNLFFBQVEsR0FBRyxjQUFjLENBQUMsWUFBWSxFQUFFLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNqRSxJQUFJLENBQTJCLENBQUM7SUFFaEMsT0FBTyxRQUFRLENBQW1CLEdBQUcsRUFBRTtRQUNyQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDUCxDQUFDLEdBQUcsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsRUFBRSxHQUFHLE9BQU8sRUFBRSxRQUFRLEVBQVMsQ0FBQyxDQUFDLENBQUM7UUFDekUsQ0FBQztRQUNELE9BQU8sQ0FBQyxFQUFFLENBQUM7SUFDYixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBNSVQgTGljZW5zZVxuXG4vLyBDb3B5cmlnaHQgKGMpIDIwMjMgQ2hhdSBUcmFuXG5cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcblxuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsXG4vLyBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFXG4vLyBTT0ZUV0FSRS5cblxuaW1wb3J0IHsgY29tcHV0ZWQsIHVudHJhY2tlZCwgdHlwZSBTaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRvU2lnbmFsLCB0eXBlIFRvU2lnbmFsT3B0aW9ucyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB0eXBlIHsgT2JzZXJ2YWJsZSwgU3Vic2NyaWJhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBhc3NlcnRJbmplY3RvciB9IGZyb20gJy4uL2Fzc2VydC1pbmplY3Rvcic7XG5cbnR5cGUgUmV0dXJuVHlwZTxULCBVPiA9IChUIHwgVSkgfCAoVCB8IHVuZGVmaW5lZCkgfCAoVCB8IG51bGwpIHwgVDtcblxuZXhwb3J0IGZ1bmN0aW9uIHRvTGF6eVNpZ25hbDxUPihzb3VyY2U6IE9ic2VydmFibGU8VD4gfCBTdWJzY3JpYmFibGU8VD4pOiBTaWduYWw8VCB8IHVuZGVmaW5lZD47XG5cbmV4cG9ydCBmdW5jdGlvbiB0b0xhenlTaWduYWw8VD4oXG4gIHNvdXJjZTogT2JzZXJ2YWJsZTxUPiB8IFN1YnNjcmliYWJsZTxUPixcbiAgb3B0aW9uczogVG9TaWduYWxPcHRpb25zICYge1xuICAgIGluaXRpYWxWYWx1ZT86IHVuZGVmaW5lZDtcbiAgICByZXF1aXJlU3luYz86IGZhbHNlO1xuICB9LFxuKTogU2lnbmFsPFQgfCB1bmRlZmluZWQ+O1xuXG5leHBvcnQgZnVuY3Rpb24gdG9MYXp5U2lnbmFsPFQ+KFxuICBzb3VyY2U6IE9ic2VydmFibGU8VD4gfCBTdWJzY3JpYmFibGU8VD4sXG4gIG9wdGlvbnM6IFRvU2lnbmFsT3B0aW9ucyAmIHsgaW5pdGlhbFZhbHVlPzogbnVsbDsgcmVxdWlyZVN5bmM/OiBmYWxzZSB9LFxuKTogU2lnbmFsPFQgfCBudWxsPjtcblxuZXhwb3J0IGZ1bmN0aW9uIHRvTGF6eVNpZ25hbDxUPihcbiAgc291cmNlOiBPYnNlcnZhYmxlPFQ+IHwgU3Vic2NyaWJhYmxlPFQ+LFxuICBvcHRpb25zOiBUb1NpZ25hbE9wdGlvbnMgJiB7IGluaXRpYWxWYWx1ZT86IHVuZGVmaW5lZDsgcmVxdWlyZVN5bmM6IHRydWUgfSxcbik6IFNpZ25hbDxUPjtcblxuZXhwb3J0IGZ1bmN0aW9uIHRvTGF6eVNpZ25hbDxULCBjb25zdCBVIGV4dGVuZHMgVD4oXG4gIHNvdXJjZTogT2JzZXJ2YWJsZTxUPiB8IFN1YnNjcmliYWJsZTxUPixcbiAgb3B0aW9uczogVG9TaWduYWxPcHRpb25zICYgeyBpbml0aWFsVmFsdWU6IFU7IHJlcXVpcmVTeW5jPzogZmFsc2UgfSxcbik6IFNpZ25hbDxUIHwgVT47XG5cbi8qKlxuICogRnVuY3Rpb24gYHRvTGF6eVNpZ25hbCgpYCBpcyBhIHByb3h5IGZ1bmN0aW9uIHRoYXQgd2lsbCBjYWxsIHRoZSBvcmlnaW5hbFxuICogYHRvU2lnbmFsKClgIGZ1bmN0aW9uIHdoZW4gdGhlIHJldHVybmVkIHNpZ25hbCBpcyByZWFkIGZvciB0aGUgZmlyc3QgdGltZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvTGF6eVNpZ25hbDxULCBVID0gdW5kZWZpbmVkPihcbiAgc291cmNlOiBPYnNlcnZhYmxlPFQ+IHwgU3Vic2NyaWJhYmxlPFQ+LFxuICBvcHRpb25zPzogVG9TaWduYWxPcHRpb25zICYgeyBpbml0aWFsVmFsdWU/OiBVIH0sXG4pOiBTaWduYWw8UmV0dXJuVHlwZTxULCBVPj4ge1xuICBjb25zdCBpbmplY3RvciA9IGFzc2VydEluamVjdG9yKHRvTGF6eVNpZ25hbCwgb3B0aW9ucz8uaW5qZWN0b3IpO1xuICBsZXQgczogU2lnbmFsPFJldHVyblR5cGU8VCwgVT4+O1xuXG4gIHJldHVybiBjb21wdXRlZDxSZXR1cm5UeXBlPFQsIFU+PigoKSA9PiB7XG4gICAgaWYgKCFzKSB7XG4gICAgICBzID0gdW50cmFja2VkKCgpID0+IHRvU2lnbmFsKHNvdXJjZSwgeyAuLi5vcHRpb25zLCBpbmplY3RvciB9IGFzIGFueSkpO1xuICAgIH1cbiAgICByZXR1cm4gcygpO1xuICB9KTtcbn1cbiJdfQ==
@@ -12,4 +12,40 @@ export function getViewportForBounds(bounds, width, height, minZoom, maxZoom, pa
12
12
  export function clamp(value, min = 0, max = 1) {
13
13
  return Math.min(Math.max(value, min), max);
14
14
  }
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3NyYy9saWIvdmZsb3cvdXRpbHMvdmlld3BvcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsTUFBTSxVQUFVLG9CQUFvQixDQUNsQyxNQUFZLEVBQ1osS0FBYSxFQUNiLE1BQWMsRUFDZCxPQUFlLEVBQ2YsT0FBZSxFQUNmLE9BQWU7SUFFZixNQUFNLEtBQUssR0FBRyxLQUFLLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDckQsTUFBTSxLQUFLLEdBQUcsTUFBTSxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3BDLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2xELE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7SUFDbEQsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUNuRCxNQUFNLENBQUMsR0FBRyxLQUFLLEdBQUcsQ0FBQyxHQUFHLGFBQWEsR0FBRyxXQUFXLENBQUM7SUFDbEQsTUFBTSxDQUFDLEdBQUcsTUFBTSxHQUFHLENBQUMsR0FBRyxhQUFhLEdBQUcsV0FBVyxDQUFDO0lBRW5ELE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsQ0FBQztBQUNyQyxDQUFDO0FBRUQsTUFBTSxVQUFVLEtBQUssQ0FBQyxLQUFhLEVBQUUsR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQztJQUNuRCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDN0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlY3QgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3JlY3QnO1xuaW1wb3J0IHsgVmlld3BvcnRTdGF0ZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvdmlld3BvcnQuaW50ZXJmYWNlJztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFZpZXdwb3J0Rm9yQm91bmRzKFxuICBib3VuZHM6IFJlY3QsXG4gIHdpZHRoOiBudW1iZXIsXG4gIGhlaWdodDogbnVtYmVyLFxuICBtaW5ab29tOiBudW1iZXIsXG4gIG1heFpvb206IG51bWJlcixcbiAgcGFkZGluZzogbnVtYmVyLFxuKTogVmlld3BvcnRTdGF0ZSB7XG4gIGNvbnN0IHhab29tID0gd2lkdGggLyAoYm91bmRzLndpZHRoICogKDEgKyBwYWRkaW5nKSk7XG4gIGNvbnN0IHlab29tID0gaGVpZ2h0IC8gKGJvdW5kcy5oZWlnaHQgKiAoMSArIHBhZGRpbmcpKTtcbiAgY29uc3Qgem9vbSA9IE1hdGgubWluKHhab29tLCB5Wm9vbSk7XG4gIGNvbnN0IGNsYW1wZWRab29tID0gY2xhbXAoem9vbSwgbWluWm9vbSwgbWF4Wm9vbSk7XG4gIGNvbnN0IGJvdW5kc0NlbnRlclggPSBib3VuZHMueCArIGJvdW5kcy53aWR0aCAvIDI7XG4gIGNvbnN0IGJvdW5kc0NlbnRlclkgPSBib3VuZHMueSArIGJvdW5kcy5oZWlnaHQgLyAyO1xuICBjb25zdCB4ID0gd2lkdGggLyAyIC0gYm91bmRzQ2VudGVyWCAqIGNsYW1wZWRab29tO1xuICBjb25zdCB5ID0gaGVpZ2h0IC8gMiAtIGJvdW5kc0NlbnRlclkgKiBjbGFtcGVkWm9vbTtcblxuICByZXR1cm4geyB4LCB5LCB6b29tOiBjbGFtcGVkWm9vbSB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xhbXAodmFsdWU6IG51bWJlciwgbWluID0gMCwgbWF4ID0gMSk6IG51bWJlciB7XG4gIHJldHVybiBNYXRoLm1pbihNYXRoLm1heCh2YWx1ZSwgbWluKSwgbWF4KTtcbn1cbiJdfQ==
15
+ /**
16
+ * Calculates the visible area bounds in world coordinates based on the current viewport state
17
+ *
18
+ * @param viewport Current viewport state (x, y, zoom)
19
+ * @param flowWidth Width of the flow container
20
+ * @param flowHeight Height of the flow container
21
+ * @returns Rect representing the visible area in world coordinates
22
+ */
23
+ export function getViewportBounds(viewport, flowWidth, flowHeight) {
24
+ const zoom = viewport.zoom;
25
+ return {
26
+ x: -viewport.x / zoom,
27
+ y: -viewport.y / zoom,
28
+ width: flowWidth / zoom,
29
+ height: flowHeight / zoom,
30
+ };
31
+ }
32
+ /**
33
+ * Checks if a rectangle intersects with the viewport's visible area
34
+ *
35
+ * @param rect Rectangle to check (in world coordinates)
36
+ * @param viewport Current viewport state
37
+ * @param flowWidth Width of the flow container
38
+ * @param flowHeight Height of the flow container
39
+ * @returns true if the rectangle intersects with the viewport, false otherwise
40
+ */
41
+ export function isRectInViewport(rect, viewport, flowWidth, flowHeight) {
42
+ const viewportBounds = getViewportBounds(viewport, flowWidth, flowHeight);
43
+ // Check if rectangles intersect using standard rectangle intersection test
44
+ // No intersection if: rect is completely to the left, right, above, or below the viewport
45
+ const isNotIntersecting = rect.x + rect.width < viewportBounds.x || // Rect is completely to the left
46
+ rect.x > viewportBounds.x + viewportBounds.width || // Rect is completely to the right
47
+ rect.y + rect.height < viewportBounds.y || // Rect is completely above
48
+ rect.y > viewportBounds.y + viewportBounds.height; // Rect is completely below
49
+ return !isNotIntersecting;
50
+ }
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3NyYy9saWIvdmZsb3cvdXRpbHMvdmlld3BvcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsTUFBTSxVQUFVLG9CQUFvQixDQUNsQyxNQUFZLEVBQ1osS0FBYSxFQUNiLE1BQWMsRUFDZCxPQUFlLEVBQ2YsT0FBZSxFQUNmLE9BQWU7SUFFZixNQUFNLEtBQUssR0FBRyxLQUFLLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDckQsTUFBTSxLQUFLLEdBQUcsTUFBTSxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3BDLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2xELE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7SUFDbEQsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUNuRCxNQUFNLENBQUMsR0FBRyxLQUFLLEdBQUcsQ0FBQyxHQUFHLGFBQWEsR0FBRyxXQUFXLENBQUM7SUFDbEQsTUFBTSxDQUFDLEdBQUcsTUFBTSxHQUFHLENBQUMsR0FBRyxhQUFhLEdBQUcsV0FBVyxDQUFDO0lBRW5ELE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsQ0FBQztBQUNyQyxDQUFDO0FBRUQsTUFBTSxVQUFVLEtBQUssQ0FBQyxLQUFhLEVBQUUsR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQztJQUNuRCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDN0MsQ0FBQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsUUFBdUIsRUFBRSxTQUFpQixFQUFFLFVBQWtCO0lBQzlGLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7SUFFM0IsT0FBTztRQUNMLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsSUFBSTtRQUNyQixDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLElBQUk7UUFDckIsS0FBSyxFQUFFLFNBQVMsR0FBRyxJQUFJO1FBQ3ZCLE1BQU0sRUFBRSxVQUFVLEdBQUcsSUFBSTtLQUMxQixDQUFDO0FBQ0osQ0FBQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQixDQUFDLElBQVUsRUFBRSxRQUF1QixFQUFFLFNBQWlCLEVBQUUsVUFBa0I7SUFDekcsTUFBTSxjQUFjLEdBQUcsaUJBQWlCLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUUxRSwyRUFBMkU7SUFDM0UsMEZBQTBGO0lBQzFGLE1BQU0saUJBQWlCLEdBQ3JCLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxjQUFjLENBQUMsQ0FBQyxJQUFJLGlDQUFpQztRQUMzRSxJQUFJLENBQUMsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxDQUFDLEdBQUcsY0FBYyxDQUFDLEtBQUssSUFBSSxrQ0FBa0M7UUFDdEYsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLGNBQWMsQ0FBQyxDQUFDLElBQUksMkJBQTJCO1FBQ3RFLElBQUksQ0FBQyxDQUFDLEdBQUcsY0FBYyxDQUFDLENBQUMsR0FBRyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsMkJBQTJCO0lBRWhGLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQztBQUM1QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVjdCB9IGZyb20gJy4uL2ludGVyZmFjZXMvcmVjdCc7XG5pbXBvcnQgeyBWaWV3cG9ydFN0YXRlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy92aWV3cG9ydC5pbnRlcmZhY2UnO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Vmlld3BvcnRGb3JCb3VuZHMoXG4gIGJvdW5kczogUmVjdCxcbiAgd2lkdGg6IG51bWJlcixcbiAgaGVpZ2h0OiBudW1iZXIsXG4gIG1pblpvb206IG51bWJlcixcbiAgbWF4Wm9vbTogbnVtYmVyLFxuICBwYWRkaW5nOiBudW1iZXIsXG4pOiBWaWV3cG9ydFN0YXRlIHtcbiAgY29uc3QgeFpvb20gPSB3aWR0aCAvIChib3VuZHMud2lkdGggKiAoMSArIHBhZGRpbmcpKTtcbiAgY29uc3QgeVpvb20gPSBoZWlnaHQgLyAoYm91bmRzLmhlaWdodCAqICgxICsgcGFkZGluZykpO1xuICBjb25zdCB6b29tID0gTWF0aC5taW4oeFpvb20sIHlab29tKTtcbiAgY29uc3QgY2xhbXBlZFpvb20gPSBjbGFtcCh6b29tLCBtaW5ab29tLCBtYXhab29tKTtcbiAgY29uc3QgYm91bmRzQ2VudGVyWCA9IGJvdW5kcy54ICsgYm91bmRzLndpZHRoIC8gMjtcbiAgY29uc3QgYm91bmRzQ2VudGVyWSA9IGJvdW5kcy55ICsgYm91bmRzLmhlaWdodCAvIDI7XG4gIGNvbnN0IHggPSB3aWR0aCAvIDIgLSBib3VuZHNDZW50ZXJYICogY2xhbXBlZFpvb207XG4gIGNvbnN0IHkgPSBoZWlnaHQgLyAyIC0gYm91bmRzQ2VudGVyWSAqIGNsYW1wZWRab29tO1xuXG4gIHJldHVybiB7IHgsIHksIHpvb206IGNsYW1wZWRab29tIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbGFtcCh2YWx1ZTogbnVtYmVyLCBtaW4gPSAwLCBtYXggPSAxKTogbnVtYmVyIHtcbiAgcmV0dXJuIE1hdGgubWluKE1hdGgubWF4KHZhbHVlLCBtaW4pLCBtYXgpO1xufVxuXG4vKipcbiAqIENhbGN1bGF0ZXMgdGhlIHZpc2libGUgYXJlYSBib3VuZHMgaW4gd29ybGQgY29vcmRpbmF0ZXMgYmFzZWQgb24gdGhlIGN1cnJlbnQgdmlld3BvcnQgc3RhdGVcbiAqXG4gKiBAcGFyYW0gdmlld3BvcnQgQ3VycmVudCB2aWV3cG9ydCBzdGF0ZSAoeCwgeSwgem9vbSlcbiAqIEBwYXJhbSBmbG93V2lkdGggV2lkdGggb2YgdGhlIGZsb3cgY29udGFpbmVyXG4gKiBAcGFyYW0gZmxvd0hlaWdodCBIZWlnaHQgb2YgdGhlIGZsb3cgY29udGFpbmVyXG4gKiBAcmV0dXJucyBSZWN0IHJlcHJlc2VudGluZyB0aGUgdmlzaWJsZSBhcmVhIGluIHdvcmxkIGNvb3JkaW5hdGVzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRWaWV3cG9ydEJvdW5kcyh2aWV3cG9ydDogVmlld3BvcnRTdGF0ZSwgZmxvd1dpZHRoOiBudW1iZXIsIGZsb3dIZWlnaHQ6IG51bWJlcik6IFJlY3Qge1xuICBjb25zdCB6b29tID0gdmlld3BvcnQuem9vbTtcblxuICByZXR1cm4ge1xuICAgIHg6IC12aWV3cG9ydC54IC8gem9vbSxcbiAgICB5OiAtdmlld3BvcnQueSAvIHpvb20sXG4gICAgd2lkdGg6IGZsb3dXaWR0aCAvIHpvb20sXG4gICAgaGVpZ2h0OiBmbG93SGVpZ2h0IC8gem9vbSxcbiAgfTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYSByZWN0YW5nbGUgaW50ZXJzZWN0cyB3aXRoIHRoZSB2aWV3cG9ydCdzIHZpc2libGUgYXJlYVxuICpcbiAqIEBwYXJhbSByZWN0IFJlY3RhbmdsZSB0byBjaGVjayAoaW4gd29ybGQgY29vcmRpbmF0ZXMpXG4gKiBAcGFyYW0gdmlld3BvcnQgQ3VycmVudCB2aWV3cG9ydCBzdGF0ZVxuICogQHBhcmFtIGZsb3dXaWR0aCBXaWR0aCBvZiB0aGUgZmxvdyBjb250YWluZXJcbiAqIEBwYXJhbSBmbG93SGVpZ2h0IEhlaWdodCBvZiB0aGUgZmxvdyBjb250YWluZXJcbiAqIEByZXR1cm5zIHRydWUgaWYgdGhlIHJlY3RhbmdsZSBpbnRlcnNlY3RzIHdpdGggdGhlIHZpZXdwb3J0LCBmYWxzZSBvdGhlcndpc2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzUmVjdEluVmlld3BvcnQocmVjdDogUmVjdCwgdmlld3BvcnQ6IFZpZXdwb3J0U3RhdGUsIGZsb3dXaWR0aDogbnVtYmVyLCBmbG93SGVpZ2h0OiBudW1iZXIpOiBib29sZWFuIHtcbiAgY29uc3Qgdmlld3BvcnRCb3VuZHMgPSBnZXRWaWV3cG9ydEJvdW5kcyh2aWV3cG9ydCwgZmxvd1dpZHRoLCBmbG93SGVpZ2h0KTtcblxuICAvLyBDaGVjayBpZiByZWN0YW5nbGVzIGludGVyc2VjdCB1c2luZyBzdGFuZGFyZCByZWN0YW5nbGUgaW50ZXJzZWN0aW9uIHRlc3RcbiAgLy8gTm8gaW50ZXJzZWN0aW9uIGlmOiByZWN0IGlzIGNvbXBsZXRlbHkgdG8gdGhlIGxlZnQsIHJpZ2h0LCBhYm92ZSwgb3IgYmVsb3cgdGhlIHZpZXdwb3J0XG4gIGNvbnN0IGlzTm90SW50ZXJzZWN0aW5nID1cbiAgICByZWN0LnggKyByZWN0LndpZHRoIDwgdmlld3BvcnRCb3VuZHMueCB8fCAvLyBSZWN0IGlzIGNvbXBsZXRlbHkgdG8gdGhlIGxlZnRcbiAgICByZWN0LnggPiB2aWV3cG9ydEJvdW5kcy54ICsgdmlld3BvcnRCb3VuZHMud2lkdGggfHwgLy8gUmVjdCBpcyBjb21wbGV0ZWx5IHRvIHRoZSByaWdodFxuICAgIHJlY3QueSArIHJlY3QuaGVpZ2h0IDwgdmlld3BvcnRCb3VuZHMueSB8fCAvLyBSZWN0IGlzIGNvbXBsZXRlbHkgYWJvdmVcbiAgICByZWN0LnkgPiB2aWV3cG9ydEJvdW5kcy55ICsgdmlld3BvcnRCb3VuZHMuaGVpZ2h0OyAvLyBSZWN0IGlzIGNvbXBsZXRlbHkgYmVsb3dcblxuICByZXR1cm4gIWlzTm90SW50ZXJzZWN0aW5nO1xufVxuIl19
@@ -14,6 +14,7 @@ export * from './lib/vflow/interfaces/fit-view-options.interface';
14
14
  export * from './lib/vflow/interfaces/optimization.interface';
15
15
  export * from './lib/vflow/interfaces/intersecting-nodes-options.interface';
16
16
  export * from './lib/vflow/interfaces/curve-factory.interface';
17
+ export * from './lib/vflow/interfaces/node-preview.interface';
17
18
  // Types
18
19
  export * from './lib/vflow/types/node-change.type';
19
20
  export * from './lib/vflow/types/edge-change.type';
@@ -49,4 +50,4 @@ export { ViewportService as ɵViewportService } from './lib/vflow/services/viewp
49
50
  export { SelectionService as ɵSelectionService } from './lib/vflow/services/selection.service';
50
51
  export { RootPointerDirective as ɵRootPointerDirective } from './lib/vflow/directives/root-pointer.directive';
51
52
  export { SpacePointContextDirective as ɵSpacePointContextDirective } from './lib/vflow/directives/space-point-context.directive';
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsa0JBQWtCO0FBQ2xCLGNBQWMsbUJBQW1CLENBQUM7QUFFbEMsYUFBYTtBQUNiLGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsNkNBQTZDLENBQUM7QUFDNUQsY0FBYyw2Q0FBNkMsQ0FBQztBQUM1RCxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMsc0RBQXNELENBQUM7QUFDckUsY0FBYyx5Q0FBeUMsQ0FBQztBQUV4RCxjQUFjLHVEQUF1RCxDQUFDO0FBQ3RFLGNBQWMsbURBQW1ELENBQUM7QUFDbEUsY0FBYywrQ0FBK0MsQ0FBQztBQUM5RCxjQUFjLDZEQUE2RCxDQUFDO0FBQzVFLGNBQWMsZ0RBQWdELENBQUM7QUFFL0QsUUFBUTtBQUNSLGNBQWMsb0NBQW9DLENBQUM7QUFDbkQsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLHdDQUF3QyxDQUFDO0FBRXZELGFBQWE7QUFDYixjQUFjLDhDQUE4QyxDQUFDO0FBQzdELGNBQWMsdURBQXVELENBQUM7QUFDdEUsY0FBYyxpRUFBaUUsQ0FBQztBQUNoRixjQUFjLGlGQUFpRixDQUFDO0FBQ2hHLGNBQWMsNkRBQTZELENBQUM7QUFDNUUsY0FBYyx5REFBeUQsQ0FBQztBQUN4RSxjQUFjLG1FQUFtRSxDQUFDO0FBQ2xGLGNBQWMsbUZBQW1GLENBQUM7QUFFbEcsYUFBYTtBQUNiLGNBQWMsMkNBQTJDLENBQUM7QUFDMUQsY0FBYyx3REFBd0QsQ0FBQztBQUN2RSxjQUFjLHFEQUFxRCxDQUFDO0FBQ3BFLGNBQWMsNkNBQTZDLENBQUM7QUFDNUQsY0FBYyw4Q0FBOEMsQ0FBQztBQUU3RCxjQUFjO0FBQ2QsT0FBTyxFQUFFLGVBQWUsSUFBSSxnQkFBZ0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzFGLE9BQU8sRUFBRSxXQUFXLElBQUksWUFBWSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDOUUsT0FBTyxFQUFFLFNBQVMsSUFBSSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUV4RSxPQUFPLEVBQUUsd0JBQXdCLElBQUkseUJBQXlCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUN6SCxPQUFPLEVBQUUsYUFBYSxJQUFJLGNBQWMsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxtQkFBbUIsSUFBSSxvQkFBb0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxtQkFBbUIsSUFBSSxvQkFBb0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxtQkFBbUIsSUFBSSxvQkFBb0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxlQUFlLElBQUksZ0JBQWdCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUM1RixPQUFPLEVBQUUsZ0JBQWdCLElBQUksaUJBQWlCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUUvRixPQUFPLEVBQUUsb0JBQW9CLElBQUkscUJBQXFCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUM5RyxPQUFPLEVBQUUsMEJBQTBCLElBQUksMkJBQTJCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIFN0YW5kYWxvbmUgVXRpbFxuZXhwb3J0ICogZnJvbSAnLi9saWIvdmZsb3cvdmZsb3cnO1xuXG4vLyBJbnRlcmZhY2VzXG5leHBvcnQgKiBmcm9tICcuL2xpYi92Zmxvdy9pbnRlcmZhY2VzL25vZGUuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZmbG93L2ludGVyZmFjZXMvcG9pbnQuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZmbG93L2ludGVyZmFjZXMvZWRnZS5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdmZsb3cvaW50ZXJmYWNlcy9lZGdlLWxhYmVsLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi92Zmxvdy9pbnRlcmZhY2VzL2Nvbm5lY3Rpb24uaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZmbG93L2ludGVyZmFjZXMvY29ubmVjdGlvbi5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdmZsb3cvaW50ZXJmYWNlcy9jb25uZWN0aW9uLXNldHRpbmdzLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi92Zmxvdy9pbnRlcmZhY2VzL21hcmtlci5pbnRlcmZhY2UnO1xuZXhwb3J0IHsgVmlld3BvcnRTdGF0ZSB9IGZyb20gJy4vbGliL3ZmbG93L2ludGVyZmFjZXMvdmlld3BvcnQuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZmbG93L2ludGVyZmFjZXMvY29tcG9uZW50LW5vZGUtZXZlbnQuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZmbG93L2ludGVyZmFjZXMvZml0LXZpZXctb3B0aW9ucy5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdmZsb3cvaW50ZXJmYWNlcy9vcHRpbWl6YXRpb24uaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZmbG93L2ludGVyZmFjZXMvaW50ZXJzZWN0aW5nLW5vZGVzLW9wdGlvbnMuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZmbG93L2ludGVyZmFjZXMvY3VydmUtZmFjdG9yeS5pbnRlcmZhY2UnO1xuXG4vLyBUeXBlc1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdmZsb3cvdHlwZXMvbm9kZS1jaGFuZ2UudHlwZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi92Zmxvdy90eXBlcy9lZGdlLWNoYW5nZS50eXBlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZmbG93L3R5cGVzL3Bvc2l0aW9uLnR5cGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdmZsb3cvdHlwZXMvYmFja2dyb3VuZC50eXBlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZmbG93L3R5cGVzL2Nvbm5lY3Rpb24tbW9kZS50eXBlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZmbG93L3R5cGVzL2tleWJvYXJkLWFjdGlvbi50eXBlJztcblxuLy8gQ29tcG9uZW50c1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdmZsb3cvY29tcG9uZW50cy92Zmxvdy92Zmxvdy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdmZsb3cvcHVibGljLWNvbXBvbmVudHMvaGFuZGxlL2hhbmRsZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdmZsb3cvcHVibGljLWNvbXBvbmVudHMvY3VzdG9tLW5vZGUvY3VzdG9tLW5vZGUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZmbG93L3B1YmxpYy1jb21wb25lbnRzL2N1c3RvbS1keW5hbWljLW5vZGUvY3VzdG9tLWR5bmFtaWMtbm9kZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdmZsb3cvcHVibGljLWNvbXBvbmVudHMvcmVzaXphYmxlL3Jlc2l6YWJsZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdmZsb3cvcHVibGljLWNvbXBvbmVudHMvbWluaW1hcC9taW5pbWFwLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi92Zmxvdy9wdWJsaWMtY29tcG9uZW50cy9ub2RlLXRvb2xiYXIvbm9kZS10b29sYmFyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi92Zmxvdy9wdWJsaWMtY29tcG9uZW50cy9jdXN0b20tdGVtcGxhdGUtZWRnZS9jdXN0b20tdGVtcGxhdGUtZWRnZS5jb21wb25lbnQnO1xuXG4vLyBEaXJlY3RpdmVzXG5leHBvcnQgKiBmcm9tICcuL2xpYi92Zmxvdy9kaXJlY3RpdmVzL3RlbXBsYXRlLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi92Zmxvdy9kaXJlY3RpdmVzL2Nvbm5lY3Rpb24tY29udHJvbGxlci5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdmZsb3cvZGlyZWN0aXZlcy9jaGFuZ2VzLWNvbnRyb2xsZXIuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZmbG93L2RpcmVjdGl2ZXMvc2VsZWN0YWJsZS5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdmZsb3cvZGlyZWN0aXZlcy9kcmFnLWhhbmRsZS5kaXJlY3RpdmUnO1xuXG4vLyAhIEludGVybmFsc1xuZXhwb3J0IHsgQ29ubmVjdGlvbk1vZGVsIGFzIMm1Q29ubmVjdGlvbk1vZGVsIH0gZnJvbSAnLi9saWIvdmZsb3cvbW9kZWxzL2Nvbm5lY3Rpb24ubW9kZWwnO1xuZXhwb3J0IHsgSGFuZGxlTW9kZWwgYXMgybVIYW5kbGVNb2RlbCB9IGZyb20gJy4vbGliL3ZmbG93L21vZGVscy9oYW5kbGUubW9kZWwnO1xuZXhwb3J0IHsgTm9kZU1vZGVsIGFzIMm1Tm9kZU1vZGVsIH0gZnJvbSAnLi9saWIvdmZsb3cvbW9kZWxzL25vZGUubW9kZWwnO1xuXG5leHBvcnQgeyBDb21wb25lbnRFdmVudEJ1c1NlcnZpY2UgYXMgybVDb21wb25lbnRFdmVudEJ1c1NlcnZpY2UgfSBmcm9tICcuL2xpYi92Zmxvdy9zZXJ2aWNlcy9jb21wb25lbnQtZXZlbnQtYnVzLnNlcnZpY2UnO1xuZXhwb3J0IHsgSGFuZGxlU2VydmljZSBhcyDJtUhhbmRsZVNlcnZpY2UgfSBmcm9tICcuL2xpYi92Zmxvdy9zZXJ2aWNlcy9oYW5kbGUuc2VydmljZSc7XG5leHBvcnQgeyBGbG93U2V0dGluZ3NTZXJ2aWNlIGFzIMm1Rmxvd1NldHRpbmdzU2VydmljZSB9IGZyb20gJy4vbGliL3ZmbG93L3NlcnZpY2VzL2Zsb3ctc2V0dGluZ3Muc2VydmljZSc7XG5leHBvcnQgeyBGbG93RW50aXRpZXNTZXJ2aWNlIGFzIMm1Rmxvd0VudGl0aWVzU2VydmljZSB9IGZyb20gJy4vbGliL3ZmbG93L3NlcnZpY2VzL2Zsb3ctZW50aXRpZXMuc2VydmljZSc7XG5leHBvcnQgeyBOb2RlQWNjZXNzb3JTZXJ2aWNlIGFzIMm1Tm9kZUFjY2Vzc29yU2VydmljZSB9IGZyb20gJy4vbGliL3ZmbG93L3NlcnZpY2VzL25vZGUtYWNjZXNzb3Iuc2VydmljZSc7XG5leHBvcnQgeyBWaWV3cG9ydFNlcnZpY2UgYXMgybVWaWV3cG9ydFNlcnZpY2UgfSBmcm9tICcuL2xpYi92Zmxvdy9zZXJ2aWNlcy92aWV3cG9ydC5zZXJ2aWNlJztcbmV4cG9ydCB7IFNlbGVjdGlvblNlcnZpY2UgYXMgybVTZWxlY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi9saWIvdmZsb3cvc2VydmljZXMvc2VsZWN0aW9uLnNlcnZpY2UnO1xuXG5leHBvcnQgeyBSb290UG9pbnRlckRpcmVjdGl2ZSBhcyDJtVJvb3RQb2ludGVyRGlyZWN0aXZlIH0gZnJvbSAnLi9saWIvdmZsb3cvZGlyZWN0aXZlcy9yb290LXBvaW50ZXIuZGlyZWN0aXZlJztcbmV4cG9ydCB7IFNwYWNlUG9pbnRDb250ZXh0RGlyZWN0aXZlIGFzIMm1U3BhY2VQb2ludENvbnRleHREaXJlY3RpdmUgfSBmcm9tICcuL2xpYi92Zmxvdy9kaXJlY3RpdmVzL3NwYWNlLXBvaW50LWNvbnRleHQuZGlyZWN0aXZlJztcbiJdfQ==
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsa0JBQWtCO0FBQ2xCLGNBQWMsbUJBQW1CLENBQUM7QUFFbEMsYUFBYTtBQUNiLGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsNkNBQTZDLENBQUM7QUFDNUQsY0FBYyw2Q0FBNkMsQ0FBQztBQUM1RCxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMsc0RBQXNELENBQUM7QUFDckUsY0FBYyx5Q0FBeUMsQ0FBQztBQUV4RCxjQUFjLHVEQUF1RCxDQUFDO0FBQ3RFLGNBQWMsbURBQW1ELENBQUM7QUFDbEUsY0FBYywrQ0FBK0MsQ0FBQztBQUM5RCxjQUFjLDZEQUE2RCxDQUFDO0FBQzVFLGNBQWMsZ0RBQWdELENBQUM7QUFDL0QsY0FBYywrQ0FBK0MsQ0FBQztBQUU5RCxRQUFRO0FBQ1IsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsd0NBQXdDLENBQUM7QUFFdkQsYUFBYTtBQUNiLGNBQWMsOENBQThDLENBQUM7QUFDN0QsY0FBYyx1REFBdUQsQ0FBQztBQUN0RSxjQUFjLGlFQUFpRSxDQUFDO0FBQ2hGLGNBQWMsaUZBQWlGLENBQUM7QUFDaEcsY0FBYyw2REFBNkQsQ0FBQztBQUM1RSxjQUFjLHlEQUF5RCxDQUFDO0FBQ3hFLGNBQWMsbUVBQW1FLENBQUM7QUFDbEYsY0FBYyxtRkFBbUYsQ0FBQztBQUVsRyxhQUFhO0FBQ2IsY0FBYywyQ0FBMkMsQ0FBQztBQUMxRCxjQUFjLHdEQUF3RCxDQUFDO0FBQ3ZFLGNBQWMscURBQXFELENBQUM7QUFDcEUsY0FBYyw2Q0FBNkMsQ0FBQztBQUM1RCxjQUFjLDhDQUE4QyxDQUFDO0FBRTdELGNBQWM7QUFDZCxPQUFPLEVBQUUsZUFBZSxJQUFJLGdCQUFnQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDMUYsT0FBTyxFQUFFLFdBQVcsSUFBSSxZQUFZLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsU0FBUyxJQUFJLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRXhFLE9BQU8sRUFBRSx3QkFBd0IsSUFBSSx5QkFBeUIsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3pILE9BQU8sRUFBRSxhQUFhLElBQUksY0FBYyxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdEYsT0FBTyxFQUFFLG1CQUFtQixJQUFJLG9CQUFvQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDekcsT0FBTyxFQUFFLG1CQUFtQixJQUFJLG9CQUFvQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDekcsT0FBTyxFQUFFLG1CQUFtQixJQUFJLG9CQUFvQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDekcsT0FBTyxFQUFFLGVBQWUsSUFBSSxnQkFBZ0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzVGLE9BQU8sRUFBRSxnQkFBZ0IsSUFBSSxpQkFBaUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRS9GLE9BQU8sRUFBRSxvQkFBb0IsSUFBSSxxQkFBcUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQzlHLE9BQU8sRUFBRSwwQkFBMEIsSUFBSSwyQkFBMkIsRUFBRSxNQUFNLHNEQUFzRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gU3RhbmRhbG9uZSBVdGlsXG5leHBvcnQgKiBmcm9tICcuL2xpYi92Zmxvdy92Zmxvdyc7XG5cbi8vIEludGVyZmFjZXNcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZmbG93L2ludGVyZmFjZXMvbm9kZS5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdmZsb3cvaW50ZXJmYWNlcy9wb2ludC5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdmZsb3cvaW50ZXJmYWNlcy9lZGdlLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi92Zmxvdy9pbnRlcmZhY2VzL2VkZ2UtbGFiZWwuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZmbG93L2ludGVyZmFjZXMvY29ubmVjdGlvbi5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdmZsb3cvaW50ZXJmYWNlcy9jb25uZWN0aW9uLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi92Zmxvdy9pbnRlcmZhY2VzL2Nvbm5lY3Rpb24tc2V0dGluZ3MuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZmbG93L2ludGVyZmFjZXMvbWFya2VyLmludGVyZmFjZSc7XG5leHBvcnQgeyBWaWV3cG9ydFN0YXRlIH0gZnJvbSAnLi9saWIvdmZsb3cvaW50ZXJmYWNlcy92aWV3cG9ydC5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdmZsb3cvaW50ZXJmYWNlcy9jb21wb25lbnQtbm9kZS1ldmVudC5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdmZsb3cvaW50ZXJmYWNlcy9maXQtdmlldy1vcHRpb25zLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi92Zmxvdy9pbnRlcmZhY2VzL29wdGltaXphdGlvbi5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdmZsb3cvaW50ZXJmYWNlcy9pbnRlcnNlY3Rpbmctbm9kZXMtb3B0aW9ucy5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdmZsb3cvaW50ZXJmYWNlcy9jdXJ2ZS1mYWN0b3J5LmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi92Zmxvdy9pbnRlcmZhY2VzL25vZGUtcHJldmlldy5pbnRlcmZhY2UnO1xuXG4vLyBUeXBlc1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdmZsb3cvdHlwZXMvbm9kZS1jaGFuZ2UudHlwZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi92Zmxvdy90eXBlcy9lZGdlLWNoYW5nZS50eXBlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZmbG93L3R5cGVzL3Bvc2l0aW9uLnR5cGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdmZsb3cvdHlwZXMvYmFja2dyb3VuZC50eXBlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZmbG93L3R5cGVzL2Nvbm5lY3Rpb24tbW9kZS50eXBlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZmbG93L3R5cGVzL2tleWJvYXJkLWFjdGlvbi50eXBlJztcblxuLy8gQ29tcG9uZW50c1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdmZsb3cvY29tcG9uZW50cy92Zmxvdy92Zmxvdy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdmZsb3cvcHVibGljLWNvbXBvbmVudHMvaGFuZGxlL2hhbmRsZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdmZsb3cvcHVibGljLWNvbXBvbmVudHMvY3VzdG9tLW5vZGUvY3VzdG9tLW5vZGUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZmbG93L3B1YmxpYy1jb21wb25lbnRzL2N1c3RvbS1keW5hbWljLW5vZGUvY3VzdG9tLWR5bmFtaWMtbm9kZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdmZsb3cvcHVibGljLWNvbXBvbmVudHMvcmVzaXphYmxlL3Jlc2l6YWJsZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdmZsb3cvcHVibGljLWNvbXBvbmVudHMvbWluaW1hcC9taW5pbWFwLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi92Zmxvdy9wdWJsaWMtY29tcG9uZW50cy9ub2RlLXRvb2xiYXIvbm9kZS10b29sYmFyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi92Zmxvdy9wdWJsaWMtY29tcG9uZW50cy9jdXN0b20tdGVtcGxhdGUtZWRnZS9jdXN0b20tdGVtcGxhdGUtZWRnZS5jb21wb25lbnQnO1xuXG4vLyBEaXJlY3RpdmVzXG5leHBvcnQgKiBmcm9tICcuL2xpYi92Zmxvdy9kaXJlY3RpdmVzL3RlbXBsYXRlLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi92Zmxvdy9kaXJlY3RpdmVzL2Nvbm5lY3Rpb24tY29udHJvbGxlci5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdmZsb3cvZGlyZWN0aXZlcy9jaGFuZ2VzLWNvbnRyb2xsZXIuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZmbG93L2RpcmVjdGl2ZXMvc2VsZWN0YWJsZS5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdmZsb3cvZGlyZWN0aXZlcy9kcmFnLWhhbmRsZS5kaXJlY3RpdmUnO1xuXG4vLyAhIEludGVybmFsc1xuZXhwb3J0IHsgQ29ubmVjdGlvbk1vZGVsIGFzIMm1Q29ubmVjdGlvbk1vZGVsIH0gZnJvbSAnLi9saWIvdmZsb3cvbW9kZWxzL2Nvbm5lY3Rpb24ubW9kZWwnO1xuZXhwb3J0IHsgSGFuZGxlTW9kZWwgYXMgybVIYW5kbGVNb2RlbCB9IGZyb20gJy4vbGliL3ZmbG93L21vZGVscy9oYW5kbGUubW9kZWwnO1xuZXhwb3J0IHsgTm9kZU1vZGVsIGFzIMm1Tm9kZU1vZGVsIH0gZnJvbSAnLi9saWIvdmZsb3cvbW9kZWxzL25vZGUubW9kZWwnO1xuXG5leHBvcnQgeyBDb21wb25lbnRFdmVudEJ1c1NlcnZpY2UgYXMgybVDb21wb25lbnRFdmVudEJ1c1NlcnZpY2UgfSBmcm9tICcuL2xpYi92Zmxvdy9zZXJ2aWNlcy9jb21wb25lbnQtZXZlbnQtYnVzLnNlcnZpY2UnO1xuZXhwb3J0IHsgSGFuZGxlU2VydmljZSBhcyDJtUhhbmRsZVNlcnZpY2UgfSBmcm9tICcuL2xpYi92Zmxvdy9zZXJ2aWNlcy9oYW5kbGUuc2VydmljZSc7XG5leHBvcnQgeyBGbG93U2V0dGluZ3NTZXJ2aWNlIGFzIMm1Rmxvd1NldHRpbmdzU2VydmljZSB9IGZyb20gJy4vbGliL3ZmbG93L3NlcnZpY2VzL2Zsb3ctc2V0dGluZ3Muc2VydmljZSc7XG5leHBvcnQgeyBGbG93RW50aXRpZXNTZXJ2aWNlIGFzIMm1Rmxvd0VudGl0aWVzU2VydmljZSB9IGZyb20gJy4vbGliL3ZmbG93L3NlcnZpY2VzL2Zsb3ctZW50aXRpZXMuc2VydmljZSc7XG5leHBvcnQgeyBOb2RlQWNjZXNzb3JTZXJ2aWNlIGFzIMm1Tm9kZUFjY2Vzc29yU2VydmljZSB9IGZyb20gJy4vbGliL3ZmbG93L3NlcnZpY2VzL25vZGUtYWNjZXNzb3Iuc2VydmljZSc7XG5leHBvcnQgeyBWaWV3cG9ydFNlcnZpY2UgYXMgybVWaWV3cG9ydFNlcnZpY2UgfSBmcm9tICcuL2xpYi92Zmxvdy9zZXJ2aWNlcy92aWV3cG9ydC5zZXJ2aWNlJztcbmV4cG9ydCB7IFNlbGVjdGlvblNlcnZpY2UgYXMgybVTZWxlY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi9saWIvdmZsb3cvc2VydmljZXMvc2VsZWN0aW9uLnNlcnZpY2UnO1xuXG5leHBvcnQgeyBSb290UG9pbnRlckRpcmVjdGl2ZSBhcyDJtVJvb3RQb2ludGVyRGlyZWN0aXZlIH0gZnJvbSAnLi9saWIvdmZsb3cvZGlyZWN0aXZlcy9yb290LXBvaW50ZXIuZGlyZWN0aXZlJztcbmV4cG9ydCB7IFNwYWNlUG9pbnRDb250ZXh0RGlyZWN0aXZlIGFzIMm1U3BhY2VQb2ludENvbnRleHREaXJlY3RpdmUgfSBmcm9tICcuL2xpYi92Zmxvdy9kaXJlY3RpdmVzL3NwYWNlLXBvaW50LWNvbnRleHQuZGlyZWN0aXZlJztcbiJdfQ==
@@ -1,6 +1,6 @@
1
- import { ChangeDetectionStrategy, Component, contentChild, Input, input, output, signal, } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, contentChild, Input, output, signal, } from '@angular/core';
2
2
  import { NgTemplateOutlet } from '@angular/common';
3
- import { ɵConnectionModel as ConnectionModel, } from 'ngx-vflow';
3
+ import { ɵConnectionModel as ConnectionModel, DEFAULT_OPTIMIZATION, } from 'ngx-vflow';
4
4
  import { toObservable } from '@angular/core/rxjs-interop';
5
5
  import { ConnectionTemplateMockDirective, EdgeLabelHtmlTemplateMockDirective, EdgeTemplateMockDirective, GroupNodeTemplateMockDirective, NodeHtmlTemplateMockDirective, } from '../directive-mocks/template-mock.directive';
6
6
  import * as i0 from "@angular/core";
@@ -10,9 +10,7 @@ export class VflowMockComponent {
10
10
  this.minZoom = 0.5;
11
11
  this.maxZoom = 3;
12
12
  this.background = '#fff';
13
- this.optimization = input({
14
- detachedGroupsLayer: false,
15
- });
13
+ this.optimization = DEFAULT_OPTIMIZATION;
16
14
  this.entitiesSelectable = true;
17
15
  this.keyboardShortcuts = {
18
16
  multiSelection: null,
@@ -79,7 +77,7 @@ export class VflowMockComponent {
79
77
  return signal(value);
80
78
  }
81
79
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: VflowMockComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
82
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: VflowMockComponent, isStandalone: true, selector: "vflow", inputs: { nodes: { classPropertyName: "nodes", publicName: "nodes", isSignal: false, isRequired: true, transformFunction: null }, edges: { classPropertyName: "edges", publicName: "edges", isSignal: false, isRequired: false, transformFunction: null }, 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 } }, outputs: { onComponentNodeEvent: "onComponentNodeEvent" }, queries: [{ propertyName: "nodeTemplateDirective", first: true, predicate: NodeHtmlTemplateMockDirective, descendants: true, isSignal: true }, { propertyName: "groupNodeTemplateDirective", first: true, predicate: GroupNodeTemplateMockDirective, descendants: true, isSignal: true }, { propertyName: "edgeTemplateDirective", first: true, predicate: EdgeTemplateMockDirective, descendants: true, isSignal: true }, { propertyName: "edgeLabelHtmlDirective", first: true, predicate: EdgeLabelHtmlTemplateMockDirective, descendants: true, isSignal: true }, { propertyName: "connectionTemplateDirective", first: true, predicate: ConnectionTemplateMockDirective, descendants: true, isSignal: true }], ngImport: i0, template: `
80
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: VflowMockComponent, isStandalone: true, selector: "vflow", inputs: { nodes: "nodes", edges: "edges", view: "view", minZoom: "minZoom", maxZoom: "maxZoom", background: "background", optimization: "optimization", entitiesSelectable: "entitiesSelectable", keyboardShortcuts: "keyboardShortcuts", connection: ["connection", "connection", (settings) => new ConnectionModel(settings)], snapGrid: "snapGrid", elevateNodesOnSelect: "elevateNodesOnSelect", elevateEdgesOnSelect: "elevateEdgesOnSelect" }, outputs: { onComponentNodeEvent: "onComponentNodeEvent" }, queries: [{ propertyName: "nodeTemplateDirective", first: true, predicate: NodeHtmlTemplateMockDirective, descendants: true, isSignal: true }, { propertyName: "groupNodeTemplateDirective", first: true, predicate: GroupNodeTemplateMockDirective, descendants: true, isSignal: true }, { propertyName: "edgeTemplateDirective", first: true, predicate: EdgeTemplateMockDirective, descendants: true, isSignal: true }, { propertyName: "edgeLabelHtmlDirective", first: true, predicate: EdgeLabelHtmlTemplateMockDirective, descendants: true, isSignal: true }, { propertyName: "connectionTemplateDirective", first: true, predicate: ConnectionTemplateMockDirective, descendants: true, isSignal: true }], ngImport: i0, template: `
83
81
  <ng-content />
84
82
 
85
83
  @for (node of nodes; track $index) {
@@ -277,6 +275,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
277
275
  type: Input
278
276
  }], background: [{
279
277
  type: Input
278
+ }], optimization: [{
279
+ type: Input
280
280
  }], entitiesSelectable: [{
281
281
  type: Input
282
282
  }], keyboardShortcuts: [{
@@ -293,4 +293,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
293
293
  }], elevateEdgesOnSelect: [{
294
294
  type: Input
295
295
  }] } });
296
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmZsb3ctbW9jay5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3Rlc3Rpbmcvc3JjL2NvbXBvbmVudC1tb2Nrcy92Zmxvdy1tb2NrLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUNMLEtBQUssRUFDTCxNQUFNLEVBQ04sTUFBTSxHQUdQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ25ELE9BQU8sRUFnQkwsZ0JBQWdCLElBQUksZUFBZSxHQUNwQyxNQUFNLFdBQVcsQ0FBQztBQUNuQixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUQsT0FBTyxFQUNMLCtCQUErQixFQUMvQixrQ0FBa0MsRUFDbEMseUJBQXlCLEVBQ3pCLDhCQUE4QixFQUM5Qiw2QkFBNkIsR0FDOUIsTUFBTSw0Q0FBNEMsQ0FBQzs7QUFpR3BELE1BQU0sT0FBTyxrQkFBa0I7SUE5Ri9CO1FBc0drQixTQUFJLEdBQThCLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBRzdDLFlBQU8sR0FBRyxHQUFHLENBQUM7UUFHZCxZQUFPLEdBQUcsQ0FBQyxDQUFDO1FBR1osZUFBVSxHQUF3QixNQUFNLENBQUM7UUFFekMsaUJBQVksR0FBRyxLQUFLLENBQWU7WUFDakQsbUJBQW1CLEVBQUUsS0FBSztTQUMzQixDQUFDLENBQUM7UUFHYSx1QkFBa0IsR0FBRyxJQUFJLENBQUM7UUFHMUIsc0JBQWlCLEdBQXNCO1lBQ3JELGNBQWMsRUFBRSxJQUFJO1NBQ3JCLENBQUM7UUFLYyxlQUFVLEdBQW9CLElBQUksZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBV3RFLCtEQUErRDtRQUMvQyx5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IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIGNvbnRlbnRDaGlsZCxcbiAgSW5wdXQsXG4gIGlucHV0LFxuICBvdXRwdXQsXG4gIHNpZ25hbCxcbiAgV3JpdGFibGVTaWduYWwsXG4gIE9uSW5pdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIE5vZGUsXG4gIER5bmFtaWNOb2RlLFxuICBFZGdlLFxuICBTcGFjZVBvaW50LFxuICBQb2ludCxcbiAgQmFja2dyb3VuZCxcbiAgT3B0aW1pemF0aW9uLFxuICBLZXlib2FyZFNob3J0Y3V0cyxcbiAgQ29ubmVjdGlvblNldHRpbmdzLFxuICBWaWV3cG9ydFN0YXRlLFxuICBOb2RlQ2hhbmdlLFxuICBFZGdlQ2hhbmdlLFxuICBGaXRWaWV3T3B0aW9ucyxcbiAgVmZsb3dDb21wb25lbnQsXG4gIEludGVyc2VjdGluZ05vZGVzT3B0aW9ucyxcbiAgybVDb25uZWN0aW9uTW9kZWwgYXMgQ29ubmVjdGlvbk1vZGVsLFxufSBmcm9tICduZ3gtdmZsb3cnO1xuaW1wb3J0IHsgdG9PYnNlcnZhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHtcbiAgQ29ubmVjdGlvblRlbXBsYXRlTW9ja0RpcmVjdGl2ZSxcbiAgRWRnZUxhYmVsSHRtbFRlbXBsYXRlTW9ja0RpcmVjdGl2ZSxcbiAgRWRnZVRlbXBsYXRlTW9ja0RpcmVjdGl2ZSxcbiAgR3JvdXBOb2RlVGVtcGxhdGVNb2NrRGlyZWN0aXZlLFxuICBOb2RlSHRtbFRlbXBsYXRlTW9ja0RpcmVjdGl2ZSxcbn0gZnJvbSAnLi4vZGlyZWN0aXZlLW1vY2tzL3RlbXBsYXRlLW1vY2suZGlyZWN0aXZlJztcbmltcG9ydCB7IEFzSW50ZXJmYWNlIH0gZnJvbSAnLi4vdHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZmxvdycsXG4gIHRlbXBsYXRlOiBgXG4gICAgPG5nLWNvbnRlbnQgLz5cblxuICAgIEBmb3IgKG5vZGUgb2Ygbm9kZXM7IHRyYWNrICRpbmRleCkge1xuICAgICAgQGlmIChub2RlLnR5cGUgPT09ICdodG1sLXRlbXBsYXRlJykge1xuICAgICAgICA8bmctY29tcG9uZW50XG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwibm9kZVRlbXBsYXRlRGlyZWN0aXZlKCk/LnRlbXBsYXRlUmVmID8/IG51bGxcIlxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgICAgICAkaW1wbGljaXQ6IHtcbiAgICAgICAgICAgICAgbm9kZTogbm9kZSxcbiAgICAgICAgICAgICAgc2VsZWN0ZWQ6IGNyZWF0ZVNpZ25hbChmYWxzZSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH1cIiAvPlxuICAgICAgfVxuXG4gICAgICBAaWYgKG5vZGUudHlwZSA9PT0gJ3RlbXBsYXRlLWdyb3VwJykge1xuICAgICAgICA8bmctY29tcG9uZW50XG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZ3JvdXBOb2RlVGVtcGxhdGVEaXJlY3RpdmUoKT8udGVtcGxhdGVSZWYgPz8gbnVsbFwiXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAgICRpbXBsaWNpdDoge1xuICAgICAgICAgICAgICBub2RlOiBub2RlLFxuICAgICAgICAgICAgICBzZWxlY3RlZDogY3JlYXRlU2lnbmFsKGZhbHNlKSxcbiAgICAgICAgICAgICAgd2lkdGg6IGNyZWF0ZVNpZ25hbChub2RlLndpZHRoKSxcbiAgICAgICAgICAgICAgaGVpZ2h0OiBjcmVhdGVTaWduYWwobm9kZS5oZWlnaHQpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9XCIgLz5cbiAgICAgIH1cbiAgICB9XG5cbiAgICBAZm9yIChlZGdlIG9mIGVkZ2VzOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgIEBpZiAoZWRnZS50eXBlID09PSAndGVtcGxhdGUnKSB7XG4gICAgICAgIDxuZy1jb21wb25lbnRcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJlZGdlVGVtcGxhdGVEaXJlY3RpdmUoKT8udGVtcGxhdGVSZWYgPz8gbnVsbFwiXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAgICRpbXBsaWNpdDoge1xuICAgICAgICAgICAgICBlZGdlOiBlZGdlLFxuICAgICAgICAgICAgICBzZWxlY3RlZDogY3JlYXRlU2lnbmFsKGZhbHNlKSxcbiAgICAgICAgICAgICAgcGF0aDogY3JlYXRlU2lnbmFsKCcnKSxcbiAgICAgICAgICAgICAgbWFya2VyU3RhcnQ6IGNyZWF0ZVNpZ25hbCgnJyksXG4gICAgICAgICAgICAgIG1hcmtlckVuZDogY3JlYXRlU2lnbmFsKCcnKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfVwiIC8+XG5cbiAgICAgICAgQGlmIChlZGdlLmVkZ2VMYWJlbHM/LnN0YXJ0KSB7XG4gICAgICAgICAgPG5nLWNvbXBvbmVudFxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZWRnZUxhYmVsSHRtbERpcmVjdGl2ZSgpPy50ZW1wbGF0ZVJlZiA/PyBudWxsXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgICAgICAgICRpbXBsaWNpdDoge1xuICAgICAgICAgICAgICAgIGVkZ2U6IGVkZ2UsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9XCIgLz5cbiAgICAgICAgfVxuXG4gICAgICAgIEBpZiAoZWRnZS5lZGdlTGFiZWxzPy5jZW50ZXIpIHtcbiAgICAgICAgICA8bmctY29tcG9uZW50XG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJlZGdlTGFiZWxIdG1sRGlyZWN0aXZlKCk/LnRlbXBsYXRlUmVmID8/IG51bGxcIlxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAgICAgJGltcGxpY2l0OiB7XG4gICAgICAgICAgICAgICAgZWRnZTogZWRnZSxcbiAgICAgICAgICAgICAgICBsYWJlbDogZWRnZS5lZGdlTGFiZWxzPy5jZW50ZXIsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9XCIgLz5cbiAgICAgICAgfVxuXG4gICAgICAgIEBpZiAoZWRnZS5lZGdlTGFiZWxzPy5lbmQpIHtcbiAgICAgICAgICA8bmctY29tcG9uZW50XG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJlZGdlTGFiZWxIdG1sRGlyZWN0aXZlKCk/LnRlbXBsYXRlUmVmID8/IG51bGxcIlxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAgICAgJGltcGxpY2l0OiB7XG4gICAgICAgICAgICAgICAgZWRnZTogZWRnZSxcbiAgICAgICAgICAgICAgICBsYWJlbDogZWRnZS5lZGdlTGFiZWxzPy5lbmQsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9XCIgLz5cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIEBpZiAoY29ubmVjdGlvbi50eXBlID09PSAndGVtcGxhdGUnKSB7XG4gICAgICA8bmctY29tcG9uZW50XG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbm5lY3Rpb25UZW1wbGF0ZURpcmVjdGl2ZSgpPy50ZW1wbGF0ZVJlZiA/PyBudWxsXCJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAkaW1wbGljaXQ6IHtcbiAgICAgICAgICAgIHBhdGg6IGNyZWF0ZVNpZ25hbCgnJyksXG4gICAgICAgICAgICBtYXJrZXI6IGNyZWF0ZVNpZ25hbCgnJyksXG4gICAgICAgICAgfSxcbiAgICAgICAgfVwiIC8+XG4gICAgfVxuICBgLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW05nVGVtcGxhdGVPdXRsZXRdLFxufSlcbmV4cG9ydCBjbGFzcyBWZmxvd01vY2tDb21wb25lbnQgaW1wbGVtZW50cyBBc0ludGVyZmFjZTxWZmxvd0NvbXBvbmVudD4sIE9uSW5pdCB7XG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXG4gIHB1YmxpYyByZWFkb25seSBub2RlcyE6IE5vZGVbXSB8IER5bmFtaWNOb2RlW107XG5cbiAgQElucHV0KClcbiAgcHVibGljIHJlYWRvbmx5IGVkZ2VzITogRWRnZVtdO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyByZWFkb25seSB2aWV3OiBbbnVtYmVyLCBudW1iZXJdIHwgJ2F1dG8nID0gWzQwMCwgNDAwXTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgcmVhZG9ubHkgbWluWm9vbSA9IDAuNTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgcmVhZG9ubHkgbWF4Wm9vbSA9IDM7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHJlYWRvbmx5IGJhY2tncm91bmQ6IEJhY2tncm91bmQgfCBzdHJpbmcgPSAnI2ZmZic7XG5cbiAgcHVibGljIHJlYWRvbmx5IG9wdGltaXphdGlvbiA9IGlucHV0PE9wdGltaXphdGlvbj4oe1xuICAgIGRldGFjaGVkR3JvdXBzTGF5ZXI6IGZhbHNlLFxuICB9KTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgcmVhZG9ubHkgZW50aXRpZXNTZWxlY3RhYmxlID0gdHJ1ZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgcmVhZG9ubHkga2V5Ym9hcmRTaG9ydGN1dHM6IEtleWJvYXJkU2hvcnRjdXRzID0ge1xuICAgIG11bHRpU2VsZWN0aW9uOiBudWxsLFxuICB9O1xuXG4gIEBJbnB1dCh7XG4gICAgdHJhbnNmb3JtOiAoc2V0dGluZ3M6IENvbm5lY3Rpb25TZXR0aW5ncykgPT4gbmV3IENvbm5lY3Rpb25Nb2RlbChzZXR0aW5ncyksXG4gIH0pXG4gIHB1YmxpYyByZWFkb25seSBjb25uZWN0aW9uOiBDb25uZWN0aW9uTW9kZWwgPSBuZXcgQ29ubmVjdGlvbk1vZGVsKHt9KTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgcmVhZG9ubHkgc25hcEdyaWQhOiBbbnVtYmVyLCBudW1iZXJdO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBlbGV2YXRlTm9kZXNPblNlbGVjdCE6IGJvb2xlYW47XG5cbiAgQElucHV0KClcbiAgcHVibGljIGVsZXZhdGVFZGdlc09uU2VsZWN0ITogYm9vbGVhbjtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1vbi1wcmVmaXhcbiAgcHVibGljIHJlYWRvbmx5IG9uQ29tcG9uZW50Tm9kZUV2ZW50ID0gb3V0cHV0PGFueT4oKTtcblxuICBwcm90ZWN0ZWQgbm9kZVRlbXBsYXRlRGlyZWN0aXZlID0gY29udGVudENoaWxkKE5vZGVIdG1sVGVtcGxhdGVNb2NrRGlyZWN0aXZlKTtcblxuICBwcm90ZWN0ZWQgZ3JvdXBOb2RlVGVtcGxhdGVEaXJlY3RpdmUgPSBjb250ZW50Q2hpbGQoR3JvdXBOb2RlVGVtcGxhdGVNb2NrRGlyZWN0aXZlKTtcblxuICBwcm90ZWN0ZWQgZWRnZVRlbXBsYXRlRGlyZWN0aXZlID0gY29udGVudENoaWxkKEVkZ2VUZW1wbGF0ZU1vY2tEaXJlY3RpdmUpO1xuXG4gIHByb3RlY3RlZCBlZGdlTGFiZWxIdG1sRGlyZWN0aXZlID0gY29udGVudENoaWxkKEVkZ2VMYWJlbEh0bWxUZW1wbGF0ZU1vY2tEaXJlY3RpdmUpO1xuXG4gIHByb3RlY3RlZCBjb25uZWN0aW9uVGVtcGxhdGVEaXJlY3RpdmUgPSBjb250ZW50Q2hpbGQoQ29ubmVjdGlvblRlbXBsYXRlTW9ja0RpcmVjdGl2ZSk7XG5cbiAgcHVibGljIHZpZXdwb3J0ID0gc2lnbmFsPFZpZXdwb3J0U3RhdGU+KHtcbiAgICB4OiAwLFxuICAgIHk6IDAsXG4gICAgem9vbTogMSxcbiAgfSk7XG5cbiAgcHVibGljIG5vZGVzQ2hhbmdlID0gc2lnbmFsPE5vZGVDaGFuZ2VbXT4oW10pO1xuICBwdWJsaWMgZWRnZXNDaGFuZ2UgPSBzaWduYWw8RWRnZUNoYW5nZVtdPihbXSk7XG5cbiAgcHVibGljIHZpZXdwb3J0Q2hhbmdlJCA9IHRvT2JzZXJ2YWJsZSh0aGlzLnZpZXdwb3J0KTtcblxuICBwdWJsaWMgbm9kZXNDaGFuZ2UkID0gdG9PYnNlcnZhYmxlKHRoaXMubm9kZXNDaGFuZ2UpO1xuICBwdWJsaWMgZWRnZXNDaGFuZ2UkID0gdG9PYnNlcnZhYmxlKHRoaXMuZWRnZXNDaGFuZ2UpO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tZW1wdHktbGlmZWN5Y2xlLW1ldGhvZFxuICBwdWJsaWMgbmdPbkluaXQoKSB7fVxuXG4gIHB1YmxpYyB2aWV3cG9ydFRvKHZpZXdwb3J0OiBWaWV3cG9ydFN0YXRlKTogdm9pZCB7XG4gICAgdGhpcy52aWV3cG9ydC5zZXQodmlld3BvcnQpO1xuICB9XG5cbiAgcHVibGljIHpvb21Ubyh6b29tOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLnZpZXdwb3J0LnVwZGF0ZSgocHJldikgPT4gKHsgLi4ucHJldiwgem9vbSB9KSk7XG4gIH1cblxuICBwdWJsaWMgcGFuVG8ocG9pbnQ6IFBvaW50KTogdm9pZCB7XG4gICAgdGhpcy52aWV3cG9ydC51cGRhdGUoKHByZXYpID0+ICh7IC4uLnByZXYsIHg6IHBvaW50LngsIHk6IHBvaW50LnkgfSkpO1xuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICBwdWJsaWMgZml0VmlldyhvcHRpb25zPzogRml0Vmlld09wdGlvbnMpOiB2b2lkIHt9XG5cbiAgcHVibGljIGRvY3VtZW50UG9pbnRUb0Zsb3dQb2ludChwb2ludDogUG9pbnQsIG9wdGlvbnM/OiB7IHNwYWNlczogZmFsc2UgfSk6IFBvaW50O1xuICBwdWJsaWMgZG9jdW1lbnRQb2ludFRvRmxvd1BvaW50KHBvaW50OiBQb2ludCwgb3B0aW9uczogeyBzcGFjZXM6IHRydWUgfSk6IFNwYWNlUG9pbnRbXTtcbiAgcHVibGljIGRvY3VtZW50UG9pbnRUb0Zsb3dQb2ludChwb2ludDogUG9pbnQsIG9wdGlvbnM/OiB7IHNwYWNlczogYm9vbGVhbiB9KTogdW5rbm93biB7XG4gICAgaWYgKG9wdGlvbnM/LnNwYWNlcykge1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAge1xuICAgICAgICAgIG5vZGVJZDogbnVsbCxcbiAgICAgICAgICB4OiBwb2ludC54LFxuICAgICAgICAgIHk6IHBvaW50LnksXG4gICAgICAgIH0sXG4gICAgICBdO1xuICAgIH1cblxuICAgIHJldHVybiBwb2ludDtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgcHVibGljIGdldEludGVzZWN0aW5nTm9kZXMobm9kZUlkOiBzdHJpbmcsIG9wdGlvbnM/OiBJbnRlcnNlY3RpbmdOb2Rlc09wdGlvbnMpOiBOb2RlW10gfCBEeW5hbWljTm9kZVtdIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gIHB1YmxpYyB0b05vZGVTcGFjZShub2RlSWQ6IHN0cmluZywgc3BhY2VOb2RlSWQ6IHN0cmluZyk6IFBvaW50IHtcbiAgICByZXR1cm4geyB4OiAwLCB5OiAwIH07XG4gIH1cblxuICBwdWJsaWMgZ2V0Tm9kZTxUID0gdW5rbm93bj4oaWQ6IHN0cmluZyk6IE5vZGU8VD4gfCBEeW5hbWljTm9kZTxUPiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMubm9kZXMuZmluZCgobm9kZSkgPT4gbm9kZS5pZCA9PT0gaWQpO1xuICB9XG5cbiAgcHVibGljIGdldERldGFjaGVkRWRnZXMoKTogRWRnZVtdIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICBwcm90ZWN0ZWQgY3JlYXRlU2lnbmFsPFQ+KHZhbHVlOiBUKTogV3JpdGFibGVTaWduYWw8VD4ge1xuICAgIHJldHVybiBzaWduYWwodmFsdWUpO1xuICB9XG59XG4iXX0=
296
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmZsb3ctbW9jay5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3Rlc3Rpbmcvc3JjL2NvbXBvbmVudC1tb2Nrcy92Zmxvdy1tb2NrLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFDTixNQUFNLEdBR1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkQsT0FBTyxFQWVMLGdCQUFnQixJQUFJLGVBQWUsRUFDbkMsb0JBQW9CLEdBQ3JCLE1BQU0sV0FBVyxDQUFDO0FBQ25CLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBQ0wsK0JBQStCLEVBQy9CLGtDQUFrQyxFQUNsQyx5QkFBeUIsRUFDekIsOEJBQThCLEVBQzlCLDZCQUE2QixHQUM5QixNQUFNLDRDQUE0QyxDQUFDOztBQWlHcEQsTUFBTSxPQUFPLGtCQUFrQjtJQTlGL0I7UUFzR2tCLFNBQUksR0FBOEIsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFHN0MsWUFBTyxHQUFHLEdBQUcsQ0FBQztRQUdkLFlBQU8sR0FBRyxDQUFDLENBQUM7UUFHWixlQUFVLEdBQXdCLE1BQU0sQ0FBQztRQUd6QyxpQkFBWSxHQUFHLG9CQUFvQixDQUFDO1FBR3BDLHVCQUFrQixHQUFHLElBQUksQ0FBQztRQUcxQixzQkFBaUIsR0FBc0I7WUFDckQsY0FBYyxFQUFFLElBQUk7U0FDckIsQ0FBQztRQUtjLGVBQVUsR0FBb0IsSUFBSSxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUM7UUFXdEUsK0RBQStEO1FBQy9DLHlCQUFvQixHQUFHLE1BQU0sRUFBTyxDQUFDO1FBRTNDLDBC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biAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgY29udGVudENoaWxkLFxuICBJbnB1dCxcbiAgb3V0cHV0LFxuICBzaWduYWwsXG4gIFdyaXRhYmxlU2lnbmFsLFxuICBPbkluaXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBOb2RlLFxuICBEeW5hbWljTm9kZSxcbiAgRWRnZSxcbiAgU3BhY2VQb2ludCxcbiAgUG9pbnQsXG4gIEJhY2tncm91bmQsXG4gIEtleWJvYXJkU2hvcnRjdXRzLFxuICBDb25uZWN0aW9uU2V0dGluZ3MsXG4gIFZpZXdwb3J0U3RhdGUsXG4gIE5vZGVDaGFuZ2UsXG4gIEVkZ2VDaGFuZ2UsXG4gIEZpdFZpZXdPcHRpb25zLFxuICBWZmxvd0NvbXBvbmVudCxcbiAgSW50ZXJzZWN0aW5nTm9kZXNPcHRpb25zLFxuICDJtUNvbm5lY3Rpb25Nb2RlbCBhcyBDb25uZWN0aW9uTW9kZWwsXG4gIERFRkFVTFRfT1BUSU1JWkFUSU9OLFxufSBmcm9tICduZ3gtdmZsb3cnO1xuaW1wb3J0IHsgdG9PYnNlcnZhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHtcbiAgQ29ubmVjdGlvblRlbXBsYXRlTW9ja0RpcmVjdGl2ZSxcbiAgRWRnZUxhYmVsSHRtbFRlbXBsYXRlTW9ja0RpcmVjdGl2ZSxcbiAgRWRnZVRlbXBsYXRlTW9ja0RpcmVjdGl2ZSxcbiAgR3JvdXBOb2RlVGVtcGxhdGVNb2NrRGlyZWN0aXZlLFxuICBOb2RlSHRtbFRlbXBsYXRlTW9ja0RpcmVjdGl2ZSxcbn0gZnJvbSAnLi4vZGlyZWN0aXZlLW1vY2tzL3RlbXBsYXRlLW1vY2suZGlyZWN0aXZlJztcbmltcG9ydCB7IEFzSW50ZXJmYWNlIH0gZnJvbSAnLi4vdHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZmxvdycsXG4gIHRlbXBsYXRlOiBgXG4gICAgPG5nLWNvbnRlbnQgLz5cblxuICAgIEBmb3IgKG5vZGUgb2Ygbm9kZXM7IHRyYWNrICRpbmRleCkge1xuICAgICAgQGlmIChub2RlLnR5cGUgPT09ICdodG1sLXRlbXBsYXRlJykge1xuICAgICAgICA8bmctY29tcG9uZW50XG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwibm9kZVRlbXBsYXRlRGlyZWN0aXZlKCk/LnRlbXBsYXRlUmVmID8/IG51bGxcIlxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgICAgICAkaW1wbGljaXQ6IHtcbiAgICAgICAgICAgICAgbm9kZTogbm9kZSxcbiAgICAgICAgICAgICAgc2VsZWN0ZWQ6IGNyZWF0ZVNpZ25hbChmYWxzZSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH1cIiAvPlxuICAgICAgfVxuXG4gICAgICBAaWYgKG5vZGUudHlwZSA9PT0gJ3RlbXBsYXRlLWdyb3VwJykge1xuICAgICAgICA8bmctY29tcG9uZW50XG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZ3JvdXBOb2RlVGVtcGxhdGVEaXJlY3RpdmUoKT8udGVtcGxhdGVSZWYgPz8gbnVsbFwiXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAgICRpbXBsaWNpdDoge1xuICAgICAgICAgICAgICBub2RlOiBub2RlLFxuICAgICAgICAgICAgICBzZWxlY3RlZDogY3JlYXRlU2lnbmFsKGZhbHNlKSxcbiAgICAgICAgICAgICAgd2lkdGg6IGNyZWF0ZVNpZ25hbChub2RlLndpZHRoKSxcbiAgICAgICAgICAgICAgaGVpZ2h0OiBjcmVhdGVTaWduYWwobm9kZS5oZWlnaHQpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9XCIgLz5cbiAgICAgIH1cbiAgICB9XG5cbiAgICBAZm9yIChlZGdlIG9mIGVkZ2VzOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgIEBpZiAoZWRnZS50eXBlID09PSAndGVtcGxhdGUnKSB7XG4gICAgICAgIDxuZy1jb21wb25lbnRcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJlZGdlVGVtcGxhdGVEaXJlY3RpdmUoKT8udGVtcGxhdGVSZWYgPz8gbnVsbFwiXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAgICRpbXBsaWNpdDoge1xuICAgICAgICAgICAgICBlZGdlOiBlZGdlLFxuICAgICAgICAgICAgICBzZWxlY3RlZDogY3JlYXRlU2lnbmFsKGZhbHNlKSxcbiAgICAgICAgICAgICAgcGF0aDogY3JlYXRlU2lnbmFsKCcnKSxcbiAgICAgICAgICAgICAgbWFya2VyU3RhcnQ6IGNyZWF0ZVNpZ25hbCgnJyksXG4gICAgICAgICAgICAgIG1hcmtlckVuZDogY3JlYXRlU2lnbmFsKCcnKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfVwiIC8+XG5cbiAgICAgICAgQGlmIChlZGdlLmVkZ2VMYWJlbHM/LnN0YXJ0KSB7XG4gICAgICAgICAgPG5nLWNvbXBvbmVudFxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZWRnZUxhYmVsSHRtbERpcmVjdGl2ZSgpPy50ZW1wbGF0ZVJlZiA/PyBudWxsXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgICAgICAgICRpbXBsaWNpdDoge1xuICAgICAgICAgICAgICAgIGVkZ2U6IGVkZ2UsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9XCIgLz5cbiAgICAgICAgfVxuXG4gICAgICAgIEBpZiAoZWRnZS5lZGdlTGFiZWxzPy5jZW50ZXIpIHtcbiAgICAgICAgICA8bmctY29tcG9uZW50XG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJlZGdlTGFiZWxIdG1sRGlyZWN0aXZlKCk/LnRlbXBsYXRlUmVmID8/IG51bGxcIlxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAgICAgJGltcGxpY2l0OiB7XG4gICAgICAgICAgICAgICAgZWRnZTogZWRnZSxcbiAgICAgICAgICAgICAgICBsYWJlbDogZWRnZS5lZGdlTGFiZWxzPy5jZW50ZXIsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9XCIgLz5cbiAgICAgICAgfVxuXG4gICAgICAgIEBpZiAoZWRnZS5lZGdlTGFiZWxzPy5lbmQpIHtcbiAgICAgICAgICA8bmctY29tcG9uZW50XG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJlZGdlTGFiZWxIdG1sRGlyZWN0aXZlKCk/LnRlbXBsYXRlUmVmID8/IG51bGxcIlxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAgICAgJGltcGxpY2l0OiB7XG4gICAgICAgICAgICAgICAgZWRnZTogZWRnZSxcbiAgICAgICAgICAgICAgICBsYWJlbDogZWRnZS5lZGdlTGFiZWxzPy5lbmQsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9XCIgLz5cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIEBpZiAoY29ubmVjdGlvbi50eXBlID09PSAndGVtcGxhdGUnKSB7XG4gICAgICA8bmctY29tcG9uZW50XG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbm5lY3Rpb25UZW1wbGF0ZURpcmVjdGl2ZSgpPy50ZW1wbGF0ZVJlZiA/PyBudWxsXCJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAkaW1wbGljaXQ6IHtcbiAgICAgICAgICAgIHBhdGg6IGNyZWF0ZVNpZ25hbCgnJyksXG4gICAgICAgICAgICBtYXJrZXI6IGNyZWF0ZVNpZ25hbCgnJyksXG4gICAgICAgICAgfSxcbiAgICAgICAgfVwiIC8+XG4gICAgfVxuICBgLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW05nVGVtcGxhdGVPdXRsZXRdLFxufSlcbmV4cG9ydCBjbGFzcyBWZmxvd01vY2tDb21wb25lbnQgaW1wbGVtZW50cyBBc0ludGVyZmFjZTxWZmxvd0NvbXBvbmVudD4sIE9uSW5pdCB7XG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXG4gIHB1YmxpYyByZWFkb25seSBub2RlcyE6IE5vZGVbXSB8IER5bmFtaWNOb2RlW107XG5cbiAgQElucHV0KClcbiAgcHVibGljIHJlYWRvbmx5IGVkZ2VzITogRWRnZVtdO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyByZWFkb25seSB2aWV3OiBbbnVtYmVyLCBudW1iZXJdIHwgJ2F1dG8nID0gWzQwMCwgNDAwXTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgcmVhZG9ubHkgbWluWm9vbSA9IDAuNTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgcmVhZG9ubHkgbWF4Wm9vbSA9IDM7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHJlYWRvbmx5IGJhY2tncm91bmQ6IEJhY2tncm91bmQgfCBzdHJpbmcgPSAnI2ZmZic7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHJlYWRvbmx5IG9wdGltaXphdGlvbiA9IERFRkFVTFRfT1BUSU1JWkFUSU9OO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyByZWFkb25seSBlbnRpdGllc1NlbGVjdGFibGUgPSB0cnVlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyByZWFkb25seSBrZXlib2FyZFNob3J0Y3V0czogS2V5Ym9hcmRTaG9ydGN1dHMgPSB7XG4gICAgbXVsdGlTZWxlY3Rpb246IG51bGwsXG4gIH07XG5cbiAgQElucHV0KHtcbiAgICB0cmFuc2Zvcm06IChzZXR0aW5nczogQ29ubmVjdGlvblNldHRpbmdzKSA9PiBuZXcgQ29ubmVjdGlvbk1vZGVsKHNldHRpbmdzKSxcbiAgfSlcbiAgcHVibGljIHJlYWRvbmx5IGNvbm5lY3Rpb246IENvbm5lY3Rpb25Nb2RlbCA9IG5ldyBDb25uZWN0aW9uTW9kZWwoe30pO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyByZWFkb25seSBzbmFwR3JpZCE6IFtudW1iZXIsIG51bWJlcl07XG5cbiAgQElucHV0KClcbiAgcHVibGljIGVsZXZhdGVOb2Rlc09uU2VsZWN0ITogYm9vbGVhbjtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZWxldmF0ZUVkZ2VzT25TZWxlY3QhOiBib29sZWFuO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW9uLXByZWZpeFxuICBwdWJsaWMgcmVhZG9ubHkgb25Db21wb25lbnROb2RlRXZlbnQgPSBvdXRwdXQ8YW55PigpO1xuXG4gIHByb3RlY3RlZCBub2RlVGVtcGxhdGVEaXJlY3RpdmUgPSBjb250ZW50Q2hpbGQoTm9kZUh0bWxUZW1wbGF0ZU1vY2tEaXJlY3RpdmUpO1xuXG4gIHByb3RlY3RlZCBncm91cE5vZGVUZW1wbGF0ZURpcmVjdGl2ZSA9IGNvbnRlbnRDaGlsZChHcm91cE5vZGVUZW1wbGF0ZU1vY2tEaXJlY3RpdmUpO1xuXG4gIHByb3RlY3RlZCBlZGdlVGVtcGxhdGVEaXJlY3RpdmUgPSBjb250ZW50Q2hpbGQoRWRnZVRlbXBsYXRlTW9ja0RpcmVjdGl2ZSk7XG5cbiAgcHJvdGVjdGVkIGVkZ2VMYWJlbEh0bWxEaXJlY3RpdmUgPSBjb250ZW50Q2hpbGQoRWRnZUxhYmVsSHRtbFRlbXBsYXRlTW9ja0RpcmVjdGl2ZSk7XG5cbiAgcHJvdGVjdGVkIGNvbm5lY3Rpb25UZW1wbGF0ZURpcmVjdGl2ZSA9IGNvbnRlbnRDaGlsZChDb25uZWN0aW9uVGVtcGxhdGVNb2NrRGlyZWN0aXZlKTtcblxuICBwdWJsaWMgdmlld3BvcnQgPSBzaWduYWw8Vmlld3BvcnRTdGF0ZT4oe1xuICAgIHg6IDAsXG4gICAgeTogMCxcbiAgICB6b29tOiAxLFxuICB9KTtcblxuICBwdWJsaWMgbm9kZXNDaGFuZ2UgPSBzaWduYWw8Tm9kZUNoYW5nZVtdPihbXSk7XG4gIHB1YmxpYyBlZGdlc0NoYW5nZSA9IHNpZ25hbDxFZGdlQ2hhbmdlW10+KFtdKTtcblxuICBwdWJsaWMgdmlld3BvcnRDaGFuZ2UkID0gdG9PYnNlcnZhYmxlKHRoaXMudmlld3BvcnQpO1xuXG4gIHB1YmxpYyBub2Rlc0NoYW5nZSQgPSB0b09ic2VydmFibGUodGhpcy5ub2Rlc0NoYW5nZSk7XG4gIHB1YmxpYyBlZGdlc0NoYW5nZSQgPSB0b09ic2VydmFibGUodGhpcy5lZGdlc0NoYW5nZSk7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1lbXB0eS1saWZlY3ljbGUtbWV0aG9kXG4gIHB1YmxpYyBuZ09uSW5pdCgpIHt9XG5cbiAgcHVibGljIHZpZXdwb3J0VG8odmlld3BvcnQ6IFZpZXdwb3J0U3RhdGUpOiB2b2lkIHtcbiAgICB0aGlzLnZpZXdwb3J0LnNldCh2aWV3cG9ydCk7XG4gIH1cblxuICBwdWJsaWMgem9vbVRvKHpvb206IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMudmlld3BvcnQudXBkYXRlKChwcmV2KSA9PiAoeyAuLi5wcmV2LCB6b29tIH0pKTtcbiAgfVxuXG4gIHB1YmxpYyBwYW5Ubyhwb2ludDogUG9pbnQpOiB2b2lkIHtcbiAgICB0aGlzLnZpZXdwb3J0LnVwZGF0ZSgocHJldikgPT4gKHsgLi4ucHJldiwgeDogcG9pbnQueCwgeTogcG9pbnQueSB9KSk7XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gIHB1YmxpYyBmaXRWaWV3KG9wdGlvbnM/OiBGaXRWaWV3T3B0aW9ucyk6IHZvaWQge31cblxuICBwdWJsaWMgZG9jdW1lbnRQb2ludFRvRmxvd1BvaW50KHBvaW50OiBQb2ludCwgb3B0aW9ucz86IHsgc3BhY2VzOiBmYWxzZSB9KTogUG9pbnQ7XG4gIHB1YmxpYyBkb2N1bWVudFBvaW50VG9GbG93UG9pbnQocG9pbnQ6IFBvaW50LCBvcHRpb25zOiB7IHNwYWNlczogdHJ1ZSB9KTogU3BhY2VQb2ludFtdO1xuICBwdWJsaWMgZG9jdW1lbnRQb2ludFRvRmxvd1BvaW50KHBvaW50OiBQb2ludCwgb3B0aW9ucz86IHsgc3BhY2VzOiBib29sZWFuIH0pOiB1bmtub3duIHtcbiAgICBpZiAob3B0aW9ucz8uc3BhY2VzKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICB7XG4gICAgICAgICAgbm9kZUlkOiBudWxsLFxuICAgICAgICAgIHg6IHBvaW50LngsXG4gICAgICAgICAgeTogcG9pbnQueSxcbiAgICAgICAgfSxcbiAgICAgIF07XG4gICAgfVxuXG4gICAgcmV0dXJuIHBvaW50O1xuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICBwdWJsaWMgZ2V0SW50ZXNlY3RpbmdOb2Rlcyhub2RlSWQ6IHN0cmluZywgb3B0aW9ucz86IEludGVyc2VjdGluZ05vZGVzT3B0aW9ucyk6IE5vZGVbXSB8IER5bmFtaWNOb2RlW10ge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgcHVibGljIHRvTm9kZVNwYWNlKG5vZGVJZDogc3RyaW5nLCBzcGFjZU5vZGVJZDogc3RyaW5nKTogUG9pbnQge1xuICAgIHJldHVybiB7IHg6IDAsIHk6IDAgfTtcbiAgfVxuXG4gIHB1YmxpYyBnZXROb2RlPFQgPSB1bmtub3duPihpZDogc3RyaW5nKTogTm9kZTxUPiB8IER5bmFtaWNOb2RlPFQ+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5ub2Rlcy5maW5kKChub2RlKSA9PiBub2RlLmlkID09PSBpZCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0RGV0YWNoZWRFZGdlcygpOiBFZGdlW10ge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjcmVhdGVTaWduYWw8VD4odmFsdWU6IFQpOiBXcml0YWJsZVNpZ25hbDxUPiB7XG4gICAgcmV0dXJuIHNpZ25hbCh2YWx1ZSk7XG4gIH1cbn1cbiJdfQ==
@@ -1,6 +1,6 @@
1
1
  import * as i0 from '@angular/core';
2
- import { signal, inject, TemplateRef, Directive, input, output, contentChild, Component, ChangeDetectionStrategy, Input } from '@angular/core';
3
- import { ɵNodeModel as _NodeModel, ɵComponentEventBusService as _ComponentEventBusService, ɵNodeAccessorService as _NodeAccessorService, ɵFlowEntitiesService as _FlowEntitiesService, ɵHandleService as _HandleService, ɵRootPointerDirective as _RootPointerDirective, ɵSpacePointContextDirective as _SpacePointContextDirective, ɵSelectionService as _SelectionService, ɵFlowSettingsService as _FlowSettingsService, ɵViewportService as _ViewportService, ɵConnectionModel as _ConnectionModel } from 'ngx-vflow';
2
+ import { signal, inject, TemplateRef, Directive, output, contentChild, Component, ChangeDetectionStrategy, Input, input } from '@angular/core';
3
+ import { ɵNodeModel as _NodeModel, ɵComponentEventBusService as _ComponentEventBusService, ɵNodeAccessorService as _NodeAccessorService, ɵFlowEntitiesService as _FlowEntitiesService, ɵHandleService as _HandleService, ɵRootPointerDirective as _RootPointerDirective, ɵSpacePointContextDirective as _SpacePointContextDirective, ɵSelectionService as _SelectionService, ɵFlowSettingsService as _FlowSettingsService, ɵViewportService as _ViewportService, DEFAULT_OPTIMIZATION, ɵConnectionModel as _ConnectionModel } from 'ngx-vflow';
4
4
  import { of } from 'rxjs';
5
5
  import { NgTemplateOutlet } from '@angular/common';
6
6
  import { toObservable } from '@angular/core/rxjs-interop';
@@ -166,9 +166,7 @@ class VflowMockComponent {
166
166
  this.minZoom = 0.5;
167
167
  this.maxZoom = 3;
168
168
  this.background = '#fff';
169
- this.optimization = input({
170
- detachedGroupsLayer: false,
171
- });
169
+ this.optimization = DEFAULT_OPTIMIZATION;
172
170
  this.entitiesSelectable = true;
173
171
  this.keyboardShortcuts = {
174
172
  multiSelection: null,
@@ -235,7 +233,7 @@ class VflowMockComponent {
235
233
  return signal(value);
236
234
  }
237
235
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: VflowMockComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
238
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: VflowMockComponent, isStandalone: true, selector: "vflow", inputs: { nodes: { classPropertyName: "nodes", publicName: "nodes", isSignal: false, isRequired: true, transformFunction: null }, edges: { classPropertyName: "edges", publicName: "edges", isSignal: false, isRequired: false, transformFunction: null }, 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 } }, outputs: { onComponentNodeEvent: "onComponentNodeEvent" }, queries: [{ propertyName: "nodeTemplateDirective", first: true, predicate: NodeHtmlTemplateMockDirective, descendants: true, isSignal: true }, { propertyName: "groupNodeTemplateDirective", first: true, predicate: GroupNodeTemplateMockDirective, descendants: true, isSignal: true }, { propertyName: "edgeTemplateDirective", first: true, predicate: EdgeTemplateMockDirective, descendants: true, isSignal: true }, { propertyName: "edgeLabelHtmlDirective", first: true, predicate: EdgeLabelHtmlTemplateMockDirective, descendants: true, isSignal: true }, { propertyName: "connectionTemplateDirective", first: true, predicate: ConnectionTemplateMockDirective, descendants: true, isSignal: true }], ngImport: i0, template: `
236
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: VflowMockComponent, isStandalone: true, selector: "vflow", inputs: { nodes: "nodes", edges: "edges", view: "view", minZoom: "minZoom", maxZoom: "maxZoom", background: "background", optimization: "optimization", entitiesSelectable: "entitiesSelectable", keyboardShortcuts: "keyboardShortcuts", connection: ["connection", "connection", (settings) => new _ConnectionModel(settings)], snapGrid: "snapGrid", elevateNodesOnSelect: "elevateNodesOnSelect", elevateEdgesOnSelect: "elevateEdgesOnSelect" }, outputs: { onComponentNodeEvent: "onComponentNodeEvent" }, queries: [{ propertyName: "nodeTemplateDirective", first: true, predicate: NodeHtmlTemplateMockDirective, descendants: true, isSignal: true }, { propertyName: "groupNodeTemplateDirective", first: true, predicate: GroupNodeTemplateMockDirective, descendants: true, isSignal: true }, { propertyName: "edgeTemplateDirective", first: true, predicate: EdgeTemplateMockDirective, descendants: true, isSignal: true }, { propertyName: "edgeLabelHtmlDirective", first: true, predicate: EdgeLabelHtmlTemplateMockDirective, descendants: true, isSignal: true }, { propertyName: "connectionTemplateDirective", first: true, predicate: ConnectionTemplateMockDirective, descendants: true, isSignal: true }], ngImport: i0, template: `
239
237
  <ng-content />
240
238
 
241
239
  @for (node of nodes; track $index) {
@@ -433,6 +431,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
433
431
  type: Input
434
432
  }], background: [{
435
433
  type: Input
434
+ }], optimization: [{
435
+ type: Input
436
436
  }], entitiesSelectable: [{
437
437
  type: Input
438
438
  }], keyboardShortcuts: [{
@@ -1 +1 @@
1
- {"version":3,"file":"ngx-vflow-testing.mjs","sources":["../../../projects/ngx-vflow-lib/testing/src/provide-custom-node-mocks.ts","../../../projects/ngx-vflow-lib/testing/src/directive-mocks/template-mock.directive.ts","../../../projects/ngx-vflow-lib/testing/src/component-mocks/vflow-mock.component.ts","../../../projects/ngx-vflow-lib/testing/src/component-mocks/handle-mock.component.ts","../../../projects/ngx-vflow-lib/testing/src/component-mocks/resizable-mock.component.ts","../../../projects/ngx-vflow-lib/testing/src/component-mocks/minimap-mock.component.ts","../../../projects/ngx-vflow-lib/testing/src/component-mocks/node-toolbar-mock.component.ts","../../../projects/ngx-vflow-lib/testing/src/directive-mocks/connection-controller-mock.directive.ts","../../../projects/ngx-vflow-lib/testing/src/directive-mocks/drag-handle-mock.directive.ts","../../../projects/ngx-vflow-lib/testing/src/directive-mocks/selectable-mock.directive.ts","../../../projects/ngx-vflow-lib/testing/src/component-mocks/custom-template-edge-mock.component.ts","../../../projects/ngx-vflow-lib/testing/src/vflow-mocks.ts","../../../projects/ngx-vflow-lib/testing/src/public-api.ts","../../../projects/ngx-vflow-lib/testing/src/ngx-vflow-testing.ts"],"sourcesContent":["import { Provider, signal } from '@angular/core';\nimport {\n ɵNodeModel as NodeModel,\n ɵComponentEventBusService as ComponentEventBusService,\n ɵHandleService as HandleService,\n ɵFlowSettingsService as FlowSettingsService,\n ɵFlowEntitiesService as FlowEntitiesService,\n ɵNodeAccessorService as NodeAccessorService,\n ɵRootPointerDirective as RootPointerDirective,\n ɵSpacePointContextDirective as SpacePointContextDirective,\n ɵViewportService as ViewportService,\n ɵSelectionService as SelectionService,\n Point,\n} from 'ngx-vflow';\nimport { of } from 'rxjs';\n\nconst mockModel = () => new NodeModel({ id: 'mock', type: 'default', point: { x: 0, y: 0 } });\n\nexport function provideCustomNodeMocks(): Provider[] {\n return [\n {\n provide: ComponentEventBusService,\n useValue: {\n pushEvent: () => {},\n },\n },\n {\n provide: NodeAccessorService,\n useFactory: () => ({\n model: signal(mockModel()),\n }),\n },\n FlowEntitiesService,\n\n // TODO: mocks below should be removed after the major release\n {\n provide: HandleService,\n useFactory: () => ({\n node: signal(mockModel()),\n createHandle: () => {},\n destroyHandle: () => {},\n }),\n },\n {\n provide: RootPointerDirective,\n useValue: {\n pointerMovement$: of({\n x: 0,\n y: 0,\n movementX: 0,\n movementY: 0,\n target: null,\n originalEvent: null,\n }),\n documentPointerEnd$: of(null),\n },\n },\n {\n provide: SpacePointContextDirective,\n useValue: {\n documentPointToFlowPoint: (point: Point) => point,\n },\n },\n {\n provide: SelectionService,\n useValue: {\n select: () => {},\n },\n },\n FlowSettingsService,\n ViewportService,\n ];\n}\n","import { Directive, TemplateRef, inject } from '@angular/core';\nimport type {\n ConnectionTemplateDirective,\n EdgeLabelHtmlTemplateDirective,\n EdgeTemplateDirective,\n GroupNodeTemplateDirective,\n HandleTemplateDirective,\n NodeHtmlTemplateDirective,\n} from 'ngx-vflow';\nimport { AsInterface } from '../types';\n\n@Directive({\n standalone: true,\n selector: 'ng-template[edge]',\n})\nexport class EdgeTemplateMockDirective implements AsInterface<EdgeTemplateDirective> {\n public templateRef = inject(TemplateRef);\n}\n\n@Directive({\n standalone: true,\n selector: 'ng-template[connection]',\n})\nexport class ConnectionTemplateMockDirective implements AsInterface<ConnectionTemplateDirective> {\n public templateRef = inject(TemplateRef);\n}\n\n@Directive({\n standalone: true,\n selector: 'ng-template[edgeLabelHtml]',\n})\nexport class EdgeLabelHtmlTemplateMockDirective implements AsInterface<EdgeLabelHtmlTemplateDirective> {\n public templateRef = inject(TemplateRef);\n}\n\n@Directive({\n standalone: true,\n selector: 'ng-template[nodeHtml]',\n})\nexport class NodeHtmlTemplateMockDirective implements AsInterface<NodeHtmlTemplateDirective> {\n public templateRef = inject(TemplateRef);\n}\n\n@Directive({\n standalone: true,\n selector: 'ng-template[nodeSvg]',\n})\nexport class NodeSvgTemplateMockDirective implements AsInterface<NodeSvgTemplateMockDirective> {\n public templateRef = inject(TemplateRef);\n}\n\n@Directive({\n standalone: true,\n selector: 'ng-template[groupNode]',\n})\nexport class GroupNodeTemplateMockDirective implements AsInterface<GroupNodeTemplateDirective> {\n public templateRef = inject(TemplateRef);\n}\n\n@Directive({\n standalone: true,\n selector: 'ng-template[handle]',\n})\nexport class HandleTemplateMockDirective implements AsInterface<HandleTemplateDirective> {\n public templateRef = inject(TemplateRef);\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n contentChild,\n Input,\n input,\n output,\n signal,\n WritableSignal,\n OnInit,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n Node,\n DynamicNode,\n Edge,\n SpacePoint,\n Point,\n Background,\n Optimization,\n KeyboardShortcuts,\n ConnectionSettings,\n ViewportState,\n NodeChange,\n EdgeChange,\n FitViewOptions,\n VflowComponent,\n IntersectingNodesOptions,\n ɵConnectionModel as ConnectionModel,\n} from 'ngx-vflow';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport {\n ConnectionTemplateMockDirective,\n EdgeLabelHtmlTemplateMockDirective,\n EdgeTemplateMockDirective,\n GroupNodeTemplateMockDirective,\n NodeHtmlTemplateMockDirective,\n} from '../directive-mocks/template-mock.directive';\nimport { AsInterface } from '../types';\n\n@Component({\n selector: 'vflow',\n template: `\n <ng-content />\n\n @for (node of nodes; track $index) {\n @if (node.type === 'html-template') {\n <ng-component\n [ngTemplateOutlet]=\"nodeTemplateDirective()?.templateRef ?? null\"\n [ngTemplateOutletContext]=\"{\n $implicit: {\n node: node,\n selected: createSignal(false),\n },\n }\" />\n }\n\n @if (node.type === 'template-group') {\n <ng-component\n [ngTemplateOutlet]=\"groupNodeTemplateDirective()?.templateRef ?? null\"\n [ngTemplateOutletContext]=\"{\n $implicit: {\n node: node,\n selected: createSignal(false),\n width: createSignal(node.width),\n height: createSignal(node.height),\n },\n }\" />\n }\n }\n\n @for (edge of edges; track $index) {\n @if (edge.type === 'template') {\n <ng-component\n [ngTemplateOutlet]=\"edgeTemplateDirective()?.templateRef ?? null\"\n [ngTemplateOutletContext]=\"{\n $implicit: {\n edge: edge,\n selected: createSignal(false),\n path: createSignal(''),\n markerStart: createSignal(''),\n markerEnd: createSignal(''),\n },\n }\" />\n\n @if (edge.edgeLabels?.start) {\n <ng-component\n [ngTemplateOutlet]=\"edgeLabelHtmlDirective()?.templateRef ?? null\"\n [ngTemplateOutletContext]=\"{\n $implicit: {\n edge: edge,\n },\n }\" />\n }\n\n @if (edge.edgeLabels?.center) {\n <ng-component\n [ngTemplateOutlet]=\"edgeLabelHtmlDirective()?.templateRef ?? null\"\n [ngTemplateOutletContext]=\"{\n $implicit: {\n edge: edge,\n label: edge.edgeLabels?.center,\n },\n }\" />\n }\n\n @if (edge.edgeLabels?.end) {\n <ng-component\n [ngTemplateOutlet]=\"edgeLabelHtmlDirective()?.templateRef ?? null\"\n [ngTemplateOutletContext]=\"{\n $implicit: {\n edge: edge,\n label: edge.edgeLabels?.end,\n },\n }\" />\n }\n }\n }\n\n @if (connection.type === 'template') {\n <ng-component\n [ngTemplateOutlet]=\"connectionTemplateDirective()?.templateRef ?? null\"\n [ngTemplateOutletContext]=\"{\n $implicit: {\n path: createSignal(''),\n marker: createSignal(''),\n },\n }\" />\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgTemplateOutlet],\n})\nexport class VflowMockComponent implements AsInterface<VflowComponent>, OnInit {\n @Input({ required: true })\n public readonly nodes!: Node[] | DynamicNode[];\n\n @Input()\n public readonly edges!: Edge[];\n\n @Input()\n public readonly view: [number, number] | 'auto' = [400, 400];\n\n @Input()\n public readonly minZoom = 0.5;\n\n @Input()\n public readonly maxZoom = 3;\n\n @Input()\n public readonly background: Background | string = '#fff';\n\n public readonly optimization = input<Optimization>({\n detachedGroupsLayer: false,\n });\n\n @Input()\n public readonly entitiesSelectable = true;\n\n @Input()\n public readonly keyboardShortcuts: KeyboardShortcuts = {\n multiSelection: null,\n };\n\n @Input({\n transform: (settings: ConnectionSettings) => new ConnectionModel(settings),\n })\n public readonly connection: ConnectionModel = new ConnectionModel({});\n\n @Input()\n public readonly snapGrid!: [number, number];\n\n @Input()\n public elevateNodesOnSelect!: boolean;\n\n @Input()\n public elevateEdgesOnSelect!: boolean;\n\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n public readonly onComponentNodeEvent = output<any>();\n\n protected nodeTemplateDirective = contentChild(NodeHtmlTemplateMockDirective);\n\n protected groupNodeTemplateDirective = contentChild(GroupNodeTemplateMockDirective);\n\n protected edgeTemplateDirective = contentChild(EdgeTemplateMockDirective);\n\n protected edgeLabelHtmlDirective = contentChild(EdgeLabelHtmlTemplateMockDirective);\n\n protected connectionTemplateDirective = contentChild(ConnectionTemplateMockDirective);\n\n public viewport = signal<ViewportState>({\n x: 0,\n y: 0,\n zoom: 1,\n });\n\n public nodesChange = signal<NodeChange[]>([]);\n public edgesChange = signal<EdgeChange[]>([]);\n\n public viewportChange$ = toObservable(this.viewport);\n\n public nodesChange$ = toObservable(this.nodesChange);\n public edgesChange$ = toObservable(this.edgesChange);\n\n // eslint-disable-next-line @angular-eslint/no-empty-lifecycle-method\n public ngOnInit() {}\n\n public viewportTo(viewport: ViewportState): void {\n this.viewport.set(viewport);\n }\n\n public zoomTo(zoom: number): void {\n this.viewport.update((prev) => ({ ...prev, zoom }));\n }\n\n public panTo(point: Point): void {\n this.viewport.update((prev) => ({ ...prev, x: point.x, y: point.y }));\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public fitView(options?: FitViewOptions): void {}\n\n public documentPointToFlowPoint(point: Point, options?: { spaces: false }): Point;\n public documentPointToFlowPoint(point: Point, options: { spaces: true }): SpacePoint[];\n public documentPointToFlowPoint(point: Point, options?: { spaces: boolean }): unknown {\n if (options?.spaces) {\n return [\n {\n nodeId: null,\n x: point.x,\n y: point.y,\n },\n ];\n }\n\n return point;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public getIntesectingNodes(nodeId: string, options?: IntersectingNodesOptions): Node[] | DynamicNode[] {\n return [];\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public toNodeSpace(nodeId: string, spaceNodeId: string): Point {\n return { x: 0, y: 0 };\n }\n\n public getNode<T = unknown>(id: string): Node<T> | DynamicNode<T> | undefined {\n return this.nodes.find((node) => node.id === id);\n }\n\n public getDetachedEdges(): Edge[] {\n return [];\n }\n\n protected createSignal<T>(value: T): WritableSignal<T> {\n return signal(value);\n }\n}\n","import { ChangeDetectionStrategy, Component, input, TemplateRef, OnInit } from '@angular/core';\nimport type { HandleComponent, Position } from 'ngx-vflow';\nimport { AsInterface } from '../types';\n\n@Component({\n selector: 'handle',\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class HandleMockComponent implements AsInterface<HandleComponent>, OnInit {\n public position = input.required<Position>();\n public type = input.required<'source' | 'target'>();\n public id = input<string>();\n public template = input<TemplateRef<any>>();\n\n // eslint-disable-next-line @angular-eslint/no-empty-lifecycle-method\n public ngOnInit(): void {}\n}\n","import { ChangeDetectionStrategy, Component, input, OnInit, AfterViewInit } from '@angular/core';\nimport type { ResizableComponent } from 'ngx-vflow';\nimport { AsInterface } from '../types';\n\n@Component({\n selector: '[resizable]',\n template: '<ng-content />',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ResizableMockComponent implements AsInterface<ResizableComponent>, OnInit, AfterViewInit {\n public resizable = input<boolean | ''>();\n public resizerColor = input('#2e414c');\n public gap = input(1.5);\n\n // eslint-disable-next-line @angular-eslint/no-empty-lifecycle-method\n public ngOnInit() {}\n\n // eslint-disable-next-line @angular-eslint/no-empty-lifecycle-method\n public ngAfterViewInit() {}\n}\n","import { ChangeDetectionStrategy, Component, input, OnInit } from '@angular/core';\nimport type { MiniMapComponent, MiniMapPosition } from 'ngx-vflow';\nimport { AsInterface } from '../types';\n\n@Component({\n selector: 'mini-map',\n template: '',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MiniMapMockComponent implements AsInterface<MiniMapComponent>, OnInit {\n public maskColor = input(`rgba(215, 215, 215, 0.6)`);\n\n public strokeColor = input(`rgb(200, 200, 200)`);\n\n public position = input<MiniMapPosition>('bottom-right');\n\n public scaleOnHover = input(false);\n\n // eslint-disable-next-line @angular-eslint/no-empty-lifecycle-method\n public ngOnInit() {}\n}\n","import { ChangeDetectionStrategy, Component, input, OnInit, OnDestroy } from '@angular/core';\nimport type { Position, NodeToolbarComponent } from 'ngx-vflow';\nimport { AsInterface } from '../types';\n\n@Component({\n selector: 'node-toolbar',\n template: '<ng-content />',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NodeToolbarMockComponent implements AsInterface<NodeToolbarComponent>, OnInit, OnDestroy {\n public position = input<Position>('top');\n\n // eslint-disable-next-line @angular-eslint/no-empty-lifecycle-method\n public ngOnInit() {}\n\n // eslint-disable-next-line @angular-eslint/no-empty-lifecycle-method\n public ngOnDestroy() {}\n}\n","import { Directive, output } from '@angular/core';\nimport { Connection, ReconnectionEvent } from 'ngx-vflow';\nimport { AsInterface } from '../types';\nimport type { ConnectionControllerDirective, ɵHandleModel as HandleModel } from 'ngx-vflow';\n\n@Directive({ selector: '[onConnect]', standalone: true })\nexport class ConnectionControllerMockDirective implements AsInterface<ConnectionControllerDirective> {\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n public readonly onConnect = output<Connection>();\n\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n public readonly onReconnect = output<ReconnectionEvent>();\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public startConnection(handle: HandleModel): void {}\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public startReconnection(handle: HandleModel): void {}\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public validateConnection(handle: HandleModel): void {}\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public resetValidateConnection(targetHandle: HandleModel): void {}\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public endConnection(): void {}\n}\n","import { Directive } from '@angular/core';\nimport { AsInterface } from '../types';\nimport type { DragHandleDirective } from 'ngx-vflow';\n\n@Directive({ selector: '[dragHandle]', standalone: true })\nexport class DragHandleMockDirective implements AsInterface<DragHandleDirective> {}\n","import { Directive } from '@angular/core';\nimport { AsInterface } from '../types';\nimport type { SelectableDirective } from 'ngx-vflow';\n\n@Directive({\n selector: '[selectable]',\n standalone: true,\n})\nexport class SelectableMockDirective implements AsInterface<SelectableDirective> {}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { AsInterface } from '../types';\nimport type { CustomTemplateEdgeComponent } from 'ngx-vflow';\n\n@Component({\n selector: 'g[customTemplateEdge]',\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class CustomTemplateEdgeMockComponent implements AsInterface<CustomTemplateEdgeComponent> {}\n","import { CustomTemplateEdgeMockComponent } from './component-mocks/custom-template-edge-mock.component';\nimport { HandleMockComponent } from './component-mocks/handle-mock.component';\nimport { MiniMapMockComponent } from './component-mocks/minimap-mock.component';\nimport { NodeToolbarMockComponent } from './component-mocks/node-toolbar-mock.component';\nimport { ResizableMockComponent } from './component-mocks/resizable-mock.component';\nimport { VflowMockComponent } from './component-mocks/vflow-mock.component';\nimport { ConnectionControllerMockDirective } from './directive-mocks/connection-controller-mock.directive';\nimport { DragHandleMockDirective } from './directive-mocks/drag-handle-mock.directive';\nimport { SelectableMockDirective } from './directive-mocks/selectable-mock.directive';\nimport {\n ConnectionTemplateMockDirective,\n EdgeLabelHtmlTemplateMockDirective,\n EdgeTemplateMockDirective,\n GroupNodeTemplateMockDirective,\n HandleTemplateMockDirective,\n NodeHtmlTemplateMockDirective,\n} from './directive-mocks/template-mock.directive';\n\nexport const VflowMocks = [\n VflowMockComponent,\n HandleMockComponent,\n ResizableMockComponent,\n SelectableMockDirective,\n MiniMapMockComponent,\n NodeToolbarMockComponent,\n DragHandleMockDirective,\n ConnectionControllerMockDirective,\n CustomTemplateEdgeMockComponent,\n\n NodeHtmlTemplateMockDirective,\n GroupNodeTemplateMockDirective,\n EdgeLabelHtmlTemplateMockDirective,\n EdgeTemplateMockDirective,\n ConnectionTemplateMockDirective,\n HandleTemplateMockDirective,\n] as const;\n","// Testing\nexport * from './provide-custom-node-mocks';\nexport * from './component-mocks/vflow-mock.component';\nexport * from './component-mocks/handle-mock.component';\nexport * from './component-mocks/resizable-mock.component';\nexport * from './component-mocks/minimap-mock.component';\nexport * from './component-mocks/node-toolbar-mock.component';\nexport * from './directive-mocks/connection-controller-mock.directive';\nexport * from './directive-mocks/drag-handle-mock.directive';\nexport * from './directive-mocks/selectable-mock.directive';\nexport * from './directive-mocks/template-mock.directive';\nexport * from './vflow-mocks';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["NodeModel","ComponentEventBusService","NodeAccessorService","FlowEntitiesService","HandleService","RootPointerDirective","SpacePointContextDirective","SelectionService","FlowSettingsService","ViewportService","ConnectionModel"],"mappings":";;;;;;;AAgBA,MAAM,SAAS,GAAG,MAAM,IAAIA,UAAS,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;SAE7E,sBAAsB,GAAA;IACpC,OAAO;AACL,QAAA;AACE,YAAA,OAAO,EAAEC,yBAAwB;AACjC,YAAA,QAAQ,EAAE;AACR,gBAAA,SAAS,EAAE,MAAK,GAAG;AACpB,aAAA;AACF,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAEC,oBAAmB;AAC5B,YAAA,UAAU,EAAE,OAAO;AACjB,gBAAA,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC;aAC3B,CAAC;AACH,SAAA;QACDC,oBAAmB;;AAGnB,QAAA;AACE,YAAA,OAAO,EAAEC,cAAa;AACtB,YAAA,UAAU,EAAE,OAAO;AACjB,gBAAA,IAAI,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC;AACzB,gBAAA,YAAY,EAAE,MAAK,GAAG;AACtB,gBAAA,aAAa,EAAE,MAAK,GAAG;aACxB,CAAC;AACH,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAEC,qBAAoB;AAC7B,YAAA,QAAQ,EAAE;gBACR,gBAAgB,EAAE,EAAE,CAAC;AACnB,oBAAA,CAAC,EAAE,CAAC;AACJ,oBAAA,CAAC,EAAE,CAAC;AACJ,oBAAA,SAAS,EAAE,CAAC;AACZ,oBAAA,SAAS,EAAE,CAAC;AACZ,oBAAA,MAAM,EAAE,IAAI;AACZ,oBAAA,aAAa,EAAE,IAAI;iBACpB,CAAC;AACF,gBAAA,mBAAmB,EAAE,EAAE,CAAC,IAAI,CAAC;AAC9B,aAAA;AACF,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAEC,2BAA0B;AACnC,YAAA,QAAQ,EAAE;AACR,gBAAA,wBAAwB,EAAE,CAAC,KAAY,KAAK,KAAK;AAClD,aAAA;AACF,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAEC,iBAAgB;AACzB,YAAA,QAAQ,EAAE;AACR,gBAAA,MAAM,EAAE,MAAK,GAAG;AACjB,aAAA;AACF,SAAA;QACDC,oBAAmB;QACnBC,gBAAe;KAChB;AACH;;MCzDa,yBAAyB,CAAA;AAJtC,IAAA,WAAA,GAAA;AAKS,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AACzC;+GAFY,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAJrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,mBAAmB;AAC9B,iBAAA;;MASY,+BAA+B,CAAA;AAJ5C,IAAA,WAAA,GAAA;AAKS,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AACzC;+GAFY,+BAA+B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAA/B,+BAA+B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAA/B,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAJ3C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,yBAAyB;AACpC,iBAAA;;MASY,kCAAkC,CAAA;AAJ/C,IAAA,WAAA,GAAA;AAKS,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AACzC;+GAFY,kCAAkC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAlC,kCAAkC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAlC,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAJ9C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,4BAA4B;AACvC,iBAAA;;MASY,6BAA6B,CAAA;AAJ1C,IAAA,WAAA,GAAA;AAKS,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AACzC;+GAFY,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAA7B,6BAA6B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAA7B,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAJzC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,uBAAuB;AAClC,iBAAA;;MASY,4BAA4B,CAAA;AAJzC,IAAA,WAAA,GAAA;AAKS,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AACzC;+GAFY,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAA5B,4BAA4B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAA5B,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAJxC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,sBAAsB;AACjC,iBAAA;;MASY,8BAA8B,CAAA;AAJ3C,IAAA,WAAA,GAAA;AAKS,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AACzC;+GAFY,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAA9B,8BAA8B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAA9B,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAJ1C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,wBAAwB;AACnC,iBAAA;;MASY,2BAA2B,CAAA;AAJxC,IAAA,WAAA,GAAA;AAKS,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AACzC;+GAFY,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAA3B,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAA3B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAJvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,qBAAqB;AAChC,iBAAA;;;MCwEY,kBAAkB,CAAA;AA9F/B,IAAA,WAAA,GAAA;AAsGkB,QAAA,IAAA,CAAA,IAAI,GAA8B,CAAC,GAAG,EAAE,GAAG,CAAC;QAG5C,IAAO,CAAA,OAAA,GAAG,GAAG;QAGb,IAAO,CAAA,OAAA,GAAG,CAAC;QAGX,IAAU,CAAA,UAAA,GAAwB,MAAM;QAExC,IAAY,CAAA,YAAA,GAAG,KAAK,CAAe;AACjD,YAAA,mBAAmB,EAAE,KAAK;AAC3B,SAAA,CAAC;QAGc,IAAkB,CAAA,kBAAA,GAAG,IAAI;AAGzB,QAAA,IAAA,CAAA,iBAAiB,GAAsB;AACrD,YAAA,cAAc,EAAE,IAAI;SACrB;AAKe,QAAA,IAAA,CAAA,UAAU,GAAoB,IAAIC,gBAAe,CAAC,EAAE,CAAC;;QAYrD,IAAoB,CAAA,oBAAA,GAAG,MAAM,EAAO;AAE1C,QAAA,IAAA,CAAA,qBAAqB,GAAG,YAAY,CAAC,6BAA6B,CAAC;AAEnE,QAAA,IAAA,CAAA,0BAA0B,GAAG,YAAY,CAAC,8BAA8B,CAAC;AAEzE,QAAA,IAAA,CAAA,qBAAqB,GAAG,YAAY,CAAC,yBAAyB,CAAC;AAE/D,QAAA,IAAA,CAAA,sBAAsB,GAAG,YAAY,CAAC,kCAAkC,CAAC;AAEzE,QAAA,IAAA,CAAA,2BAA2B,GAAG,YAAY,CAAC,+BAA+B,CAAC;QAE9E,IAAQ,CAAA,QAAA,GAAG,MAAM,CAAgB;AACtC,YAAA,CAAC,EAAE,CAAC;AACJ,YAAA,CAAC,EAAE,CAAC;AACJ,YAAA,IAAI,EAAE,CAAC;AACR,SAAA,CAAC;AAEK,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAe,EAAE,CAAC;AACtC,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAe,EAAE,CAAC;AAEtC,QAAA,IAAA,CAAA,eAAe,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC;AAE7C,QAAA,IAAA,CAAA,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC;AAC7C,QAAA,IAAA,CAAA,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC;AAyDrD;;AAtDQ,IAAA,QAAQ;AAER,IAAA,UAAU,CAAC,QAAuB,EAAA;AACvC,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC;;AAGtB,IAAA,MAAM,CAAC,IAAY,EAAA;AACxB,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,MAAM,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;;AAG9C,IAAA,KAAK,CAAC,KAAY,EAAA;AACvB,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;;;IAIhE,OAAO,CAAC,OAAwB,EAAA;IAIhC,wBAAwB,CAAC,KAAY,EAAE,OAA6B,EAAA;AACzE,QAAA,IAAI,OAAO,EAAE,MAAM,EAAE;YACnB,OAAO;AACL,gBAAA;AACE,oBAAA,MAAM,EAAE,IAAI;oBACZ,CAAC,EAAE,KAAK,CAAC,CAAC;oBACV,CAAC,EAAE,KAAK,CAAC,CAAC;AACX,iBAAA;aACF;;AAGH,QAAA,OAAO,KAAK;;;IAIP,mBAAmB,CAAC,MAAc,EAAE,OAAkC,EAAA;AAC3E,QAAA,OAAO,EAAE;;;IAIJ,WAAW,CAAC,MAAc,EAAE,WAAmB,EAAA;QACpD,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;;AAGhB,IAAA,OAAO,CAAc,EAAU,EAAA;AACpC,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC;;IAG3C,gBAAgB,GAAA;AACrB,QAAA,OAAO,EAAE;;AAGD,IAAA,YAAY,CAAI,KAAQ,EAAA;AAChC,QAAA,OAAO,MAAM,CAAC,KAAK,CAAC;;+GA7HX,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAgChB,CAAC,QAA4B,KAAK,IAAIA,gBAAe,CAAC,QAAQ,CAAC,EAgB7B,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,oBAAA,EAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,oBAAA,EAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,6BAA6B,6GAExB,8BAA8B,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAEnC,yBAAyB,EAExB,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,wBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,kCAAkC,EAE7B,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,6BAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,+BAA+B,EApJ1E,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuFT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAGS,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAEf,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBA9F9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,OAAO;AACjB,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuFT,EAAA,CAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,UAAU,EAAE,IAAI;oBAChB,OAAO,EAAE,CAAC,gBAAgB,CAAC;AAC5B,iBAAA;8BAGiB,KAAK,EAAA,CAAA;sBADpB,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAIT,KAAK,EAAA,CAAA;sBADpB;gBAIe,IAAI,EAAA,CAAA;sBADnB;gBAIe,OAAO,EAAA,CAAA;sBADtB;gBAIe,OAAO,EAAA,CAAA;sBADtB;gBAIe,UAAU,EAAA,CAAA;sBADzB;gBAQe,kBAAkB,EAAA,CAAA;sBADjC;gBAIe,iBAAiB,EAAA,CAAA;sBADhC;gBAQe,UAAU,EAAA,CAAA;sBAHzB,KAAK;AAAC,gBAAA,IAAA,EAAA,CAAA;wBACL,SAAS,EAAE,CAAC,QAA4B,KAAK,IAAIA,gBAAe,CAAC,QAAQ,CAAC;AAC3E,qBAAA;gBAIe,QAAQ,EAAA,CAAA;sBADvB;gBAIM,oBAAoB,EAAA,CAAA;sBAD1B;gBAIM,oBAAoB,EAAA,CAAA;sBAD1B;;;MCtKU,mBAAmB,CAAA;AANhC,IAAA,WAAA,GAAA;AAOS,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,QAAQ,EAAY;AACrC,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,EAAuB;QAC5C,IAAE,CAAA,EAAA,GAAG,KAAK,EAAU;QACpB,IAAQ,CAAA,QAAA,GAAG,KAAK,EAAoB;AAI5C;;AADQ,IAAA,QAAQ;+GAPJ,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,kjBAJpB,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAID,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,QAAQ;AAClB,oBAAA,QAAQ,EAAE,EAAE;oBACZ,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;;MCCY,sBAAsB,CAAA;AANnC,IAAA,WAAA,GAAA;QAOS,IAAS,CAAA,SAAA,GAAG,KAAK,EAAgB;AACjC,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC;AAC/B,QAAA,IAAA,CAAA,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;AAOxB;;AAJQ,IAAA,QAAQ;;AAGR,IAAA,eAAe;+GATX,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,sdAJvB,gBAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAIf,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBANlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,UAAU,EAAE,IAAI;oBAChB,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA;;;MCCY,oBAAoB,CAAA;AANjC,IAAA,WAAA,GAAA;AAOS,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,CAAA,wBAAA,CAA0B,CAAC;AAE7C,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAC,CAAA,kBAAA,CAAoB,CAAC;AAEzC,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAkB,cAAc,CAAC;AAEjD,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC;AAInC;;AADQ,IAAA,QAAQ;+GAVJ,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,4mBAJrB,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAID,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBANhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,UAAU;AACpB,oBAAA,QAAQ,EAAE,EAAE;AACZ,oBAAA,UAAU,EAAE,IAAI;oBAChB,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA;;;MCCY,wBAAwB,CAAA;AANrC,IAAA,WAAA,GAAA;AAOS,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAW,KAAK,CAAC;AAOzC;;AAJQ,IAAA,QAAQ;;AAGR,IAAA,WAAW;+GAPP,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,qNAJzB,gBAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAIf,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBANpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,UAAU,EAAE,IAAI;oBAChB,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA;;;MCHY,iCAAiC,CAAA;AAD9C,IAAA,WAAA,GAAA;;QAGkB,IAAS,CAAA,SAAA,GAAG,MAAM,EAAc;;QAGhC,IAAW,CAAA,WAAA,GAAG,MAAM,EAAqB;AAgB1D;;IAbQ,eAAe,CAAC,MAAmB,EAAA;;IAGnC,iBAAiB,CAAC,MAAmB,EAAA;;IAGrC,kBAAkB,CAAC,MAAmB,EAAA;;IAGtC,uBAAuB,CAAC,YAAyB,EAAA;;AAGjD,IAAA,aAAa;+GApBT,iCAAiC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAjC,iCAAiC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAjC,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAD7C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE,IAAI,EAAE;;;MCA3C,uBAAuB,CAAA;+GAAvB,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBADnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA,EAAE,QAAQ,EAAE,cAAc,EAAE,UAAU,EAAE,IAAI,EAAE;;;MCI5C,uBAAuB,CAAA;+GAAvB,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAJnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;;MCGY,+BAA+B,CAAA;+GAA/B,+BAA+B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA/B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,+BAA+B,iFAJhC,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAID,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAN3C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,QAAQ,EAAE,EAAE;oBACZ,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;;ACSY,MAAA,UAAU,GAAG;IACxB,kBAAkB;IAClB,mBAAmB;IACnB,sBAAsB;IACtB,uBAAuB;IACvB,oBAAoB;IACpB,wBAAwB;IACxB,uBAAuB;IACvB,iCAAiC;IACjC,+BAA+B;IAE/B,6BAA6B;IAC7B,8BAA8B;IAC9B,kCAAkC;IAClC,yBAAyB;IACzB,+BAA+B;IAC/B,2BAA2B;;;AClC7B;;ACAA;;AAEG;;;;"}
1
+ {"version":3,"file":"ngx-vflow-testing.mjs","sources":["../../../projects/ngx-vflow-lib/testing/src/provide-custom-node-mocks.ts","../../../projects/ngx-vflow-lib/testing/src/directive-mocks/template-mock.directive.ts","../../../projects/ngx-vflow-lib/testing/src/component-mocks/vflow-mock.component.ts","../../../projects/ngx-vflow-lib/testing/src/component-mocks/handle-mock.component.ts","../../../projects/ngx-vflow-lib/testing/src/component-mocks/resizable-mock.component.ts","../../../projects/ngx-vflow-lib/testing/src/component-mocks/minimap-mock.component.ts","../../../projects/ngx-vflow-lib/testing/src/component-mocks/node-toolbar-mock.component.ts","../../../projects/ngx-vflow-lib/testing/src/directive-mocks/connection-controller-mock.directive.ts","../../../projects/ngx-vflow-lib/testing/src/directive-mocks/drag-handle-mock.directive.ts","../../../projects/ngx-vflow-lib/testing/src/directive-mocks/selectable-mock.directive.ts","../../../projects/ngx-vflow-lib/testing/src/component-mocks/custom-template-edge-mock.component.ts","../../../projects/ngx-vflow-lib/testing/src/vflow-mocks.ts","../../../projects/ngx-vflow-lib/testing/src/public-api.ts","../../../projects/ngx-vflow-lib/testing/src/ngx-vflow-testing.ts"],"sourcesContent":["import { Provider, signal } from '@angular/core';\nimport {\n ɵNodeModel as NodeModel,\n ɵComponentEventBusService as ComponentEventBusService,\n ɵHandleService as HandleService,\n ɵFlowSettingsService as FlowSettingsService,\n ɵFlowEntitiesService as FlowEntitiesService,\n ɵNodeAccessorService as NodeAccessorService,\n ɵRootPointerDirective as RootPointerDirective,\n ɵSpacePointContextDirective as SpacePointContextDirective,\n ɵViewportService as ViewportService,\n ɵSelectionService as SelectionService,\n Point,\n} from 'ngx-vflow';\nimport { of } from 'rxjs';\n\nconst mockModel = () => new NodeModel({ id: 'mock', type: 'default', point: { x: 0, y: 0 } });\n\nexport function provideCustomNodeMocks(): Provider[] {\n return [\n {\n provide: ComponentEventBusService,\n useValue: {\n pushEvent: () => {},\n },\n },\n {\n provide: NodeAccessorService,\n useFactory: () => ({\n model: signal(mockModel()),\n }),\n },\n FlowEntitiesService,\n\n // TODO: mocks below should be removed after the major release\n {\n provide: HandleService,\n useFactory: () => ({\n node: signal(mockModel()),\n createHandle: () => {},\n destroyHandle: () => {},\n }),\n },\n {\n provide: RootPointerDirective,\n useValue: {\n pointerMovement$: of({\n x: 0,\n y: 0,\n movementX: 0,\n movementY: 0,\n target: null,\n originalEvent: null,\n }),\n documentPointerEnd$: of(null),\n },\n },\n {\n provide: SpacePointContextDirective,\n useValue: {\n documentPointToFlowPoint: (point: Point) => point,\n },\n },\n {\n provide: SelectionService,\n useValue: {\n select: () => {},\n },\n },\n FlowSettingsService,\n ViewportService,\n ];\n}\n","import { Directive, TemplateRef, inject } from '@angular/core';\nimport type {\n ConnectionTemplateDirective,\n EdgeLabelHtmlTemplateDirective,\n EdgeTemplateDirective,\n GroupNodeTemplateDirective,\n HandleTemplateDirective,\n NodeHtmlTemplateDirective,\n} from 'ngx-vflow';\nimport { AsInterface } from '../types';\n\n@Directive({\n standalone: true,\n selector: 'ng-template[edge]',\n})\nexport class EdgeTemplateMockDirective implements AsInterface<EdgeTemplateDirective> {\n public templateRef = inject(TemplateRef);\n}\n\n@Directive({\n standalone: true,\n selector: 'ng-template[connection]',\n})\nexport class ConnectionTemplateMockDirective implements AsInterface<ConnectionTemplateDirective> {\n public templateRef = inject(TemplateRef);\n}\n\n@Directive({\n standalone: true,\n selector: 'ng-template[edgeLabelHtml]',\n})\nexport class EdgeLabelHtmlTemplateMockDirective implements AsInterface<EdgeLabelHtmlTemplateDirective> {\n public templateRef = inject(TemplateRef);\n}\n\n@Directive({\n standalone: true,\n selector: 'ng-template[nodeHtml]',\n})\nexport class NodeHtmlTemplateMockDirective implements AsInterface<NodeHtmlTemplateDirective> {\n public templateRef = inject(TemplateRef);\n}\n\n@Directive({\n standalone: true,\n selector: 'ng-template[nodeSvg]',\n})\nexport class NodeSvgTemplateMockDirective implements AsInterface<NodeSvgTemplateMockDirective> {\n public templateRef = inject(TemplateRef);\n}\n\n@Directive({\n standalone: true,\n selector: 'ng-template[groupNode]',\n})\nexport class GroupNodeTemplateMockDirective implements AsInterface<GroupNodeTemplateDirective> {\n public templateRef = inject(TemplateRef);\n}\n\n@Directive({\n standalone: true,\n selector: 'ng-template[handle]',\n})\nexport class HandleTemplateMockDirective implements AsInterface<HandleTemplateDirective> {\n public templateRef = inject(TemplateRef);\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n contentChild,\n Input,\n output,\n signal,\n WritableSignal,\n OnInit,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n Node,\n DynamicNode,\n Edge,\n SpacePoint,\n Point,\n Background,\n KeyboardShortcuts,\n ConnectionSettings,\n ViewportState,\n NodeChange,\n EdgeChange,\n FitViewOptions,\n VflowComponent,\n IntersectingNodesOptions,\n ɵConnectionModel as ConnectionModel,\n DEFAULT_OPTIMIZATION,\n} from 'ngx-vflow';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport {\n ConnectionTemplateMockDirective,\n EdgeLabelHtmlTemplateMockDirective,\n EdgeTemplateMockDirective,\n GroupNodeTemplateMockDirective,\n NodeHtmlTemplateMockDirective,\n} from '../directive-mocks/template-mock.directive';\nimport { AsInterface } from '../types';\n\n@Component({\n selector: 'vflow',\n template: `\n <ng-content />\n\n @for (node of nodes; track $index) {\n @if (node.type === 'html-template') {\n <ng-component\n [ngTemplateOutlet]=\"nodeTemplateDirective()?.templateRef ?? null\"\n [ngTemplateOutletContext]=\"{\n $implicit: {\n node: node,\n selected: createSignal(false),\n },\n }\" />\n }\n\n @if (node.type === 'template-group') {\n <ng-component\n [ngTemplateOutlet]=\"groupNodeTemplateDirective()?.templateRef ?? null\"\n [ngTemplateOutletContext]=\"{\n $implicit: {\n node: node,\n selected: createSignal(false),\n width: createSignal(node.width),\n height: createSignal(node.height),\n },\n }\" />\n }\n }\n\n @for (edge of edges; track $index) {\n @if (edge.type === 'template') {\n <ng-component\n [ngTemplateOutlet]=\"edgeTemplateDirective()?.templateRef ?? null\"\n [ngTemplateOutletContext]=\"{\n $implicit: {\n edge: edge,\n selected: createSignal(false),\n path: createSignal(''),\n markerStart: createSignal(''),\n markerEnd: createSignal(''),\n },\n }\" />\n\n @if (edge.edgeLabels?.start) {\n <ng-component\n [ngTemplateOutlet]=\"edgeLabelHtmlDirective()?.templateRef ?? null\"\n [ngTemplateOutletContext]=\"{\n $implicit: {\n edge: edge,\n },\n }\" />\n }\n\n @if (edge.edgeLabels?.center) {\n <ng-component\n [ngTemplateOutlet]=\"edgeLabelHtmlDirective()?.templateRef ?? null\"\n [ngTemplateOutletContext]=\"{\n $implicit: {\n edge: edge,\n label: edge.edgeLabels?.center,\n },\n }\" />\n }\n\n @if (edge.edgeLabels?.end) {\n <ng-component\n [ngTemplateOutlet]=\"edgeLabelHtmlDirective()?.templateRef ?? null\"\n [ngTemplateOutletContext]=\"{\n $implicit: {\n edge: edge,\n label: edge.edgeLabels?.end,\n },\n }\" />\n }\n }\n }\n\n @if (connection.type === 'template') {\n <ng-component\n [ngTemplateOutlet]=\"connectionTemplateDirective()?.templateRef ?? null\"\n [ngTemplateOutletContext]=\"{\n $implicit: {\n path: createSignal(''),\n marker: createSignal(''),\n },\n }\" />\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgTemplateOutlet],\n})\nexport class VflowMockComponent implements AsInterface<VflowComponent>, OnInit {\n @Input({ required: true })\n public readonly nodes!: Node[] | DynamicNode[];\n\n @Input()\n public readonly edges!: Edge[];\n\n @Input()\n public readonly view: [number, number] | 'auto' = [400, 400];\n\n @Input()\n public readonly minZoom = 0.5;\n\n @Input()\n public readonly maxZoom = 3;\n\n @Input()\n public readonly background: Background | string = '#fff';\n\n @Input()\n public readonly optimization = DEFAULT_OPTIMIZATION;\n\n @Input()\n public readonly entitiesSelectable = true;\n\n @Input()\n public readonly keyboardShortcuts: KeyboardShortcuts = {\n multiSelection: null,\n };\n\n @Input({\n transform: (settings: ConnectionSettings) => new ConnectionModel(settings),\n })\n public readonly connection: ConnectionModel = new ConnectionModel({});\n\n @Input()\n public readonly snapGrid!: [number, number];\n\n @Input()\n public elevateNodesOnSelect!: boolean;\n\n @Input()\n public elevateEdgesOnSelect!: boolean;\n\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n public readonly onComponentNodeEvent = output<any>();\n\n protected nodeTemplateDirective = contentChild(NodeHtmlTemplateMockDirective);\n\n protected groupNodeTemplateDirective = contentChild(GroupNodeTemplateMockDirective);\n\n protected edgeTemplateDirective = contentChild(EdgeTemplateMockDirective);\n\n protected edgeLabelHtmlDirective = contentChild(EdgeLabelHtmlTemplateMockDirective);\n\n protected connectionTemplateDirective = contentChild(ConnectionTemplateMockDirective);\n\n public viewport = signal<ViewportState>({\n x: 0,\n y: 0,\n zoom: 1,\n });\n\n public nodesChange = signal<NodeChange[]>([]);\n public edgesChange = signal<EdgeChange[]>([]);\n\n public viewportChange$ = toObservable(this.viewport);\n\n public nodesChange$ = toObservable(this.nodesChange);\n public edgesChange$ = toObservable(this.edgesChange);\n\n // eslint-disable-next-line @angular-eslint/no-empty-lifecycle-method\n public ngOnInit() {}\n\n public viewportTo(viewport: ViewportState): void {\n this.viewport.set(viewport);\n }\n\n public zoomTo(zoom: number): void {\n this.viewport.update((prev) => ({ ...prev, zoom }));\n }\n\n public panTo(point: Point): void {\n this.viewport.update((prev) => ({ ...prev, x: point.x, y: point.y }));\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public fitView(options?: FitViewOptions): void {}\n\n public documentPointToFlowPoint(point: Point, options?: { spaces: false }): Point;\n public documentPointToFlowPoint(point: Point, options: { spaces: true }): SpacePoint[];\n public documentPointToFlowPoint(point: Point, options?: { spaces: boolean }): unknown {\n if (options?.spaces) {\n return [\n {\n nodeId: null,\n x: point.x,\n y: point.y,\n },\n ];\n }\n\n return point;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public getIntesectingNodes(nodeId: string, options?: IntersectingNodesOptions): Node[] | DynamicNode[] {\n return [];\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public toNodeSpace(nodeId: string, spaceNodeId: string): Point {\n return { x: 0, y: 0 };\n }\n\n public getNode<T = unknown>(id: string): Node<T> | DynamicNode<T> | undefined {\n return this.nodes.find((node) => node.id === id);\n }\n\n public getDetachedEdges(): Edge[] {\n return [];\n }\n\n protected createSignal<T>(value: T): WritableSignal<T> {\n return signal(value);\n }\n}\n","import { ChangeDetectionStrategy, Component, input, TemplateRef, OnInit } from '@angular/core';\nimport type { HandleComponent, Position } from 'ngx-vflow';\nimport { AsInterface } from '../types';\n\n@Component({\n selector: 'handle',\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class HandleMockComponent implements AsInterface<HandleComponent>, OnInit {\n public position = input.required<Position>();\n public type = input.required<'source' | 'target'>();\n public id = input<string>();\n public template = input<TemplateRef<any>>();\n\n // eslint-disable-next-line @angular-eslint/no-empty-lifecycle-method\n public ngOnInit(): void {}\n}\n","import { ChangeDetectionStrategy, Component, input, OnInit, AfterViewInit } from '@angular/core';\nimport type { ResizableComponent } from 'ngx-vflow';\nimport { AsInterface } from '../types';\n\n@Component({\n selector: '[resizable]',\n template: '<ng-content />',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ResizableMockComponent implements AsInterface<ResizableComponent>, OnInit, AfterViewInit {\n public resizable = input<boolean | ''>();\n public resizerColor = input('#2e414c');\n public gap = input(1.5);\n\n // eslint-disable-next-line @angular-eslint/no-empty-lifecycle-method\n public ngOnInit() {}\n\n // eslint-disable-next-line @angular-eslint/no-empty-lifecycle-method\n public ngAfterViewInit() {}\n}\n","import { ChangeDetectionStrategy, Component, input, OnInit } from '@angular/core';\nimport type { MiniMapComponent, MiniMapPosition } from 'ngx-vflow';\nimport { AsInterface } from '../types';\n\n@Component({\n selector: 'mini-map',\n template: '',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MiniMapMockComponent implements AsInterface<MiniMapComponent>, OnInit {\n public maskColor = input(`rgba(215, 215, 215, 0.6)`);\n\n public strokeColor = input(`rgb(200, 200, 200)`);\n\n public position = input<MiniMapPosition>('bottom-right');\n\n public scaleOnHover = input(false);\n\n // eslint-disable-next-line @angular-eslint/no-empty-lifecycle-method\n public ngOnInit() {}\n}\n","import { ChangeDetectionStrategy, Component, input, OnInit, OnDestroy } from '@angular/core';\nimport type { Position, NodeToolbarComponent } from 'ngx-vflow';\nimport { AsInterface } from '../types';\n\n@Component({\n selector: 'node-toolbar',\n template: '<ng-content />',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NodeToolbarMockComponent implements AsInterface<NodeToolbarComponent>, OnInit, OnDestroy {\n public position = input<Position>('top');\n\n // eslint-disable-next-line @angular-eslint/no-empty-lifecycle-method\n public ngOnInit() {}\n\n // eslint-disable-next-line @angular-eslint/no-empty-lifecycle-method\n public ngOnDestroy() {}\n}\n","import { Directive, output } from '@angular/core';\nimport { Connection, ReconnectionEvent } from 'ngx-vflow';\nimport { AsInterface } from '../types';\nimport type { ConnectionControllerDirective, ɵHandleModel as HandleModel } from 'ngx-vflow';\n\n@Directive({ selector: '[onConnect]', standalone: true })\nexport class ConnectionControllerMockDirective implements AsInterface<ConnectionControllerDirective> {\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n public readonly onConnect = output<Connection>();\n\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n public readonly onReconnect = output<ReconnectionEvent>();\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public startConnection(handle: HandleModel): void {}\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public startReconnection(handle: HandleModel): void {}\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public validateConnection(handle: HandleModel): void {}\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public resetValidateConnection(targetHandle: HandleModel): void {}\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public endConnection(): void {}\n}\n","import { Directive } from '@angular/core';\nimport { AsInterface } from '../types';\nimport type { DragHandleDirective } from 'ngx-vflow';\n\n@Directive({ selector: '[dragHandle]', standalone: true })\nexport class DragHandleMockDirective implements AsInterface<DragHandleDirective> {}\n","import { Directive } from '@angular/core';\nimport { AsInterface } from '../types';\nimport type { SelectableDirective } from 'ngx-vflow';\n\n@Directive({\n selector: '[selectable]',\n standalone: true,\n})\nexport class SelectableMockDirective implements AsInterface<SelectableDirective> {}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { AsInterface } from '../types';\nimport type { CustomTemplateEdgeComponent } from 'ngx-vflow';\n\n@Component({\n selector: 'g[customTemplateEdge]',\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class CustomTemplateEdgeMockComponent implements AsInterface<CustomTemplateEdgeComponent> {}\n","import { CustomTemplateEdgeMockComponent } from './component-mocks/custom-template-edge-mock.component';\nimport { HandleMockComponent } from './component-mocks/handle-mock.component';\nimport { MiniMapMockComponent } from './component-mocks/minimap-mock.component';\nimport { NodeToolbarMockComponent } from './component-mocks/node-toolbar-mock.component';\nimport { ResizableMockComponent } from './component-mocks/resizable-mock.component';\nimport { VflowMockComponent } from './component-mocks/vflow-mock.component';\nimport { ConnectionControllerMockDirective } from './directive-mocks/connection-controller-mock.directive';\nimport { DragHandleMockDirective } from './directive-mocks/drag-handle-mock.directive';\nimport { SelectableMockDirective } from './directive-mocks/selectable-mock.directive';\nimport {\n ConnectionTemplateMockDirective,\n EdgeLabelHtmlTemplateMockDirective,\n EdgeTemplateMockDirective,\n GroupNodeTemplateMockDirective,\n HandleTemplateMockDirective,\n NodeHtmlTemplateMockDirective,\n} from './directive-mocks/template-mock.directive';\n\nexport const VflowMocks = [\n VflowMockComponent,\n HandleMockComponent,\n ResizableMockComponent,\n SelectableMockDirective,\n MiniMapMockComponent,\n NodeToolbarMockComponent,\n DragHandleMockDirective,\n ConnectionControllerMockDirective,\n CustomTemplateEdgeMockComponent,\n\n NodeHtmlTemplateMockDirective,\n GroupNodeTemplateMockDirective,\n EdgeLabelHtmlTemplateMockDirective,\n EdgeTemplateMockDirective,\n ConnectionTemplateMockDirective,\n HandleTemplateMockDirective,\n] as const;\n","// Testing\nexport * from './provide-custom-node-mocks';\nexport * from './component-mocks/vflow-mock.component';\nexport * from './component-mocks/handle-mock.component';\nexport * from './component-mocks/resizable-mock.component';\nexport * from './component-mocks/minimap-mock.component';\nexport * from './component-mocks/node-toolbar-mock.component';\nexport * from './directive-mocks/connection-controller-mock.directive';\nexport * from './directive-mocks/drag-handle-mock.directive';\nexport * from './directive-mocks/selectable-mock.directive';\nexport * from './directive-mocks/template-mock.directive';\nexport * from './vflow-mocks';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["NodeModel","ComponentEventBusService","NodeAccessorService","FlowEntitiesService","HandleService","RootPointerDirective","SpacePointContextDirective","SelectionService","FlowSettingsService","ViewportService","ConnectionModel"],"mappings":";;;;;;;AAgBA,MAAM,SAAS,GAAG,MAAM,IAAIA,UAAS,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;SAE7E,sBAAsB,GAAA;IACpC,OAAO;AACL,QAAA;AACE,YAAA,OAAO,EAAEC,yBAAwB;AACjC,YAAA,QAAQ,EAAE;AACR,gBAAA,SAAS,EAAE,MAAK,GAAG;AACpB,aAAA;AACF,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAEC,oBAAmB;AAC5B,YAAA,UAAU,EAAE,OAAO;AACjB,gBAAA,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC;aAC3B,CAAC;AACH,SAAA;QACDC,oBAAmB;;AAGnB,QAAA;AACE,YAAA,OAAO,EAAEC,cAAa;AACtB,YAAA,UAAU,EAAE,OAAO;AACjB,gBAAA,IAAI,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC;AACzB,gBAAA,YAAY,EAAE,MAAK,GAAG;AACtB,gBAAA,aAAa,EAAE,MAAK,GAAG;aACxB,CAAC;AACH,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAEC,qBAAoB;AAC7B,YAAA,QAAQ,EAAE;gBACR,gBAAgB,EAAE,EAAE,CAAC;AACnB,oBAAA,CAAC,EAAE,CAAC;AACJ,oBAAA,CAAC,EAAE,CAAC;AACJ,oBAAA,SAAS,EAAE,CAAC;AACZ,oBAAA,SAAS,EAAE,CAAC;AACZ,oBAAA,MAAM,EAAE,IAAI;AACZ,oBAAA,aAAa,EAAE,IAAI;iBACpB,CAAC;AACF,gBAAA,mBAAmB,EAAE,EAAE,CAAC,IAAI,CAAC;AAC9B,aAAA;AACF,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAEC,2BAA0B;AACnC,YAAA,QAAQ,EAAE;AACR,gBAAA,wBAAwB,EAAE,CAAC,KAAY,KAAK,KAAK;AAClD,aAAA;AACF,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAEC,iBAAgB;AACzB,YAAA,QAAQ,EAAE;AACR,gBAAA,MAAM,EAAE,MAAK,GAAG;AACjB,aAAA;AACF,SAAA;QACDC,oBAAmB;QACnBC,gBAAe;KAChB;AACH;;MCzDa,yBAAyB,CAAA;AAJtC,IAAA,WAAA,GAAA;AAKS,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AACzC;+GAFY,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAJrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,mBAAmB;AAC9B,iBAAA;;MASY,+BAA+B,CAAA;AAJ5C,IAAA,WAAA,GAAA;AAKS,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AACzC;+GAFY,+BAA+B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAA/B,+BAA+B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAA/B,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAJ3C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,yBAAyB;AACpC,iBAAA;;MASY,kCAAkC,CAAA;AAJ/C,IAAA,WAAA,GAAA;AAKS,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AACzC;+GAFY,kCAAkC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAlC,kCAAkC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAlC,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAJ9C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,4BAA4B;AACvC,iBAAA;;MASY,6BAA6B,CAAA;AAJ1C,IAAA,WAAA,GAAA;AAKS,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AACzC;+GAFY,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAA7B,6BAA6B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAA7B,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAJzC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,uBAAuB;AAClC,iBAAA;;MASY,4BAA4B,CAAA;AAJzC,IAAA,WAAA,GAAA;AAKS,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AACzC;+GAFY,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAA5B,4BAA4B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAA5B,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAJxC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,sBAAsB;AACjC,iBAAA;;MASY,8BAA8B,CAAA;AAJ3C,IAAA,WAAA,GAAA;AAKS,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AACzC;+GAFY,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAA9B,8BAA8B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAA9B,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAJ1C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,wBAAwB;AACnC,iBAAA;;MASY,2BAA2B,CAAA;AAJxC,IAAA,WAAA,GAAA;AAKS,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AACzC;+GAFY,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAA3B,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAA3B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAJvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,qBAAqB;AAChC,iBAAA;;;MCuEY,kBAAkB,CAAA;AA9F/B,IAAA,WAAA,GAAA;AAsGkB,QAAA,IAAA,CAAA,IAAI,GAA8B,CAAC,GAAG,EAAE,GAAG,CAAC;QAG5C,IAAO,CAAA,OAAA,GAAG,GAAG;QAGb,IAAO,CAAA,OAAA,GAAG,CAAC;QAGX,IAAU,CAAA,UAAA,GAAwB,MAAM;QAGxC,IAAY,CAAA,YAAA,GAAG,oBAAoB;QAGnC,IAAkB,CAAA,kBAAA,GAAG,IAAI;AAGzB,QAAA,IAAA,CAAA,iBAAiB,GAAsB;AACrD,YAAA,cAAc,EAAE,IAAI;SACrB;AAKe,QAAA,IAAA,CAAA,UAAU,GAAoB,IAAIC,gBAAe,CAAC,EAAE,CAAC;;QAYrD,IAAoB,CAAA,oBAAA,GAAG,MAAM,EAAO;AAE1C,QAAA,IAAA,CAAA,qBAAqB,GAAG,YAAY,CAAC,6BAA6B,CAAC;AAEnE,QAAA,IAAA,CAAA,0BAA0B,GAAG,YAAY,CAAC,8BAA8B,CAAC;AAEzE,QAAA,IAAA,CAAA,qBAAqB,GAAG,YAAY,CAAC,yBAAyB,CAAC;AAE/D,QAAA,IAAA,CAAA,sBAAsB,GAAG,YAAY,CAAC,kCAAkC,CAAC;AAEzE,QAAA,IAAA,CAAA,2BAA2B,GAAG,YAAY,CAAC,+BAA+B,CAAC;QAE9E,IAAQ,CAAA,QAAA,GAAG,MAAM,CAAgB;AACtC,YAAA,CAAC,EAAE,CAAC;AACJ,YAAA,CAAC,EAAE,CAAC;AACJ,YAAA,IAAI,EAAE,CAAC;AACR,SAAA,CAAC;AAEK,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAe,EAAE,CAAC;AACtC,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAe,EAAE,CAAC;AAEtC,QAAA,IAAA,CAAA,eAAe,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC;AAE7C,QAAA,IAAA,CAAA,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC;AAC7C,QAAA,IAAA,CAAA,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC;AAyDrD;;AAtDQ,IAAA,QAAQ;AAER,IAAA,UAAU,CAAC,QAAuB,EAAA;AACvC,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC;;AAGtB,IAAA,MAAM,CAAC,IAAY,EAAA;AACxB,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,MAAM,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;;AAG9C,IAAA,KAAK,CAAC,KAAY,EAAA;AACvB,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;;;IAIhE,OAAO,CAAC,OAAwB,EAAA;IAIhC,wBAAwB,CAAC,KAAY,EAAE,OAA6B,EAAA;AACzE,QAAA,IAAI,OAAO,EAAE,MAAM,EAAE;YACnB,OAAO;AACL,gBAAA;AACE,oBAAA,MAAM,EAAE,IAAI;oBACZ,CAAC,EAAE,KAAK,CAAC,CAAC;oBACV,CAAC,EAAE,KAAK,CAAC,CAAC;AACX,iBAAA;aACF;;AAGH,QAAA,OAAO,KAAK;;;IAIP,mBAAmB,CAAC,MAAc,EAAE,OAAkC,EAAA;AAC3E,QAAA,OAAO,EAAE;;;IAIJ,WAAW,CAAC,MAAc,EAAE,WAAmB,EAAA;QACpD,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;;AAGhB,IAAA,OAAO,CAAc,EAAU,EAAA;AACpC,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC;;IAG3C,gBAAgB,GAAA;AACrB,QAAA,OAAO,EAAE;;AAGD,IAAA,YAAY,CAAI,KAAQ,EAAA;AAChC,QAAA,OAAO,MAAM,CAAC,KAAK,CAAC;;+GA5HX,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,OAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EA+BhB,CAAC,QAA4B,KAAK,IAAIA,gBAAe,CAAC,QAAQ,CAAC,CAgB7B,EAAA,QAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,6BAA6B,6GAExB,8BAA8B,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAEnC,yBAAyB,EAExB,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,wBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,kCAAkC,EAE7B,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,6BAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,+BAA+B,EAnJ1E,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuFT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAGS,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAEf,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBA9F9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,OAAO;AACjB,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuFT,EAAA,CAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,UAAU,EAAE,IAAI;oBAChB,OAAO,EAAE,CAAC,gBAAgB,CAAC;AAC5B,iBAAA;8BAGiB,KAAK,EAAA,CAAA;sBADpB,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAIT,KAAK,EAAA,CAAA;sBADpB;gBAIe,IAAI,EAAA,CAAA;sBADnB;gBAIe,OAAO,EAAA,CAAA;sBADtB;gBAIe,OAAO,EAAA,CAAA;sBADtB;gBAIe,UAAU,EAAA,CAAA;sBADzB;gBAIe,YAAY,EAAA,CAAA;sBAD3B;gBAIe,kBAAkB,EAAA,CAAA;sBADjC;gBAIe,iBAAiB,EAAA,CAAA;sBADhC;gBAQe,UAAU,EAAA,CAAA;sBAHzB,KAAK;AAAC,gBAAA,IAAA,EAAA,CAAA;wBACL,SAAS,EAAE,CAAC,QAA4B,KAAK,IAAIA,gBAAe,CAAC,QAAQ,CAAC;AAC3E,qBAAA;gBAIe,QAAQ,EAAA,CAAA;sBADvB;gBAIM,oBAAoB,EAAA,CAAA;sBAD1B;gBAIM,oBAAoB,EAAA,CAAA;sBAD1B;;;MCpKU,mBAAmB,CAAA;AANhC,IAAA,WAAA,GAAA;AAOS,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,QAAQ,EAAY;AACrC,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,EAAuB;QAC5C,IAAE,CAAA,EAAA,GAAG,KAAK,EAAU;QACpB,IAAQ,CAAA,QAAA,GAAG,KAAK,EAAoB;AAI5C;;AADQ,IAAA,QAAQ;+GAPJ,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,kjBAJpB,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAID,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,QAAQ;AAClB,oBAAA,QAAQ,EAAE,EAAE;oBACZ,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;;MCCY,sBAAsB,CAAA;AANnC,IAAA,WAAA,GAAA;QAOS,IAAS,CAAA,SAAA,GAAG,KAAK,EAAgB;AACjC,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC;AAC/B,QAAA,IAAA,CAAA,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;AAOxB;;AAJQ,IAAA,QAAQ;;AAGR,IAAA,eAAe;+GATX,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,sdAJvB,gBAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAIf,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBANlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,UAAU,EAAE,IAAI;oBAChB,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA;;;MCCY,oBAAoB,CAAA;AANjC,IAAA,WAAA,GAAA;AAOS,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,CAAA,wBAAA,CAA0B,CAAC;AAE7C,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAC,CAAA,kBAAA,CAAoB,CAAC;AAEzC,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAkB,cAAc,CAAC;AAEjD,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC;AAInC;;AADQ,IAAA,QAAQ;+GAVJ,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,4mBAJrB,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAID,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBANhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,UAAU;AACpB,oBAAA,QAAQ,EAAE,EAAE;AACZ,oBAAA,UAAU,EAAE,IAAI;oBAChB,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA;;;MCCY,wBAAwB,CAAA;AANrC,IAAA,WAAA,GAAA;AAOS,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAW,KAAK,CAAC;AAOzC;;AAJQ,IAAA,QAAQ;;AAGR,IAAA,WAAW;+GAPP,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,qNAJzB,gBAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAIf,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBANpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,UAAU,EAAE,IAAI;oBAChB,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA;;;MCHY,iCAAiC,CAAA;AAD9C,IAAA,WAAA,GAAA;;QAGkB,IAAS,CAAA,SAAA,GAAG,MAAM,EAAc;;QAGhC,IAAW,CAAA,WAAA,GAAG,MAAM,EAAqB;AAgB1D;;IAbQ,eAAe,CAAC,MAAmB,EAAA;;IAGnC,iBAAiB,CAAC,MAAmB,EAAA;;IAGrC,kBAAkB,CAAC,MAAmB,EAAA;;IAGtC,uBAAuB,CAAC,YAAyB,EAAA;;AAGjD,IAAA,aAAa;+GApBT,iCAAiC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAjC,iCAAiC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAjC,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAD7C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE,IAAI,EAAE;;;MCA3C,uBAAuB,CAAA;+GAAvB,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBADnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA,EAAE,QAAQ,EAAE,cAAc,EAAE,UAAU,EAAE,IAAI,EAAE;;;MCI5C,uBAAuB,CAAA;+GAAvB,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAJnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;;MCGY,+BAA+B,CAAA;+GAA/B,+BAA+B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA/B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,+BAA+B,iFAJhC,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAID,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAN3C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,QAAQ,EAAE,EAAE;oBACZ,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;;ACSY,MAAA,UAAU,GAAG;IACxB,kBAAkB;IAClB,mBAAmB;IACnB,sBAAsB;IACtB,uBAAuB;IACvB,oBAAoB;IACpB,wBAAwB;IACxB,uBAAuB;IACvB,iCAAiC;IACjC,+BAA+B;IAE/B,6BAA6B;IAC7B,8BAA8B;IAC9B,kCAAkC;IAClC,yBAAyB;IACzB,+BAA+B;IAC/B,2BAA2B;;;AClC7B;;ACAA;;AAEG;;;;"}