@acorex/cdk 20.3.21 → 20.3.23

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 (45) hide show
  1. package/fesm2022/acorex-cdk-accordion.mjs +19 -19
  2. package/fesm2022/acorex-cdk-accordion.mjs.map +1 -1
  3. package/fesm2022/acorex-cdk-carousel.mjs +3 -3
  4. package/fesm2022/acorex-cdk-carousel.mjs.map +1 -1
  5. package/fesm2022/acorex-cdk-clipboard.mjs +6 -6
  6. package/fesm2022/acorex-cdk-clipboard.mjs.map +1 -1
  7. package/fesm2022/acorex-cdk-common.mjs +91 -91
  8. package/fesm2022/acorex-cdk-common.mjs.map +1 -1
  9. package/fesm2022/acorex-cdk-dom.mjs +3 -3
  10. package/fesm2022/acorex-cdk-dom.mjs.map +1 -1
  11. package/fesm2022/acorex-cdk-double-click.mjs +3 -3
  12. package/fesm2022/acorex-cdk-double-click.mjs.map +1 -1
  13. package/fesm2022/acorex-cdk-drag-drop.mjs +16 -16
  14. package/fesm2022/acorex-cdk-drag-drop.mjs.map +1 -1
  15. package/fesm2022/acorex-cdk-drawer.mjs +10 -10
  16. package/fesm2022/acorex-cdk-drawer.mjs.map +1 -1
  17. package/fesm2022/acorex-cdk-focus-trap.mjs +3 -3
  18. package/fesm2022/acorex-cdk-focus-trap.mjs.map +1 -1
  19. package/fesm2022/acorex-cdk-full-screen.mjs +3 -3
  20. package/fesm2022/acorex-cdk-full-screen.mjs.map +1 -1
  21. package/fesm2022/acorex-cdk-input-mask.mjs +3 -3
  22. package/fesm2022/acorex-cdk-input-mask.mjs.map +1 -1
  23. package/fesm2022/acorex-cdk-list-navigation.mjs +10 -10
  24. package/fesm2022/acorex-cdk-list-navigation.mjs.map +1 -1
  25. package/fesm2022/acorex-cdk-outline.mjs +6 -6
  26. package/fesm2022/acorex-cdk-outline.mjs.map +1 -1
  27. package/fesm2022/acorex-cdk-overlay.mjs +3 -3
  28. package/fesm2022/acorex-cdk-overlay.mjs.map +1 -1
  29. package/fesm2022/acorex-cdk-pan-view.mjs +3 -3
  30. package/fesm2022/acorex-cdk-pan-view.mjs.map +1 -1
  31. package/fesm2022/acorex-cdk-resizable.mjs +3 -3
  32. package/fesm2022/acorex-cdk-resizable.mjs.map +1 -1
  33. package/fesm2022/acorex-cdk-selection.mjs +10 -10
  34. package/fesm2022/acorex-cdk-selection.mjs.map +1 -1
  35. package/fesm2022/acorex-cdk-sliding-item.mjs +3 -3
  36. package/fesm2022/acorex-cdk-sliding-item.mjs.map +1 -1
  37. package/fesm2022/acorex-cdk-sticky.mjs +3 -3
  38. package/fesm2022/acorex-cdk-sticky.mjs.map +1 -1
  39. package/fesm2022/acorex-cdk-uploader.mjs +9 -9
  40. package/fesm2022/acorex-cdk-uploader.mjs.map +1 -1
  41. package/fesm2022/acorex-cdk-virtual-scroll.mjs +10 -10
  42. package/fesm2022/acorex-cdk-virtual-scroll.mjs.map +1 -1
  43. package/fesm2022/acorex-cdk-z-index.mjs +3 -3
  44. package/fesm2022/acorex-cdk-z-index.mjs.map +1 -1
  45. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-cdk-overlay.mjs","sources":["../tmp-esm2022/overlay/lib/overlay.types.js","../tmp-esm2022/overlay/lib/overlay.service.js","../tmp-esm2022/overlay/acorex-cdk-overlay.js"],"sourcesContent":["/**\n * Calculates the position of an overlay element relative to an anchor element.\n */\nexport function calculateAnchorPosition(anchorRect, overlayRect, position) {\n let left = 0;\n let top = 0;\n // Calculate origin point on anchor\n switch (position.originX) {\n case 'start':\n left = anchorRect.left;\n break;\n case 'center':\n left = anchorRect.left + anchorRect.width / 2;\n break;\n case 'end':\n left = anchorRect.right;\n break;\n }\n switch (position.originY) {\n case 'top':\n top = anchorRect.top;\n break;\n case 'center':\n top = anchorRect.top + anchorRect.height / 2;\n break;\n case 'bottom':\n top = anchorRect.bottom;\n break;\n }\n // Adjust for overlay alignment\n switch (position.overlayX) {\n case 'start':\n // left stays the same\n break;\n case 'center':\n left -= overlayRect.width / 2;\n break;\n case 'end':\n left -= overlayRect.width;\n break;\n }\n switch (position.overlayY) {\n case 'top':\n // top stays the same\n break;\n case 'center':\n top -= overlayRect.height / 2;\n break;\n case 'bottom':\n top -= overlayRect.height;\n break;\n }\n // Apply offsets\n if (position.offsetX) {\n left += position.offsetX;\n }\n if (position.offsetY) {\n top += position.offsetY;\n }\n return { top, left };\n}\n/**\n * Checks if the overlay position fits within the viewport.\n */\nexport function fitsInViewport(position, overlayRect, viewportWidth, viewportHeight) {\n return position.left + overlayRect.width <= viewportWidth && position.top + overlayRect.height <= viewportHeight;\n}\n/**\n * Finds the best position for an overlay that fits in the viewport.\n */\nexport function findBestPosition(anchorRect, overlayRect, positions, viewportWidth, viewportHeight) {\n for (const position of positions) {\n const coords = calculateAnchorPosition(anchorRect, overlayRect, position);\n if (fitsInViewport(coords, overlayRect, viewportWidth, viewportHeight)) {\n return { position, coords };\n }\n }\n // Fallback to first position if none fit\n const fallbackCoords = calculateAnchorPosition(anchorRect, overlayRect, positions[0]);\n return { position: positions[0], coords: fallbackCoords };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Nkay9vdmVybGF5L3NyYy9saWIvb3ZlcmxheS50eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUF5REE7O0dBRUc7QUFDSCxNQUFNLFVBQVUsdUJBQXVCLENBQ3JDLFVBQW1CLEVBQ25CLFdBQW9CLEVBQ3BCLFFBQTZCO0lBRTdCLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQztJQUNiLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQztJQUVaLG1DQUFtQztJQUNuQyxRQUFRLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN6QixLQUFLLE9BQU87WUFDVixJQUFJLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQztZQUN2QixNQUFNO1FBQ1IsS0FBSyxRQUFRO1lBQ1gsSUFBSSxHQUFHLFVBQVUsQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7WUFDOUMsTUFBTTtRQUNSLEtBQUssS0FBSztZQUNSLElBQUksR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDO1lBQ3hCLE1BQU07SUFDVixDQUFDO0lBRUQsUUFBUSxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDekIsS0FBSyxLQUFLO1lBQ1IsR0FBRyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUM7WUFDckIsTUFBTTtRQUNSLEtBQUssUUFBUTtZQUNYLEdBQUcsR0FBRyxVQUFVLENBQUMsR0FBRyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1lBQzdDLE1BQU07UUFDUixLQUFLLFFBQVE7WUFDWCxHQUFHLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQztZQUN4QixNQUFNO0lBQ1YsQ0FBQztJQUVELCtCQUErQjtJQUMvQixRQUFRLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUMxQixLQUFLLE9BQU87WUFDVixzQkFBc0I7WUFDdEIsTUFBTTtRQUNSLEtBQUssUUFBUTtZQUNYLElBQUksSUFBSSxXQUFXLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztZQUM5QixNQUFNO1FBQ1IsS0FBSyxLQUFLO1lBQ1IsSUFBSSxJQUFJLFdBQVcsQ0FBQyxLQUFLLENBQUM7WUFDMUIsTUFBTTtJQUNWLENBQUM7SUFFRCxRQUFRLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUMxQixLQUFLLEtBQUs7WUFDUixxQkFBcUI7WUFDckIsTUFBTTtRQUNSLEtBQUssUUFBUTtZQUNYLEdBQUcsSUFBSSxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztZQUM5QixNQUFNO1FBQ1IsS0FBSyxRQUFRO1lBQ1gsR0FBRyxJQUFJLFdBQVcsQ0FBQyxNQUFNLENBQUM7WUFDMUIsTUFBTTtJQUNWLENBQUM7SUFFRCxnQkFBZ0I7SUFDaEIsSUFBSSxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDckIsSUFBSSxJQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUM7SUFDM0IsQ0FBQztJQUNELElBQUksUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3JCLEdBQUcsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDO0lBQzFCLENBQUM7SUFFRCxPQUFPLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDO0FBQ3ZCLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxjQUFjLENBQzVCLFFBQXVDLEVBQ3ZDLFdBQW9CLEVBQ3BCLGFBQXFCLEVBQ3JCLGNBQXNCO0lBRXRCLE9BQU8sUUFBUSxDQUFDLElBQUksR0FBRyxXQUFXLENBQUMsS0FBSyxJQUFJLGFBQWEsSUFBSSxRQUFRLENBQUMsR0FBRyxHQUFHLFdBQVcsQ0FBQyxNQUFNLElBQUksY0FBYyxDQUFDO0FBQ25ILENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxnQkFBZ0IsQ0FDOUIsVUFBbUIsRUFDbkIsV0FBb0IsRUFDcEIsU0FBZ0MsRUFDaEMsYUFBcUIsRUFDckIsY0FBc0I7SUFFdEIsS0FBSyxNQUFNLFFBQVEsSUFBSSxTQUFTLEVBQUUsQ0FBQztRQUNqQyxNQUFNLE1BQU0sR0FBRyx1QkFBdUIsQ0FBQyxVQUFVLEVBQUUsV0FBVyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBRTFFLElBQUksY0FBYyxDQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLGNBQWMsQ0FBQyxFQUFFLENBQUM7WUFDdkUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBQztRQUM5QixDQUFDO0lBQ0gsQ0FBQztJQUVELHlDQUF5QztJQUN6QyxNQUFNLGNBQWMsR0FBRyx1QkFBdUIsQ0FBQyxVQUFVLEVBQUUsV0FBVyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RGLE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsQ0FBQztBQUM1RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhDb25uZWN0ZWRQb3NpdGlvbiwgQVhQbGFjZW1lbnQsIEFYUGxhY2VtZW50VHlwZSB9IGZyb20gJ0BhY29yZXgvY2RrL2NvbW1vbic7XG5pbXBvcnQgeyBBWENvbXBvbmVudE9wdGlvbnMgfSBmcm9tICdAYWNvcmV4L2NvcmUvY29tcG9uZW50cyc7XG5pbXBvcnQgeyBBWFpUb2tlbiB9IGZyb20gJ0BhY29yZXgvY29yZS96LWluZGV4JztcbmltcG9ydCB7IENvbXBvbmVudFJlZiwgRWxlbWVudFJlZiwgRW1iZWRkZWRWaWV3UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhPdmVybGF5UmVmPFQ+IHtcbiAgaW5zdGFuY2U6IEVtYmVkZGVkVmlld1JlZjxUPiB8IENvbXBvbmVudFJlZjxUPjtcbiAgLyoqIFVwZGF0ZXMgdGhlIG92ZXJsYXkgcG9zaXRpb24gcmVsYXRpdmUgdG8gdGhlIGFuY2hvciAqL1xuICB1cGRhdGVQb3NpdGlvbjogKCkgPT4gdm9pZDtcbiAgLyoqIERlc3Ryb3lzIHRoZSBvdmVybGF5IGFuZCByZW1vdmVzIGl0IGZyb20gdGhlIERPTSAqL1xuICBkaXNwb3NlOiAoKSA9PiB2b2lkO1xuICAvKiogVGhlIG92ZXJsYXkgY29udGFpbmVyIGVsZW1lbnQgKi9cbiAgb3ZlcmxheUVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgbnVsbDtcbiAgLyoqIFRoZSB6LWluZGV4IHRva2VuIGZvciB0aGlzIG92ZXJsYXkgKi9cbiAgelRva2VuOiBBWFpUb2tlbiB8IG51bGw7XG4gIC8qKiBCcmluZ3MgdGhpcyBvdmVybGF5IHRvIHRoZSBmcm9udCBvZiBhbGwgb3RoZXIgb3ZlcmxheXMgKi9cbiAgYnJpbmdUb0Zyb250OiAoKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYT3ZlcmxheUFuY2hvck9wdGlvbnMge1xuICAvKiogVGhlIGFuY2hvciBlbGVtZW50IHRvIHBvc2l0aW9uIHJlbGF0aXZlIHRvICovXG4gIGFuY2hvcjogSFRNTEVsZW1lbnQgfCBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcbiAgLyoqIFBsYWNlbWVudCBvZiB0aGUgb3ZlcmxheSByZWxhdGl2ZSB0byB0aGUgYW5jaG9yICovXG4gIHBsYWNlbWVudD86IEFYUGxhY2VtZW50VHlwZTtcbiAgLyoqIEhvcml6b250YWwgb2Zmc2V0IGluIHBpeGVscyAqL1xuICBvZmZzZXRYPzogbnVtYmVyO1xuICAvKiogVmVydGljYWwgb2Zmc2V0IGluIHBpeGVscyAqL1xuICBvZmZzZXRZPzogbnVtYmVyO1xuICAvKiogV2hldGhlciB0byBmbGlwIHRoZSBvdmVybGF5IHdoZW4gaXQgb3ZlcmZsb3dzIHRoZSB2aWV3cG9ydCAqL1xuICBhdXRvRmxpcD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhPdmVybGF5T3B0aW9ucyBleHRlbmRzIEFYQ29tcG9uZW50T3B0aW9ucyB7XG4gIGJhY2tkcm9wPzoge1xuICAgIGVuYWJsZWQ/OiBib29sZWFuO1xuICAgIGJhY2tncm91bmQ/OiBib29sZWFuO1xuICAgIGJhY2tkcm9wQ2xhc3M/OiBzdHJpbmc7XG4gICAgY2xvc2VPbkNsaWNrPzogYm9vbGVhbjtcbiAgfTtcbiAgcG9zaXRpb24/OiBBWFBsYWNlbWVudDtcbiAgLyoqIEFuY2hvci1iYXNlZCBwb3NpdGlvbmluZyBvcHRpb25zIGZvciB0b29sdGlwcywgcG9wb3ZlcnMsIGV0Yy4gKi9cbiAgYW5jaG9yT3B0aW9ucz86IEFYT3ZlcmxheUFuY2hvck9wdGlvbnM7XG4gIC8qKiBDdXN0b20gQ1NTIGNsYXNzIGZvciB0aGUgb3ZlcmxheSBwYW5lbCAqL1xuICBwYW5lbENsYXNzPzogc3RyaW5nIHwgc3RyaW5nW107XG4gIC8qKiBXaGV0aGVyIHRvIGNsb3NlIHdoZW4gY2xpY2tpbmcgb3V0c2lkZSAqL1xuICBjbG9zZU9uT3V0c2lkZUNsaWNrPzogYm9vbGVhbjtcbiAgLyoqIFdoZXRoZXIgdG8gY2xvc2Ugd2hlbiBwcmVzc2luZyBFc2NhcGUgKi9cbiAgY2xvc2VPbkVzY2FwZT86IGJvb2xlYW47XG4gIC8qKiBXaWR0aCBvZiB0aGUgb3ZlcmxheSBjb250YWluZXIgKGUuZy4sICdhdXRvJywgJzIwMHB4JywgJzEwMCUnKSAqL1xuICB3aWR0aD86IHN0cmluZztcbiAgLyoqIENhbGxiYWNrIHdoZW4gdGhlIG92ZXJsYXkgaXMgZGlzcG9zZWQgKGUuZy4sIGR1ZSB0byBzY3JvbGwpICovXG4gIG9uRGlzcG9zZT86ICgpID0+IHZvaWQ7XG4gIC8qKiBXaGV0aGVyIHRvIHVzZSBjZW50ZXJlZCBjb250YWluZXIgKGRlZmF1bHQ6IHRydWUpLiBTZXQgdG8gZmFsc2UgZm9yIHBvc2l0aW9uZWQgb3ZlcmxheXMgbGlrZSB0b2FzdHMgKi9cbiAgY2VudGVyZWQ/OiBib29sZWFuO1xuICBhY3Rpb25TaGVldFN0eWxlPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBDYWxjdWxhdGVzIHRoZSBwb3NpdGlvbiBvZiBhbiBvdmVybGF5IGVsZW1lbnQgcmVsYXRpdmUgdG8gYW4gYW5jaG9yIGVsZW1lbnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjYWxjdWxhdGVBbmNob3JQb3NpdGlvbihcbiAgYW5jaG9yUmVjdDogRE9NUmVjdCxcbiAgb3ZlcmxheVJlY3Q6IERPTVJlY3QsXG4gIHBvc2l0aW9uOiBBWENvbm5lY3RlZFBvc2l0aW9uLFxuKTogeyB0b3A6IG51bWJlcjsgbGVmdDogbnVtYmVyIH0ge1xuICBsZXQgbGVmdCA9IDA7XG4gIGxldCB0b3AgPSAwO1xuXG4gIC8vIENhbGN1bGF0ZSBvcmlnaW4gcG9pbnQgb24gYW5jaG9yXG4gIHN3aXRjaCAocG9zaXRpb24ub3JpZ2luWCkge1xuICAgIGNhc2UgJ3N0YXJ0JzpcbiAgICAgIGxlZnQgPSBhbmNob3JSZWN0LmxlZnQ7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdjZW50ZXInOlxuICAgICAgbGVmdCA9IGFuY2hvclJlY3QubGVmdCArIGFuY2hvclJlY3Qud2lkdGggLyAyO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnZW5kJzpcbiAgICAgIGxlZnQgPSBhbmNob3JSZWN0LnJpZ2h0O1xuICAgICAgYnJlYWs7XG4gIH1cblxuICBzd2l0Y2ggKHBvc2l0aW9uLm9yaWdpblkpIHtcbiAgICBjYXNlICd0b3AnOlxuICAgICAgdG9wID0gYW5jaG9yUmVjdC50b3A7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdjZW50ZXInOlxuICAgICAgdG9wID0gYW5jaG9yUmVjdC50b3AgKyBhbmNob3JSZWN0LmhlaWdodCAvIDI7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdib3R0b20nOlxuICAgICAgdG9wID0gYW5jaG9yUmVjdC5ib3R0b207XG4gICAgICBicmVhaztcbiAgfVxuXG4gIC8vIEFkanVzdCBmb3Igb3ZlcmxheSBhbGlnbm1lbnRcbiAgc3dpdGNoIChwb3NpdGlvbi5vdmVybGF5WCkge1xuICAgIGNhc2UgJ3N0YXJ0JzpcbiAgICAgIC8vIGxlZnQgc3RheXMgdGhlIHNhbWVcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2NlbnRlcic6XG4gICAgICBsZWZ0IC09IG92ZXJsYXlSZWN0LndpZHRoIC8gMjtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2VuZCc6XG4gICAgICBsZWZ0IC09IG92ZXJsYXlSZWN0LndpZHRoO1xuICAgICAgYnJlYWs7XG4gIH1cblxuICBzd2l0Y2ggKHBvc2l0aW9uLm92ZXJsYXlZKSB7XG4gICAgY2FzZSAndG9wJzpcbiAgICAgIC8vIHRvcCBzdGF5cyB0aGUgc2FtZVxuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnY2VudGVyJzpcbiAgICAgIHRvcCAtPSBvdmVybGF5UmVjdC5oZWlnaHQgLyAyO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnYm90dG9tJzpcbiAgICAgIHRvcCAtPSBvdmVybGF5UmVjdC5oZWlnaHQ7XG4gICAgICBicmVhaztcbiAgfVxuXG4gIC8vIEFwcGx5IG9mZnNldHNcbiAgaWYgKHBvc2l0aW9uLm9mZnNldFgpIHtcbiAgICBsZWZ0ICs9IHBvc2l0aW9uLm9mZnNldFg7XG4gIH1cbiAgaWYgKHBvc2l0aW9uLm9mZnNldFkpIHtcbiAgICB0b3AgKz0gcG9zaXRpb24ub2Zmc2V0WTtcbiAgfVxuXG4gIHJldHVybiB7IHRvcCwgbGVmdCB9O1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgb3ZlcmxheSBwb3NpdGlvbiBmaXRzIHdpdGhpbiB0aGUgdmlld3BvcnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaXRzSW5WaWV3cG9ydChcbiAgcG9zaXRpb246IHsgdG9wOiBudW1iZXI7IGxlZnQ6IG51bWJlciB9LFxuICBvdmVybGF5UmVjdDogRE9NUmVjdCxcbiAgdmlld3BvcnRXaWR0aDogbnVtYmVyLFxuICB2aWV3cG9ydEhlaWdodDogbnVtYmVyLFxuKTogYm9vbGVhbiB7XG4gIHJldHVybiBwb3NpdGlvbi5sZWZ0ICsgb3ZlcmxheVJlY3Qud2lkdGggPD0gdmlld3BvcnRXaWR0aCAmJiBwb3NpdGlvbi50b3AgKyBvdmVybGF5UmVjdC5oZWlnaHQgPD0gdmlld3BvcnRIZWlnaHQ7XG59XG5cbi8qKlxuICogRmluZHMgdGhlIGJlc3QgcG9zaXRpb24gZm9yIGFuIG92ZXJsYXkgdGhhdCBmaXRzIGluIHRoZSB2aWV3cG9ydC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbmRCZXN0UG9zaXRpb24oXG4gIGFuY2hvclJlY3Q6IERPTVJlY3QsXG4gIG92ZXJsYXlSZWN0OiBET01SZWN0LFxuICBwb3NpdGlvbnM6IEFYQ29ubmVjdGVkUG9zaXRpb25bXSxcbiAgdmlld3BvcnRXaWR0aDogbnVtYmVyLFxuICB2aWV3cG9ydEhlaWdodDogbnVtYmVyLFxuKTogeyBwb3NpdGlvbjogQVhDb25uZWN0ZWRQb3NpdGlvbjsgY29vcmRzOiB7IHRvcDogbnVtYmVyOyBsZWZ0OiBudW1iZXIgfSB9IHtcbiAgZm9yIChjb25zdCBwb3NpdGlvbiBvZiBwb3NpdGlvbnMpIHtcbiAgICBjb25zdCBjb29yZHMgPSBjYWxjdWxhdGVBbmNob3JQb3NpdGlvbihhbmNob3JSZWN0LCBvdmVybGF5UmVjdCwgcG9zaXRpb24pO1xuXG4gICAgaWYgKGZpdHNJblZpZXdwb3J0KGNvb3Jkcywgb3ZlcmxheVJlY3QsIHZpZXdwb3J0V2lkdGgsIHZpZXdwb3J0SGVpZ2h0KSkge1xuICAgICAgcmV0dXJuIHsgcG9zaXRpb24sIGNvb3JkcyB9O1xuICAgIH1cbiAgfVxuXG4gIC8vIEZhbGxiYWNrIHRvIGZpcnN0IHBvc2l0aW9uIGlmIG5vbmUgZml0XG4gIGNvbnN0IGZhbGxiYWNrQ29vcmRzID0gY2FsY3VsYXRlQW5jaG9yUG9zaXRpb24oYW5jaG9yUmVjdCwgb3ZlcmxheVJlY3QsIHBvc2l0aW9uc1swXSk7XG4gIHJldHVybiB7IHBvc2l0aW9uOiBwb3NpdGlvbnNbMF0sIGNvb3JkczogZmFsbGJhY2tDb29yZHMgfTtcbn1cbiJdfQ==","import { convertToPlacement } from '@acorex/cdk/common';\nimport { AXComponentService } from '@acorex/core/components';\nimport { AXZIndexService } from '@acorex/core/z-index';\nimport { DOCUMENT } from '@angular/common';\nimport { ComponentRef, ElementRef, inject, Injectable, TemplateRef } from '@angular/core';\nimport { findBestPosition } from './overlay.types';\nimport * as i0 from \"@angular/core\";\nexport class AXOverlayService {\n constructor() {\n this.componentService = inject(AXComponentService);\n this.document = inject(DOCUMENT);\n this.zIndexService = inject(AXZIndexService);\n }\n /**\n * Creates an overlay with optional anchor-based positioning.\n * @param content - Component or template to display\n * @param options - Configuration options for the overlay\n * @returns Promise<AXOverlayRef> - Reference to the created overlay\n */\n async create(content, options) {\n let instance;\n let overlayContainer = null;\n let backdropElement = null;\n let isDisposed = false;\n // Acquire a z-index token for this overlay\n let zToken = this.zIndexService.acquire();\n if (content instanceof TemplateRef) {\n instance = this.componentService.createFromTemplate(content);\n }\n else {\n instance = this.componentService.createFromComponent(content);\n if (options?.inputs) {\n Object.entries(options.inputs).forEach((c) => {\n instance.setInput(c[0], c[1]);\n });\n }\n }\n // Get the host element\n const hostElement = this.getHostElement(instance);\n // Create backdrop if enabled\n if (options?.backdrop?.enabled) {\n backdropElement = this.createBackdrop(options, zToken.zIndex);\n }\n // If anchor options are provided, set up positioned overlay (for tooltips, popovers)\n if (options?.anchorOptions?.anchor) {\n overlayContainer = this.createOverlayContainer(hostElement, options, zToken.zIndex);\n this.positionOverlay(overlayContainer, options);\n }\n else if (options?.centered === false) {\n // Non-centered positioned overlay (for toasts, notifications)\n overlayContainer = this.createOverlayContainer(hostElement, options, zToken.zIndex);\n }\n else {\n // No anchor - create centered overlay (for modals, popups)\n overlayContainer = this.createCenteredOverlayContainer(hostElement, options, zToken.zIndex);\n }\n const updatePosition = () => {\n if (overlayContainer && options?.anchorOptions?.anchor) {\n this.positionOverlay(overlayContainer, options);\n }\n };\n const dispose = () => {\n if (isDisposed)\n return;\n isDisposed = true;\n // Remove scroll listener\n if (scrollHandler) {\n this.document.removeEventListener('scroll', scrollHandler, true);\n window.removeEventListener('scroll', scrollHandler, true);\n }\n // Remove backdrop\n if (backdropElement) {\n backdropElement.remove();\n }\n if (overlayContainer) {\n overlayContainer.remove();\n }\n if (instance instanceof ComponentRef) {\n instance.destroy();\n }\n else {\n instance.destroy();\n }\n // Release the z-index token\n this.zIndexService.release(zToken);\n zToken = null;\n // Notify callback\n options?.onDispose?.();\n };\n const bringToFront = () => {\n if (!zToken || isDisposed)\n return;\n zToken = this.zIndexService.bringToFront(zToken);\n if (backdropElement) {\n backdropElement.style.zIndex = String(zToken.zIndex);\n }\n if (overlayContainer) {\n overlayContainer.style.zIndex = String(zToken.zIndex);\n }\n };\n // Set up backdrop click handler\n if (backdropElement && options?.backdrop?.closeOnClick) {\n backdropElement.addEventListener('click', () => {\n dispose();\n });\n }\n // Set up scroll listener to close overlay on scroll (for anchored overlays only)\n let scrollHandler = null;\n let scrollListenerActive = false;\n if (options?.anchorOptions?.anchor) {\n const anchorElement = options.anchorOptions.anchor instanceof ElementRef\n ? options.anchorOptions.anchor.nativeElement\n : options.anchorOptions.anchor;\n scrollHandler = (e) => {\n // Ignore scroll events during initial setup\n if (!scrollListenerActive) {\n return;\n }\n const target = e.target;\n // Don't close if scrolling inside the overlay itself\n if (overlayContainer?.contains(target)) {\n return;\n }\n // Don't close if scrolling inside the anchor element\n if (anchorElement?.contains(target)) {\n return;\n }\n // Only close on scrollable container scrolls, not document-level events\n // that might be triggered by layout changes\n if (target === this.document || target === this.document.documentElement) {\n // Check if it's an actual scroll by verifying scroll position changed\n const scrollTop = this.document.documentElement.scrollTop || this.document.body.scrollTop;\n const scrollLeft = this.document.documentElement.scrollLeft || this.document.body.scrollLeft;\n if (scrollTop === 0 && scrollLeft === 0) {\n return;\n }\n }\n dispose();\n };\n // Listen on document with capture to catch all scroll events\n this.document.addEventListener('scroll', scrollHandler, true);\n window.addEventListener('scroll', scrollHandler, true);\n // Delay activation to prevent initial layout scroll events from triggering\n requestAnimationFrame(() => {\n scrollListenerActive = true;\n });\n }\n return {\n instance,\n updatePosition,\n dispose,\n overlayElement: overlayContainer,\n zToken,\n bringToFront,\n };\n }\n /**\n * Creates a backdrop element.\n */\n createBackdrop(options, zIndex) {\n const backdrop = this.document.createElement('div');\n backdrop.classList.add('ax-overlay-backdrop');\n if (options?.backdrop?.backdropClass) {\n backdrop.classList.add(options.backdrop.backdropClass);\n }\n // Style the backdrop\n backdrop.style.position = 'fixed';\n backdrop.style.top = '0';\n backdrop.style.left = '0';\n backdrop.style.width = '100%';\n backdrop.style.height = '100%';\n backdrop.style.zIndex = String(zIndex);\n if (options?.backdrop?.background) {\n backdrop.style.backgroundColor = 'rgba(0, 0, 0, 0.5)';\n }\n this.document.body.appendChild(backdrop);\n return backdrop;\n }\n /**\n * Creates a centered overlay container (for modals/popups).\n */\n createCenteredOverlayContainer(content, options, zIndex) {\n const container = this.document.createElement('div');\n container.classList.add('ax-overlay-container', 'ax-overlay-centered');\n // Add custom panel classes\n if (options?.panelClass) {\n const classes = Array.isArray(options.panelClass) ? options.panelClass : [options.panelClass];\n classes.forEach((cls) => {\n if (cls) {\n container.classList.add(cls);\n }\n });\n }\n // Set styles for centered positioning\n container.style.position = 'fixed';\n container.style.top = '0';\n container.style.left = '0';\n container.style.width = '100%';\n container.style.height = '100%';\n container.style.display = 'flex';\n container.style.alignItems = 'center';\n container.style.justifyContent = 'center';\n container.style.zIndex = String(zIndex);\n // Create inner wrapper for the content\n const contentWrapper = this.document.createElement('div');\n contentWrapper.classList.add('ax-overlay-content');\n // Apply width if provided\n if (options?.width) {\n contentWrapper.style.width = options.width;\n }\n // Move content into wrapper\n contentWrapper.appendChild(content);\n container.appendChild(contentWrapper);\n // Append to body\n this.document.body.appendChild(container);\n return container;\n }\n /**\n * Gets the host element from a ComponentRef or EmbeddedViewRef.\n */\n getHostElement(instance) {\n if (instance instanceof ComponentRef) {\n return instance.location.nativeElement;\n }\n else {\n // EmbeddedViewRef - get the first root node\n return instance.rootNodes[0];\n }\n }\n /**\n * Creates an overlay container element and appends the content to it.\n */\n createOverlayContainer(content, options, zIndex) {\n const container = this.document.createElement('div');\n container.classList.add('ax-overlay-container');\n // Add custom panel classes\n if (options?.panelClass) {\n const classes = Array.isArray(options.panelClass) ? options.panelClass : [options.panelClass];\n classes.forEach((cls) => {\n if (cls) {\n container.classList.add(cls);\n }\n });\n }\n // Set initial styles for positioning\n container.style.position = 'fixed';\n container.style.zIndex = String(zIndex);\n container.style.maxWidth = '100vw';\n container.style.maxHeight = '100vh';\n // Apply width if provided, otherwise use max-content\n if (options?.width) {\n container.style.width = options.width;\n }\n else {\n container.style.width = 'max-content';\n }\n // Move content into container\n container.appendChild(content);\n // Append to body\n this.document.body.appendChild(container);\n return container;\n }\n /**\n * Positions the overlay container relative to the anchor element.\n */\n positionOverlay(container, options) {\n if (options.actionSheetStyle) {\n container.style.bottom = `0px`;\n container.style.left = `0px`;\n return;\n }\n const anchorOptions = options.anchorOptions;\n if (!anchorOptions?.anchor)\n return;\n const anchorElement = anchorOptions.anchor instanceof ElementRef ? anchorOptions.anchor.nativeElement : anchorOptions.anchor;\n const anchorRect = anchorElement.getBoundingClientRect();\n const containerRect = container.getBoundingClientRect();\n const viewportWidth = window.innerWidth;\n const viewportHeight = window.innerHeight;\n // Get positions from placement\n let positions = convertToPlacement(anchorOptions.placement ?? 'bottom');\n if (positions.length === 0) {\n positions = convertToPlacement('bottom');\n }\n // Apply custom offsets to positions (ADD to existing offset, don't replace)\n if (anchorOptions.offsetX || anchorOptions.offsetY) {\n positions = positions.map((p) => ({\n ...p,\n offsetX: (p.offsetX ?? 0) + (anchorOptions.offsetX ?? 0),\n offsetY: (p.offsetY ?? 0) + (anchorOptions.offsetY ?? 0),\n }));\n }\n // Find the best position that fits in viewport\n const { coords } = anchorOptions.autoFlip\n ? findBestPosition(anchorRect, containerRect, positions, viewportWidth, viewportHeight)\n : {\n coords: {\n top: positions[0].originY === 'bottom'\n ? anchorRect.bottom + (positions[0].offsetY ?? 0)\n : anchorRect.top - containerRect.height + (positions[0].offsetY ?? 0),\n left: anchorRect.left + (positions[0].offsetX ?? 0),\n },\n };\n // Apply position\n container.style.top = `${coords.top}px`;\n container.style.left = `${coords.left}px`;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXOverlayService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXOverlayService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXOverlayService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY2RrL292ZXJsYXkvc3JjL2xpYi9vdmVybGF5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDeEQsT0FBTyxFQUFzQixrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2pGLE9BQU8sRUFBRSxlQUFlLEVBQVksTUFBTSxzQkFBc0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQW1CLE1BQU0sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNHLE9BQU8sRUFBa0MsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFLbkYsTUFBTSxPQUFPLGdCQUFnQjtJQUg3QjtRQUlVLHFCQUFnQixHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQzlDLGFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDNUIsa0JBQWEsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7S0FnV2pEO0lBOVZDOzs7OztPQUtHO0lBQ0gsS0FBSyxDQUFDLE1BQU0sQ0FBYyxPQUE4QixFQUFFLE9BQTBCO1FBQ2xGLElBQUksUUFBOEMsQ0FBQztRQUNuRCxJQUFJLGdCQUFnQixHQUF1QixJQUFJLENBQUM7UUFDaEQsSUFBSSxlQUFlLEdBQXVCLElBQUksQ0FBQztRQUMvQyxJQUFJLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFFdkIsMkNBQTJDO1FBQzNDLElBQUksTUFBTSxHQUFvQixJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBRTNELElBQUksT0FBTyxZQUFZLFdBQVcs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QUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQztpQkFDcEQ7YUFDRixDQUFDO1FBRU4saUJBQWlCO1FBQ2pCLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLEdBQUcsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQ3hDLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLEdBQUcsTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDO0lBQzVDLENBQUM7K0dBbFdVLGdCQUFnQjttSEFBaEIsZ0JBQWdCLGNBRmYsTUFBTTs7NEZBRVAsZ0JBQWdCO2tCQUg1QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbnZlcnRUb1BsYWNlbWVudCB9IGZyb20gJ0BhY29yZXgvY2RrL2NvbW1vbic7XG5pbXBvcnQgeyBBWENvbXBvbmVudENvbnRlbnQsIEFYQ29tcG9uZW50U2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29yZS9jb21wb25lbnRzJztcbmltcG9ydCB7IEFYWkluZGV4U2VydmljZSwgQVhaVG9rZW4gfSBmcm9tICdAYWNvcmV4L2NvcmUvei1pbmRleCc7XG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnRSZWYsIEVsZW1lbnRSZWYsIEVtYmVkZGVkVmlld1JlZiwgaW5qZWN0LCBJbmplY3RhYmxlLCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhPdmVybGF5T3B0aW9ucywgQVhPdmVybGF5UmVmLCBmaW5kQmVzdFBvc2l0aW9uIH0gZnJvbSAnLi9vdmVybGF5LnR5cGVzJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEFYT3ZlcmxheVNlcnZpY2Uge1xuICBwcml2YXRlIGNvbXBvbmVudFNlcnZpY2UgPSBpbmplY3QoQVhDb21wb25lbnRTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBkb2N1bWVudCA9IGluamVjdChET0NVTUVOVCk7XG4gIHByaXZhdGUgekluZGV4U2VydmljZSA9IGluamVjdChBWFpJbmRleFNlcnZpY2UpO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIG92ZXJsYXkgd2l0aCBvcHRpb25hbCBhbmNob3ItYmFzZWQgcG9zaXRpb25pbmcuXG4gICAqIEBwYXJhbSBjb250ZW50IC0gQ29tcG9uZW50IG9yIHRlbXBsYXRlIHRvIGRpc3BsYXlcbiAgICogQHBhcmFtIG9wdGlvbnMgLSBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBvdmVybGF5XG4gICAqIEByZXR1cm5zIFByb21pc2U8QVhPdmVybGF5UmVmPiAtIFJlZmVyZW5jZSB0byB0aGUgY3JlYXRlZCBvdmVybGF5XG4gICAqL1xuICBhc3luYyBjcmVhdGU8VCA9IHVua25vd24+KGNvbnRlbnQ6IEFYQ29tcG9uZW50Q29udGVudDxUPiwgb3B0aW9ucz86IEFYT3ZlcmxheU9wdGlvbnMpOiBQcm9taXNlPEFYT3ZlcmxheVJlZjxUPj4ge1xuICAgIGxldCBpbnN0YW5jZTogRW1iZWRkZWRWaWV3UmVmPFQ+IHwgQ29tcG9uZW50UmVmPFQ+O1xuICAgIGxldCBvdmVybGF5Q29udGFpbmVyOiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xuICAgIGxldCBiYWNrZHJvcEVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG4gICAgbGV0IGlzRGlzcG9zZWQgPSBmYWxzZTtcblxuICAgIC8vIEFjcXVpcmUgYSB6LWluZGV4IHRva2VuIGZvciB0aGlzIG92ZXJsYXlcbiAgICBsZXQgelRva2VuOiBBWFpUb2tlbiB8IG51bGwgPSB0aGlzLnpJbmRleFNlcnZpY2UuYWNxdWlyZSgpO1xuXG4gICAgaWYgKGNvbnRlbnQgaW5zdGFuY2VvZiBUZW1wbGF0ZVJlZikge1xuICAgICAgaW5zdGFuY2UgPSB0aGlzLmNvbXBvbmVudFNlcnZpY2UuY3JlYXRlRnJvbVRlbXBsYXRlPFQ+KGNvbnRlbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpbnN0YW5jZSA9IHRoaXMuY29tcG9uZW50U2VydmljZS5jcmVhdGVGcm9tQ29tcG9uZW50PFQ+KGNvbnRlbnQpO1xuICAgICAgaWYgKG9wdGlvbnM/LmlucHV0cykge1xuICAgICAgICBPYmplY3QuZW50cmllcyhvcHRpb25zLmlucHV0cykuZm9yRWFjaCgoYykgPT4ge1xuICAgICAgICAgIChpbnN0YW5jZSBhcyBDb21wb25lbnRSZWY8VD4pLnNldElucHV0KGNbMF0sIGNbMV0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBHZXQgdGhlIGhvc3QgZWxlbWVudFxuICAgIGNvbnN0IGhvc3RFbGVtZW50ID0gdGhpcy5nZXRIb3N0RWxlbWVudChpbnN0YW5jZSk7XG5cbiAgICAvLyBDcmVhdGUgYmFja2Ryb3AgaWYgZW5hYmxlZFxuICAgIGlmIChvcHRpb25zPy5iYWNrZHJvcD8uZW5hYmxlZCkge1xuICAgICAgYmFja2Ryb3BFbGVtZW50ID0gdGhpcy5jcmVhdGVCYWNrZHJvcChvcHRpb25zLCB6VG9rZW4uekluZGV4KTtcbiAgICB9XG5cbiAgICAvLyBJZiBhbmNob3Igb3B0aW9ucyBhcmUgcHJvdmlkZWQsIHNldCB1cCBwb3NpdGlvbmVkIG92ZXJsYXkgKGZvciB0b29sdGlwcywgcG9wb3ZlcnMpXG4gICAgaWYgKG9wdGlvbnM/LmFuY2hvck9wdGlvbnM/LmFuY2hvcikge1xuICAgICAgb3ZlcmxheUNvbnRhaW5lciA9IHRoaXMuY3JlYXRlT3ZlcmxheUNvbnRhaW5lcihob3N0RWxlbWVudCwgb3B0aW9ucywgelRva2VuLnpJbmRleCk7XG4gICAgICB0aGlzLnBvc2l0aW9uT3ZlcmxheShvdmVybGF5Q29udGFpbmVyLCBvcHRpb25zKTtcbiAgICB9IGVsc2UgaWYgKG9wdGlvbnM/LmNlbnRlcmVkID09PSBmYWxzZSkge1xuICAgICAgLy8gTm9uLWNlbnRlcmVkIHBvc2l0aW9uZWQgb3ZlcmxheSAoZm9yIHRvYXN0cywgbm90aWZpY2F0aW9ucylcbiAgICAgIG92ZXJsYXlDb250YWluZXIgPSB0aGlzLmNyZWF0ZU92ZXJsYXlDb250YWluZXIoaG9zdEVsZW1lbnQsIG9wdGlvbnMsIHpUb2tlbi56SW5kZXgpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBObyBhbmNob3IgLSBjcmVhdGUgY2VudGVyZWQgb3ZlcmxheSAoZm9yIG1vZGFscywgcG9wdXBzKVxuICAgICAgb3ZlcmxheUNvbnRhaW5lciA9IHRoaXMuY3JlYXRlQ2VudGVyZWRPdmVybGF5Q29udGFpbmVyKGhvc3RFbGVtZW50LCBvcHRpb25zLCB6VG9rZW4uekluZGV4KTtcbiAgICB9XG5cbiAgICBjb25zdCB1cGRhdGVQb3NpdGlvbiA9ICgpID0+IHtcbiAgICAgIGlmIChvdmVybGF5Q29udGFpbmVyICYmIG9wdGlvbnM/LmFuY2hvck9wdGlvbnM/LmFuY2hvcikge1xuICAgICAgICB0aGlzLnBvc2l0aW9uT3ZlcmxheShvdmVybGF5Q29udGFpbmVyLCBvcHRpb25zKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgZGlzcG9zZSA9ICgpID0+IHtcbiAgICAgIGlmIChpc0Rpc3Bvc2VkKSByZXR1cm47XG4gICAgICBpc0Rpc3Bvc2VkID0gdHJ1ZTtcblxuICAgICAgLy8gUmVtb3ZlIHNjcm9sbCBsaXN0ZW5lclxuICAgICAgaWYgKHNjcm9sbEhhbmRsZXIpIHtcbiAgICAgICAgdGhpcy5kb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBzY3JvbGxIYW5kbGVyLCB0cnVlKTtcbiAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHNjcm9sbEhhbmRsZXIsIHRydWUpO1xuICAgICAgfVxuXG4gICAgICAvLyBSZW1vdmUgYmFja2Ryb3BcbiAgICAgIGlmIChiYWNrZHJvcEVsZW1lbnQpIHtcbiAgICAgICAgYmFja2Ryb3BFbGVtZW50LnJlbW92ZSgpO1xuICAgICAgfVxuXG4gICAgICBpZiAob3ZlcmxheUNvbnRhaW5lcikge1xuICAgICAgICBvdmVybGF5Q29udGFpbmVyLnJlbW92ZSgpO1xuICAgICAgfVxuICAgICAgaWYgKGluc3RhbmNlIGluc3RhbmNlb2YgQ29tcG9uZW50UmVmKSB7XG4gICAgICAgIGluc3RhbmNlLmRlc3Ryb3koKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGluc3RhbmNlLmRlc3Ryb3koKTtcbiAgICAgIH1cblxuICAgICAgLy8gUmVsZWFzZSB0aGUgei1pbmRleCB0b2tlblxuICAgICAgdGhpcy56SW5kZXhTZXJ2aWNlLnJlbGVhc2UoelRva2VuKTtcbiAgICAgIHpUb2tlbiA9IG51bGw7XG5cbiAgICAgIC8vIE5vdGlmeSBjYWxsYmFja1xuICAgICAgb3B0aW9ucz8ub25EaXNwb3NlPy4oKTtcbiAgICB9O1xuXG4gICAgY29uc3QgYnJpbmdUb0Zyb250ID0gKCkgPT4ge1xuICAgICAgaWYgKCF6VG9rZW4gfHwgaXNEaXNwb3NlZCkgcmV0dXJuO1xuICAgICAgelRva2VuID0gdGhpcy56SW5kZXhTZXJ2aWNlLmJyaW5nVG9Gcm9udCh6VG9rZW4pO1xuICAgICAgaWYgKGJhY2tkcm9wRWxlbWVudCkge1xuICAgICAgICBiYWNrZHJvcEVsZW1lbnQuc3R5bGUuekluZGV4ID0gU3RyaW5nKHpUb2tlbi56SW5kZXgpO1xuICAgICAgfVxuICAgICAgaWYgKG92ZXJsYXlDb250YWluZXIpIHtcbiAgICAgICAgb3ZlcmxheUNvbnRhaW5lci5zdHlsZS56SW5kZXggPSBTdHJpbmcoelRva2VuLnpJbmRleCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIC8vIFNldCB1cCBiYWNrZHJvcCBjbGljayBoYW5kbGVyXG4gICAgaWYgKGJhY2tkcm9wRWxlbWVudCAmJiBvcHRpb25zPy5iYWNrZHJvcD8uY2xvc2VPbkNsaWNrKSB7XG4gICAgICBiYWNrZHJvcEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XG4gICAgICAgIGRpc3Bvc2UoKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIFNldCB1cCBzY3JvbGwgbGlzdGVuZXIgdG8gY2xvc2Ugb3ZlcmxheSBvbiBzY3JvbGwgKGZvciBhbmNob3JlZCBvdmVybGF5cyBvbmx5KVxuICAgIGxldCBzY3JvbGxIYW5kbGVyOiAoKGU6IEV2ZW50KSA9PiB2b2lkKSB8IG51bGwgPSBudWxsO1xuICAgIGxldCBzY3JvbGxMaXN0ZW5lckFjdGl2ZSA9IGZhbHNlO1xuXG4gICAgaWYgKG9wdGlvbnM/LmFuY2hvck9wdGlvbnM/LmFuY2hvcikge1xuICAgICAgY29uc3QgYW5jaG9yRWxlbWVudCA9XG4gICAgICAgIG9wdGlvbnMuYW5jaG9yT3B0aW9ucy5hbmNob3IgaW5zdGFuY2VvZiBFbGVtZW50UmVmXG4gICAgICAgICAgPyBvcHRpb25zLmFuY2hvck9wdGlvbnMuYW5jaG9yLm5hdGl2ZUVsZW1lbnRcbiAgICAgICAgICA6IG9wdGlvbnMuYW5jaG9yT3B0aW9ucy5hbmNob3I7XG5cbiAgICAgIHNjcm9sbEhhbmRsZXIgPSAoZTogRXZlbnQpID0+IHtcbiAgICAgICAgLy8gSWdub3JlIHNjcm9sbCBldmVudHMgZHVyaW5nIGluaXRpYWwgc2V0dXBcbiAgICAgICAgaWYgKCFzY3JvbGxMaXN0ZW5lckFjdGl2ZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRhcmdldCA9IGUudGFyZ2V0IGFzIE5vZGU7XG5cbiAgICAgICAgLy8gRG9uJ3QgY2xvc2UgaWYgc2Nyb2xsaW5nIGluc2lkZSB0aGUgb3ZlcmxheSBpdHNlbGZcbiAgICAgICAgaWYgKG92ZXJsYXlDb250YWluZXI/LmNvbnRhaW5zKHRhcmdldCkpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBEb24ndCBjbG9zZSBpZiBzY3JvbGxpbmcgaW5zaWRlIHRoZSBhbmNob3IgZWxlbWVudFxuICAgICAgICBpZiAoYW5jaG9yRWxlbWVudD8uY29udGFpbnModGFyZ2V0KSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE9ubHkgY2xvc2Ugb24gc2Nyb2xsYWJsZSBjb250YWluZXIgc2Nyb2xscywgbm90IGRvY3VtZW50LWxldmVsIGV2ZW50c1xuICAgICAgICAvLyB0aGF0IG1pZ2h0IGJlIHRyaWdnZXJlZCBieSBsYXlvdXQgY2hhbmdlc1xuICAgICAgICBpZiAodGFyZ2V0ID09PSB0aGlzLmRvY3VtZW50IHx8IHRhcmdldCA9PT0gdGhpcy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpIHtcbiAgICAgICAgICAvLyBDaGVjayBpZiBpdCdzIGFuIGFjdHVhbCBzY3JvbGwgYnkgdmVyaWZ5aW5nIHNjcm9sbCBwb3NpdGlvbiBjaGFuZ2VkXG4gICAgICAgICAgY29uc3Qgc2Nyb2xsVG9wID0gdGhpcy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wIHx8IHRoaXMuZG9jdW1lbnQuYm9keS5zY3JvbGxUb3A7XG4gICAgICAgICAgY29uc3Qgc2Nyb2xsTGVmdCA9IHRoaXMuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbExlZnQgfHwgdGhpcy5kb2N1bWVudC5ib2R5LnNjcm9sbExlZnQ7XG4gICAgICAgICAgaWYgKHNjcm9sbFRvcCA9PT0gMCAmJiBzY3JvbGxMZWZ0ID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZGlzcG9zZSgpO1xuICAgICAgfTtcblxuICAgICAgLy8gTGlzdGVuIG9uIGRvY3VtZW50IHdpdGggY2FwdHVyZSB0byBjYXRjaCBhbGwgc2Nyb2xsIGV2ZW50c1xuICAgICAgdGhpcy5kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBzY3JvbGxIYW5kbGVyLCB0cnVlKTtcbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBzY3JvbGxIYW5kbGVyLCB0cnVlKTtcblxuICAgICAgLy8gRGVsYXkgYWN0aXZhdGlvbiB0byBwcmV2ZW50IGluaXRpYWwgbGF5b3V0IHNjcm9sbCBldmVudHMgZnJvbSB0cmlnZ2VyaW5nXG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICBzY3JvbGxMaXN0ZW5lckFjdGl2ZSA9IHRydWU7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgaW5zdGFuY2UsXG4gICAgICB1cGRhdGVQb3NpdGlvbixcbiAgICAgIGRpc3Bvc2UsXG4gICAgICBvdmVybGF5RWxlbWVudDogb3ZlcmxheUNvbnRhaW5lcixcbiAgICAgIHpUb2tlbixcbiAgICAgIGJyaW5nVG9Gcm9udCxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBiYWNrZHJvcCBlbGVtZW50LlxuICAgKi9cbiAgcHJpdmF0ZSBjcmVhdGVCYWNrZHJvcChvcHRpb25zOiBBWE92ZXJsYXlPcHRpb25zIHwgdW5kZWZpbmVkLCB6SW5kZXg6IG51bWJlcik6IEhUTUxFbGVtZW50IHtcbiAgICBjb25zdCBiYWNrZHJvcCA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgYmFja2Ryb3AuY2xhc3NMaXN0LmFkZCgnYXgtb3ZlcmxheS1iYWNrZHJvcCcpO1xuXG4gICAgaWYgKG9wdGlvbnM/LmJhY2tkcm9wPy5iYWNrZHJvcENsYXNzKSB7XG4gICAgICBiYWNrZHJvcC5jbGFzc0xpc3QuYWRkKG9wdGlvbnMuYmFja2Ryb3AuYmFja2Ryb3BDbGFzcyk7XG4gICAgfVxuXG4gICAgLy8gU3R5bGUgdGhlIGJhY2tkcm9wXG4gICAgYmFja2Ryb3Auc3R5bGUucG9zaXRpb24gPSAnZml4ZWQnO1xuICAgIGJhY2tkcm9wLnN0eWxlLnRvcCA9ICcwJztcbiAgICBiYWNrZHJvcC5zdHlsZS5sZWZ0ID0gJzAnO1xuICAgIGJhY2tkcm9wLnN0eWxlLndpZHRoID0gJzEwMCUnO1xuICAgIGJhY2tkcm9wLnN0eWxlLmhlaWdodCA9ICcxMDAlJztcbiAgICBiYWNrZHJvcC5zdHlsZS56SW5kZXggPSBTdHJpbmcoekluZGV4KTtcblxuICAgIGlmIChvcHRpb25zPy5iYWNrZHJvcD8uYmFja2dyb3VuZCkge1xuICAgICAgYmFja2Ryb3Auc3R5bGUuYmFja2dyb3VuZENvbG9yID0gJ3JnYmEoMCwgMCwgMCwgMC41KSc7XG4gICAgfVxuXG4gICAgdGhpcy5kb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGJhY2tkcm9wKTtcbiAgICByZXR1cm4gYmFja2Ryb3A7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIGNlbnRlcmVkIG92ZXJsYXkgY29udGFpbmVyIChmb3IgbW9kYWxzL3BvcHVwcykuXG4gICAqL1xuICBwcml2YXRlIGNyZWF0ZUNlbnRlcmVkT3ZlcmxheUNvbnRhaW5lcihcbiAgICBjb250ZW50OiBIVE1MRWxlbWVudCxcbiAgICBvcHRpb25zOiBBWE92ZXJsYXlPcHRpb25zIHwgdW5kZWZpbmVkLFxuICAgIHpJbmRleDogbnVtYmVyLFxuICApOiBIVE1MRWxlbWVudCB7XG4gICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICBjb250YWluZXIuY2xhc3NMaXN0LmFkZCgnYXgtb3ZlcmxheS1jb250YWluZXInLCAnYXgtb3ZlcmxheS1jZW50ZXJlZCcpO1xuXG4gICAgLy8gQWRkIGN1c3RvbSBwYW5lbCBjbGFzc2VzXG4gICAgaWYgKG9wdGlvbnM/LnBhbmVsQ2xhc3MpIHtcbiAgICAgIGNvbnN0IGNsYXNzZXMgPSBBcnJheS5pc0FycmF5KG9wdGlvbnMucGFuZWxDbGFzcykgPyBvcHRpb25zLnBhbmVsQ2xhc3MgOiBbb3B0aW9ucy5wYW5lbENsYXNzXTtcbiAgICAgIGNsYXNzZXMuZm9yRWFjaCgoY2xzKSA9PiB7XG4gICAgICAgIGlmIChjbHMpIHtcbiAgICAgICAgICBjb250YWluZXIuY2xhc3NMaXN0LmFkZChjbHMpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBTZXQgc3R5bGVzIGZvciBjZW50ZXJlZCBwb3NpdGlvbmluZ1xuICAgIGNvbnRhaW5lci5zdHlsZS5wb3NpdGlvbiA9ICdmaXhlZCc7XG4gICAgY29udGFpbmVyLnN0eWxlLnRvcCA9ICcwJztcbiAgICBjb250YWluZXIuc3R5bGUubGVmdCA9ICcwJztcbiAgICBjb250YWluZXIuc3R5bGUud2lkdGggPSAnMTAwJSc7XG4gICAgY29udGFpbmVyLnN0eWxlLmhlaWdodCA9ICcxMDAlJztcbiAgICBjb250YWluZXIuc3R5bGUuZGlzcGxheSA9ICdmbGV4JztcbiAgICBjb250YWluZXIuc3R5bGUuYWxpZ25JdGVtcyA9ICdjZW50ZXInO1xuICAgIGNvbnRhaW5lci5zdHlsZS5qdXN0aWZ5Q29udGVudCA9ICdjZW50ZXInO1xuICAgIGNvbnRhaW5lci5zdHlsZS56SW5kZXggPSBTdHJpbmcoekluZGV4KTtcblxuICAgIC8vIENyZWF0ZSBpbm5lciB3cmFwcGVyIGZvciB0aGUgY29udGVudFxuICAgIGNvbnN0IGNvbnRlbnRXcmFwcGVyID0gdGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICBjb250ZW50V3JhcHBlci5jbGFzc0xpc3QuYWRkKCdheC1vdmVybGF5LWNvbnRlbnQnKTtcblxuICAgIC8vIEFwcGx5IHdpZHRoIGlmIHByb3ZpZGVkXG4gICAgaWYgKG9wdGlvbnM/LndpZHRoKSB7XG4gICAgICBjb250ZW50V3JhcHBlci5zdHlsZS53aWR0aCA9IG9wdGlvbnMud2lkdGg7XG4gICAgfVxuXG4gICAgLy8gTW92ZSBjb250ZW50IGludG8gd3JhcHBlclxuICAgIGNvbnRlbnRXcmFwcGVyLmFwcGVuZENoaWxkKGNvbnRlbnQpO1xuICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChjb250ZW50V3JhcHBlcik7XG5cbiAgICAvLyBBcHBlbmQgdG8gYm9keVxuICAgIHRoaXMuZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChjb250YWluZXIpO1xuXG4gICAgcmV0dXJuIGNvbnRhaW5lcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBob3N0IGVsZW1lbnQgZnJvbSBhIENvbXBvbmVudFJlZiBvciBFbWJlZGRlZFZpZXdSZWYuXG4gICAqL1xuICBwcml2YXRlIGdldEhvc3RFbGVtZW50PFQ+KGluc3RhbmNlOiBFbWJlZGRlZFZpZXdSZWY8VD4gfCBDb21wb25lbnRSZWY8VD4pOiBIVE1MRWxlbWVudCB7XG4gICAgaWYgKGluc3RhbmNlIGluc3RhbmNlb2YgQ29tcG9uZW50UmVmKSB7XG4gICAgICByZXR1cm4gaW5zdGFuY2UubG9jYXRpb24ubmF0aXZlRWxlbWVudDtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gRW1iZWRkZWRWaWV3UmVmIC0gZ2V0IHRoZSBmaXJzdCByb290IG5vZGVcbiAgICAgIHJldHVybiBpbnN0YW5jZS5yb290Tm9kZXNbMF0gYXMgSFRNTEVsZW1lbnQ7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gb3ZlcmxheSBjb250YWluZXIgZWxlbWVudCBhbmQgYXBwZW5kcyB0aGUgY29udGVudCB0byBpdC5cbiAgICovXG4gIHByaXZhdGUgY3JlYXRlT3ZlcmxheUNvbnRhaW5lcihcbiAgICBjb250ZW50OiBIVE1MRWxlbWVudCxcbiAgICBvcHRpb25zOiBBWE92ZXJsYXlPcHRpb25zIHwgdW5kZWZpbmVkLFxuICAgIHpJbmRleDogbnVtYmVyLFxuICApOiBIVE1MRWxlbWVudCB7XG4gICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICBjb250YWluZXIuY2xhc3NMaXN0LmFkZCgnYXgtb3ZlcmxheS1jb250YWluZXInKTtcblxuICAgIC8vIEFkZCBjdXN0b20gcGFuZWwgY2xhc3Nlc1xuICAgIGlmIChvcHRpb25zPy5wYW5lbENsYXNzKSB7XG4gICAgICBjb25zdCBjbGFzc2VzID0gQXJyYXkuaXNBcnJheShvcHRpb25zLnBhbmVsQ2xhc3MpID8gb3B0aW9ucy5wYW5lbENsYXNzIDogW29wdGlvbnMucGFuZWxDbGFzc107XG4gICAgICBjbGFzc2VzLmZvckVhY2goKGNscykgPT4ge1xuICAgICAgICBpZiAoY2xzKSB7XG4gICAgICAgICAgY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoY2xzKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gU2V0IGluaXRpYWwgc3R5bGVzIGZvciBwb3NpdGlvbmluZ1xuICAgIGNvbnRhaW5lci5zdHlsZS5wb3NpdGlvbiA9ICdmaXhlZCc7XG4gICAgY29udGFpbmVyLnN0eWxlLnpJbmRleCA9IFN0cmluZyh6SW5kZXgpO1xuICAgIGNvbnRhaW5lci5zdHlsZS5tYXhXaWR0aCA9ICcxMDB2dyc7XG4gICAgY29udGFpbmVyLnN0eWxlLm1heEhlaWdodCA9ICcxMDB2aCc7XG5cbiAgICAvLyBBcHBseSB3aWR0aCBpZiBwcm92aWRlZCwgb3RoZXJ3aXNlIHVzZSBtYXgtY29udGVudFxuICAgIGlmIChvcHRpb25zPy53aWR0aCkge1xuICAgICAgY29udGFpbmVyLnN0eWxlLndpZHRoID0gb3B0aW9ucy53aWR0aDtcbiAgICB9IGVsc2Uge1xuICAgICAgY29udGFpbmVyLnN0eWxlLndpZHRoID0gJ21heC1jb250ZW50JztcbiAgICB9XG5cbiAgICAvLyBNb3ZlIGNvbnRlbnQgaW50byBjb250YWluZXJcbiAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQoY29udGVudCk7XG5cbiAgICAvLyBBcHBlbmQgdG8gYm9keVxuICAgIHRoaXMuZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChjb250YWluZXIpO1xuXG4gICAgcmV0dXJuIGNvbnRhaW5lcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBQb3NpdGlvbnMgdGhlIG92ZXJsYXkgY29udGFpbmVyIHJlbGF0aXZlIHRvIHRoZSBhbmNob3IgZWxlbWVudC5cbiAgICovXG4gIHByaXZhdGUgcG9zaXRpb25PdmVybGF5KGNvbnRhaW5lcjogSFRNTEVsZW1lbnQsIG9wdGlvbnM6IEFYT3ZlcmxheU9wdGlvbnMpOiB2b2lkIHtcbiAgICBpZiAob3B0aW9ucy5hY3Rpb25TaGVldFN0eWxlKSB7XG4gICAgICBjb250YWluZXIuc3R5bGUuYm90dG9tID0gYDBweGA7XG4gICAgICBjb250YWluZXIuc3R5bGUubGVmdCA9IGAwcHhgO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGFuY2hvck9wdGlvbnMgPSBvcHRpb25zLmFuY2hvck9wdGlvbnM7XG4gICAgaWYgKCFhbmNob3JPcHRpb25zPy5hbmNob3IpIHJldHVybjtcblxuICAgIGNvbnN0IGFuY2hvckVsZW1lbnQgPVxuICAgICAgYW5jaG9yT3B0aW9ucy5hbmNob3IgaW5zdGFuY2VvZiBFbGVtZW50UmVmID8gYW5jaG9yT3B0aW9ucy5hbmNob3IubmF0aXZlRWxlbWVudCA6IGFuY2hvck9wdGlvbnMuYW5jaG9yO1xuXG4gICAgY29uc3QgYW5jaG9yUmVjdCA9IGFuY2hvckVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY29uc3QgY29udGFpbmVyUmVjdCA9IGNvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCB2aWV3cG9ydFdpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XG4gICAgY29uc3Qgdmlld3BvcnRIZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQ7XG5cbiAgICAvLyBHZXQgcG9zaXRpb25zIGZyb20gcGxhY2VtZW50XG4gICAgbGV0IHBvc2l0aW9ucyA9IGNvbnZlcnRUb1BsYWNlbWVudChhbmNob3JPcHRpb25zLnBsYWNlbWVudCA/PyAnYm90dG9tJyk7XG4gICAgaWYgKHBvc2l0aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgIHBvc2l0aW9ucyA9IGNvbnZlcnRUb1BsYWNlbWVudCgnYm90dG9tJyk7XG4gICAgfVxuXG4gICAgLy8gQXBwbHkgY3VzdG9tIG9mZnNldHMgdG8gcG9zaXRpb25zIChBREQgdG8gZXhpc3Rpbmcgb2Zmc2V0LCBkb24ndCByZXBsYWNlKVxuICAgIGlmIChhbmNob3JPcHRpb25zLm9mZnNldFggfHwgYW5jaG9yT3B0aW9ucy5vZmZzZXRZKSB7XG4gICAgICBwb3NpdGlvbnMgPSBwb3NpdGlvbnMubWFwKChwKSA9PiAoe1xuICAgICAgICAuLi5wLFxuICAgICAgICBvZmZzZXRYOiAocC5vZmZzZXRYID8/IDApICsgKGFuY2hvck9wdGlvbnMub2Zmc2V0WCA/PyAwKSxcbiAgICAgICAgb2Zmc2V0WTogKHAub2Zmc2V0WSA/PyAwKSArIChhbmNob3JPcHRpb25zLm9mZnNldFkgPz8gMCksXG4gICAgICB9KSk7XG4gICAgfVxuXG4gICAgLy8gRmluZCB0aGUgYmVzdCBwb3NpdGlvbiB0aGF0IGZpdHMgaW4gdmlld3BvcnRcbiAgICBjb25zdCB7IGNvb3JkcyB9ID0gYW5jaG9yT3B0aW9ucy5hdXRvRmxpcFxuICAgICAgPyBmaW5kQmVzdFBvc2l0aW9uKGFuY2hvclJlY3QsIGNvbnRhaW5lclJlY3QsIHBvc2l0aW9ucywgdmlld3BvcnRXaWR0aCwgdmlld3BvcnRIZWlnaHQpXG4gICAgICA6IHtcbiAgICAgICAgICBjb29yZHM6IHtcbiAgICAgICAgICAgIHRvcDpcbiAgICAgICAgICAgICAgcG9zaXRpb25zWzBdLm9yaWdpblkgPT09ICdib3R0b20nXG4gICAgICAgICAgICAgICAgPyBhbmNob3JSZWN0LmJvdHRvbSArIChwb3NpdGlvbnNbMF0ub2Zmc2V0WSA/PyAwKVxuICAgICAgICAgICAgICAgIDogYW5jaG9yUmVjdC50b3AgLSBjb250YWluZXJSZWN0LmhlaWdodCArIChwb3NpdGlvbnNbMF0ub2Zmc2V0WSA/PyAwKSxcbiAgICAgICAgICAgIGxlZnQ6IGFuY2hvclJlY3QubGVmdCArIChwb3NpdGlvbnNbMF0ub2Zmc2V0WCA/PyAwKSxcbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuXG4gICAgLy8gQXBwbHkgcG9zaXRpb25cbiAgICBjb250YWluZXIuc3R5bGUudG9wID0gYCR7Y29vcmRzLnRvcH1weGA7XG4gICAgY29udGFpbmVyLnN0eWxlLmxlZnQgPSBgJHtjb29yZHMubGVmdH1weGA7XG4gIH1cbn1cbiJdfQ==","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LWNkay1vdmVybGF5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY2RrL292ZXJsYXkvc3JjL2Fjb3JleC1jZGstb3ZlcmxheS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acorex-cdk-overlay.mjs","sources":["../tmp-esm2022/overlay/lib/overlay.types.js","../tmp-esm2022/overlay/lib/overlay.service.js","../tmp-esm2022/overlay/acorex-cdk-overlay.js"],"sourcesContent":["/**\n * Calculates the position of an overlay element relative to an anchor element.\n */\nexport function calculateAnchorPosition(anchorRect, overlayRect, position) {\n let left = 0;\n let top = 0;\n // Calculate origin point on anchor\n switch (position.originX) {\n case 'start':\n left = anchorRect.left;\n break;\n case 'center':\n left = anchorRect.left + anchorRect.width / 2;\n break;\n case 'end':\n left = anchorRect.right;\n break;\n }\n switch (position.originY) {\n case 'top':\n top = anchorRect.top;\n break;\n case 'center':\n top = anchorRect.top + anchorRect.height / 2;\n break;\n case 'bottom':\n top = anchorRect.bottom;\n break;\n }\n // Adjust for overlay alignment\n switch (position.overlayX) {\n case 'start':\n // left stays the same\n break;\n case 'center':\n left -= overlayRect.width / 2;\n break;\n case 'end':\n left -= overlayRect.width;\n break;\n }\n switch (position.overlayY) {\n case 'top':\n // top stays the same\n break;\n case 'center':\n top -= overlayRect.height / 2;\n break;\n case 'bottom':\n top -= overlayRect.height;\n break;\n }\n // Apply offsets\n if (position.offsetX) {\n left += position.offsetX;\n }\n if (position.offsetY) {\n top += position.offsetY;\n }\n return { top, left };\n}\n/**\n * Checks if the overlay position fits within the viewport.\n */\nexport function fitsInViewport(position, overlayRect, viewportWidth, viewportHeight) {\n return position.left + overlayRect.width <= viewportWidth && position.top + overlayRect.height <= viewportHeight;\n}\n/**\n * Finds the best position for an overlay that fits in the viewport.\n */\nexport function findBestPosition(anchorRect, overlayRect, positions, viewportWidth, viewportHeight) {\n for (const position of positions) {\n const coords = calculateAnchorPosition(anchorRect, overlayRect, position);\n if (fitsInViewport(coords, overlayRect, viewportWidth, viewportHeight)) {\n return { position, coords };\n }\n }\n // Fallback to first position if none fit\n const fallbackCoords = calculateAnchorPosition(anchorRect, overlayRect, positions[0]);\n return { position: positions[0], coords: fallbackCoords };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Nkay9vdmVybGF5L3NyYy9saWIvb3ZlcmxheS50eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUF5REE7O0dBRUc7QUFDSCxNQUFNLFVBQVUsdUJBQXVCLENBQ3JDLFVBQW1CLEVBQ25CLFdBQW9CLEVBQ3BCLFFBQTZCO0lBRTdCLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQztJQUNiLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQztJQUVaLG1DQUFtQztJQUNuQyxRQUFRLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN6QixLQUFLLE9BQU87WUFDVixJQUFJLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQztZQUN2QixNQUFNO1FBQ1IsS0FBSyxRQUFRO1lBQ1gsSUFBSSxHQUFHLFVBQVUsQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7WUFDOUMsTUFBTTtRQUNSLEtBQUssS0FBSztZQUNSLElBQUksR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDO1lBQ3hCLE1BQU07SUFDVixDQUFDO0lBRUQsUUFBUSxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDekIsS0FBSyxLQUFLO1lBQ1IsR0FBRyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUM7WUFDckIsTUFBTTtRQUNSLEtBQUssUUFBUTtZQUNYLEdBQUcsR0FBRyxVQUFVLENBQUMsR0FBRyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1lBQzdDLE1BQU07UUFDUixLQUFLLFFBQVE7WUFDWCxHQUFHLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQztZQUN4QixNQUFNO0lBQ1YsQ0FBQztJQUVELCtCQUErQjtJQUMvQixRQUFRLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUMxQixLQUFLLE9BQU87WUFDVixzQkFBc0I7WUFDdEIsTUFBTTtRQUNSLEtBQUssUUFBUTtZQUNYLElBQUksSUFBSSxXQUFXLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztZQUM5QixNQUFNO1FBQ1IsS0FBSyxLQUFLO1lBQ1IsSUFBSSxJQUFJLFdBQVcsQ0FBQyxLQUFLLENBQUM7WUFDMUIsTUFBTTtJQUNWLENBQUM7SUFFRCxRQUFRLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUMxQixLQUFLLEtBQUs7WUFDUixxQkFBcUI7WUFDckIsTUFBTTtRQUNSLEtBQUssUUFBUTtZQUNYLEdBQUcsSUFBSSxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztZQUM5QixNQUFNO1FBQ1IsS0FBSyxRQUFRO1lBQ1gsR0FBRyxJQUFJLFdBQVcsQ0FBQyxNQUFNLENBQUM7WUFDMUIsTUFBTTtJQUNWLENBQUM7SUFFRCxnQkFBZ0I7SUFDaEIsSUFBSSxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDckIsSUFBSSxJQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUM7SUFDM0IsQ0FBQztJQUNELElBQUksUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3JCLEdBQUcsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDO0lBQzFCLENBQUM7SUFFRCxPQUFPLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDO0FBQ3ZCLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxjQUFjLENBQzVCLFFBQXVDLEVBQ3ZDLFdBQW9CLEVBQ3BCLGFBQXFCLEVBQ3JCLGNBQXNCO0lBRXRCLE9BQU8sUUFBUSxDQUFDLElBQUksR0FBRyxXQUFXLENBQUMsS0FBSyxJQUFJLGFBQWEsSUFBSSxRQUFRLENBQUMsR0FBRyxHQUFHLFdBQVcsQ0FBQyxNQUFNLElBQUksY0FBYyxDQUFDO0FBQ25ILENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxnQkFBZ0IsQ0FDOUIsVUFBbUIsRUFDbkIsV0FBb0IsRUFDcEIsU0FBZ0MsRUFDaEMsYUFBcUIsRUFDckIsY0FBc0I7SUFFdEIsS0FBSyxNQUFNLFFBQVEsSUFBSSxTQUFTLEVBQUUsQ0FBQztRQUNqQyxNQUFNLE1BQU0sR0FBRyx1QkFBdUIsQ0FBQyxVQUFVLEVBQUUsV0FBVyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBRTFFLElBQUksY0FBYyxDQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLGNBQWMsQ0FBQyxFQUFFLENBQUM7WUFDdkUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBQztRQUM5QixDQUFDO0lBQ0gsQ0FBQztJQUVELHlDQUF5QztJQUN6QyxNQUFNLGNBQWMsR0FBRyx1QkFBdUIsQ0FBQyxVQUFVLEVBQUUsV0FBVyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RGLE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsQ0FBQztBQUM1RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhDb25uZWN0ZWRQb3NpdGlvbiwgQVhQbGFjZW1lbnQsIEFYUGxhY2VtZW50VHlwZSB9IGZyb20gJ0BhY29yZXgvY2RrL2NvbW1vbic7XG5pbXBvcnQgeyBBWENvbXBvbmVudE9wdGlvbnMgfSBmcm9tICdAYWNvcmV4L2NvcmUvY29tcG9uZW50cyc7XG5pbXBvcnQgeyBBWFpUb2tlbiB9IGZyb20gJ0BhY29yZXgvY29yZS96LWluZGV4JztcbmltcG9ydCB7IENvbXBvbmVudFJlZiwgRWxlbWVudFJlZiwgRW1iZWRkZWRWaWV3UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhPdmVybGF5UmVmPFQ+IHtcbiAgaW5zdGFuY2U6IEVtYmVkZGVkVmlld1JlZjxUPiB8IENvbXBvbmVudFJlZjxUPjtcbiAgLyoqIFVwZGF0ZXMgdGhlIG92ZXJsYXkgcG9zaXRpb24gcmVsYXRpdmUgdG8gdGhlIGFuY2hvciAqL1xuICB1cGRhdGVQb3NpdGlvbjogKCkgPT4gdm9pZDtcbiAgLyoqIERlc3Ryb3lzIHRoZSBvdmVybGF5IGFuZCByZW1vdmVzIGl0IGZyb20gdGhlIERPTSAqL1xuICBkaXNwb3NlOiAoKSA9PiB2b2lkO1xuICAvKiogVGhlIG92ZXJsYXkgY29udGFpbmVyIGVsZW1lbnQgKi9cbiAgb3ZlcmxheUVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgbnVsbDtcbiAgLyoqIFRoZSB6LWluZGV4IHRva2VuIGZvciB0aGlzIG92ZXJsYXkgKi9cbiAgelRva2VuOiBBWFpUb2tlbiB8IG51bGw7XG4gIC8qKiBCcmluZ3MgdGhpcyBvdmVybGF5IHRvIHRoZSBmcm9udCBvZiBhbGwgb3RoZXIgb3ZlcmxheXMgKi9cbiAgYnJpbmdUb0Zyb250OiAoKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYT3ZlcmxheUFuY2hvck9wdGlvbnMge1xuICAvKiogVGhlIGFuY2hvciBlbGVtZW50IHRvIHBvc2l0aW9uIHJlbGF0aXZlIHRvICovXG4gIGFuY2hvcjogSFRNTEVsZW1lbnQgfCBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcbiAgLyoqIFBsYWNlbWVudCBvZiB0aGUgb3ZlcmxheSByZWxhdGl2ZSB0byB0aGUgYW5jaG9yICovXG4gIHBsYWNlbWVudD86IEFYUGxhY2VtZW50VHlwZTtcbiAgLyoqIEhvcml6b250YWwgb2Zmc2V0IGluIHBpeGVscyAqL1xuICBvZmZzZXRYPzogbnVtYmVyO1xuICAvKiogVmVydGljYWwgb2Zmc2V0IGluIHBpeGVscyAqL1xuICBvZmZzZXRZPzogbnVtYmVyO1xuICAvKiogV2hldGhlciB0byBmbGlwIHRoZSBvdmVybGF5IHdoZW4gaXQgb3ZlcmZsb3dzIHRoZSB2aWV3cG9ydCAqL1xuICBhdXRvRmxpcD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhPdmVybGF5T3B0aW9ucyBleHRlbmRzIEFYQ29tcG9uZW50T3B0aW9ucyB7XG4gIGJhY2tkcm9wPzoge1xuICAgIGVuYWJsZWQ/OiBib29sZWFuO1xuICAgIGJhY2tncm91bmQ/OiBib29sZWFuO1xuICAgIGJhY2tkcm9wQ2xhc3M/OiBzdHJpbmc7XG4gICAgY2xvc2VPbkNsaWNrPzogYm9vbGVhbjtcbiAgfTtcbiAgcG9zaXRpb24/OiBBWFBsYWNlbWVudDtcbiAgLyoqIEFuY2hvci1iYXNlZCBwb3NpdGlvbmluZyBvcHRpb25zIGZvciB0b29sdGlwcywgcG9wb3ZlcnMsIGV0Yy4gKi9cbiAgYW5jaG9yT3B0aW9ucz86IEFYT3ZlcmxheUFuY2hvck9wdGlvbnM7XG4gIC8qKiBDdXN0b20gQ1NTIGNsYXNzIGZvciB0aGUgb3ZlcmxheSBwYW5lbCAqL1xuICBwYW5lbENsYXNzPzogc3RyaW5nIHwgc3RyaW5nW107XG4gIC8qKiBXaGV0aGVyIHRvIGNsb3NlIHdoZW4gY2xpY2tpbmcgb3V0c2lkZSAqL1xuICBjbG9zZU9uT3V0c2lkZUNsaWNrPzogYm9vbGVhbjtcbiAgLyoqIFdoZXRoZXIgdG8gY2xvc2Ugd2hlbiBwcmVzc2luZyBFc2NhcGUgKi9cbiAgY2xvc2VPbkVzY2FwZT86IGJvb2xlYW47XG4gIC8qKiBXaWR0aCBvZiB0aGUgb3ZlcmxheSBjb250YWluZXIgKGUuZy4sICdhdXRvJywgJzIwMHB4JywgJzEwMCUnKSAqL1xuICB3aWR0aD86IHN0cmluZztcbiAgLyoqIENhbGxiYWNrIHdoZW4gdGhlIG92ZXJsYXkgaXMgZGlzcG9zZWQgKGUuZy4sIGR1ZSB0byBzY3JvbGwpICovXG4gIG9uRGlzcG9zZT86ICgpID0+IHZvaWQ7XG4gIC8qKiBXaGV0aGVyIHRvIHVzZSBjZW50ZXJlZCBjb250YWluZXIgKGRlZmF1bHQ6IHRydWUpLiBTZXQgdG8gZmFsc2UgZm9yIHBvc2l0aW9uZWQgb3ZlcmxheXMgbGlrZSB0b2FzdHMgKi9cbiAgY2VudGVyZWQ/OiBib29sZWFuO1xuICBhY3Rpb25TaGVldFN0eWxlPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBDYWxjdWxhdGVzIHRoZSBwb3NpdGlvbiBvZiBhbiBvdmVybGF5IGVsZW1lbnQgcmVsYXRpdmUgdG8gYW4gYW5jaG9yIGVsZW1lbnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjYWxjdWxhdGVBbmNob3JQb3NpdGlvbihcbiAgYW5jaG9yUmVjdDogRE9NUmVjdCxcbiAgb3ZlcmxheVJlY3Q6IERPTVJlY3QsXG4gIHBvc2l0aW9uOiBBWENvbm5lY3RlZFBvc2l0aW9uLFxuKTogeyB0b3A6IG51bWJlcjsgbGVmdDogbnVtYmVyIH0ge1xuICBsZXQgbGVmdCA9IDA7XG4gIGxldCB0b3AgPSAwO1xuXG4gIC8vIENhbGN1bGF0ZSBvcmlnaW4gcG9pbnQgb24gYW5jaG9yXG4gIHN3aXRjaCAocG9zaXRpb24ub3JpZ2luWCkge1xuICAgIGNhc2UgJ3N0YXJ0JzpcbiAgICAgIGxlZnQgPSBhbmNob3JSZWN0LmxlZnQ7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdjZW50ZXInOlxuICAgICAgbGVmdCA9IGFuY2hvclJlY3QubGVmdCArIGFuY2hvclJlY3Qud2lkdGggLyAyO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnZW5kJzpcbiAgICAgIGxlZnQgPSBhbmNob3JSZWN0LnJpZ2h0O1xuICAgICAgYnJlYWs7XG4gIH1cblxuICBzd2l0Y2ggKHBvc2l0aW9uLm9yaWdpblkpIHtcbiAgICBjYXNlICd0b3AnOlxuICAgICAgdG9wID0gYW5jaG9yUmVjdC50b3A7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdjZW50ZXInOlxuICAgICAgdG9wID0gYW5jaG9yUmVjdC50b3AgKyBhbmNob3JSZWN0LmhlaWdodCAvIDI7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdib3R0b20nOlxuICAgICAgdG9wID0gYW5jaG9yUmVjdC5ib3R0b207XG4gICAgICBicmVhaztcbiAgfVxuXG4gIC8vIEFkanVzdCBmb3Igb3ZlcmxheSBhbGlnbm1lbnRcbiAgc3dpdGNoIChwb3NpdGlvbi5vdmVybGF5WCkge1xuICAgIGNhc2UgJ3N0YXJ0JzpcbiAgICAgIC8vIGxlZnQgc3RheXMgdGhlIHNhbWVcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2NlbnRlcic6XG4gICAgICBsZWZ0IC09IG92ZXJsYXlSZWN0LndpZHRoIC8gMjtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2VuZCc6XG4gICAgICBsZWZ0IC09IG92ZXJsYXlSZWN0LndpZHRoO1xuICAgICAgYnJlYWs7XG4gIH1cblxuICBzd2l0Y2ggKHBvc2l0aW9uLm92ZXJsYXlZKSB7XG4gICAgY2FzZSAndG9wJzpcbiAgICAgIC8vIHRvcCBzdGF5cyB0aGUgc2FtZVxuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnY2VudGVyJzpcbiAgICAgIHRvcCAtPSBvdmVybGF5UmVjdC5oZWlnaHQgLyAyO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnYm90dG9tJzpcbiAgICAgIHRvcCAtPSBvdmVybGF5UmVjdC5oZWlnaHQ7XG4gICAgICBicmVhaztcbiAgfVxuXG4gIC8vIEFwcGx5IG9mZnNldHNcbiAgaWYgKHBvc2l0aW9uLm9mZnNldFgpIHtcbiAgICBsZWZ0ICs9IHBvc2l0aW9uLm9mZnNldFg7XG4gIH1cbiAgaWYgKHBvc2l0aW9uLm9mZnNldFkpIHtcbiAgICB0b3AgKz0gcG9zaXRpb24ub2Zmc2V0WTtcbiAgfVxuXG4gIHJldHVybiB7IHRvcCwgbGVmdCB9O1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgb3ZlcmxheSBwb3NpdGlvbiBmaXRzIHdpdGhpbiB0aGUgdmlld3BvcnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaXRzSW5WaWV3cG9ydChcbiAgcG9zaXRpb246IHsgdG9wOiBudW1iZXI7IGxlZnQ6IG51bWJlciB9LFxuICBvdmVybGF5UmVjdDogRE9NUmVjdCxcbiAgdmlld3BvcnRXaWR0aDogbnVtYmVyLFxuICB2aWV3cG9ydEhlaWdodDogbnVtYmVyLFxuKTogYm9vbGVhbiB7XG4gIHJldHVybiBwb3NpdGlvbi5sZWZ0ICsgb3ZlcmxheVJlY3Qud2lkdGggPD0gdmlld3BvcnRXaWR0aCAmJiBwb3NpdGlvbi50b3AgKyBvdmVybGF5UmVjdC5oZWlnaHQgPD0gdmlld3BvcnRIZWlnaHQ7XG59XG5cbi8qKlxuICogRmluZHMgdGhlIGJlc3QgcG9zaXRpb24gZm9yIGFuIG92ZXJsYXkgdGhhdCBmaXRzIGluIHRoZSB2aWV3cG9ydC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbmRCZXN0UG9zaXRpb24oXG4gIGFuY2hvclJlY3Q6IERPTVJlY3QsXG4gIG92ZXJsYXlSZWN0OiBET01SZWN0LFxuICBwb3NpdGlvbnM6IEFYQ29ubmVjdGVkUG9zaXRpb25bXSxcbiAgdmlld3BvcnRXaWR0aDogbnVtYmVyLFxuICB2aWV3cG9ydEhlaWdodDogbnVtYmVyLFxuKTogeyBwb3NpdGlvbjogQVhDb25uZWN0ZWRQb3NpdGlvbjsgY29vcmRzOiB7IHRvcDogbnVtYmVyOyBsZWZ0OiBudW1iZXIgfSB9IHtcbiAgZm9yIChjb25zdCBwb3NpdGlvbiBvZiBwb3NpdGlvbnMpIHtcbiAgICBjb25zdCBjb29yZHMgPSBjYWxjdWxhdGVBbmNob3JQb3NpdGlvbihhbmNob3JSZWN0LCBvdmVybGF5UmVjdCwgcG9zaXRpb24pO1xuXG4gICAgaWYgKGZpdHNJblZpZXdwb3J0KGNvb3Jkcywgb3ZlcmxheVJlY3QsIHZpZXdwb3J0V2lkdGgsIHZpZXdwb3J0SGVpZ2h0KSkge1xuICAgICAgcmV0dXJuIHsgcG9zaXRpb24sIGNvb3JkcyB9O1xuICAgIH1cbiAgfVxuXG4gIC8vIEZhbGxiYWNrIHRvIGZpcnN0IHBvc2l0aW9uIGlmIG5vbmUgZml0XG4gIGNvbnN0IGZhbGxiYWNrQ29vcmRzID0gY2FsY3VsYXRlQW5jaG9yUG9zaXRpb24oYW5jaG9yUmVjdCwgb3ZlcmxheVJlY3QsIHBvc2l0aW9uc1swXSk7XG4gIHJldHVybiB7IHBvc2l0aW9uOiBwb3NpdGlvbnNbMF0sIGNvb3JkczogZmFsbGJhY2tDb29yZHMgfTtcbn1cbiJdfQ==","import { convertToPlacement } from '@acorex/cdk/common';\nimport { AXComponentService } from '@acorex/core/components';\nimport { AXZIndexService } from '@acorex/core/z-index';\nimport { DOCUMENT } from '@angular/common';\nimport { ComponentRef, ElementRef, inject, Injectable, TemplateRef } from '@angular/core';\nimport { findBestPosition } from './overlay.types';\nimport * as i0 from \"@angular/core\";\nexport class AXOverlayService {\n constructor() {\n this.componentService = inject(AXComponentService);\n this.document = inject(DOCUMENT);\n this.zIndexService = inject(AXZIndexService);\n }\n /**\n * Creates an overlay with optional anchor-based positioning.\n * @param content - Component or template to display\n * @param options - Configuration options for the overlay\n * @returns Promise<AXOverlayRef> - Reference to the created overlay\n */\n async create(content, options) {\n let instance;\n let overlayContainer = null;\n let backdropElement = null;\n let isDisposed = false;\n // Acquire a z-index token for this overlay\n let zToken = this.zIndexService.acquire();\n if (content instanceof TemplateRef) {\n instance = this.componentService.createFromTemplate(content);\n }\n else {\n instance = this.componentService.createFromComponent(content);\n if (options?.inputs) {\n Object.entries(options.inputs).forEach((c) => {\n instance.setInput(c[0], c[1]);\n });\n }\n }\n // Get the host element\n const hostElement = this.getHostElement(instance);\n // Create backdrop if enabled\n if (options?.backdrop?.enabled) {\n backdropElement = this.createBackdrop(options, zToken.zIndex);\n }\n // If anchor options are provided, set up positioned overlay (for tooltips, popovers)\n if (options?.anchorOptions?.anchor) {\n overlayContainer = this.createOverlayContainer(hostElement, options, zToken.zIndex);\n this.positionOverlay(overlayContainer, options);\n }\n else if (options?.centered === false) {\n // Non-centered positioned overlay (for toasts, notifications)\n overlayContainer = this.createOverlayContainer(hostElement, options, zToken.zIndex);\n }\n else {\n // No anchor - create centered overlay (for modals, popups)\n overlayContainer = this.createCenteredOverlayContainer(hostElement, options, zToken.zIndex);\n }\n const updatePosition = () => {\n if (overlayContainer && options?.anchorOptions?.anchor) {\n this.positionOverlay(overlayContainer, options);\n }\n };\n const dispose = () => {\n if (isDisposed)\n return;\n isDisposed = true;\n // Remove scroll listener\n if (scrollHandler) {\n this.document.removeEventListener('scroll', scrollHandler, true);\n window.removeEventListener('scroll', scrollHandler, true);\n }\n // Remove backdrop\n if (backdropElement) {\n backdropElement.remove();\n }\n if (overlayContainer) {\n overlayContainer.remove();\n }\n if (instance instanceof ComponentRef) {\n instance.destroy();\n }\n else {\n instance.destroy();\n }\n // Release the z-index token\n this.zIndexService.release(zToken);\n zToken = null;\n // Notify callback\n options?.onDispose?.();\n };\n const bringToFront = () => {\n if (!zToken || isDisposed)\n return;\n zToken = this.zIndexService.bringToFront(zToken);\n if (backdropElement) {\n backdropElement.style.zIndex = String(zToken.zIndex);\n }\n if (overlayContainer) {\n overlayContainer.style.zIndex = String(zToken.zIndex);\n }\n };\n // Set up backdrop click handler\n if (backdropElement && options?.backdrop?.closeOnClick) {\n backdropElement.addEventListener('click', () => {\n dispose();\n });\n }\n // Set up scroll listener to close overlay on scroll (for anchored overlays only)\n let scrollHandler = null;\n let scrollListenerActive = false;\n if (options?.anchorOptions?.anchor) {\n const anchorElement = options.anchorOptions.anchor instanceof ElementRef\n ? options.anchorOptions.anchor.nativeElement\n : options.anchorOptions.anchor;\n scrollHandler = (e) => {\n // Ignore scroll events during initial setup\n if (!scrollListenerActive) {\n return;\n }\n const target = e.target;\n // Don't close if scrolling inside the overlay itself\n if (overlayContainer?.contains(target)) {\n return;\n }\n // Don't close if scrolling inside the anchor element\n if (anchorElement?.contains(target)) {\n return;\n }\n // Only close on scrollable container scrolls, not document-level events\n // that might be triggered by layout changes\n if (target === this.document || target === this.document.documentElement) {\n // Check if it's an actual scroll by verifying scroll position changed\n const scrollTop = this.document.documentElement.scrollTop || this.document.body.scrollTop;\n const scrollLeft = this.document.documentElement.scrollLeft || this.document.body.scrollLeft;\n if (scrollTop === 0 && scrollLeft === 0) {\n return;\n }\n }\n dispose();\n };\n // Listen on document with capture to catch all scroll events\n this.document.addEventListener('scroll', scrollHandler, true);\n window.addEventListener('scroll', scrollHandler, true);\n // Delay activation to prevent initial layout scroll events from triggering\n requestAnimationFrame(() => {\n scrollListenerActive = true;\n });\n }\n return {\n instance,\n updatePosition,\n dispose,\n overlayElement: overlayContainer,\n zToken,\n bringToFront,\n };\n }\n /**\n * Creates a backdrop element.\n */\n createBackdrop(options, zIndex) {\n const backdrop = this.document.createElement('div');\n backdrop.classList.add('ax-overlay-backdrop');\n if (options?.backdrop?.backdropClass) {\n backdrop.classList.add(options.backdrop.backdropClass);\n }\n // Style the backdrop\n backdrop.style.position = 'fixed';\n backdrop.style.top = '0';\n backdrop.style.left = '0';\n backdrop.style.width = '100%';\n backdrop.style.height = '100%';\n backdrop.style.zIndex = String(zIndex);\n if (options?.backdrop?.background) {\n backdrop.style.backgroundColor = 'rgba(0, 0, 0, 0.5)';\n }\n this.document.body.appendChild(backdrop);\n return backdrop;\n }\n /**\n * Creates a centered overlay container (for modals/popups).\n */\n createCenteredOverlayContainer(content, options, zIndex) {\n const container = this.document.createElement('div');\n container.classList.add('ax-overlay-container', 'ax-overlay-centered');\n // Add custom panel classes\n if (options?.panelClass) {\n const classes = Array.isArray(options.panelClass) ? options.panelClass : [options.panelClass];\n classes.forEach((cls) => {\n if (cls) {\n container.classList.add(cls);\n }\n });\n }\n // Set styles for centered positioning\n container.style.position = 'fixed';\n container.style.top = '0';\n container.style.left = '0';\n container.style.width = '100%';\n container.style.height = '100%';\n container.style.display = 'flex';\n container.style.alignItems = 'center';\n container.style.justifyContent = 'center';\n container.style.zIndex = String(zIndex);\n // Create inner wrapper for the content\n const contentWrapper = this.document.createElement('div');\n contentWrapper.classList.add('ax-overlay-content');\n // Apply width if provided\n if (options?.width) {\n contentWrapper.style.width = options.width;\n }\n // Move content into wrapper\n contentWrapper.appendChild(content);\n container.appendChild(contentWrapper);\n // Append to body\n this.document.body.appendChild(container);\n return container;\n }\n /**\n * Gets the host element from a ComponentRef or EmbeddedViewRef.\n */\n getHostElement(instance) {\n if (instance instanceof ComponentRef) {\n return instance.location.nativeElement;\n }\n else {\n // EmbeddedViewRef - get the first root node\n return instance.rootNodes[0];\n }\n }\n /**\n * Creates an overlay container element and appends the content to it.\n */\n createOverlayContainer(content, options, zIndex) {\n const container = this.document.createElement('div');\n container.classList.add('ax-overlay-container');\n // Add custom panel classes\n if (options?.panelClass) {\n const classes = Array.isArray(options.panelClass) ? options.panelClass : [options.panelClass];\n classes.forEach((cls) => {\n if (cls) {\n container.classList.add(cls);\n }\n });\n }\n // Set initial styles for positioning\n container.style.position = 'fixed';\n container.style.zIndex = String(zIndex);\n container.style.maxWidth = '100vw';\n container.style.maxHeight = '100vh';\n // Apply width if provided, otherwise use max-content\n if (options?.width) {\n container.style.width = options.width;\n }\n else {\n container.style.width = 'max-content';\n }\n // Move content into container\n container.appendChild(content);\n // Append to body\n this.document.body.appendChild(container);\n return container;\n }\n /**\n * Positions the overlay container relative to the anchor element.\n */\n positionOverlay(container, options) {\n if (options.actionSheetStyle) {\n container.style.bottom = `0px`;\n container.style.left = `0px`;\n return;\n }\n const anchorOptions = options.anchorOptions;\n if (!anchorOptions?.anchor)\n return;\n const anchorElement = anchorOptions.anchor instanceof ElementRef ? anchorOptions.anchor.nativeElement : anchorOptions.anchor;\n const anchorRect = anchorElement.getBoundingClientRect();\n const containerRect = container.getBoundingClientRect();\n const viewportWidth = window.innerWidth;\n const viewportHeight = window.innerHeight;\n // Get positions from placement\n let positions = convertToPlacement(anchorOptions.placement ?? 'bottom');\n if (positions.length === 0) {\n positions = convertToPlacement('bottom');\n }\n // Apply custom offsets to positions (ADD to existing offset, don't replace)\n if (anchorOptions.offsetX || anchorOptions.offsetY) {\n positions = positions.map((p) => ({\n ...p,\n offsetX: (p.offsetX ?? 0) + (anchorOptions.offsetX ?? 0),\n offsetY: (p.offsetY ?? 0) + (anchorOptions.offsetY ?? 0),\n }));\n }\n // Find the best position that fits in viewport\n const { coords } = anchorOptions.autoFlip\n ? findBestPosition(anchorRect, containerRect, positions, viewportWidth, viewportHeight)\n : {\n coords: {\n top: positions[0].originY === 'bottom'\n ? anchorRect.bottom + (positions[0].offsetY ?? 0)\n : anchorRect.top - containerRect.height + (positions[0].offsetY ?? 0),\n left: anchorRect.left + (positions[0].offsetX ?? 0),\n },\n };\n // Apply position\n container.style.top = `${coords.top}px`;\n container.style.left = `${coords.left}px`;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXOverlayService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXOverlayService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXOverlayService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY2RrL292ZXJsYXkvc3JjL2xpYi9vdmVybGF5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDeEQsT0FBTyxFQUFzQixrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2pGLE9BQU8sRUFBRSxlQUFlLEVBQVksTUFBTSxzQkFBc0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQW1CLE1BQU0sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNHLE9BQU8sRUFBa0MsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFLbkYsTUFBTSxPQUFPLGdCQUFnQjtJQUg3QjtRQUlVLHFCQUFnQixHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQzlDLGFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDNUIsa0JBQWEsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7S0FnV2pEO0lBOVZDOzs7OztPQUtHO0lBQ0gsS0FBSyxDQUFDLE1BQU0sQ0FBYyxPQUE4QixFQUFFLE9BQTBCO1FBQ2xGLElBQUksUUFBOEMsQ0FBQztRQUNuRCxJQUFJLGdCQUFnQixHQUF1QixJQUFJLENBQUM7UUFDaEQsSUFBSSxlQUFlLEdBQXVCLElBQUksQ0FBQztRQUMvQyxJQUFJLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFFdkIsMkNBQTJDO1FBQzNDLElBQUksTUFBTSxHQUFvQixJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBRTNELElBQUksT0FBTyxZQUFZLFdBQVcs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QUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQztpQkFDcEQ7YUFDRixDQUFDO1FBRU4saUJBQWlCO1FBQ2pCLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLEdBQUcsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQ3hDLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLEdBQUcsTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDO0lBQzVDLENBQUM7K0dBbFdVLGdCQUFnQjttSEFBaEIsZ0JBQWdCLGNBRmYsTUFBTTs7NEZBRVAsZ0JBQWdCO2tCQUg1QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbnZlcnRUb1BsYWNlbWVudCB9IGZyb20gJ0BhY29yZXgvY2RrL2NvbW1vbic7XG5pbXBvcnQgeyBBWENvbXBvbmVudENvbnRlbnQsIEFYQ29tcG9uZW50U2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29yZS9jb21wb25lbnRzJztcbmltcG9ydCB7IEFYWkluZGV4U2VydmljZSwgQVhaVG9rZW4gfSBmcm9tICdAYWNvcmV4L2NvcmUvei1pbmRleCc7XG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnRSZWYsIEVsZW1lbnRSZWYsIEVtYmVkZGVkVmlld1JlZiwgaW5qZWN0LCBJbmplY3RhYmxlLCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhPdmVybGF5T3B0aW9ucywgQVhPdmVybGF5UmVmLCBmaW5kQmVzdFBvc2l0aW9uIH0gZnJvbSAnLi9vdmVybGF5LnR5cGVzJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEFYT3ZlcmxheVNlcnZpY2Uge1xuICBwcml2YXRlIGNvbXBvbmVudFNlcnZpY2UgPSBpbmplY3QoQVhDb21wb25lbnRTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBkb2N1bWVudCA9IGluamVjdChET0NVTUVOVCk7XG4gIHByaXZhdGUgekluZGV4U2VydmljZSA9IGluamVjdChBWFpJbmRleFNlcnZpY2UpO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIG92ZXJsYXkgd2l0aCBvcHRpb25hbCBhbmNob3ItYmFzZWQgcG9zaXRpb25pbmcuXG4gICAqIEBwYXJhbSBjb250ZW50IC0gQ29tcG9uZW50IG9yIHRlbXBsYXRlIHRvIGRpc3BsYXlcbiAgICogQHBhcmFtIG9wdGlvbnMgLSBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBvdmVybGF5XG4gICAqIEByZXR1cm5zIFByb21pc2U8QVhPdmVybGF5UmVmPiAtIFJlZmVyZW5jZSB0byB0aGUgY3JlYXRlZCBvdmVybGF5XG4gICAqL1xuICBhc3luYyBjcmVhdGU8VCA9IHVua25vd24+KGNvbnRlbnQ6IEFYQ29tcG9uZW50Q29udGVudDxUPiwgb3B0aW9ucz86IEFYT3ZlcmxheU9wdGlvbnMpOiBQcm9taXNlPEFYT3ZlcmxheVJlZjxUPj4ge1xuICAgIGxldCBpbnN0YW5jZTogRW1iZWRkZWRWaWV3UmVmPFQ+IHwgQ29tcG9uZW50UmVmPFQ+O1xuICAgIGxldCBvdmVybGF5Q29udGFpbmVyOiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xuICAgIGxldCBiYWNrZHJvcEVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG4gICAgbGV0IGlzRGlzcG9zZWQgPSBmYWxzZTtcblxuICAgIC8vIEFjcXVpcmUgYSB6LWluZGV4IHRva2VuIGZvciB0aGlzIG92ZXJsYXlcbiAgICBsZXQgelRva2VuOiBBWFpUb2tlbiB8IG51bGwgPSB0aGlzLnpJbmRleFNlcnZpY2UuYWNxdWlyZSgpO1xuXG4gICAgaWYgKGNvbnRlbnQgaW5zdGFuY2VvZiBUZW1wbGF0ZVJlZikge1xuICAgICAgaW5zdGFuY2UgPSB0aGlzLmNvbXBvbmVudFNlcnZpY2UuY3JlYXRlRnJvbVRlbXBsYXRlPFQ+KGNvbnRlbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpbnN0YW5jZSA9IHRoaXMuY29tcG9uZW50U2VydmljZS5jcmVhdGVGcm9tQ29tcG9uZW50PFQ+KGNvbnRlbnQpO1xuICAgICAgaWYgKG9wdGlvbnM/LmlucHV0cykge1xuICAgICAgICBPYmplY3QuZW50cmllcyhvcHRpb25zLmlucHV0cykuZm9yRWFjaCgoYykgPT4ge1xuICAgICAgICAgIChpbnN0YW5jZSBhcyBDb21wb25lbnRSZWY8VD4pLnNldElucHV0KGNbMF0sIGNbMV0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBHZXQgdGhlIGhvc3QgZWxlbWVudFxuICAgIGNvbnN0IGhvc3RFbGVtZW50ID0gdGhpcy5nZXRIb3N0RWxlbWVudChpbnN0YW5jZSk7XG5cbiAgICAvLyBDcmVhdGUgYmFja2Ryb3AgaWYgZW5hYmxlZFxuICAgIGlmIChvcHRpb25zPy5iYWNrZHJvcD8uZW5hYmxlZCkge1xuICAgICAgYmFja2Ryb3BFbGVtZW50ID0gdGhpcy5jcmVhdGVCYWNrZHJvcChvcHRpb25zLCB6VG9rZW4uekluZGV4KTtcbiAgICB9XG5cbiAgICAvLyBJZiBhbmNob3Igb3B0aW9ucyBhcmUgcHJvdmlkZWQsIHNldCB1cCBwb3NpdGlvbmVkIG92ZXJsYXkgKGZvciB0b29sdGlwcywgcG9wb3ZlcnMpXG4gICAgaWYgKG9wdGlvbnM/LmFuY2hvck9wdGlvbnM/LmFuY2hvcikge1xuICAgICAgb3ZlcmxheUNvbnRhaW5lciA9IHRoaXMuY3JlYXRlT3ZlcmxheUNvbnRhaW5lcihob3N0RWxlbWVudCwgb3B0aW9ucywgelRva2VuLnpJbmRleCk7XG4gICAgICB0aGlzLnBvc2l0aW9uT3ZlcmxheShvdmVybGF5Q29udGFpbmVyLCBvcHRpb25zKTtcbiAgICB9IGVsc2UgaWYgKG9wdGlvbnM/LmNlbnRlcmVkID09PSBmYWxzZSkge1xuICAgICAgLy8gTm9uLWNlbnRlcmVkIHBvc2l0aW9uZWQgb3ZlcmxheSAoZm9yIHRvYXN0cywgbm90aWZpY2F0aW9ucylcbiAgICAgIG92ZXJsYXlDb250YWluZXIgPSB0aGlzLmNyZWF0ZU92ZXJsYXlDb250YWluZXIoaG9zdEVsZW1lbnQsIG9wdGlvbnMsIHpUb2tlbi56SW5kZXgpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBObyBhbmNob3IgLSBjcmVhdGUgY2VudGVyZWQgb3ZlcmxheSAoZm9yIG1vZGFscywgcG9wdXBzKVxuICAgICAgb3ZlcmxheUNvbnRhaW5lciA9IHRoaXMuY3JlYXRlQ2VudGVyZWRPdmVybGF5Q29udGFpbmVyKGhvc3RFbGVtZW50LCBvcHRpb25zLCB6VG9rZW4uekluZGV4KTtcbiAgICB9XG5cbiAgICBjb25zdCB1cGRhdGVQb3NpdGlvbiA9ICgpID0+IHtcbiAgICAgIGlmIChvdmVybGF5Q29udGFpbmVyICYmIG9wdGlvbnM/LmFuY2hvck9wdGlvbnM/LmFuY2hvcikge1xuICAgICAgICB0aGlzLnBvc2l0aW9uT3ZlcmxheShvdmVybGF5Q29udGFpbmVyLCBvcHRpb25zKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgZGlzcG9zZSA9ICgpID0+IHtcbiAgICAgIGlmIChpc0Rpc3Bvc2VkKSByZXR1cm47XG4gICAgICBpc0Rpc3Bvc2VkID0gdHJ1ZTtcblxuICAgICAgLy8gUmVtb3ZlIHNjcm9sbCBsaXN0ZW5lclxuICAgICAgaWYgKHNjcm9sbEhhbmRsZXIpIHtcbiAgICAgICAgdGhpcy5kb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBzY3JvbGxIYW5kbGVyLCB0cnVlKTtcbiAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHNjcm9sbEhhbmRsZXIsIHRydWUpO1xuICAgICAgfVxuXG4gICAgICAvLyBSZW1vdmUgYmFja2Ryb3BcbiAgICAgIGlmIChiYWNrZHJvcEVsZW1lbnQpIHtcbiAgICAgICAgYmFja2Ryb3BFbGVtZW50LnJlbW92ZSgpO1xuICAgICAgfVxuXG4gICAgICBpZiAob3ZlcmxheUNvbnRhaW5lcikge1xuICAgICAgICBvdmVybGF5Q29udGFpbmVyLnJlbW92ZSgpO1xuICAgICAgfVxuICAgICAgaWYgKGluc3RhbmNlIGluc3RhbmNlb2YgQ29tcG9uZW50UmVmKSB7XG4gICAgICAgIGluc3RhbmNlLmRlc3Ryb3koKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGluc3RhbmNlLmRlc3Ryb3koKTtcbiAgICAgIH1cblxuICAgICAgLy8gUmVsZWFzZSB0aGUgei1pbmRleCB0b2tlblxuICAgICAgdGhpcy56SW5kZXhTZXJ2aWNlLnJlbGVhc2UoelRva2VuKTtcbiAgICAgIHpUb2tlbiA9IG51bGw7XG5cbiAgICAgIC8vIE5vdGlmeSBjYWxsYmFja1xuICAgICAgb3B0aW9ucz8ub25EaXNwb3NlPy4oKTtcbiAgICB9O1xuXG4gICAgY29uc3QgYnJpbmdUb0Zyb250ID0gKCkgPT4ge1xuICAgICAgaWYgKCF6VG9rZW4gfHwgaXNEaXNwb3NlZCkgcmV0dXJuO1xuICAgICAgelRva2VuID0gdGhpcy56SW5kZXhTZXJ2aWNlLmJyaW5nVG9Gcm9udCh6VG9rZW4pO1xuICAgICAgaWYgKGJhY2tkcm9wRWxlbWVudCkge1xuICAgICAgICBiYWNrZHJvcEVsZW1lbnQuc3R5bGUuekluZGV4ID0gU3RyaW5nKHpUb2tlbi56SW5kZXgpO1xuICAgICAgfVxuICAgICAgaWYgKG92ZXJsYXlDb250YWluZXIpIHtcbiAgICAgICAgb3ZlcmxheUNvbnRhaW5lci5zdHlsZS56SW5kZXggPSBTdHJpbmcoelRva2VuLnpJbmRleCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIC8vIFNldCB1cCBiYWNrZHJvcCBjbGljayBoYW5kbGVyXG4gICAgaWYgKGJhY2tkcm9wRWxlbWVudCAmJiBvcHRpb25zPy5iYWNrZHJvcD8uY2xvc2VPbkNsaWNrKSB7XG4gICAgICBiYWNrZHJvcEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XG4gICAgICAgIGRpc3Bvc2UoKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIFNldCB1cCBzY3JvbGwgbGlzdGVuZXIgdG8gY2xvc2Ugb3ZlcmxheSBvbiBzY3JvbGwgKGZvciBhbmNob3JlZCBvdmVybGF5cyBvbmx5KVxuICAgIGxldCBzY3JvbGxIYW5kbGVyOiAoKGU6IEV2ZW50KSA9PiB2b2lkKSB8IG51bGwgPSBudWxsO1xuICAgIGxldCBzY3JvbGxMaXN0ZW5lckFjdGl2ZSA9IGZhbHNlO1xuXG4gICAgaWYgKG9wdGlvbnM/LmFuY2hvck9wdGlvbnM/LmFuY2hvcikge1xuICAgICAgY29uc3QgYW5jaG9yRWxlbWVudCA9XG4gICAgICAgIG9wdGlvbnMuYW5jaG9yT3B0aW9ucy5hbmNob3IgaW5zdGFuY2VvZiBFbGVtZW50UmVmXG4gICAgICAgICAgPyBvcHRpb25zLmFuY2hvck9wdGlvbnMuYW5jaG9yLm5hdGl2ZUVsZW1lbnRcbiAgICAgICAgICA6IG9wdGlvbnMuYW5jaG9yT3B0aW9ucy5hbmNob3I7XG5cbiAgICAgIHNjcm9sbEhhbmRsZXIgPSAoZTogRXZlbnQpID0+IHtcbiAgICAgICAgLy8gSWdub3JlIHNjcm9sbCBldmVudHMgZHVyaW5nIGluaXRpYWwgc2V0dXBcbiAgICAgICAgaWYgKCFzY3JvbGxMaXN0ZW5lckFjdGl2ZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRhcmdldCA9IGUudGFyZ2V0IGFzIE5vZGU7XG5cbiAgICAgICAgLy8gRG9uJ3QgY2xvc2UgaWYgc2Nyb2xsaW5nIGluc2lkZSB0aGUgb3ZlcmxheSBpdHNlbGZcbiAgICAgICAgaWYgKG92ZXJsYXlDb250YWluZXI/LmNvbnRhaW5zKHRhcmdldCkpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBEb24ndCBjbG9zZSBpZiBzY3JvbGxpbmcgaW5zaWRlIHRoZSBhbmNob3IgZWxlbWVudFxuICAgICAgICBpZiAoYW5jaG9yRWxlbWVudD8uY29udGFpbnModGFyZ2V0KSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE9ubHkgY2xvc2Ugb24gc2Nyb2xsYWJsZSBjb250YWluZXIgc2Nyb2xscywgbm90IGRvY3VtZW50LWxldmVsIGV2ZW50c1xuICAgICAgICAvLyB0aGF0IG1pZ2h0IGJlIHRyaWdnZXJlZCBieSBsYXlvdXQgY2hhbmdlc1xuICAgICAgICBpZiAodGFyZ2V0ID09PSB0aGlzLmRvY3VtZW50IHx8IHRhcmdldCA9PT0gdGhpcy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpIHtcbiAgICAgICAgICAvLyBDaGVjayBpZiBpdCdzIGFuIGFjdHVhbCBzY3JvbGwgYnkgdmVyaWZ5aW5nIHNjcm9sbCBwb3NpdGlvbiBjaGFuZ2VkXG4gICAgICAgICAgY29uc3Qgc2Nyb2xsVG9wID0gdGhpcy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wIHx8IHRoaXMuZG9jdW1lbnQuYm9keS5zY3JvbGxUb3A7XG4gICAgICAgICAgY29uc3Qgc2Nyb2xsTGVmdCA9IHRoaXMuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbExlZnQgfHwgdGhpcy5kb2N1bWVudC5ib2R5LnNjcm9sbExlZnQ7XG4gICAgICAgICAgaWYgKHNjcm9sbFRvcCA9PT0gMCAmJiBzY3JvbGxMZWZ0ID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZGlzcG9zZSgpO1xuICAgICAgfTtcblxuICAgICAgLy8gTGlzdGVuIG9uIGRvY3VtZW50IHdpdGggY2FwdHVyZSB0byBjYXRjaCBhbGwgc2Nyb2xsIGV2ZW50c1xuICAgICAgdGhpcy5kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBzY3JvbGxIYW5kbGVyLCB0cnVlKTtcbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBzY3JvbGxIYW5kbGVyLCB0cnVlKTtcblxuICAgICAgLy8gRGVsYXkgYWN0aXZhdGlvbiB0byBwcmV2ZW50IGluaXRpYWwgbGF5b3V0IHNjcm9sbCBldmVudHMgZnJvbSB0cmlnZ2VyaW5nXG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICBzY3JvbGxMaXN0ZW5lckFjdGl2ZSA9IHRydWU7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgaW5zdGFuY2UsXG4gICAgICB1cGRhdGVQb3NpdGlvbixcbiAgICAgIGRpc3Bvc2UsXG4gICAgICBvdmVybGF5RWxlbWVudDogb3ZlcmxheUNvbnRhaW5lcixcbiAgICAgIHpUb2tlbixcbiAgICAgIGJyaW5nVG9Gcm9udCxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBiYWNrZHJvcCBlbGVtZW50LlxuICAgKi9cbiAgcHJpdmF0ZSBjcmVhdGVCYWNrZHJvcChvcHRpb25zOiBBWE92ZXJsYXlPcHRpb25zIHwgdW5kZWZpbmVkLCB6SW5kZXg6IG51bWJlcik6IEhUTUxFbGVtZW50IHtcbiAgICBjb25zdCBiYWNrZHJvcCA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgYmFja2Ryb3AuY2xhc3NMaXN0LmFkZCgnYXgtb3ZlcmxheS1iYWNrZHJvcCcpO1xuXG4gICAgaWYgKG9wdGlvbnM/LmJhY2tkcm9wPy5iYWNrZHJvcENsYXNzKSB7XG4gICAgICBiYWNrZHJvcC5jbGFzc0xpc3QuYWRkKG9wdGlvbnMuYmFja2Ryb3AuYmFja2Ryb3BDbGFzcyk7XG4gICAgfVxuXG4gICAgLy8gU3R5bGUgdGhlIGJhY2tkcm9wXG4gICAgYmFja2Ryb3Auc3R5bGUucG9zaXRpb24gPSAnZml4ZWQnO1xuICAgIGJhY2tkcm9wLnN0eWxlLnRvcCA9ICcwJztcbiAgICBiYWNrZHJvcC5zdHlsZS5sZWZ0ID0gJzAnO1xuICAgIGJhY2tkcm9wLnN0eWxlLndpZHRoID0gJzEwMCUnO1xuICAgIGJhY2tkcm9wLnN0eWxlLmhlaWdodCA9ICcxMDAlJztcbiAgICBiYWNrZHJvcC5zdHlsZS56SW5kZXggPSBTdHJpbmcoekluZGV4KTtcblxuICAgIGlmIChvcHRpb25zPy5iYWNrZHJvcD8uYmFja2dyb3VuZCkge1xuICAgICAgYmFja2Ryb3Auc3R5bGUuYmFja2dyb3VuZENvbG9yID0gJ3JnYmEoMCwgMCwgMCwgMC41KSc7XG4gICAgfVxuXG4gICAgdGhpcy5kb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGJhY2tkcm9wKTtcbiAgICByZXR1cm4gYmFja2Ryb3A7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIGNlbnRlcmVkIG92ZXJsYXkgY29udGFpbmVyIChmb3IgbW9kYWxzL3BvcHVwcykuXG4gICAqL1xuICBwcml2YXRlIGNyZWF0ZUNlbnRlcmVkT3ZlcmxheUNvbnRhaW5lcihcbiAgICBjb250ZW50OiBIVE1MRWxlbWVudCxcbiAgICBvcHRpb25zOiBBWE92ZXJsYXlPcHRpb25zIHwgdW5kZWZpbmVkLFxuICAgIHpJbmRleDogbnVtYmVyLFxuICApOiBIVE1MRWxlbWVudCB7XG4gICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICBjb250YWluZXIuY2xhc3NMaXN0LmFkZCgnYXgtb3ZlcmxheS1jb250YWluZXInLCAnYXgtb3ZlcmxheS1jZW50ZXJlZCcpO1xuXG4gICAgLy8gQWRkIGN1c3RvbSBwYW5lbCBjbGFzc2VzXG4gICAgaWYgKG9wdGlvbnM/LnBhbmVsQ2xhc3MpIHtcbiAgICAgIGNvbnN0IGNsYXNzZXMgPSBBcnJheS5pc0FycmF5KG9wdGlvbnMucGFuZWxDbGFzcykgPyBvcHRpb25zLnBhbmVsQ2xhc3MgOiBbb3B0aW9ucy5wYW5lbENsYXNzXTtcbiAgICAgIGNsYXNzZXMuZm9yRWFjaCgoY2xzKSA9PiB7XG4gICAgICAgIGlmIChjbHMpIHtcbiAgICAgICAgICBjb250YWluZXIuY2xhc3NMaXN0LmFkZChjbHMpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBTZXQgc3R5bGVzIGZvciBjZW50ZXJlZCBwb3NpdGlvbmluZ1xuICAgIGNvbnRhaW5lci5zdHlsZS5wb3NpdGlvbiA9ICdmaXhlZCc7XG4gICAgY29udGFpbmVyLnN0eWxlLnRvcCA9ICcwJztcbiAgICBjb250YWluZXIuc3R5bGUubGVmdCA9ICcwJztcbiAgICBjb250YWluZXIuc3R5bGUud2lkdGggPSAnMTAwJSc7XG4gICAgY29udGFpbmVyLnN0eWxlLmhlaWdodCA9ICcxMDAlJztcbiAgICBjb250YWluZXIuc3R5bGUuZGlzcGxheSA9ICdmbGV4JztcbiAgICBjb250YWluZXIuc3R5bGUuYWxpZ25JdGVtcyA9ICdjZW50ZXInO1xuICAgIGNvbnRhaW5lci5zdHlsZS5qdXN0aWZ5Q29udGVudCA9ICdjZW50ZXInO1xuICAgIGNvbnRhaW5lci5zdHlsZS56SW5kZXggPSBTdHJpbmcoekluZGV4KTtcblxuICAgIC8vIENyZWF0ZSBpbm5lciB3cmFwcGVyIGZvciB0aGUgY29udGVudFxuICAgIGNvbnN0IGNvbnRlbnRXcmFwcGVyID0gdGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICBjb250ZW50V3JhcHBlci5jbGFzc0xpc3QuYWRkKCdheC1vdmVybGF5LWNvbnRlbnQnKTtcblxuICAgIC8vIEFwcGx5IHdpZHRoIGlmIHByb3ZpZGVkXG4gICAgaWYgKG9wdGlvbnM/LndpZHRoKSB7XG4gICAgICBjb250ZW50V3JhcHBlci5zdHlsZS53aWR0aCA9IG9wdGlvbnMud2lkdGg7XG4gICAgfVxuXG4gICAgLy8gTW92ZSBjb250ZW50IGludG8gd3JhcHBlclxuICAgIGNvbnRlbnRXcmFwcGVyLmFwcGVuZENoaWxkKGNvbnRlbnQpO1xuICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChjb250ZW50V3JhcHBlcik7XG5cbiAgICAvLyBBcHBlbmQgdG8gYm9keVxuICAgIHRoaXMuZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChjb250YWluZXIpO1xuXG4gICAgcmV0dXJuIGNvbnRhaW5lcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBob3N0IGVsZW1lbnQgZnJvbSBhIENvbXBvbmVudFJlZiBvciBFbWJlZGRlZFZpZXdSZWYuXG4gICAqL1xuICBwcml2YXRlIGdldEhvc3RFbGVtZW50PFQ+KGluc3RhbmNlOiBFbWJlZGRlZFZpZXdSZWY8VD4gfCBDb21wb25lbnRSZWY8VD4pOiBIVE1MRWxlbWVudCB7XG4gICAgaWYgKGluc3RhbmNlIGluc3RhbmNlb2YgQ29tcG9uZW50UmVmKSB7XG4gICAgICByZXR1cm4gaW5zdGFuY2UubG9jYXRpb24ubmF0aXZlRWxlbWVudDtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gRW1iZWRkZWRWaWV3UmVmIC0gZ2V0IHRoZSBmaXJzdCByb290IG5vZGVcbiAgICAgIHJldHVybiBpbnN0YW5jZS5yb290Tm9kZXNbMF0gYXMgSFRNTEVsZW1lbnQ7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gb3ZlcmxheSBjb250YWluZXIgZWxlbWVudCBhbmQgYXBwZW5kcyB0aGUgY29udGVudCB0byBpdC5cbiAgICovXG4gIHByaXZhdGUgY3JlYXRlT3ZlcmxheUNvbnRhaW5lcihcbiAgICBjb250ZW50OiBIVE1MRWxlbWVudCxcbiAgICBvcHRpb25zOiBBWE92ZXJsYXlPcHRpb25zIHwgdW5kZWZpbmVkLFxuICAgIHpJbmRleDogbnVtYmVyLFxuICApOiBIVE1MRWxlbWVudCB7XG4gICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICBjb250YWluZXIuY2xhc3NMaXN0LmFkZCgnYXgtb3ZlcmxheS1jb250YWluZXInKTtcblxuICAgIC8vIEFkZCBjdXN0b20gcGFuZWwgY2xhc3Nlc1xuICAgIGlmIChvcHRpb25zPy5wYW5lbENsYXNzKSB7XG4gICAgICBjb25zdCBjbGFzc2VzID0gQXJyYXkuaXNBcnJheShvcHRpb25zLnBhbmVsQ2xhc3MpID8gb3B0aW9ucy5wYW5lbENsYXNzIDogW29wdGlvbnMucGFuZWxDbGFzc107XG4gICAgICBjbGFzc2VzLmZvckVhY2goKGNscykgPT4ge1xuICAgICAgICBpZiAoY2xzKSB7XG4gICAgICAgICAgY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoY2xzKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gU2V0IGluaXRpYWwgc3R5bGVzIGZvciBwb3NpdGlvbmluZ1xuICAgIGNvbnRhaW5lci5zdHlsZS5wb3NpdGlvbiA9ICdmaXhlZCc7XG4gICAgY29udGFpbmVyLnN0eWxlLnpJbmRleCA9IFN0cmluZyh6SW5kZXgpO1xuICAgIGNvbnRhaW5lci5zdHlsZS5tYXhXaWR0aCA9ICcxMDB2dyc7XG4gICAgY29udGFpbmVyLnN0eWxlLm1heEhlaWdodCA9ICcxMDB2aCc7XG5cbiAgICAvLyBBcHBseSB3aWR0aCBpZiBwcm92aWRlZCwgb3RoZXJ3aXNlIHVzZSBtYXgtY29udGVudFxuICAgIGlmIChvcHRpb25zPy53aWR0aCkge1xuICAgICAgY29udGFpbmVyLnN0eWxlLndpZHRoID0gb3B0aW9ucy53aWR0aDtcbiAgICB9IGVsc2Uge1xuICAgICAgY29udGFpbmVyLnN0eWxlLndpZHRoID0gJ21heC1jb250ZW50JztcbiAgICB9XG5cbiAgICAvLyBNb3ZlIGNvbnRlbnQgaW50byBjb250YWluZXJcbiAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQoY29udGVudCk7XG5cbiAgICAvLyBBcHBlbmQgdG8gYm9keVxuICAgIHRoaXMuZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChjb250YWluZXIpO1xuXG4gICAgcmV0dXJuIGNvbnRhaW5lcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBQb3NpdGlvbnMgdGhlIG92ZXJsYXkgY29udGFpbmVyIHJlbGF0aXZlIHRvIHRoZSBhbmNob3IgZWxlbWVudC5cbiAgICovXG4gIHByaXZhdGUgcG9zaXRpb25PdmVybGF5KGNvbnRhaW5lcjogSFRNTEVsZW1lbnQsIG9wdGlvbnM6IEFYT3ZlcmxheU9wdGlvbnMpOiB2b2lkIHtcbiAgICBpZiAob3B0aW9ucy5hY3Rpb25TaGVldFN0eWxlKSB7XG4gICAgICBjb250YWluZXIuc3R5bGUuYm90dG9tID0gYDBweGA7XG4gICAgICBjb250YWluZXIuc3R5bGUubGVmdCA9IGAwcHhgO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGFuY2hvck9wdGlvbnMgPSBvcHRpb25zLmFuY2hvck9wdGlvbnM7XG4gICAgaWYgKCFhbmNob3JPcHRpb25zPy5hbmNob3IpIHJldHVybjtcblxuICAgIGNvbnN0IGFuY2hvckVsZW1lbnQgPVxuICAgICAgYW5jaG9yT3B0aW9ucy5hbmNob3IgaW5zdGFuY2VvZiBFbGVtZW50UmVmID8gYW5jaG9yT3B0aW9ucy5hbmNob3IubmF0aXZlRWxlbWVudCA6IGFuY2hvck9wdGlvbnMuYW5jaG9yO1xuXG4gICAgY29uc3QgYW5jaG9yUmVjdCA9IGFuY2hvckVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY29uc3QgY29udGFpbmVyUmVjdCA9IGNvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCB2aWV3cG9ydFdpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XG4gICAgY29uc3Qgdmlld3BvcnRIZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQ7XG5cbiAgICAvLyBHZXQgcG9zaXRpb25zIGZyb20gcGxhY2VtZW50XG4gICAgbGV0IHBvc2l0aW9ucyA9IGNvbnZlcnRUb1BsYWNlbWVudChhbmNob3JPcHRpb25zLnBsYWNlbWVudCA/PyAnYm90dG9tJyk7XG4gICAgaWYgKHBvc2l0aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgIHBvc2l0aW9ucyA9IGNvbnZlcnRUb1BsYWNlbWVudCgnYm90dG9tJyk7XG4gICAgfVxuXG4gICAgLy8gQXBwbHkgY3VzdG9tIG9mZnNldHMgdG8gcG9zaXRpb25zIChBREQgdG8gZXhpc3Rpbmcgb2Zmc2V0LCBkb24ndCByZXBsYWNlKVxuICAgIGlmIChhbmNob3JPcHRpb25zLm9mZnNldFggfHwgYW5jaG9yT3B0aW9ucy5vZmZzZXRZKSB7XG4gICAgICBwb3NpdGlvbnMgPSBwb3NpdGlvbnMubWFwKChwKSA9PiAoe1xuICAgICAgICAuLi5wLFxuICAgICAgICBvZmZzZXRYOiAocC5vZmZzZXRYID8/IDApICsgKGFuY2hvck9wdGlvbnMub2Zmc2V0WCA/PyAwKSxcbiAgICAgICAgb2Zmc2V0WTogKHAub2Zmc2V0WSA/PyAwKSArIChhbmNob3JPcHRpb25zLm9mZnNldFkgPz8gMCksXG4gICAgICB9KSk7XG4gICAgfVxuXG4gICAgLy8gRmluZCB0aGUgYmVzdCBwb3NpdGlvbiB0aGF0IGZpdHMgaW4gdmlld3BvcnRcbiAgICBjb25zdCB7IGNvb3JkcyB9ID0gYW5jaG9yT3B0aW9ucy5hdXRvRmxpcFxuICAgICAgPyBmaW5kQmVzdFBvc2l0aW9uKGFuY2hvclJlY3QsIGNvbnRhaW5lclJlY3QsIHBvc2l0aW9ucywgdmlld3BvcnRXaWR0aCwgdmlld3BvcnRIZWlnaHQpXG4gICAgICA6IHtcbiAgICAgICAgICBjb29yZHM6IHtcbiAgICAgICAgICAgIHRvcDpcbiAgICAgICAgICAgICAgcG9zaXRpb25zWzBdLm9yaWdpblkgPT09ICdib3R0b20nXG4gICAgICAgICAgICAgICAgPyBhbmNob3JSZWN0LmJvdHRvbSArIChwb3NpdGlvbnNbMF0ub2Zmc2V0WSA/PyAwKVxuICAgICAgICAgICAgICAgIDogYW5jaG9yUmVjdC50b3AgLSBjb250YWluZXJSZWN0LmhlaWdodCArIChwb3NpdGlvbnNbMF0ub2Zmc2V0WSA/PyAwKSxcbiAgICAgICAgICAgIGxlZnQ6IGFuY2hvclJlY3QubGVmdCArIChwb3NpdGlvbnNbMF0ub2Zmc2V0WCA/PyAwKSxcbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuXG4gICAgLy8gQXBwbHkgcG9zaXRpb25cbiAgICBjb250YWluZXIuc3R5bGUudG9wID0gYCR7Y29vcmRzLnRvcH1weGA7XG4gICAgY29udGFpbmVyLnN0eWxlLmxlZnQgPSBgJHtjb29yZHMubGVmdH1weGA7XG4gIH1cbn1cbiJdfQ==","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LWNkay1vdmVybGF5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY2RrL292ZXJsYXkvc3JjL2Fjb3JleC1jZGstb3ZlcmxheS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"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"}
@@ -182,10 +182,10 @@ class AXPanViewDirective {
182
182
  this.zoom.set(Math.round(Math.max(this.minZoom(), Math.min(this.maxZoom(), this.zoom() - this.zoomStep()))));
183
183
  this.setElementPosition();
184
184
  }
185
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AXPanViewDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
186
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.15", type: AXPanViewDirective, isStandalone: true, selector: "[axPanView]", inputs: { zoomStep: { classPropertyName: "zoomStep", publicName: "zoomStep", isSignal: true, isRequired: false, transformFunction: null }, minZoom: { classPropertyName: "minZoom", publicName: "minZoom", isSignal: true, isRequired: false, transformFunction: null }, maxZoom: { classPropertyName: "maxZoom", publicName: "maxZoom", isSignal: true, isRequired: false, transformFunction: null }, freeMode: { classPropertyName: "freeMode", publicName: "freeMode", isSignal: true, isRequired: false, transformFunction: null }, fitContent: { classPropertyName: "fitContent", publicName: "fitContent", isSignal: true, isRequired: false, transformFunction: null }, disablePan: { classPropertyName: "disablePan", publicName: "disablePan", isSignal: true, isRequired: false, transformFunction: null }, disableZoom: { classPropertyName: "disableZoom", publicName: "disableZoom", isSignal: true, isRequired: false, transformFunction: null }, wrapperClasses: { classPropertyName: "wrapperClasses", publicName: "wrapperClasses", isSignal: true, isRequired: false, transformFunction: null }, panX: { classPropertyName: "panX", publicName: "panX", isSignal: true, isRequired: false, transformFunction: null }, panY: { classPropertyName: "panY", publicName: "panY", isSignal: true, isRequired: false, transformFunction: null }, zoom: { classPropertyName: "zoom", publicName: "zoom", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { panX: "panXChange", panY: "panYChange", zoom: "zoomChange", zoomChange: "zoomChange", positionChange: "positionChange" }, exportAs: ["axPanView"], ngImport: i0 }); }
185
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPanViewDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
186
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.16", type: AXPanViewDirective, isStandalone: true, selector: "[axPanView]", inputs: { zoomStep: { classPropertyName: "zoomStep", publicName: "zoomStep", isSignal: true, isRequired: false, transformFunction: null }, minZoom: { classPropertyName: "minZoom", publicName: "minZoom", isSignal: true, isRequired: false, transformFunction: null }, maxZoom: { classPropertyName: "maxZoom", publicName: "maxZoom", isSignal: true, isRequired: false, transformFunction: null }, freeMode: { classPropertyName: "freeMode", publicName: "freeMode", isSignal: true, isRequired: false, transformFunction: null }, fitContent: { classPropertyName: "fitContent", publicName: "fitContent", isSignal: true, isRequired: false, transformFunction: null }, disablePan: { classPropertyName: "disablePan", publicName: "disablePan", isSignal: true, isRequired: false, transformFunction: null }, disableZoom: { classPropertyName: "disableZoom", publicName: "disableZoom", isSignal: true, isRequired: false, transformFunction: null }, wrapperClasses: { classPropertyName: "wrapperClasses", publicName: "wrapperClasses", isSignal: true, isRequired: false, transformFunction: null }, panX: { classPropertyName: "panX", publicName: "panX", isSignal: true, isRequired: false, transformFunction: null }, panY: { classPropertyName: "panY", publicName: "panY", isSignal: true, isRequired: false, transformFunction: null }, zoom: { classPropertyName: "zoom", publicName: "zoom", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { panX: "panXChange", panY: "panYChange", zoom: "zoomChange", zoomChange: "zoomChange", positionChange: "positionChange" }, exportAs: ["axPanView"], ngImport: i0 }); }
187
187
  }
188
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AXPanViewDirective, decorators: [{
188
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPanViewDirective, decorators: [{
189
189
  type: Directive,
190
190
  args: [{
191
191
  selector: '[axPanView]',
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-cdk-pan-view.mjs","sources":["../tmp-esm2022/pan-view/lib/pan-view.directive.js","../tmp-esm2022/pan-view/acorex-cdk-pan-view.js"],"sourcesContent":["import { isPlatformBrowser } from '@angular/common';\nimport { afterNextRender, computed, Directive, DOCUMENT, ElementRef, inject, input, linkedSignal, model, NgZone, output, PLATFORM_ID, Renderer2, signal, } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class AXPanViewDirective {\n constructor() {\n this.platformId = inject(PLATFORM_ID);\n this.zone = inject(NgZone);\n this.render = inject(Renderer2);\n this.document = inject(DOCUMENT);\n this.el = inject((ElementRef));\n this.startX = signal(0, ...(ngDevMode ? [{ debugName: \"startX\" }] : []));\n this.startY = signal(0, ...(ngDevMode ? [{ debugName: \"startY\" }] : []));\n this.pointerDown = signal(false, ...(ngDevMode ? [{ debugName: \"pointerDown\" }] : []));\n this.wrapper = signal(null, ...(ngDevMode ? [{ debugName: \"wrapper\" }] : []));\n this.zoomStep = input(7, ...(ngDevMode ? [{ debugName: \"zoomStep\" }] : []));\n this.minZoom = input(25, ...(ngDevMode ? [{ debugName: \"minZoom\" }] : []));\n this.maxZoom = input(400, ...(ngDevMode ? [{ debugName: \"maxZoom\" }] : []));\n this.freeMode = input(false, ...(ngDevMode ? [{ debugName: \"freeMode\" }] : []));\n this.fitContent = input(true, ...(ngDevMode ? [{ debugName: \"fitContent\" }] : []));\n this.disablePan = input(false, ...(ngDevMode ? [{ debugName: \"disablePan\" }] : []));\n this.disableZoom = input(false, ...(ngDevMode ? [{ debugName: \"disableZoom\" }] : []));\n this.wrapperClasses = input('', ...(ngDevMode ? [{ debugName: \"wrapperClasses\" }] : []));\n this.panX = model(0, ...(ngDevMode ? [{ debugName: \"panX\" }] : []));\n this.panY = model(0, ...(ngDevMode ? [{ debugName: \"panY\" }] : []));\n this.zoom = model(100, ...(ngDevMode ? [{ debugName: \"zoom\" }] : []));\n this.zoomChange = output();\n this.positionChange = output();\n this.nativeEl = computed(() => this.el.nativeElement, ...(ngDevMode ? [{ debugName: \"nativeEl\" }] : []));\n this.initialWidth = linkedSignal(() => this.nativeEl().getBoundingClientRect().width, ...(ngDevMode ? [{ debugName: \"initialWidth\" }] : []));\n this.initialHeight = linkedSignal(() => this.nativeEl().getBoundingClientRect().height, ...(ngDevMode ? [{ debugName: \"initialHeight\" }] : []));\n this.#anr = afterNextRender(() => {\n // Create Wrapper\n this.createWrapper();\n this.zone.runOutsideAngular(() => {\n // Wheel Event\n this.wrapper().onwheel = (e) => {\n e.preventDefault();\n if (e.ctrlKey || this.freeMode()) {\n this.handleZoomChange(e);\n return;\n }\n else if (e.shiftKey) {\n if (this.disablePan())\n return;\n this.panX.update((prev) => prev - e.deltaY / 3);\n this.setElementPosition();\n }\n else {\n if (this.disablePan())\n return;\n this.panY.update((prev) => prev - e.deltaY / 3);\n this.setElementPosition();\n }\n };\n // Pointer Down Event\n this.wrapper().onpointerdown = (e) => this.handlePointerDown(e);\n // Pointer Move Event\n this.document.onpointermove = (e) => this.handlePointerMove(e);\n // Pointer Up/Leave Event\n this.document.onpointerup = (e) => this.handlePointerUp(e);\n if (isPlatformBrowser(this.platformId)) {\n this.resizeObserver = new ResizeObserver(() => this.sizeChanged());\n this.resizeObserver.observe(this.wrapper());\n this.resizeObserver.observe(this.nativeEl());\n }\n });\n setTimeout(() => {\n this.resetPosition();\n });\n });\n }\n #anr;\n ngOnDestroy() {\n if (isPlatformBrowser(this.platformId))\n this.resizeObserver.disconnect();\n }\n createWrapper() {\n this.wrapper.set(this.render.createElement('div'));\n this.render.addClass(this.wrapper(), 'ax-pan-view-wrapper');\n if (this.wrapperClasses())\n this.render.addClass(this.wrapper(), this.wrapperClasses());\n const parent = this.nativeEl().parentNode;\n this.render.appendChild(this.wrapper(), this.nativeEl());\n this.render.insertBefore(parent, this.wrapper(), this.nativeEl().nextSibling);\n this.render.setStyle(this.wrapper(), 'width', '100%');\n this.render.setStyle(this.wrapper(), 'height', '100%');\n this.render.setStyle(this.wrapper(), 'overflow', 'hidden');\n this.render.setStyle(this.wrapper(), 'position', 'relative');\n this.render.setStyle(this.nativeEl(), 'top', '0');\n this.render.setStyle(this.nativeEl(), 'left', '0');\n this.render.setStyle(this.nativeEl(), 'position', 'absolute');\n }\n handlePointerDown(e) {\n if (this.disablePan())\n return;\n if (!this.freeMode() && e.pointerType === 'mouse' && e.buttons !== 4)\n return;\n if (this.freeMode() && e.pointerType === 'mouse' && e.buttons !== 1)\n return;\n e.preventDefault();\n this.pointerDown.set(true);\n this.wrapper().style.cursor = 'grabbing';\n // Update previous position for next move\n this.startX.set(e.clientX - this.panX());\n this.startY.set(e.clientY - this.panY());\n }\n handlePointerMove(e) {\n if (!this.pointerDown() || this.disablePan())\n return;\n e.preventDefault();\n this.panX.set(e.clientX - this.startX());\n this.panY.set(e.clientY - this.startY());\n this.setElementPosition();\n }\n handlePointerUp(e) {\n if (!this.pointerDown() || this.disablePan())\n return;\n e.preventDefault();\n this.pointerDown.set(false);\n this.wrapper().style.cursor = 'auto';\n }\n handleZoomChange(e) {\n if (this.disableZoom())\n return;\n e.preventDefault();\n const rect = this.nativeEl().getBoundingClientRect();\n const mouseX = e.clientX - rect.left;\n const mouseY = e.clientY - rect.top;\n // Calculate the new zoom based on step\n const zoomDirection = e.deltaY > 0 ? -1 : 1; // Scroll up -> zoom in, scroll down -> zoom out\n const newZoom = Math.round(Math.max(this.minZoom(), Math.min(this.maxZoom(), this.zoom() + zoomDirection * this.zoomStep())));\n const scaleChange = newZoom / this.zoom();\n // Adjust pan to keep zoom centered at the mouse position\n this.panX.update((prev) => prev - (mouseX - rect.width / 2) * (scaleChange - 1));\n this.panY.update((prev) => prev - (mouseY - rect.height / 2) * (scaleChange - 1));\n this.zoom.set(newZoom);\n this.setElementPosition();\n }\n sizeChanged() {\n const prevWidth = this.initialWidth();\n const prevHeight = this.initialHeight();\n this.initialWidth.set((this.nativeEl().getBoundingClientRect().width * 100) / this.zoom());\n this.initialHeight.set((this.nativeEl().getBoundingClientRect().height * 100) / this.zoom());\n const newWidth = this.initialWidth();\n const newHeight = this.initialHeight();\n // Maintain the same relative position\n this.panX.update((prev) => prev - (newWidth - prevWidth) / 2);\n this.panY.update((prev) => prev - (newHeight - prevHeight) / 2);\n this.setElementPosition();\n }\n setFitContentScale() {\n if (!this.fitContent())\n return;\n const height = this.wrapper().clientHeight / this.nativeEl().clientHeight;\n const width = this.wrapper().clientWidth / this.nativeEl().clientWidth;\n this.zoom.set(Math.round(Math.min(height, width) * 100));\n }\n setElementPosition() {\n this.nativeEl().style.transform = `translate(${this.panX()}px, ${this.panY()}px) scale(${this.zoom() / 100})`;\n this.positionChange.emit({ x: this.panX(), y: this.panY() });\n this.zoomChange.emit(this.zoom());\n }\n resetPosition() {\n const containerWidth = this.wrapper().offsetWidth;\n const containerHeight = this.wrapper().offsetHeight;\n const boxLeft = (containerWidth - this.initialWidth()) / 2;\n const boxTop = (containerHeight - this.initialHeight()) / 2;\n this.panX.set(boxLeft);\n this.panY.set(boxTop);\n if (this.fitContent())\n this.setFitContentScale();\n else\n this.zoom.set(100);\n this.setElementPosition();\n }\n zoomIn() {\n this.zoom.set(Math.round(Math.max(this.minZoom(), Math.min(this.maxZoom(), this.zoom() + this.zoomStep()))));\n this.setElementPosition();\n }\n zoomOut() {\n this.zoom.set(Math.round(Math.max(this.minZoom(), Math.min(this.maxZoom(), this.zoom() - this.zoomStep()))));\n this.setElementPosition();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXPanViewDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.1.0\", version: \"20.3.15\", type: AXPanViewDirective, isStandalone: true, selector: \"[axPanView]\", inputs: { zoomStep: { classPropertyName: \"zoomStep\", publicName: \"zoomStep\", isSignal: true, isRequired: false, transformFunction: null }, minZoom: { classPropertyName: \"minZoom\", publicName: \"minZoom\", isSignal: true, isRequired: false, transformFunction: null }, maxZoom: { classPropertyName: \"maxZoom\", publicName: \"maxZoom\", isSignal: true, isRequired: false, transformFunction: null }, freeMode: { classPropertyName: \"freeMode\", publicName: \"freeMode\", isSignal: true, isRequired: false, transformFunction: null }, fitContent: { classPropertyName: \"fitContent\", publicName: \"fitContent\", isSignal: true, isRequired: false, transformFunction: null }, disablePan: { classPropertyName: \"disablePan\", publicName: \"disablePan\", isSignal: true, isRequired: false, transformFunction: null }, disableZoom: { classPropertyName: \"disableZoom\", publicName: \"disableZoom\", isSignal: true, isRequired: false, transformFunction: null }, wrapperClasses: { classPropertyName: \"wrapperClasses\", publicName: \"wrapperClasses\", isSignal: true, isRequired: false, transformFunction: null }, panX: { classPropertyName: \"panX\", publicName: \"panX\", isSignal: true, isRequired: false, transformFunction: null }, panY: { classPropertyName: \"panY\", publicName: \"panY\", isSignal: true, isRequired: false, transformFunction: null }, zoom: { classPropertyName: \"zoom\", publicName: \"zoom\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { panX: \"panXChange\", panY: \"panYChange\", zoom: \"zoomChange\", zoomChange: \"zoomChange\", positionChange: \"positionChange\" }, exportAs: [\"axPanView\"], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXPanViewDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[axPanView]',\n exportAs: 'axPanView',\n }]\n }], propDecorators: { zoomStep: [{ type: i0.Input, args: [{ isSignal: true, alias: \"zoomStep\", required: false }] }], minZoom: [{ type: i0.Input, args: [{ isSignal: true, alias: \"minZoom\", required: false }] }], maxZoom: [{ type: i0.Input, args: [{ isSignal: true, alias: \"maxZoom\", required: false }] }], freeMode: [{ type: i0.Input, args: [{ isSignal: true, alias: \"freeMode\", required: false }] }], fitContent: [{ type: i0.Input, args: [{ isSignal: true, alias: \"fitContent\", required: false }] }], disablePan: [{ type: i0.Input, args: [{ isSignal: true, alias: \"disablePan\", required: false }] }], disableZoom: [{ type: i0.Input, args: [{ isSignal: true, alias: \"disableZoom\", required: false }] }], wrapperClasses: [{ type: i0.Input, args: [{ isSignal: true, alias: \"wrapperClasses\", required: false }] }], panX: [{ type: i0.Input, args: [{ isSignal: true, alias: \"panX\", required: false }] }, { type: i0.Output, args: [\"panXChange\"] }], panY: [{ type: i0.Input, args: [{ isSignal: true, alias: \"panY\", required: false }] }, { type: i0.Output, args: [\"panYChange\"] }], zoom: [{ type: i0.Input, args: [{ isSignal: true, alias: \"zoom\", required: false }] }, { type: i0.Output, args: [\"zoomChange\"] }], zoomChange: [{ type: i0.Output, args: [\"zoomChange\"] }], positionChange: [{ type: i0.Output, args: [\"positionChange\"] }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFuLXZpZXcuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY2RrL3Bhbi12aWV3L3NyYy9saWIvcGFuLXZpZXcuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFDTCxlQUFlLEVBQ2YsUUFBUSxFQUNSLFNBQVMsRUFDVCxRQUFRLEVBQ1IsVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBQ0wsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBRU4sTUFBTSxFQUNOLFdBQVcsRUFDWCxTQUFTLEVBQ1QsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDOztBQU12QixNQUFNLE9BQU8sa0JBQWtCO0lBSi9CO1FBT1UsZUFBVSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNqQyxTQUFJLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RCLFdBQU0sR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDM0IsYUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM1QixPQUFFLEdBQUcsTUFBTSxDQUFDLENBQUEsVUFBdUIsQ0FBQSxDQUFDLENBQUM7UUFFckMsV0FBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLGtEQUFDLENBQUM7UUFDbkIsV0FBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLGtEQUFDLENBQUM7UUFDbkIsZ0JBQVcsR0FBRyxNQUFNLENBQUMsS0FBSyx1REFBQyxDQUFDO1FBQzVCLFlBQU8sR0FBRyxNQUFNLENBQXdCLElBQUksbURBQUMsQ0FBQztRQUV0RCxhQUFRLEdBQUcsS0FBSyxDQUFDLENBQUMsb0RBQUMsQ0FBQztRQUNwQixZQUFPLEdBQUcsS0FBSyxDQUFDLEVBQUUsbURBQUMsQ0FBQztRQUNwQixZQUFPLEdBQUcsS0FBSyxDQUFDLEdBQUcsbURBQUMsQ0FBQztRQUNyQixhQUFRLEdBQUcsS0FBSyxDQUFDLEtBQUssb0RBQUMsQ0FBQztRQUN4QixlQUFVLEdBQUcsS0FBSyxDQUFDLElBQUksc0RBQUMsQ0FBQztRQUN6QixlQUFVLEdBQUcsS0FBSyxDQUFDLEtBQUssc0RBQUMsQ0FBQztRQUMxQixnQkFBVyxHQUFHLEtBQUssQ0FBQyxLQUFLLHVEQUFDLENBQUM7UUFDM0IsbUJBQWMsR0FBRyxLQUFLLENBQUMsRUFBRSwwREFBQyxDQUFDO1FBRTNCLFNBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxnREFBQyxDQUFDO1FBQ2hCLFNBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxnREFBQyxDQUFDO1FBQ2hCLFNBQUksR0FBRyxLQUFLLENBQUMsR0FBRyxnREFBQyxDQUFDO1FBRWxCLGVBQVUsR0FBRyxNQUFNLEVBQVUsQ0FBQztRQUM5QixtQkFBYyxHQUFHLE1BQU0sRUFBNEIsQ0FBQztRQUU1QyxhQUFRLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBNEIsb0RBQUMsQ0FBQztRQUVoRSxpQkFBWSxHQUFHLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxLQUFLLHdEQUFDLENBQUM7UUFDakYsa0JBQWEsR0FBRyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLHFCQUFxQixFQUFFLENBQUMsTUFBTSx5REFBQyxDQUFDO1FBRTNGLFNBQUksR0FBRyxlQUFlLENBQUMsR0FBRyxFQUFFO1lBQzFCLGlCQUFpQjtZQUNqQixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUU7Z0JBQy9CLGNBQWM7Z0JBQ2QsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFO29CQUM3QixDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7b0JBQ25CLElBQUksQ0FBQyxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQzt3QkFDakMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUN6QixPQUFPO29CQUNULENBQUM7eUJBQU0sSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7d0JBQ3RCLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTs0QkFBRSxPQUFPO3dCQUM5QixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7d0JBQ2hELElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO29CQUM1QixDQUFDO3lCQUFNLENBQUM7d0JBQ04sSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFOzRCQUFFLE9BQU87d0JBQzlCLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQzt3QkFDaEQsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7b0JBQzVCLENBQUM7Z0JBQ0gsQ0FBQyxDQUFDO2dCQUNGLHFCQUFxQjtnQkFDckIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNoRSxxQkFBcUI7Z0JBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQy9ELHlCQUF5QjtnQkFDekIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBRTNELElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7b0JBQ3ZDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxjQUFjLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7b0JBQ25FLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO29CQUM1QyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztnQkFDL0MsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1lBQ0gsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDZCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdkIsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztLQXVJSjtJQTNLQyxJQUFJLENBb0NEO0lBRUgsV0FBVztRQUNULElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDM0UsQ0FBQztJQUVPLGFBQWE7UUFDbkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUscUJBQXFCLENBQUMsQ0FBQztRQUM1RCxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUM7UUFFdkYsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLFVBQVUsQ0FBQztRQUMxQyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFOUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUN0RCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUU3RCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRU8saUJBQWlCLENBQUMsQ0FBZTtRQUN2QyxJQUFJLElBQUksQ0FBQyxV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QixFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3RyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM1QixDQUFDOytHQTdNVSxrQkFBa0I7bUdBQWxCLGtCQUFrQjs7NEZBQWxCLGtCQUFrQjtrQkFKOUIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsYUFBYTtvQkFDdkIsUUFBUSxFQUFFLFdBQVc7aUJBQ3RCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgYWZ0ZXJOZXh0UmVuZGVyLFxuICBjb21wdXRlZCxcbiAgRGlyZWN0aXZlLFxuICBET0NVTUVOVCxcbiAgRWxlbWVudFJlZixcbiAgaW5qZWN0LFxuICBpbnB1dCxcbiAgbGlua2VkU2lnbmFsLFxuICBtb2RlbCxcbiAgTmdab25lLFxuICBPbkRlc3Ryb3ksXG4gIG91dHB1dCxcbiAgUExBVEZPUk1fSUQsXG4gIFJlbmRlcmVyMixcbiAgc2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2F4UGFuVmlld10nLFxuICBleHBvcnRBczogJ2F4UGFuVmlldycsXG59KVxuZXhwb3J0IGNsYXNzIEFYUGFuVmlld0RpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgcmVzaXplT2JzZXJ2ZXI6IFJlc2l6ZU9ic2VydmVyO1xuXG4gIHByaXZhdGUgcGxhdGZvcm1JZCA9IGluamVjdChQTEFURk9STV9JRCk7XG4gIHByaXZhdGUgem9uZSA9IGluamVjdChOZ1pvbmUpO1xuICBwcml2YXRlIHJlbmRlciA9IGluamVjdChSZW5kZXJlcjIpO1xuICBwcml2YXRlIGRvY3VtZW50ID0gaW5qZWN0KERPQ1VNRU5UKTtcbiAgcHJpdmF0ZSBlbCA9IGluamVjdChFbGVtZW50UmVmPEhUTUxFbGVtZW50Pik7XG5cbiAgcHJpdmF0ZSBzdGFydFggPSBzaWduYWwoMCk7XG4gIHByaXZhdGUgc3RhcnRZID0gc2lnbmFsKDApO1xuICBwcml2YXRlIHBvaW50ZXJEb3duID0gc2lnbmFsKGZhbHNlKTtcbiAgcHJpdmF0ZSB3cmFwcGVyID0gc2lnbmFsPEhUTUxEaXZFbGVtZW50IHwgbnVsbD4obnVsbCk7XG5cbiAgem9vbVN0ZXAgPSBpbnB1dCg3KTtcbiAgbWluWm9vbSA9IGlucHV0KDI1KTtcbiAgbWF4Wm9vbSA9IGlucHV0KDQwMCk7XG4gIGZyZWVNb2RlID0gaW5wdXQoZmFsc2UpO1xuICBmaXRDb250ZW50ID0gaW5wdXQodHJ1ZSk7XG4gIGRpc2FibGVQYW4gPSBpbnB1dChmYWxzZSk7XG4gIGRpc2FibGVab29tID0gaW5wdXQoZmFsc2UpO1xuICB3cmFwcGVyQ2xhc3NlcyA9IGlucHV0KCcnKTtcblxuICBwYW5YID0gbW9kZWwoMCk7XG4gIHBhblkgPSBtb2RlbCgwKTtcbiAgem9vbSA9IG1vZGVsKDEwMCk7XG5cbiAgem9vbUNoYW5nZSA9IG91dHB1dDxudW1iZXI+KCk7XG4gIHBvc2l0aW9uQ2hhbmdlID0gb3V0cHV0PHsgeDogbnVtYmVyOyB5OiBudW1iZXIgfT4oKTtcblxuICBwcml2YXRlIG5hdGl2ZUVsID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5lbC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50KTtcblxuICBwcml2YXRlIGluaXRpYWxXaWR0aCA9IGxpbmtlZFNpZ25hbCgoKSA9PiB0aGlzLm5hdGl2ZUVsKCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGgpO1xuICBwcml2YXRlIGluaXRpYWxIZWlnaHQgPSBsaW5rZWRTaWduYWwoKCkgPT4gdGhpcy5uYXRpdmVFbCgpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodCk7XG5cbiAgI2FuciA9IGFmdGVyTmV4dFJlbmRlcigoKSA9PiB7XG4gICAgLy8gQ3JlYXRlIFdyYXBwZXJcbiAgICB0aGlzLmNyZWF0ZVdyYXBwZXIoKTtcbiAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgLy8gV2hlZWwgRXZlbnRcbiAgICAgIHRoaXMud3JhcHBlcigpLm9ud2hlZWwgPSAoZSkgPT4ge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGlmIChlLmN0cmxLZXkgfHwgdGhpcy5mcmVlTW9kZSgpKSB7XG4gICAgICAgICAgdGhpcy5oYW5kbGVab29tQ2hhbmdlKGUpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSBlbHNlIGlmIChlLnNoaWZ0S2V5KSB7XG4gICAgICAgICAgaWYgKHRoaXMuZGlzYWJsZVBhbigpKSByZXR1cm47XG4gICAgICAgICAgdGhpcy5wYW5YLnVwZGF0ZSgocHJldikgPT4gcHJldiAtIGUuZGVsdGFZIC8gMyk7XG4gICAgICAgICAgdGhpcy5zZXRFbGVtZW50UG9zaXRpb24oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAodGhpcy5kaXNhYmxlUGFuKCkpIHJldHVybjtcbiAgICAgICAgICB0aGlzLnBhblkudXBkYXRlKChwcmV2KSA9PiBwcmV2IC0gZS5kZWx0YVkgLyAzKTtcbiAgICAgICAgICB0aGlzLnNldEVsZW1lbnRQb3NpdGlvbigpO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgLy8gUG9pbnRlciBEb3duIEV2ZW50XG4gICAgICB0aGlzLndyYXBwZXIoKS5vbnBvaW50ZXJkb3duID0gKGUpID0+IHRoaXMuaGFuZGxlUG9pbnRlckRvd24oZSk7XG4gICAgICAvLyBQb2ludGVyIE1vdmUgRXZlbnRcbiAgICAgIHRoaXMuZG9jdW1lbnQub25wb2ludGVybW92ZSA9IChlKSA9PiB0aGlzLmhhbmRsZVBvaW50ZXJNb3ZlKGUpO1xuICAgICAgLy8gUG9pbnRlciBVcC9MZWF2ZSBFdmVudFxuICAgICAgdGhpcy5kb2N1bWVudC5vbnBvaW50ZXJ1cCA9IChlKSA9PiB0aGlzLmhhbmRsZVBvaW50ZXJVcChlKTtcblxuICAgICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcigoKSA9PiB0aGlzLnNpemVDaGFuZ2VkKCkpO1xuICAgICAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy53cmFwcGVyKCkpO1xuICAgICAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5uYXRpdmVFbCgpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMucmVzZXRQb3NpdGlvbigpO1xuICAgIH0pO1xuICB9KTtcblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkgdGhpcy5yZXNpemVPYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVdyYXBwZXIoKSB7XG4gICAgdGhpcy53cmFwcGVyLnNldCh0aGlzLnJlbmRlci5jcmVhdGVFbGVtZW50KCdkaXYnKSk7XG4gICAgdGhpcy5yZW5kZXIuYWRkQ2xhc3ModGhpcy53cmFwcGVyKCksICdheC1wYW4tdmlldy13cmFwcGVyJyk7XG4gICAgaWYgKHRoaXMud3JhcHBlckNsYXNzZXMoKSkgdGhpcy5yZW5kZXIuYWRkQ2xhc3ModGhpcy53cmFwcGVyKCksIHRoaXMud3JhcHBlckNsYXNzZXMoKSk7XG5cbiAgICBjb25zdCBwYXJlbnQgPSB0aGlzLm5hdGl2ZUVsKCkucGFyZW50Tm9kZTtcbiAgICB0aGlzLnJlbmRlci5hcHBlbmRDaGlsZCh0aGlzLndyYXBwZXIoKSwgdGhpcy5uYXRpdmVFbCgpKTtcbiAgICB0aGlzLnJlbmRlci5pbnNlcnRCZWZvcmUocGFyZW50LCB0aGlzLndyYXBwZXIoKSwgdGhpcy5uYXRpdmVFbCgpLm5leHRTaWJsaW5nKTtcblxuICAgIHRoaXMucmVuZGVyLnNldFN0eWxlKHRoaXMud3JhcHBlcigpLCAnd2lkdGgnLCAnMTAwJScpO1xuICAgIHRoaXMucmVuZGVyLnNldFN0eWxlKHRoaXMud3JhcHBlcigpLCAnaGVpZ2h0JywgJzEwMCUnKTtcbiAgICB0aGlzLnJlbmRlci5zZXRTdHlsZSh0aGlzLndyYXBwZXIoKSwgJ292ZXJmbG93JywgJ2hpZGRlbicpO1xuICAgIHRoaXMucmVuZGVyLnNldFN0eWxlKHRoaXMud3JhcHBlcigpLCAncG9zaXRpb24nLCAncmVsYXRpdmUnKTtcblxuICAgIHRoaXMucmVuZGVyLnNldFN0eWxlKHRoaXMubmF0aXZlRWwoKSwgJ3RvcCcsICcwJyk7XG4gICAgdGhpcy5yZW5kZXIuc2V0U3R5bGUodGhpcy5uYXRpdmVFbCgpLCAnbGVmdCcsICcwJyk7XG4gICAgdGhpcy5yZW5kZXIuc2V0U3R5bGUodGhpcy5uYXRpdmVFbCgpLCAncG9zaXRpb24nLCAnYWJzb2x1dGUnKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlUG9pbnRlckRvd24oZTogUG9pbnRlckV2ZW50KSB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZVBhbigpKSByZXR1cm47XG4gICAgaWYgKCF0aGlzLmZyZWVNb2RlKCkgJiYgZS5wb2ludGVyVHlwZSA9PT0gJ21vdXNlJyAmJiBlLmJ1dHRvbnMgIT09IDQpIHJldHVybjtcbiAgICBpZiAodGhpcy5mcmVlTW9kZSgpICYmIGUucG9pbnRlclR5cGUgPT09ICdtb3VzZScgJiYgZS5idXR0b25zICE9PSAxKSByZXR1cm47XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMucG9pbnRlckRvd24uc2V0KHRydWUpO1xuICAgIHRoaXMud3JhcHBlcigpLnN0eWxlLmN1cnNvciA9ICdncmFiYmluZyc7XG5cbiAgICAvLyBVcGRhdGUgcHJldmlvdXMgcG9zaXRpb24gZm9yIG5leHQgbW92ZVxuICAgIHRoaXMuc3RhcnRYLnNldChlLmNsaWVudFggLSB0aGlzLnBhblgoKSk7XG4gICAgdGhpcy5zdGFydFkuc2V0KGUuY2xpZW50WSAtIHRoaXMucGFuWSgpKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlUG9pbnRlck1vdmUoZTogUG9pbnRlckV2ZW50KSB7XG4gICAgaWYgKCF0aGlzLnBvaW50ZXJEb3duKCkgfHwgdGhpcy5kaXNhYmxlUGFuKCkpIHJldHVybjtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy5wYW5YLnNldChlLmNsaWVudFggLSB0aGlzLnN0YXJ0WCgpKTtcbiAgICB0aGlzLnBhblkuc2V0KGUuY2xpZW50WSAtIHRoaXMuc3RhcnRZKCkpO1xuXG4gICAgdGhpcy5zZXRFbGVtZW50UG9zaXRpb24oKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlUG9pbnRlclVwKGU6IFBvaW50ZXJFdmVudCkge1xuICAgIGlmICghdGhpcy5wb2ludGVyRG93bigpIHx8IHRoaXMuZGlzYWJsZVBhbigpKSByZXR1cm47XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMucG9pbnRlckRvd24uc2V0KGZhbHNlKTtcbiAgICB0aGlzLndyYXBwZXIoKS5zdHlsZS5jdXJzb3IgPSAnYXV0byc7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVpvb21DaGFuZ2UoZTogV2hlZWxFdmVudCkge1xuICAgIGlmICh0aGlzLmRpc2FibGVab29tKCkpIHJldHVybjtcblxuICAgIGUucHJldmVudERlZmF1bHQoKTtcblxuICAgIGNvbnN0IHJlY3QgPSB0aGlzLm5hdGl2ZUVsKCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY29uc3QgbW91c2VYID0gZS5jbGllbnRYIC0gcmVjdC5sZWZ0O1xuICAgIGNvbnN0IG1vdXNlWSA9IGUuY2xpZW50WSAtIHJlY3QudG9wO1xuXG4gICAgLy8gQ2FsY3VsYXRlIHRoZSBuZXcgem9vbSBiYXNlZCBvbiBzdGVwXG4gICAgY29uc3Qgem9vbURpcmVjdGlvbiA9IGUuZGVsdGFZID4gMCA/IC0xIDogMTsgLy8gU2Nyb2xsIHVwIC0+IHpvb20gaW4sIHNjcm9sbCBkb3duIC0+IHpvb20gb3V0XG4gICAgY29uc3QgbmV3Wm9vbSA9IE1hdGgucm91bmQoXG4gICAgICBNYXRoLm1heCh0aGlzLm1pblpvb20oKSwgTWF0aC5taW4odGhpcy5tYXhab29tKCksIHRoaXMuem9vbSgpICsgem9vbURpcmVjdGlvbiAqIHRoaXMuem9vbVN0ZXAoKSkpLFxuICAgICk7XG5cbiAgICBjb25zdCBzY2FsZUNoYW5nZSA9IG5ld1pvb20gLyB0aGlzLnpvb20oKTtcblxuICAgIC8vIEFkanVzdCBwYW4gdG8ga2VlcCB6b29tIGNlbnRlcmVkIGF0IHRoZSBtb3VzZSBwb3NpdGlvblxuICAgIHRoaXMucGFuWC51cGRhdGUoKHByZXYpID0+IHByZXYgLSAobW91c2VYIC0gcmVjdC53aWR0aCAvIDIpICogKHNjYWxlQ2hhbmdlIC0gMSkpO1xuICAgIHRoaXMucGFuWS51cGRhdGUoKHByZXYpID0+IHByZXYgLSAobW91c2VZIC0gcmVjdC5oZWlnaHQgLyAyKSAqIChzY2FsZUNoYW5nZSAtIDEpKTtcbiAgICB0aGlzLnpvb20uc2V0KG5ld1pvb20pO1xuXG4gICAgdGhpcy5zZXRFbGVtZW50UG9zaXRpb24oKTtcbiAgfVxuXG4gIHByaXZhdGUgc2l6ZUNoYW5nZWQoKSB7XG4gICAgY29uc3QgcHJldldpZHRoID0gdGhpcy5pbml0aWFsV2lkdGgoKTtcbiAgICBjb25zdCBwcmV2SGVpZ2h0ID0gdGhpcy5pbml0aWFsSGVpZ2h0KCk7XG5cbiAgICB0aGlzLmluaXRpYWxXaWR0aC5zZXQoKHRoaXMubmF0aXZlRWwoKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCAqIDEwMCkgLyB0aGlzLnpvb20oKSk7XG4gICAgdGhpcy5pbml0aWFsSGVpZ2h0LnNldCgodGhpcy5uYXRpdmVFbCgpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodCAqIDEwMCkgLyB0aGlzLnpvb20oKSk7XG5cbiAgICBjb25zdCBuZXdXaWR0aCA9IHRoaXMuaW5pdGlhbFdpZHRoKCk7XG4gICAgY29uc3QgbmV3SGVpZ2h0ID0gdGhpcy5pbml0aWFsSGVpZ2h0KCk7XG5cbiAgICAvLyBNYWludGFpbiB0aGUgc2FtZSByZWxhdGl2ZSBwb3NpdGlvblxuICAgIHRoaXMucGFuWC51cGRhdGUoKHByZXYpID0+IHByZXYgLSAobmV3V2lkdGggLSBwcmV2V2lkdGgpIC8gMik7XG4gICAgdGhpcy5wYW5ZLnVwZGF0ZSgocHJldikgPT4gcHJldiAtIChuZXdIZWlnaHQgLSBwcmV2SGVpZ2h0KSAvIDIpO1xuXG4gICAgdGhpcy5zZXRFbGVtZW50UG9zaXRpb24oKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0Rml0Q29udGVudFNjYWxlKCkge1xuICAgIGlmICghdGhpcy5maXRDb250ZW50KCkpIHJldHVybjtcbiAgICBjb25zdCBoZWlnaHQgPSB0aGlzLndyYXBwZXIoKS5jbGllbnRIZWlnaHQgLyB0aGlzLm5hdGl2ZUVsKCkuY2xpZW50SGVpZ2h0O1xuICAgIGNvbnN0IHdpZHRoID0gdGhpcy53cmFwcGVyKCkuY2xpZW50V2lkdGggLyB0aGlzLm5hdGl2ZUVsKCkuY2xpZW50V2lkdGg7XG4gICAgdGhpcy56b29tLnNldChNYXRoLnJvdW5kKE1hdGgubWluKGhlaWdodCwgd2lkdGgpICogMTAwKSk7XG4gIH1cblxuICBzZXRFbGVtZW50UG9zaXRpb24oKSB7XG4gICAgdGhpcy5uYXRpdmVFbCgpLnN0eWxlLnRyYW5zZm9ybSA9IGB0cmFuc2xhdGUoJHt0aGlzLnBhblgoKX1weCwgJHt0aGlzLnBhblkoKX1weCkgc2NhbGUoJHt0aGlzLnpvb20oKSAvIDEwMH0pYDtcblxuICAgIHRoaXMucG9zaXRpb25DaGFuZ2UuZW1pdCh7IHg6IHRoaXMucGFuWCgpLCB5OiB0aGlzLnBhblkoKSB9KTtcbiAgICB0aGlzLnpvb21DaGFuZ2UuZW1pdCh0aGlzLnpvb20oKSk7XG4gIH1cblxuICByZXNldFBvc2l0aW9uKCkge1xuICAgIGNvbnN0IGNvbnRhaW5lcldpZHRoID0gdGhpcy53cmFwcGVyKCkub2Zmc2V0V2lkdGg7XG4gICAgY29uc3QgY29udGFpbmVySGVpZ2h0ID0gdGhpcy53cmFwcGVyKCkub2Zmc2V0SGVpZ2h0O1xuXG4gICAgY29uc3QgYm94TGVmdCA9IChjb250YWluZXJXaWR0aCAtIHRoaXMuaW5pdGlhbFdpZHRoKCkpIC8gMjtcbiAgICBjb25zdCBib3hUb3AgPSAoY29udGFpbmVySGVpZ2h0IC0gdGhpcy5pbml0aWFsSGVpZ2h0KCkpIC8gMjtcblxuICAgIHRoaXMucGFuWC5zZXQoYm94TGVmdCk7XG4gICAgdGhpcy5wYW5ZLnNldChib3hUb3ApO1xuXG4gICAgaWYgKHRoaXMuZml0Q29udGVudCgpKSB0aGlzLnNldEZpdENvbnRlbnRTY2FsZSgpO1xuICAgIGVsc2UgdGhpcy56b29tLnNldCgxMDApO1xuXG4gICAgdGhpcy5zZXRFbGVtZW50UG9zaXRpb24oKTtcbiAgfVxuXG4gIHpvb21JbigpIHtcbiAgICB0aGlzLnpvb20uc2V0KE1hdGgucm91bmQoTWF0aC5tYXgodGhpcy5taW5ab29tKCksIE1hdGgubWluKHRoaXMubWF4Wm9vbSgpLCB0aGlzLnpvb20oKSArIHRoaXMuem9vbVN0ZXAoKSkpKSk7XG4gICAgdGhpcy5zZXRFbGVtZW50UG9zaXRpb24oKTtcbiAgfVxuXG4gIHpvb21PdXQoKSB7XG4gICAgdGhpcy56b29tLnNldChNYXRoLnJvdW5kKE1hdGgubWF4KHRoaXMubWluWm9vbSgpLCBNYXRoLm1pbih0aGlzLm1heFpvb20oKSwgdGhpcy56b29tKCkgLSB0aGlzLnpvb21TdGVwKCkpKSkpO1xuICAgIHRoaXMuc2V0RWxlbWVudFBvc2l0aW9uKCk7XG4gIH1cbn1cbiJdfQ==","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LWNkay1wYW4tdmlldy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Nkay9wYW4tdmlldy9zcmMvYWNvcmV4LWNkay1wYW4tdmlldy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acorex-cdk-pan-view.mjs","sources":["../tmp-esm2022/pan-view/lib/pan-view.directive.js","../tmp-esm2022/pan-view/acorex-cdk-pan-view.js"],"sourcesContent":["import { isPlatformBrowser } from '@angular/common';\nimport { afterNextRender, computed, Directive, DOCUMENT, ElementRef, inject, input, linkedSignal, model, NgZone, output, PLATFORM_ID, Renderer2, signal, } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class AXPanViewDirective {\n constructor() {\n this.platformId = inject(PLATFORM_ID);\n this.zone = inject(NgZone);\n this.render = inject(Renderer2);\n this.document = inject(DOCUMENT);\n this.el = inject((ElementRef));\n this.startX = signal(0, ...(ngDevMode ? [{ debugName: \"startX\" }] : []));\n this.startY = signal(0, ...(ngDevMode ? [{ debugName: \"startY\" }] : []));\n this.pointerDown = signal(false, ...(ngDevMode ? [{ debugName: \"pointerDown\" }] : []));\n this.wrapper = signal(null, ...(ngDevMode ? [{ debugName: \"wrapper\" }] : []));\n this.zoomStep = input(7, ...(ngDevMode ? [{ debugName: \"zoomStep\" }] : []));\n this.minZoom = input(25, ...(ngDevMode ? [{ debugName: \"minZoom\" }] : []));\n this.maxZoom = input(400, ...(ngDevMode ? [{ debugName: \"maxZoom\" }] : []));\n this.freeMode = input(false, ...(ngDevMode ? [{ debugName: \"freeMode\" }] : []));\n this.fitContent = input(true, ...(ngDevMode ? [{ debugName: \"fitContent\" }] : []));\n this.disablePan = input(false, ...(ngDevMode ? [{ debugName: \"disablePan\" }] : []));\n this.disableZoom = input(false, ...(ngDevMode ? [{ debugName: \"disableZoom\" }] : []));\n this.wrapperClasses = input('', ...(ngDevMode ? [{ debugName: \"wrapperClasses\" }] : []));\n this.panX = model(0, ...(ngDevMode ? [{ debugName: \"panX\" }] : []));\n this.panY = model(0, ...(ngDevMode ? [{ debugName: \"panY\" }] : []));\n this.zoom = model(100, ...(ngDevMode ? [{ debugName: \"zoom\" }] : []));\n this.zoomChange = output();\n this.positionChange = output();\n this.nativeEl = computed(() => this.el.nativeElement, ...(ngDevMode ? [{ debugName: \"nativeEl\" }] : []));\n this.initialWidth = linkedSignal(() => this.nativeEl().getBoundingClientRect().width, ...(ngDevMode ? [{ debugName: \"initialWidth\" }] : []));\n this.initialHeight = linkedSignal(() => this.nativeEl().getBoundingClientRect().height, ...(ngDevMode ? [{ debugName: \"initialHeight\" }] : []));\n this.#anr = afterNextRender(() => {\n // Create Wrapper\n this.createWrapper();\n this.zone.runOutsideAngular(() => {\n // Wheel Event\n this.wrapper().onwheel = (e) => {\n e.preventDefault();\n if (e.ctrlKey || this.freeMode()) {\n this.handleZoomChange(e);\n return;\n }\n else if (e.shiftKey) {\n if (this.disablePan())\n return;\n this.panX.update((prev) => prev - e.deltaY / 3);\n this.setElementPosition();\n }\n else {\n if (this.disablePan())\n return;\n this.panY.update((prev) => prev - e.deltaY / 3);\n this.setElementPosition();\n }\n };\n // Pointer Down Event\n this.wrapper().onpointerdown = (e) => this.handlePointerDown(e);\n // Pointer Move Event\n this.document.onpointermove = (e) => this.handlePointerMove(e);\n // Pointer Up/Leave Event\n this.document.onpointerup = (e) => this.handlePointerUp(e);\n if (isPlatformBrowser(this.platformId)) {\n this.resizeObserver = new ResizeObserver(() => this.sizeChanged());\n this.resizeObserver.observe(this.wrapper());\n this.resizeObserver.observe(this.nativeEl());\n }\n });\n setTimeout(() => {\n this.resetPosition();\n });\n });\n }\n #anr;\n ngOnDestroy() {\n if (isPlatformBrowser(this.platformId))\n this.resizeObserver.disconnect();\n }\n createWrapper() {\n this.wrapper.set(this.render.createElement('div'));\n this.render.addClass(this.wrapper(), 'ax-pan-view-wrapper');\n if (this.wrapperClasses())\n this.render.addClass(this.wrapper(), this.wrapperClasses());\n const parent = this.nativeEl().parentNode;\n this.render.appendChild(this.wrapper(), this.nativeEl());\n this.render.insertBefore(parent, this.wrapper(), this.nativeEl().nextSibling);\n this.render.setStyle(this.wrapper(), 'width', '100%');\n this.render.setStyle(this.wrapper(), 'height', '100%');\n this.render.setStyle(this.wrapper(), 'overflow', 'hidden');\n this.render.setStyle(this.wrapper(), 'position', 'relative');\n this.render.setStyle(this.nativeEl(), 'top', '0');\n this.render.setStyle(this.nativeEl(), 'left', '0');\n this.render.setStyle(this.nativeEl(), 'position', 'absolute');\n }\n handlePointerDown(e) {\n if (this.disablePan())\n return;\n if (!this.freeMode() && e.pointerType === 'mouse' && e.buttons !== 4)\n return;\n if (this.freeMode() && e.pointerType === 'mouse' && e.buttons !== 1)\n return;\n e.preventDefault();\n this.pointerDown.set(true);\n this.wrapper().style.cursor = 'grabbing';\n // Update previous position for next move\n this.startX.set(e.clientX - this.panX());\n this.startY.set(e.clientY - this.panY());\n }\n handlePointerMove(e) {\n if (!this.pointerDown() || this.disablePan())\n return;\n e.preventDefault();\n this.panX.set(e.clientX - this.startX());\n this.panY.set(e.clientY - this.startY());\n this.setElementPosition();\n }\n handlePointerUp(e) {\n if (!this.pointerDown() || this.disablePan())\n return;\n e.preventDefault();\n this.pointerDown.set(false);\n this.wrapper().style.cursor = 'auto';\n }\n handleZoomChange(e) {\n if (this.disableZoom())\n return;\n e.preventDefault();\n const rect = this.nativeEl().getBoundingClientRect();\n const mouseX = e.clientX - rect.left;\n const mouseY = e.clientY - rect.top;\n // Calculate the new zoom based on step\n const zoomDirection = e.deltaY > 0 ? -1 : 1; // Scroll up -> zoom in, scroll down -> zoom out\n const newZoom = Math.round(Math.max(this.minZoom(), Math.min(this.maxZoom(), this.zoom() + zoomDirection * this.zoomStep())));\n const scaleChange = newZoom / this.zoom();\n // Adjust pan to keep zoom centered at the mouse position\n this.panX.update((prev) => prev - (mouseX - rect.width / 2) * (scaleChange - 1));\n this.panY.update((prev) => prev - (mouseY - rect.height / 2) * (scaleChange - 1));\n this.zoom.set(newZoom);\n this.setElementPosition();\n }\n sizeChanged() {\n const prevWidth = this.initialWidth();\n const prevHeight = this.initialHeight();\n this.initialWidth.set((this.nativeEl().getBoundingClientRect().width * 100) / this.zoom());\n this.initialHeight.set((this.nativeEl().getBoundingClientRect().height * 100) / this.zoom());\n const newWidth = this.initialWidth();\n const newHeight = this.initialHeight();\n // Maintain the same relative position\n this.panX.update((prev) => prev - (newWidth - prevWidth) / 2);\n this.panY.update((prev) => prev - (newHeight - prevHeight) / 2);\n this.setElementPosition();\n }\n setFitContentScale() {\n if (!this.fitContent())\n return;\n const height = this.wrapper().clientHeight / this.nativeEl().clientHeight;\n const width = this.wrapper().clientWidth / this.nativeEl().clientWidth;\n this.zoom.set(Math.round(Math.min(height, width) * 100));\n }\n setElementPosition() {\n this.nativeEl().style.transform = `translate(${this.panX()}px, ${this.panY()}px) scale(${this.zoom() / 100})`;\n this.positionChange.emit({ x: this.panX(), y: this.panY() });\n this.zoomChange.emit(this.zoom());\n }\n resetPosition() {\n const containerWidth = this.wrapper().offsetWidth;\n const containerHeight = this.wrapper().offsetHeight;\n const boxLeft = (containerWidth - this.initialWidth()) / 2;\n const boxTop = (containerHeight - this.initialHeight()) / 2;\n this.panX.set(boxLeft);\n this.panY.set(boxTop);\n if (this.fitContent())\n this.setFitContentScale();\n else\n this.zoom.set(100);\n this.setElementPosition();\n }\n zoomIn() {\n this.zoom.set(Math.round(Math.max(this.minZoom(), Math.min(this.maxZoom(), this.zoom() + this.zoomStep()))));\n this.setElementPosition();\n }\n zoomOut() {\n this.zoom.set(Math.round(Math.max(this.minZoom(), Math.min(this.maxZoom(), this.zoom() - this.zoomStep()))));\n this.setElementPosition();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXPanViewDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.1.0\", version: \"20.3.16\", type: AXPanViewDirective, isStandalone: true, selector: \"[axPanView]\", inputs: { zoomStep: { classPropertyName: \"zoomStep\", publicName: \"zoomStep\", isSignal: true, isRequired: false, transformFunction: null }, minZoom: { classPropertyName: \"minZoom\", publicName: \"minZoom\", isSignal: true, isRequired: false, transformFunction: null }, maxZoom: { classPropertyName: \"maxZoom\", publicName: \"maxZoom\", isSignal: true, isRequired: false, transformFunction: null }, freeMode: { classPropertyName: \"freeMode\", publicName: \"freeMode\", isSignal: true, isRequired: false, transformFunction: null }, fitContent: { classPropertyName: \"fitContent\", publicName: \"fitContent\", isSignal: true, isRequired: false, transformFunction: null }, disablePan: { classPropertyName: \"disablePan\", publicName: \"disablePan\", isSignal: true, isRequired: false, transformFunction: null }, disableZoom: { classPropertyName: \"disableZoom\", publicName: \"disableZoom\", isSignal: true, isRequired: false, transformFunction: null }, wrapperClasses: { classPropertyName: \"wrapperClasses\", publicName: \"wrapperClasses\", isSignal: true, isRequired: false, transformFunction: null }, panX: { classPropertyName: \"panX\", publicName: \"panX\", isSignal: true, isRequired: false, transformFunction: null }, panY: { classPropertyName: \"panY\", publicName: \"panY\", isSignal: true, isRequired: false, transformFunction: null }, zoom: { classPropertyName: \"zoom\", publicName: \"zoom\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { panX: \"panXChange\", panY: \"panYChange\", zoom: \"zoomChange\", zoomChange: \"zoomChange\", positionChange: \"positionChange\" }, exportAs: [\"axPanView\"], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AXPanViewDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[axPanView]',\n exportAs: 'axPanView',\n }]\n }], propDecorators: { zoomStep: [{ type: i0.Input, args: [{ isSignal: true, alias: \"zoomStep\", required: false }] }], minZoom: [{ type: i0.Input, args: [{ isSignal: true, alias: \"minZoom\", required: false }] }], maxZoom: [{ type: i0.Input, args: [{ isSignal: true, alias: \"maxZoom\", required: false }] }], freeMode: [{ type: i0.Input, args: [{ isSignal: true, alias: \"freeMode\", required: false }] }], fitContent: [{ type: i0.Input, args: [{ isSignal: true, alias: \"fitContent\", required: false }] }], disablePan: [{ type: i0.Input, args: [{ isSignal: true, alias: \"disablePan\", required: false }] }], disableZoom: [{ type: i0.Input, args: [{ isSignal: true, alias: \"disableZoom\", required: false }] }], wrapperClasses: [{ type: i0.Input, args: [{ isSignal: true, alias: \"wrapperClasses\", required: false }] }], panX: [{ type: i0.Input, args: [{ isSignal: true, alias: \"panX\", required: false }] }, { type: i0.Output, args: [\"panXChange\"] }], panY: [{ type: i0.Input, args: [{ isSignal: true, alias: \"panY\", required: false }] }, { type: i0.Output, args: [\"panYChange\"] }], zoom: [{ type: i0.Input, args: [{ isSignal: true, alias: \"zoom\", required: false }] }, { type: i0.Output, args: [\"zoomChange\"] }], zoomChange: [{ type: i0.Output, args: [\"zoomChange\"] }], positionChange: [{ type: i0.Output, args: [\"positionChange\"] }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFuLXZpZXcuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY2RrL3Bhbi12aWV3L3NyYy9saWIvcGFuLXZpZXcuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFDTCxlQUFlLEVBQ2YsUUFBUSxFQUNSLFNBQVMsRUFDVCxRQUFRLEVBQ1IsVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBQ0wsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBRU4sTUFBTSxFQUNOLFdBQVcsRUFDWCxTQUFTLEVBQ1QsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDOztBQU12QixNQUFNLE9BQU8sa0JBQWtCO0lBSi9CO1FBT1UsZUFBVSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNqQyxTQUFJLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RCLFdBQU0sR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDM0IsYUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM1QixPQUFFLEdBQUcsTUFBTSxDQUFDLENBQUEsVUFBdUIsQ0FBQSxDQUFDLENBQUM7UUFFckMsV0FBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLGtEQUFDLENBQUM7UUFDbkIsV0FBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLGtEQUFDLENBQUM7UUFDbkIsZ0JBQVcsR0FBRyxNQUFNLENBQUMsS0FBSyx1REFBQyxDQUFDO1FBQzVCLFlBQU8sR0FBRyxNQUFNLENBQXdCLElBQUksbURBQUMsQ0FBQztRQUV0RCxhQUFRLEdBQUcsS0FBSyxDQUFDLENBQUMsb0RBQUMsQ0FBQztRQUNwQixZQUFPLEdBQUcsS0FBSyxDQUFDLEVBQUUsbURBQUMsQ0FBQztRQUNwQixZQUFPLEdBQUcsS0FB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LEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLFVBQVUsQ0FBQztRQUMxQyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFOUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUN0RCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUU3RCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRU8saUJBQWlCLENBQUMsQ0FBZTtRQUN2QyxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFBRSxPQUFPO1FBQzlCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDLFdBQVcsS0FBSyxPQUFPLElBQUksQ0FBQyxDQUFDLE9BQU8sS0FBSyxDQUFDO1lBQUUsT0FBTztRQUM3RSxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUMsV0FBVyxLQUFLLE9BQU8sSUFBSSxDQUFDLENBQUMsT0FBTyxLQUFLLENBQUM7WUFBRSxPQUFPO1FBQzVFLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNuQixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxVQUFVLENBQUM7UUFFekMseUNBQXlDO1FBQ3pDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRU8saUJBQWlCLENBQUMsQ0FBZTtRQUN2QyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFBRSxPQUFPO1FBQ3JELENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFFekMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVPLGVBQWUsQ0FBQyxDQUFlO1FBQ3JDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUFFLE9BQU87UUFDckQsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN2QyxDQUFDO0lBRU8sZ0JBQWdCLENBQUMsQ0FBYTtRQUNwQyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFBRSxPQUFPO1FBRS9CLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUVuQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUNyRCxNQUFNLE1BQU0sR0FBRyxDQUFDLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDckMsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO1FBRXBDLHVDQUF1QztRQUN2QyxNQUFNLGFBQWEsR0FBRyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGdEQUFnRDtRQUM3RixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUN4QixJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsYUFBYSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQ2xHLENBQUM7UUFFRixNQUFNLFdBQVcsR0FBRyxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBRTFDLHlEQUF5RDtRQUN6RCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxHQUFHLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqRixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxHQUFHLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsRixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUV2QixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRU8sV0FBVztRQUNqQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDdEMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBRXhDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLHFCQUFxQixFQUFFLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzNGLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLHFCQUFxQixFQUFFLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRTdGLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNyQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFFdkMsc0NBQXNDO1FBQ3RDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksR0FBRyxDQUFDLFNBQVMsR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUVoRSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRU8sa0JBQWtCO1FBQ3hCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQUUsT0FBTztRQUMvQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxZQUFZLENBQUM7UUFDMUUsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsV0FBVyxDQUFDO1FBQ3ZFLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLGFBQWEsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLElBQUksQ0FBQyxJQUFJLEVBQUUsYUFBYSxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFFOUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzdELElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxhQUFhO1FBQ1gsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLFdBQVcsQ0FBQztRQUNsRCxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO1FBRXBELE1BQU0sT0FBTyxHQUFHLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMzRCxNQUFNLE1BQU0sR0FBRyxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFNUQsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdkIsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFdEIsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQUUsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7O1lBQzVDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRXhCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0csSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3RyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM1QixDQUFDOytHQTdNVSxrQkFBa0I7bUdBQWxCLGtCQUFrQjs7NEZBQWxCLGtCQUFrQjtrQkFKOUIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsYUFBYTtvQkFDdkIsUUFBUSxFQUFFLFdBQVc7aUJBQ3RCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgYWZ0ZXJOZXh0UmVuZGVyLFxuICBjb21wdXRlZCxcbiAgRGlyZWN0aXZlLFxuICBET0NVTUVOVCxcbiAgRWxlbWVudFJlZixcbiAgaW5qZWN0LFxuICBpbnB1dCxcbiAgbGlua2VkU2lnbmFsLFxuICBtb2RlbCxcbiAgTmdab25lLFxuICBPbkRlc3Ryb3ksXG4gIG91dHB1dCxcbiAgUExBVEZPUk1fSUQsXG4gIFJlbmRlcmVyMixcbiAgc2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2F4UGFuVmlld10nLFxuICBleHBvcnRBczogJ2F4UGFuVmlldycsXG59KVxuZXhwb3J0IGNsYXNzIEFYUGFuVmlld0RpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgcmVzaXplT2JzZXJ2ZXI6IFJlc2l6ZU9ic2VydmVyO1xuXG4gIHByaXZhdGUgcGxhdGZvcm1JZCA9IGluamVjdChQTEFURk9STV9JRCk7XG4gIHByaXZhdGUgem9uZSA9IGluamVjdChOZ1pvbmUpO1xuICBwcml2YXRlIHJlbmRlciA9IGluamVjdChSZW5kZXJlcjIpO1xuICBwcml2YXRlIGRvY3VtZW50ID0gaW5qZWN0KERPQ1VNRU5UKTtcbiAgcHJpdmF0ZSBlbCA9IGluamVjdChFbGVtZW50UmVmPEhUTUxFbGVtZW50Pik7XG5cbiAgcHJpdmF0ZSBzdGFydFggPSBzaWduYWwoMCk7XG4gIHByaXZhdGUgc3RhcnRZID0gc2lnbmFsKDApO1xuICBwcml2YXRlIHBvaW50ZXJEb3duID0gc2lnbmFsKGZhbHNlKTtcbiAgcHJpdmF0ZSB3cmFwcGVyID0gc2lnbmFsPEhUTUxEaXZFbGVtZW50IHwgbnVsbD4obnVsbCk7XG5cbiAgem9vbVN0ZXAgPSBpbnB1dCg3KTtcbiAgbWluWm9vbSA9IGlucHV0KDI1KTtcbiAgbWF4Wm9vbSA9IGlucHV0KDQwMCk7XG4gIGZyZWVNb2RlID0gaW5wdXQoZmFsc2UpO1xuICBmaXRDb250ZW50ID0gaW5wdXQodHJ1ZSk7XG4gIGRpc2FibGVQYW4gPSBpbnB1dChmYWxzZSk7XG4gIGRpc2FibGVab29tID0gaW5wdXQoZmFsc2UpO1xuICB3cmFwcGVyQ2xhc3NlcyA9IGlucHV0KCcnKTtcblxuICBwYW5YID0gbW9kZWwoMCk7XG4gIHBhblkgPSBtb2RlbCgwKTtcbiAgem9vbSA9IG1vZGVsKDEwMCk7XG5cbiAgem9vbUNoYW5nZSA9IG91dHB1dDxudW1iZXI+KCk7XG4gIHBvc2l0aW9uQ2hhbmdlID0gb3V0cHV0PHsgeDogbnVtYmVyOyB5OiBudW1iZXIgfT4oKTtcblxuICBwcml2YXRlIG5hdGl2ZUVsID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5lbC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50KTtcblxuICBwcml2YXRlIGluaXRpYWxXaWR0aCA9IGxpbmtlZFNpZ25hbCgoKSA9PiB0aGlzLm5hdGl2ZUVsKCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGgpO1xuICBwcml2YXRlIGluaXRpYWxIZWlnaHQgPSBsaW5rZWRTaWduYWwoKCkgPT4gdGhpcy5uYXRpdmVFbCgpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodCk7XG5cbiAgI2FuciA9IGFmdGVyTmV4dFJlbmRlcigoKSA9PiB7XG4gICAgLy8gQ3JlYXRlIFdyYXBwZXJcbiAgICB0aGlzLmNyZWF0ZVdyYXBwZXIoKTtcbiAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgLy8gV2hlZWwgRXZlbnRcbiAgICAgIHRoaXMud3JhcHBlcigpLm9ud2hlZWwgPSAoZSkgPT4ge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGlmIChlLmN0cmxLZXkgfHwgdGhpcy5mcmVlTW9kZSgpKSB7XG4gICAgICAgICAgdGhpcy5oYW5kbGVab29tQ2hhbmdlKGUpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSBlbHNlIGlmIChlLnNoaWZ0S2V5KSB7XG4gICAgICAgICAgaWYgKHRoaXMuZGlzYWJsZVBhbigpKSByZXR1cm47XG4gICAgICAgICAgdGhpcy5wYW5YLnVwZGF0ZSgocHJldikgPT4gcHJldiAtIGUuZGVsdGFZIC8gMyk7XG4gICAgICAgICAgdGhpcy5zZXRFbGVtZW50UG9zaXRpb24oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAodGhpcy5kaXNhYmxlUGFuKCkpIHJldHVybjtcbiAgICAgICAgICB0aGlzLnBhblkudXBkYXRlKChwcmV2KSA9PiBwcmV2IC0gZS5kZWx0YVkgLyAzKTtcbiAgICAgICAgICB0aGlzLnNldEVsZW1lbnRQb3NpdGlvbigpO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgLy8gUG9pbnRlciBEb3duIEV2ZW50XG4gICAgICB0aGlzLndyYXBwZXIoKS5vbnBvaW50ZXJkb3duID0gKGUpID0+IHRoaXMuaGFuZGxlUG9pbnRlckRvd24oZSk7XG4gICAgICAvLyBQb2ludGVyIE1vdmUgRXZlbnRcbiAgICAgIHRoaXMuZG9jdW1lbnQub25wb2ludGVybW92ZSA9IChlKSA9PiB0aGlzLmhhbmRsZVBvaW50ZXJNb3ZlKGUpO1xuICAgICAgLy8gUG9pbnRlciBVcC9MZWF2ZSBFdmVudFxuICAgICAgdGhpcy5kb2N1bWVudC5vbnBvaW50ZXJ1cCA9IChlKSA9PiB0aGlzLmhhbmRsZVBvaW50ZXJVcChlKTtcblxuICAgICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcigoKSA9PiB0aGlzLnNpemVDaGFuZ2VkKCkpO1xuICAgICAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy53cmFwcGVyKCkpO1xuICAgICAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5uYXRpdmVFbCgpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMucmVzZXRQb3NpdGlvbigpO1xuICAgIH0pO1xuICB9KTtcblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkgdGhpcy5yZXNpemVPYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVdyYXBwZXIoKSB7XG4gICAgdGhpcy53cmFwcGVyLnNldCh0aGlzLnJlbmRlci5jcmVhdGVFbGVtZW50KCdkaXYnKSk7XG4gICAgdGhpcy5yZW5kZXIuYWRkQ2xhc3ModGhpcy53cmFwcGVyKCksICdheC1wYW4tdmlldy13cmFwcGVyJyk7XG4gICAgaWYgKHRoaXMud3JhcHBlckNsYXNzZXMoKSkgdGhpcy5yZW5kZXIuYWRkQ2xhc3ModGhpcy53cmFwcGVyKCksIHRoaXMud3JhcHBlckNsYXNzZXMoKSk7XG5cbiAgICBjb25zdCBwYXJlbnQgPSB0aGlzLm5hdGl2ZUVsKCkucGFyZW50Tm9kZTtcbiAgICB0aGlzLnJlbmRlci5hcHBlbmRDaGlsZCh0aGlzLndyYXBwZXIoKSwgdGhpcy5uYXRpdmVFbCgpKTtcbiAgICB0aGlzLnJlbmRlci5pbnNlcnRCZWZvcmUocGFyZW50LCB0aGlzLndyYXBwZXIoKSwgdGhpcy5uYXRpdmVFbCgpLm5leHRTaWJsaW5nKTtcblxuICAgIHRoaXMucmVuZGVyLnNldFN0eWxlKHRoaXMud3JhcHBlcigpLCAnd2lkdGgnLCAnMTAwJScpO1xuICAgIHRoaXMucmVuZGVyLnNldFN0eWxlKHRoaXMud3JhcHBlcigpLCAnaGVpZ2h0JywgJzEwMCUnKTtcbiAgICB0aGlzLnJlbmRlci5zZXRTdHlsZSh0aGlzLndyYXBwZXIoKSwgJ292ZXJmbG93JywgJ2hpZGRlbicpO1xuICAgIHRoaXMucmVuZGVyLnNldFN0eWxlKHRoaXMud3JhcHBlcigpLCAncG9zaXRpb24nLCAncmVsYXRpdmUnKTtcblxuICAgIHRoaXMucmVuZGVyLnNldFN0eWxlKHRoaXMubmF0aXZlRWwoKSwgJ3RvcCcsICcwJyk7XG4gICAgdGhpcy5yZW5kZXIuc2V0U3R5bGUodGhpcy5uYXRpdmVFbCgpLCAnbGVmdCcsICcwJyk7XG4gICAgdGhpcy5yZW5kZXIuc2V0U3R5bGUodGhpcy5uYXRpdmVFbCgpLCAncG9zaXRpb24nLCAnYWJzb2x1dGUnKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlUG9pbnRlckRvd24oZTogUG9pbnRlckV2ZW50KSB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZVBhbigpKSByZXR1cm47XG4gICAgaWYgKCF0aGlzLmZyZWVNb2RlKCkgJiYgZS5wb2ludGVyVHlwZSA9PT0gJ21vdXNlJyAmJiBlLmJ1dHRvbnMgIT09IDQpIHJldHVybjtcbiAgICBpZiAodGhpcy5mcmVlTW9kZSgpICYmIGUucG9pbnRlclR5cGUgPT09ICdtb3VzZScgJiYgZS5idXR0b25zICE9PSAxKSByZXR1cm47XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMucG9pbnRlckRvd24uc2V0KHRydWUpO1xuICAgIHRoaXMud3JhcHBlcigpLnN0eWxlLmN1cnNvciA9ICdncmFiYmluZyc7XG5cbiAgICAvLyBVcGRhdGUgcHJldmlvdXMgcG9zaXRpb24gZm9yIG5leHQgbW92ZVxuICAgIHRoaXMuc3RhcnRYLnNldChlLmNsaWVudFggLSB0aGlzLnBhblgoKSk7XG4gICAgdGhpcy5zdGFydFkuc2V0KGUuY2xpZW50WSAtIHRoaXMucGFuWSgpKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlUG9pbnRlck1vdmUoZTogUG9pbnRlckV2ZW50KSB7XG4gICAgaWYgKCF0aGlzLnBvaW50ZXJEb3duKCkgfHwgdGhpcy5kaXNhYmxlUGFuKCkpIHJldHVybjtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy5wYW5YLnNldChlLmNsaWVudFggLSB0aGlzLnN0YXJ0WCgpKTtcbiAgICB0aGlzLnBhblkuc2V0KGUuY2xpZW50WSAtIHRoaXMuc3RhcnRZKCkpO1xuXG4gICAgdGhpcy5zZXRFbGVtZW50UG9zaXRpb24oKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlUG9pbnRlclVwKGU6IFBvaW50ZXJFdmVudCkge1xuICAgIGlmICghdGhpcy5wb2ludGVyRG93bigpIHx8IHRoaXMuZGlzYWJsZVBhbigpKSByZXR1cm47XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMucG9pbnRlckRvd24uc2V0KGZhbHNlKTtcbiAgICB0aGlzLndyYXBwZXIoKS5zdHlsZS5jdXJzb3IgPSAnYXV0byc7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVpvb21DaGFuZ2UoZTogV2hlZWxFdmVudCkge1xuICAgIGlmICh0aGlzLmRpc2FibGVab29tKCkpIHJldHVybjtcblxuICAgIGUucHJldmVudERlZmF1bHQoKTtcblxuICAgIGNvbnN0IHJlY3QgPSB0aGlzLm5hdGl2ZUVsKCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY29uc3QgbW91c2VYID0gZS5jbGllbnRYIC0gcmVjdC5sZWZ0O1xuICAgIGNvbnN0IG1vdXNlWSA9IGUuY2xpZW50WSAtIHJlY3QudG9wO1xuXG4gICAgLy8gQ2FsY3VsYXRlIHRoZSBuZXcgem9vbSBiYXNlZCBvbiBzdGVwXG4gICAgY29uc3Qgem9vbURpcmVjdGlvbiA9IGUuZGVsdGFZID4gMCA/IC0xIDogMTsgLy8gU2Nyb2xsIHVwIC0+IHpvb20gaW4sIHNjcm9sbCBkb3duIC0+IHpvb20gb3V0XG4gICAgY29uc3QgbmV3Wm9vbSA9IE1hdGgucm91bmQoXG4gICAgICBNYXRoLm1heCh0aGlzLm1pblpvb20oKSwgTWF0aC5taW4odGhpcy5tYXhab29tKCksIHRoaXMuem9vbSgpICsgem9vbURpcmVjdGlvbiAqIHRoaXMuem9vbVN0ZXAoKSkpLFxuICAgICk7XG5cbiAgICBjb25zdCBzY2FsZUNoYW5nZSA9IG5ld1pvb20gLyB0aGlzLnpvb20oKTtcblxuICAgIC8vIEFkanVzdCBwYW4gdG8ga2VlcCB6b29tIGNlbnRlcmVkIGF0IHRoZSBtb3VzZSBwb3NpdGlvblxuICAgIHRoaXMucGFuWC51cGRhdGUoKHByZXYpID0+IHByZXYgLSAobW91c2VYIC0gcmVjdC53aWR0aCAvIDIpICogKHNjYWxlQ2hhbmdlIC0gMSkpO1xuICAgIHRoaXMucGFuWS51cGRhdGUoKHByZXYpID0+IHByZXYgLSAobW91c2VZIC0gcmVjdC5oZWlnaHQgLyAyKSAqIChzY2FsZUNoYW5nZSAtIDEpKTtcbiAgICB0aGlzLnpvb20uc2V0KG5ld1pvb20pO1xuXG4gICAgdGhpcy5zZXRFbGVtZW50UG9zaXRpb24oKTtcbiAgfVxuXG4gIHByaXZhdGUgc2l6ZUNoYW5nZWQoKSB7XG4gICAgY29uc3QgcHJldldpZHRoID0gdGhpcy5pbml0aWFsV2lkdGgoKTtcbiAgICBjb25zdCBwcmV2SGVpZ2h0ID0gdGhpcy5pbml0aWFsSGVpZ2h0KCk7XG5cbiAgICB0aGlzLmluaXRpYWxXaWR0aC5zZXQoKHRoaXMubmF0aXZlRWwoKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCAqIDEwMCkgLyB0aGlzLnpvb20oKSk7XG4gICAgdGhpcy5pbml0aWFsSGVpZ2h0LnNldCgodGhpcy5uYXRpdmVFbCgpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodCAqIDEwMCkgLyB0aGlzLnpvb20oKSk7XG5cbiAgICBjb25zdCBuZXdXaWR0aCA9IHRoaXMuaW5pdGlhbFdpZHRoKCk7XG4gICAgY29uc3QgbmV3SGVpZ2h0ID0gdGhpcy5pbml0aWFsSGVpZ2h0KCk7XG5cbiAgICAvLyBNYWludGFpbiB0aGUgc2FtZSByZWxhdGl2ZSBwb3NpdGlvblxuICAgIHRoaXMucGFuWC51cGRhdGUoKHByZXYpID0+IHByZXYgLSAobmV3V2lkdGggLSBwcmV2V2lkdGgpIC8gMik7XG4gICAgdGhpcy5wYW5ZLnVwZGF0ZSgocHJldikgPT4gcHJldiAtIChuZXdIZWlnaHQgLSBwcmV2SGVpZ2h0KSAvIDIpO1xuXG4gICAgdGhpcy5zZXRFbGVtZW50UG9zaXRpb24oKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0Rml0Q29udGVudFNjYWxlKCkge1xuICAgIGlmICghdGhpcy5maXRDb250ZW50KCkpIHJldHVybjtcbiAgICBjb25zdCBoZWlnaHQgPSB0aGlzLndyYXBwZXIoKS5jbGllbnRIZWlnaHQgLyB0aGlzLm5hdGl2ZUVsKCkuY2xpZW50SGVpZ2h0O1xuICAgIGNvbnN0IHdpZHRoID0gdGhpcy53cmFwcGVyKCkuY2xpZW50V2lkdGggLyB0aGlzLm5hdGl2ZUVsKCkuY2xpZW50V2lkdGg7XG4gICAgdGhpcy56b29tLnNldChNYXRoLnJvdW5kKE1hdGgubWluKGhlaWdodCwgd2lkdGgpICogMTAwKSk7XG4gIH1cblxuICBzZXRFbGVtZW50UG9zaXRpb24oKSB7XG4gICAgdGhpcy5uYXRpdmVFbCgpLnN0eWxlLnRyYW5zZm9ybSA9IGB0cmFuc2xhdGUoJHt0aGlzLnBhblgoKX1weCwgJHt0aGlzLnBhblkoKX1weCkgc2NhbGUoJHt0aGlzLnpvb20oKSAvIDEwMH0pYDtcblxuICAgIHRoaXMucG9zaXRpb25DaGFuZ2UuZW1pdCh7IHg6IHRoaXMucGFuWCgpLCB5OiB0aGlzLnBhblkoKSB9KTtcbiAgICB0aGlzLnpvb21DaGFuZ2UuZW1pdCh0aGlzLnpvb20oKSk7XG4gIH1cblxuICByZXNldFBvc2l0aW9uKCkge1xuICAgIGNvbnN0IGNvbnRhaW5lcldpZHRoID0gdGhpcy53cmFwcGVyKCkub2Zmc2V0V2lkdGg7XG4gICAgY29uc3QgY29udGFpbmVySGVpZ2h0ID0gdGhpcy53cmFwcGVyKCkub2Zmc2V0SGVpZ2h0O1xuXG4gICAgY29uc3QgYm94TGVmdCA9IChjb250YWluZXJXaWR0aCAtIHRoaXMuaW5pdGlhbFdpZHRoKCkpIC8gMjtcbiAgICBjb25zdCBib3hUb3AgPSAoY29udGFpbmVySGVpZ2h0IC0gdGhpcy5pbml0aWFsSGVpZ2h0KCkpIC8gMjtcblxuICAgIHRoaXMucGFuWC5zZXQoYm94TGVmdCk7XG4gICAgdGhpcy5wYW5ZLnNldChib3hUb3ApO1xuXG4gICAgaWYgKHRoaXMuZml0Q29udGVudCgpKSB0aGlzLnNldEZpdENvbnRlbnRTY2FsZSgpO1xuICAgIGVsc2UgdGhpcy56b29tLnNldCgxMDApO1xuXG4gICAgdGhpcy5zZXRFbGVtZW50UG9zaXRpb24oKTtcbiAgfVxuXG4gIHpvb21JbigpIHtcbiAgICB0aGlzLnpvb20uc2V0KE1hdGgucm91bmQoTWF0aC5tYXgodGhpcy5taW5ab29tKCksIE1hdGgubWluKHRoaXMubWF4Wm9vbSgpLCB0aGlzLnpvb20oKSArIHRoaXMuem9vbVN0ZXAoKSkpKSk7XG4gICAgdGhpcy5zZXRFbGVtZW50UG9zaXRpb24oKTtcbiAgfVxuXG4gIHpvb21PdXQoKSB7XG4gICAgdGhpcy56b29tLnNldChNYXRoLnJvdW5kKE1hdGgubWF4KHRoaXMubWluWm9vbSgpLCBNYXRoLm1pbih0aGlzLm1heFpvb20oKSwgdGhpcy56b29tKCkgLSB0aGlzLnpvb21TdGVwKCkpKSkpO1xuICAgIHRoaXMuc2V0RWxlbWVudFBvc2l0aW9uKCk7XG4gIH1cbn1cbiJdfQ==","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LWNkay1wYW4tdmlldy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Nkay9wYW4tdmlldy9zcmMvYWNvcmV4LWNkay1wYW4tdmlldy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"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"}