ngx-ui-tour-core
Version:
UI tour library for Angular 12+
1 lines • 178 kB
Source Map (JSON)
{"version":3,"file":"ngx-ui-tour-core.mjs","sources":["../tmp-esm2022/lib/utils/deep-merge.js","../tmp-esm2022/lib/utils/is-covered.js","../tmp-esm2022/lib/utils/is-in-viewport.js","../tmp-esm2022/lib/utils/overflow-utils.js","../tmp-esm2022/lib/utils/get-scrollable-parent.js","../tmp-esm2022/lib/utils/scroll-utils.js","../tmp-esm2022/lib/scrolling.service.js","../tmp-esm2022/lib/tour-resize-observer.service.js","../tmp-esm2022/lib/tour-backdrop.service.js","../tmp-esm2022/lib/anchor-click.service.js","../tmp-esm2022/lib/scroll-blocking.service.js","../tmp-esm2022/lib/tour.service.js","../tmp-esm2022/lib/tour-hotkey-listener.component.js","../tmp-esm2022/lib/base-tour-proxy-anchor.js","../tmp-esm2022/ngx-ui-tour-core.js"],"sourcesContent":["export function deepMerge(...objects) {\n return objects.reduce((acc, cur) => {\n cur ??= {};\n const keys = Object.keys(cur);\n for (const key of keys) {\n const accValue = acc[key], curValue = cur[key];\n if (isPlainObject(accValue) && isPlainObject(curValue)) {\n acc[key] = deepMerge(accValue, curValue);\n }\n else {\n acc[key] = curValue;\n }\n }\n return acc;\n }, {});\n}\nfunction isPlainObject(value) {\n return value instanceof Object && value.constructor === Object;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcC1tZXJnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvbmd4LXVpLXRvdXItY29yZS9zcmMvbGliL3V0aWxzL2RlZXAtbWVyZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxVQUFVLFNBQVMsQ0FBSSxHQUFHLE9BQVk7SUFDeEMsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBTSxFQUFFLEdBQU0sRUFBRSxFQUFFO1FBRXJDLEdBQUcsS0FBSyxFQUFPLENBQUM7UUFDaEIsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQWdCLENBQUM7UUFFN0MsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNyQixNQUFNLFFBQVEsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUEwQixFQUM5QyxRQUFRLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBMEIsQ0FBQztZQUVqRCxJQUFJLGFBQWEsQ0FBQyxRQUFRLENBQUMsSUFBSSxhQUFhLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztnQkFDckQsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFlLENBQUM7WUFDM0QsQ0FBQztpQkFBTSxDQUFDO2dCQUNKLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxRQUFzQixDQUFDO1lBQ3RDLENBQUM7UUFDTCxDQUFDO1FBRUQsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDLEVBQUUsRUFBTyxDQUFDLENBQUM7QUFDaEIsQ0FBQztBQUVELFNBQVMsYUFBYSxDQUFDLEtBQTRCO0lBQy9DLE9BQU8sS0FBSyxZQUFZLE1BQU0sSUFBSSxLQUFLLENBQUMsV0FBVyxLQUFLLE1BQU0sQ0FBQztBQUNuRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsidHlwZSBQbGFpbk9iamVjdCA9IFJlY29yZDxzdHJpbmcgfCBudW1iZXIgfCBzeW1ib2wsIHVua25vd24+O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGRlZXBNZXJnZTxUPiguLi5vYmplY3RzOiBUW10pOiBUIHtcclxuICAgIHJldHVybiBvYmplY3RzLnJlZHVjZSgoYWNjOiBULCBjdXI6IFQpID0+IHtcclxuXHJcbiAgICAgICAgY3VyID8/PSB7fSBhcyBUO1xyXG4gICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhjdXIpIGFzIChrZXlvZiBUKVtdO1xyXG5cclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGFjY1ZhbHVlID0gYWNjW2tleV0gYXMgUGxhaW5PYmplY3QgfCB1bmtub3duLFxyXG4gICAgICAgICAgICAgICAgY3VyVmFsdWUgPSBjdXJba2V5XSBhcyBQbGFpbk9iamVjdCB8IHVua25vd247XHJcblxyXG4gICAgICAgICAgICBpZiAoaXNQbGFpbk9iamVjdChhY2NWYWx1ZSkgJiYgaXNQbGFpbk9iamVjdChjdXJWYWx1ZSkpIHtcclxuICAgICAgICAgICAgICAgIGFjY1trZXldID0gZGVlcE1lcmdlKGFjY1ZhbHVlLCBjdXJWYWx1ZSkgYXMgVFtrZXlvZiBUXTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGFjY1trZXldID0gY3VyVmFsdWUgYXMgVFtrZXlvZiBUXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGFjYztcclxuICAgIH0sIHt9IGFzIFQpO1xyXG59XHJcblxyXG5mdW5jdGlvbiBpc1BsYWluT2JqZWN0KHZhbHVlOiB1bmtub3duIHwgUGxhaW5PYmplY3QpOiB2YWx1ZSBpcyBQbGFpbk9iamVjdCB7XHJcbiAgICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBPYmplY3QgJiYgdmFsdWUuY29uc3RydWN0b3IgPT09IE9iamVjdDtcclxufVxyXG4iXX0=","export function isCovered(htmlElement, sidesToCheck = 2 /* ElementSides.All */) {\n const rect = htmlElement.getBoundingClientRect(), topEl = document.elementFromPoint(rect.left, rect.top), bottomEl = document.elementFromPoint(rect.right, rect.bottom), isTopCovered = !!topEl && topEl !== htmlElement && !areElementsRelated(topEl, htmlElement), isBottomCovered = !!bottomEl && bottomEl !== htmlElement && !areElementsRelated(bottomEl, htmlElement);\n if (sidesToCheck === 0 /* ElementSides.Top */) {\n return isTopCovered;\n }\n if (sidesToCheck === 1 /* ElementSides.Bottom */) {\n return isBottomCovered;\n }\n return isTopCovered || isBottomCovered;\n}\nfunction areElementsRelated(el1, el2) {\n return el1.contains(el2) || el2.contains(el1);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMtY292ZXJlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvbmd4LXVpLXRvdXItY29yZS9zcmMvbGliL3V0aWxzL2lzLWNvdmVyZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxVQUFVLFNBQVMsQ0FBQyxXQUF3QixFQUFFLHVDQUE2QztJQUM3RixNQUFNLElBQUksR0FBRyxXQUFXLENBQUMscUJBQXFCLEVBQUUsRUFDNUMsS0FBSyxHQUFHLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsRUFDdEQsUUFBUSxHQUFHLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsRUFDN0QsWUFBWSxHQUFHLENBQUMsQ0FBQyxLQUFLLElBQUksS0FBSyxLQUFLLFdBQVcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsRUFDMUYsZUFBZSxHQUFHLENBQUMsQ0FBQyxRQUFRLElBQUksUUFBUSxLQUFLLFdBQVcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUUzRyxJQUFJLFlBQVksNkJBQXFCLEVBQUUsQ0FBQztRQUNwQyxPQUFPLFlBQVksQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFBSSxZQUFZLGdDQUF3QixFQUFFLENBQUM7UUFDdkMsT0FBTyxlQUFlLENBQUM7SUFDM0IsQ0FBQztJQUVELE9BQU8sWUFBWSxJQUFJLGVBQWUsQ0FBQztBQUMzQyxDQUFDO0FBRUQsU0FBUyxrQkFBa0IsQ0FBQyxHQUFTLEVBQUUsR0FBUztJQUM1QyxPQUFPLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNsRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtFbGVtZW50U2lkZXN9IGZyb20gJy4vaXMtaW4tdmlld3BvcnQnO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGlzQ292ZXJlZChodG1sRWxlbWVudDogSFRNTEVsZW1lbnQsIHNpZGVzVG9DaGVjazogRWxlbWVudFNpZGVzID0gRWxlbWVudFNpZGVzLkFsbCk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgcmVjdCA9IGh0bWxFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLFxyXG4gICAgICAgIHRvcEVsID0gZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludChyZWN0LmxlZnQsIHJlY3QudG9wKSxcclxuICAgICAgICBib3R0b21FbCA9IGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQocmVjdC5yaWdodCwgcmVjdC5ib3R0b20pLFxyXG4gICAgICAgIGlzVG9wQ292ZXJlZCA9ICEhdG9wRWwgJiYgdG9wRWwgIT09IGh0bWxFbGVtZW50ICYmICFhcmVFbGVtZW50c1JlbGF0ZWQodG9wRWwsIGh0bWxFbGVtZW50KSxcclxuICAgICAgICBpc0JvdHRvbUNvdmVyZWQgPSAhIWJvdHRvbUVsICYmIGJvdHRvbUVsICE9PSBodG1sRWxlbWVudCAmJiAhYXJlRWxlbWVudHNSZWxhdGVkKGJvdHRvbUVsLCBodG1sRWxlbWVudCk7XHJcblxyXG4gICAgaWYgKHNpZGVzVG9DaGVjayA9PT0gRWxlbWVudFNpZGVzLlRvcCkge1xyXG4gICAgICAgIHJldHVybiBpc1RvcENvdmVyZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHNpZGVzVG9DaGVjayA9PT0gRWxlbWVudFNpZGVzLkJvdHRvbSkge1xyXG4gICAgICAgIHJldHVybiBpc0JvdHRvbUNvdmVyZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGlzVG9wQ292ZXJlZCB8fCBpc0JvdHRvbUNvdmVyZWQ7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGFyZUVsZW1lbnRzUmVsYXRlZChlbDE6IE5vZGUsIGVsMjogTm9kZSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIGVsMS5jb250YWlucyhlbDIpIHx8IGVsMi5jb250YWlucyhlbDEpO1xyXG59Il19","export function isInViewport(htmlElement, sidesToCheck = 2 /* ElementSides.All */) {\n const viewportWidth = window.innerWidth, viewportHeight = window.innerHeight, boundingRectangle = htmlElement.getBoundingClientRect(), areCornersInViewport = boundingRectangle.left >= 0 && boundingRectangle.right <= viewportWidth, isTopInViewport = boundingRectangle.top >= 0, isBottomInViewport = boundingRectangle.bottom <= viewportHeight;\n if (sidesToCheck === 0 /* ElementSides.Top */) {\n return isTopInViewport && areCornersInViewport;\n }\n if (sidesToCheck === 1 /* ElementSides.Bottom */) {\n return isBottomInViewport && areCornersInViewport;\n }\n return isTopInViewport && isBottomInViewport && areCornersInViewport;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMtaW4tdmlld3BvcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL25neC11aS10b3VyLWNvcmUvc3JjL2xpYi91dGlscy9pcy1pbi12aWV3cG9ydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxNQUFNLFVBQVUsWUFBWSxDQUFDLFdBQXdCLEVBQUUsdUNBQTZDO0lBQ2hHLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxVQUFVLEVBQ25DLGNBQWMsR0FBRyxNQUFNLENBQUMsV0FBVyxFQUNuQyxpQkFBaUIsR0FBRyxXQUFXLENBQUMscUJBQXFCLEVBQUUsRUFDdkQsb0JBQW9CLEdBQUcsaUJBQWlCLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxpQkFBaUIsQ0FBQyxLQUFLLElBQUksYUFBYSxFQUM5RixlQUFlLEdBQUcsaUJBQWlCLENBQUMsR0FBRyxJQUFJLENBQUMsRUFDNUMsa0JBQWtCLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxJQUFJLGNBQWMsQ0FBQztJQUVwRSxJQUFJLFlBQVksNkJBQXFCLEVBQUUsQ0FBQztRQUNwQyxPQUFPLGVBQWUsSUFBSSxvQkFBb0IsQ0FBQztJQUNuRCxDQUFDO0lBQ0QsSUFBSSxZQUFZLGdDQUF3QixFQUFFLENBQUM7UUFDdkMsT0FBTyxrQkFBa0IsSUFBSSxvQkFBb0IsQ0FBQztJQUN0RCxDQUFDO0lBRUQsT0FBTyxlQUFlLElBQUksa0JBQWtCLElBQUksb0JBQW9CLENBQUM7QUFDekUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBlbnVtIEVsZW1lbnRTaWRlcyB7XHJcbiAgICBUb3AsXHJcbiAgICBCb3R0b20sXHJcbiAgICBBbGxcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGlzSW5WaWV3cG9ydChodG1sRWxlbWVudDogSFRNTEVsZW1lbnQsIHNpZGVzVG9DaGVjazogRWxlbWVudFNpZGVzID0gRWxlbWVudFNpZGVzLkFsbCk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3Qgdmlld3BvcnRXaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoLFxyXG4gICAgICAgIHZpZXdwb3J0SGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0LFxyXG4gICAgICAgIGJvdW5kaW5nUmVjdGFuZ2xlID0gaHRtbEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksXHJcbiAgICAgICAgYXJlQ29ybmVyc0luVmlld3BvcnQgPSBib3VuZGluZ1JlY3RhbmdsZS5sZWZ0ID49IDAgJiYgYm91bmRpbmdSZWN0YW5nbGUucmlnaHQgPD0gdmlld3BvcnRXaWR0aCxcclxuICAgICAgICBpc1RvcEluVmlld3BvcnQgPSBib3VuZGluZ1JlY3RhbmdsZS50b3AgPj0gMCxcclxuICAgICAgICBpc0JvdHRvbUluVmlld3BvcnQgPSBib3VuZGluZ1JlY3RhbmdsZS5ib3R0b20gPD0gdmlld3BvcnRIZWlnaHQ7XHJcblxyXG4gICAgaWYgKHNpZGVzVG9DaGVjayA9PT0gRWxlbWVudFNpZGVzLlRvcCkge1xyXG4gICAgICAgIHJldHVybiBpc1RvcEluVmlld3BvcnQgJiYgYXJlQ29ybmVyc0luVmlld3BvcnQ7XHJcbiAgICB9XHJcbiAgICBpZiAoc2lkZXNUb0NoZWNrID09PSBFbGVtZW50U2lkZXMuQm90dG9tKSB7XHJcbiAgICAgICAgcmV0dXJuIGlzQm90dG9tSW5WaWV3cG9ydCAmJiBhcmVDb3JuZXJzSW5WaWV3cG9ydDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gaXNUb3BJblZpZXdwb3J0ICYmIGlzQm90dG9tSW5WaWV3cG9ydCAmJiBhcmVDb3JuZXJzSW5WaWV3cG9ydDtcclxufVxyXG4iXX0=","export class OverflowUtils {\n static getVisibleSection(childRect, containerRect) {\n return OverflowUtils._isHeightOverflowing(childRect, containerRect) ?\n OverflowUtils._getOverlap(childRect, containerRect) :\n childRect;\n }\n static isHeightOverflowing(child, container) {\n return OverflowUtils._isHeightOverflowing(child instanceof HTMLElement ? child.getBoundingClientRect() : child, container instanceof HTMLElement ? container.getBoundingClientRect() : container);\n }\n static _isHeightOverflowing(childRect, containerRect) {\n return containerRect.height < childRect.height;\n }\n static _getOverlap(a, b) {\n const top = Math.max(a.top, b.top), left = Math.max(a.left, b.left), right = Math.min(a.right, b.right), bottom = Math.min(a.bottom, b.bottom);\n return new DOMRect(left, top, right - left, bottom - top);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmZsb3ctdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL25neC11aS10b3VyLWNvcmUvc3JjL2xpYi91dGlscy9vdmVyZmxvdy11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sYUFBYTtJQUV0QixNQUFNLENBQUMsaUJBQWlCLENBQUMsU0FBa0IsRUFBRSxhQUFzQjtRQUMvRCxPQUFPLGFBQWEsQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQztZQUNqRSxhQUFhLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDO1lBQ3JELFNBQVMsQ0FBQztJQUNsQixDQUFDO0lBRUQsTUFBTSxDQUFDLG1CQUFtQixDQUFDLEtBQTRCLEVBQUUsU0FBZ0M7UUFDckYsT0FBTyxhQUFhLENBQUMsb0JBQW9CLENBQ3JDLEtBQUssWUFBWSxXQUFXLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQ3BFLFNBQVMsWUFBWSxXQUFXLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQ25GLENBQUM7SUFDTixDQUFDO0lBRU8sTUFBTSxDQUFDLG9CQUFvQixDQUFDLFNBQWtCLEVBQUUsYUFBc0I7UUFDMUUsT0FBTyxhQUFhLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUM7SUFDbkQsQ0FBQztJQUVPLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBVSxFQUFFLENBQVU7UUFDN0MsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFDOUIsSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQy9CLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUNsQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMxQyxPQUFPLElBQUksT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksRUFBRSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDOUQsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIE92ZXJmbG93VXRpbHMge1xyXG5cclxuICAgIHN0YXRpYyBnZXRWaXNpYmxlU2VjdGlvbihjaGlsZFJlY3Q6IERPTVJlY3QsIGNvbnRhaW5lclJlY3Q6IERPTVJlY3QpOiBET01SZWN0IHtcclxuICAgICAgICByZXR1cm4gT3ZlcmZsb3dVdGlscy5faXNIZWlnaHRPdmVyZmxvd2luZyhjaGlsZFJlY3QsIGNvbnRhaW5lclJlY3QpID9cclxuICAgICAgICAgICAgT3ZlcmZsb3dVdGlscy5fZ2V0T3ZlcmxhcChjaGlsZFJlY3QsIGNvbnRhaW5lclJlY3QpIDpcclxuICAgICAgICAgICAgY2hpbGRSZWN0O1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBpc0hlaWdodE92ZXJmbG93aW5nKGNoaWxkOiBIVE1MRWxlbWVudCB8IERPTVJlY3QsIGNvbnRhaW5lcjogSFRNTEVsZW1lbnQgfCBET01SZWN0KTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIE92ZXJmbG93VXRpbHMuX2lzSGVpZ2h0T3ZlcmZsb3dpbmcoXHJcbiAgICAgICAgICAgIGNoaWxkIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgPyBjaGlsZC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSA6IGNoaWxkLFxyXG4gICAgICAgICAgICBjb250YWluZXIgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCA/IGNvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSA6IGNvbnRhaW5lcixcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc3RhdGljIF9pc0hlaWdodE92ZXJmbG93aW5nKGNoaWxkUmVjdDogRE9NUmVjdCwgY29udGFpbmVyUmVjdDogRE9NUmVjdCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiBjb250YWluZXJSZWN0LmhlaWdodCA8IGNoaWxkUmVjdC5oZWlnaHQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzdGF0aWMgX2dldE92ZXJsYXAoYTogRE9NUmVjdCwgYjogRE9NUmVjdCk6IERPTVJlY3Qge1xyXG4gICAgICAgIGNvbnN0IHRvcCA9IE1hdGgubWF4KGEudG9wLCBiLnRvcCksXHJcbiAgICAgICAgICAgIGxlZnQgPSBNYXRoLm1heChhLmxlZnQsIGIubGVmdCksXHJcbiAgICAgICAgICAgIHJpZ2h0ID0gTWF0aC5taW4oYS5yaWdodCwgYi5yaWdodCksXHJcbiAgICAgICAgICAgIGJvdHRvbSA9IE1hdGgubWluKGEuYm90dG9tLCBiLmJvdHRvbSk7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBET01SZWN0KGxlZnQsIHRvcCwgcmlnaHQgLSBsZWZ0LCBib3R0b20gLSB0b3ApO1xyXG4gICAgfVxyXG59XHJcblxyXG4iXX0=","export function getScrollableParent(node) {\n if (!(node instanceof HTMLElement || node instanceof ShadowRoot)) {\n return null;\n }\n const element = node instanceof ShadowRoot ? node.host : node;\n const style = getComputedStyle(element), isScrollable = element.scrollHeight > element.clientHeight, overflow = style.overflowY, scrollableOverflow = ['scroll', 'auto'];\n if (isScrollable && scrollableOverflow.includes(overflow)) {\n return element;\n }\n return getScrollableParent(element.parentNode);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LXNjcm9sbGFibGUtcGFyZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9uZ3gtdWktdG91ci1jb3JlL3NyYy9saWIvdXRpbHMvZ2V0LXNjcm9sbGFibGUtcGFyZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxJQUFVO0lBQzFDLElBQUksQ0FBQyxDQUFDLElBQUksWUFBWSxXQUFXLElBQUksSUFBSSxZQUFZLFVBQVUsQ0FBQyxFQUFFLENBQUM7UUFDL0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELE1BQU0sT0FBTyxHQUFHLElBQUksWUFBWSxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFtQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFFN0UsTUFBTSxLQUFLLEdBQUcsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLEVBQ25DLFlBQVksR0FBRyxPQUFPLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQyxZQUFZLEVBQzFELFFBQVEsR0FBRyxLQUFLLENBQUMsU0FBUyxFQUMxQixrQkFBa0IsR0FBRyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUU1QyxJQUFJLFlBQVksSUFBSSxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUN4RCxPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDO0lBRUQsT0FBTyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDbkQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBnZXRTY3JvbGxhYmxlUGFyZW50KG5vZGU6IE5vZGUpOiBIVE1MRWxlbWVudCB8IG51bGwge1xyXG4gICAgaWYgKCEobm9kZSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50IHx8IG5vZGUgaW5zdGFuY2VvZiBTaGFkb3dSb290KSkge1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGVsZW1lbnQgPSBub2RlIGluc3RhbmNlb2YgU2hhZG93Um9vdCA/IG5vZGUuaG9zdCBhcyBIVE1MRWxlbWVudCA6IG5vZGU7XHJcblxyXG4gICAgY29uc3Qgc3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLFxyXG4gICAgICAgIGlzU2Nyb2xsYWJsZSA9IGVsZW1lbnQuc2Nyb2xsSGVpZ2h0ID4gZWxlbWVudC5jbGllbnRIZWlnaHQsXHJcbiAgICAgICAgb3ZlcmZsb3cgPSBzdHlsZS5vdmVyZmxvd1ksXHJcbiAgICAgICAgc2Nyb2xsYWJsZU92ZXJmbG93ID0gWydzY3JvbGwnLCAnYXV0byddO1xyXG5cclxuICAgIGlmIChpc1Njcm9sbGFibGUgJiYgc2Nyb2xsYWJsZU92ZXJmbG93LmluY2x1ZGVzKG92ZXJmbG93KSkge1xyXG4gICAgICAgIHJldHVybiBlbGVtZW50O1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBnZXRTY3JvbGxhYmxlUGFyZW50KGVsZW1lbnQucGFyZW50Tm9kZSk7XHJcbn1cclxuIl19","import { getScrollableParent } from './get-scrollable-parent';\nexport class ScrollUtils {\n static getScrollContainer(anchorEl, userScrollContainer) {\n if (typeof userScrollContainer === 'string') {\n return document.documentElement.querySelector(userScrollContainer);\n }\n if (userScrollContainer instanceof HTMLElement) {\n return userScrollContainer;\n }\n return getScrollableParent(anchorEl);\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsLXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9uZ3gtdWktdG91ci1jb3JlL3NyYy9saWIvdXRpbHMvc2Nyb2xsLXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBRTVELE1BQU0sT0FBTyxXQUFXO0lBRXBCLE1BQU0sQ0FBQyxrQkFBa0IsQ0FDckIsUUFBcUIsRUFDckIsbUJBQXFEO1FBRXJELElBQUksT0FBTyxtQkFBbUIsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUMxQyxPQUFPLFFBQVEsQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDdkUsQ0FBQztRQUNELElBQUksbUJBQW1CLFlBQVksV0FBVyxFQUFFLENBQUM7WUFDN0MsT0FBTyxtQkFBbUIsQ0FBQztRQUMvQixDQUFDO1FBRUQsT0FBTyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN6QyxDQUFDO0NBRUoiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2dldFNjcm9sbGFibGVQYXJlbnR9IGZyb20gJy4vZ2V0LXNjcm9sbGFibGUtcGFyZW50JztcclxuXHJcbmV4cG9ydCBjbGFzcyBTY3JvbGxVdGlscyB7XHJcbiAgICBcclxuICAgIHN0YXRpYyBnZXRTY3JvbGxDb250YWluZXIoXHJcbiAgICAgICAgYW5jaG9yRWw6IEhUTUxFbGVtZW50LFxyXG4gICAgICAgIHVzZXJTY3JvbGxDb250YWluZXI6IHN0cmluZyB8IEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkXHJcbiAgICApOiBIVE1MRWxlbWVudCB8IG51bGwge1xyXG4gICAgICAgIGlmICh0eXBlb2YgdXNlclNjcm9sbENvbnRhaW5lciA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5xdWVyeVNlbGVjdG9yKHVzZXJTY3JvbGxDb250YWluZXIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodXNlclNjcm9sbENvbnRhaW5lciBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSB7XHJcbiAgICAgICAgICAgIHJldHVybiB1c2VyU2Nyb2xsQ29udGFpbmVyO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGdldFNjcm9sbGFibGVQYXJlbnQoYW5jaG9yRWwpO1xyXG4gICAgfVxyXG4gICAgXHJcbn1cclxuIl19","import { isCovered, isInViewport, OverflowUtils, ScrollUtils } from './utils';\nimport { debounceTime, firstValueFrom, fromEvent, map, of, timeout } from 'rxjs';\nimport { inject, Injectable, PLATFORM_ID, DOCUMENT } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport * as i0 from \"@angular/core\";\nexport class ScrollingService {\n constructor() {\n this.platformId = inject(PLATFORM_ID);\n this.isBrowser = isPlatformBrowser(this.platformId);\n this.document = inject(DOCUMENT);\n this.window = this.document.defaultView;\n }\n ensureVisible(anchorElement, options) {\n this.scrollOptions = options;\n this.anchorEl = anchorElement;\n const behavior = options.smoothScroll && this.isBrowser ? 'smooth' : 'auto';\n const userScrollContainer = this.scrollOptions.scrollContainer, scrollContainer = ScrollUtils.getScrollContainer(anchorElement, userScrollContainer) ?? document.documentElement;\n if (OverflowUtils.isHeightOverflowing(anchorElement, scrollContainer)) {\n anchorElement.scrollIntoView({\n block: 'start',\n inline: 'start',\n behavior\n });\n }\n else if (options.center && !('safari' in this.window)) {\n anchorElement.scrollIntoView({\n block: 'center',\n inline: 'center',\n behavior\n });\n }\n else if (!isInViewport(anchorElement, 1 /* ElementSides.Bottom */) || isCovered(anchorElement, 1 /* ElementSides.Bottom */)) {\n anchorElement.scrollIntoView({\n block: 'end',\n inline: 'nearest',\n behavior\n });\n }\n else if (!isInViewport(anchorElement, 0 /* ElementSides.Top */) || isCovered(anchorElement, 0 /* ElementSides.Top */)) {\n anchorElement.scrollIntoView({\n block: 'start',\n inline: 'nearest',\n behavior\n });\n }\n else {\n return Promise.resolve();\n }\n return behavior === 'smooth' ? firstValueFrom(this.waitForScrollFinish$) : Promise.resolve();\n }\n get waitForScrollFinish$() {\n const userScrollContainer = this.scrollOptions.scrollContainer, \n // Default here is \"document\" instead of \"document.documentElement\" on purpose\n scrollContainer = ScrollUtils.getScrollContainer(this.anchorEl, userScrollContainer) ?? document;\n return fromEvent(scrollContainer, 'scroll')\n .pipe(timeout({\n each: 75,\n with: () => of(undefined)\n }), debounceTime(50), map(() => undefined));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: ScrollingService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: ScrollingService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: ScrollingService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsaW5nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL25neC11aS10b3VyLWNvcmUvc3JjL2xpYi9zY3JvbGxpbmcuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWUsU0FBUyxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFDLE1BQU0sU0FBUyxDQUFDO0FBQzFGLE9BQU8sRUFBQyxZQUFZLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUMvRSxPQUFPLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3hFLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLGlCQUFpQixDQUFDOztBQVdsRCxNQUFNLE9BQU8sZ0JBQWdCO0lBSDdCO1FBS3FCLGVBQVUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDakMsY0FBUyxHQUFHLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMvQyxhQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVCLFdBQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQztLQTREdkQ7SUF4REcsYUFBYSxDQUFDLGFBQTBCLEVBQUUsT0FBc0I7UUFDNUQsSUFBSSxDQUFDLGFBQWEsR0FBRyxPQUFPLENBQUM7UUFDN0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxhQUFhLENBQUM7UUFFOUIsTUFBTSxRQUFRLEdBQW1CLE9BQU8sQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFFNUYsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsRUFDMUQsZUFBZSxHQUFHLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLEVBQUUsbUJBQW1CLENBQUMsSUFBSSxRQUFRLENBQUMsZUFBZSxDQUFDO1FBRXJILElBQUksYUFBYSxDQUFDLG1CQUFtQixDQUFDLGFBQWEsRUFBRSxlQUFlLENBQUMsRUFBRSxDQUFDO1lBQ3BFLGFBQWEsQ0FBQyxjQUFjLENBQUM7Z0JBQ3pCLEtBQUssRUFBRSxPQUFPO2dCQUNkLE1BQU0sRUFBRSxPQUFPO2dCQUNmLFFBQVE7YUFDWCxDQUFDLENBQUM7UUFDUCxDQUFDO2FBQU0sSUFBSSxPQUFPLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDdEQsYUFBYSxDQUFDLGNBQWMsQ0FBQztnQkFDekIsS0FBSyxFQUFFLFFBQVE7Z0JBQ2YsTUFBTSxFQUFFLFFBQVE7Z0JBQ2hCLFFBQVE7YUFDWCxDQUFDLENBQUM7UUFDUCxDQUFDO2FBQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLDhCQUFzQixJQUFJLFNBQVMsQ0FBQyxhQUFhLDhCQUFzQixFQUFFLENBQUM7WUFDNUcsYUFBYSxDQUFDLGNBQWMsQ0FBQztnQkFDekIsS0FBSyxFQUFFLEtBQUs7Z0JBQ1osTUFBTSxFQUFFLFNBQVM7Z0JBQ2pCLFFBQVE7YUFDWCxDQUFDLENBQUM7UUFDUCxDQUFDO2FBQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLDJCQUFtQixJQUFJLFNBQVMsQ0FBQyxhQUFhLDJCQUFtQixFQUFFLENBQUM7WUFDdEcsYUFBYSxDQUFDLGNBQWMsQ0FBQztnQkFDekIsS0FBSyxFQUFFLE9BQU87Z0JBQ2QsTUFBTSxFQUFFLFNBQVM7Z0JBQ2pCLFFBQVE7YUFDWCxDQUFDLENBQUM7UUFDUCxDQUFDO2FBQU0sQ0FBQztZQUNKLE9BQU8sT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzdCLENBQUM7UUFFRCxPQUFPLFFBQVEsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2pHLENBQUM7SUFFRCxJQUFZLG9CQUFvQjtRQUM1QixNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZTtRQUMxRCw4RUFBOEU7UUFDOUUsZUFBZSxHQUFHLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLG1CQUFtQixDQUFDLElBQUksUUFBUSxDQUFDO1FBRXJHLE9BQU8sU0FBUyxDQUFDLGVBQWUsRUFBRSxRQUFRLENBQUM7YUFDdEMsSUFBSSxDQUNELE9BQU8sQ0FBQztZQUNKLElBQUksRUFBRSxFQUFFO1lBQ1IsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUM7U0FDNUIsQ0FBQyxFQUNGLFlBQVksQ0FBQyxFQUFFLENBQUMsRUFDaEIsR0FBRyxDQUFDLEdBQWMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUNsQyxDQUFDO0lBQ1YsQ0FBQzs4R0EvRFEsZ0JBQWdCO2tIQUFoQixnQkFBZ0IsY0FGYixNQUFNOzsyRkFFVCxnQkFBZ0I7a0JBSDVCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtFbGVtZW50U2lkZXMsIGlzQ292ZXJlZCwgaXNJblZpZXdwb3J0LCBPdmVyZmxvd1V0aWxzLCBTY3JvbGxVdGlsc30gZnJvbSAnLi91dGlscyc7XHJcbmltcG9ydCB7ZGVib3VuY2VUaW1lLCBmaXJzdFZhbHVlRnJvbSwgZnJvbUV2ZW50LCBtYXAsIG9mLCB0aW1lb3V0fSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtpbmplY3QsIEluamVjdGFibGUsIFBMQVRGT1JNX0lELCBET0NVTUVOVH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7aXNQbGF0Zm9ybUJyb3dzZXJ9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNjcm9sbE9wdGlvbnMge1xyXG4gICAgY2VudGVyOiBib29sZWFuO1xyXG4gICAgc21vb3RoU2Nyb2xsOiBib29sZWFuO1xyXG4gICAgc2Nyb2xsQ29udGFpbmVyPzogc3RyaW5nIHwgSFRNTEVsZW1lbnQ7XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgU2Nyb2xsaW5nU2VydmljZSB7XHJcblxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBwbGF0Zm9ybUlkID0gaW5qZWN0KFBMQVRGT1JNX0lEKTtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgaXNCcm93c2VyID0gaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKTtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgZG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpO1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSB3aW5kb3cgPSB0aGlzLmRvY3VtZW50LmRlZmF1bHRWaWV3O1xyXG4gICAgcHJpdmF0ZSBzY3JvbGxPcHRpb25zOiBTY3JvbGxPcHRpb25zO1xyXG4gICAgcHJpdmF0ZSBhbmNob3JFbDogSFRNTEVsZW1lbnQ7XHJcblxyXG4gICAgZW5zdXJlVmlzaWJsZShhbmNob3JFbGVtZW50OiBIVE1MRWxlbWVudCwgb3B0aW9uczogU2Nyb2xsT3B0aW9ucyk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgICAgIHRoaXMuc2Nyb2xsT3B0aW9ucyA9IG9wdGlvbnM7XHJcbiAgICAgICAgdGhpcy5hbmNob3JFbCA9IGFuY2hvckVsZW1lbnQ7XHJcblxyXG4gICAgICAgIGNvbnN0IGJlaGF2aW9yOiBTY3JvbGxCZWhhdmlvciA9IG9wdGlvbnMuc21vb3RoU2Nyb2xsICYmIHRoaXMuaXNCcm93c2VyID8gJ3Ntb290aCcgOiAnYXV0byc7XHJcblxyXG4gICAgICAgIGNvbnN0IHVzZXJTY3JvbGxDb250YWluZXIgPSB0aGlzLnNjcm9sbE9wdGlvbnMuc2Nyb2xsQ29udGFpbmVyLFxyXG4gICAgICAgICAgICBzY3JvbGxDb250YWluZXIgPSBTY3JvbGxVdGlscy5nZXRTY3JvbGxDb250YWluZXIoYW5jaG9yRWxlbWVudCwgdXNlclNjcm9sbENvbnRhaW5lcikgPz8gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xyXG5cclxuICAgICAgICBpZiAoT3ZlcmZsb3dVdGlscy5pc0hlaWdodE92ZXJmbG93aW5nKGFuY2hvckVsZW1lbnQsIHNjcm9sbENvbnRhaW5lcikpIHtcclxuICAgICAgICAgICAgYW5jaG9yRWxlbWVudC5zY3JvbGxJbnRvVmlldyh7XHJcbiAgICAgICAgICAgICAgICBibG9jazogJ3N0YXJ0JyxcclxuICAgICAgICAgICAgICAgIGlubGluZTogJ3N0YXJ0JyxcclxuICAgICAgICAgICAgICAgIGJlaGF2aW9yXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSBpZiAob3B0aW9ucy5jZW50ZXIgJiYgISgnc2FmYXJpJyBpbiB0aGlzLndpbmRvdykpIHtcclxuICAgICAgICAgICAgYW5jaG9yRWxlbWVudC5zY3JvbGxJbnRvVmlldyh7XHJcbiAgICAgICAgICAgICAgICBibG9jazogJ2NlbnRlcicsXHJcbiAgICAgICAgICAgICAgICBpbmxpbmU6ICdjZW50ZXInLFxyXG4gICAgICAgICAgICAgICAgYmVoYXZpb3JcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIGlmICghaXNJblZpZXdwb3J0KGFuY2hvckVsZW1lbnQsIEVsZW1lbnRTaWRlcy5Cb3R0b20pIHx8IGlzQ292ZXJlZChhbmNob3JFbGVtZW50LCBFbGVtZW50U2lkZXMuQm90dG9tKSkge1xyXG4gICAgICAgICAgICBhbmNob3JFbGVtZW50LnNjcm9sbEludG9WaWV3KHtcclxuICAgICAgICAgICAgICAgIGJsb2NrOiAnZW5kJyxcclxuICAgICAgICAgICAgICAgIGlubGluZTogJ25lYXJlc3QnLFxyXG4gICAgICAgICAgICAgICAgYmVoYXZpb3JcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIGlmICghaXNJblZpZXdwb3J0KGFuY2hvckVsZW1lbnQsIEVsZW1lbnRTaWRlcy5Ub3ApIHx8IGlzQ292ZXJlZChhbmNob3JFbGVtZW50LCBFbGVtZW50U2lkZXMuVG9wKSkge1xyXG4gICAgICAgICAgICBhbmNob3JFbGVtZW50LnNjcm9sbEludG9WaWV3KHtcclxuICAgICAgICAgICAgICAgIGJsb2NrOiAnc3RhcnQnLFxyXG4gICAgICAgICAgICAgICAgaW5saW5lOiAnbmVhcmVzdCcsXHJcbiAgICAgICAgICAgICAgICBiZWhhdmlvclxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gYmVoYXZpb3IgPT09ICdzbW9vdGgnID8gZmlyc3RWYWx1ZUZyb20odGhpcy53YWl0Rm9yU2Nyb2xsRmluaXNoJCkgOiBQcm9taXNlLnJlc29sdmUoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldCB3YWl0Rm9yU2Nyb2xsRmluaXNoJCgpIHtcclxuICAgICAgICBjb25zdCB1c2VyU2Nyb2xsQ29udGFpbmVyID0gdGhpcy5zY3JvbGxPcHRpb25zLnNjcm9sbENvbnRhaW5lcixcclxuICAgICAgICAgICAgLy8gRGVmYXVsdCBoZXJlIGlzIFwiZG9jdW1lbnRcIiBpbnN0ZWFkIG9mIFwiZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50XCIgb24gcHVycG9zZVxyXG4gICAgICAgICAgICBzY3JvbGxDb250YWluZXIgPSBTY3JvbGxVdGlscy5nZXRTY3JvbGxDb250YWluZXIodGhpcy5hbmNob3JFbCwgdXNlclNjcm9sbENvbnRhaW5lcikgPz8gZG9jdW1lbnQ7XHJcblxyXG4gICAgICAgIHJldHVybiBmcm9tRXZlbnQoc2Nyb2xsQ29udGFpbmVyLCAnc2Nyb2xsJylcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICB0aW1lb3V0KHtcclxuICAgICAgICAgICAgICAgICAgICBlYWNoOiA3NSxcclxuICAgICAgICAgICAgICAgICAgICB3aXRoOiAoKSA9PiBvZih1bmRlZmluZWQpXHJcbiAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgIGRlYm91bmNlVGltZSg1MCksXHJcbiAgICAgICAgICAgICAgICBtYXAoKCk6IHVuZGVmaW5lZCA9PiB1bmRlZmluZWQpXHJcbiAgICAgICAgICAgICk7XHJcbiAgICB9XHJcblxyXG59XHJcbiJdfQ==","import { isPlatformBrowser } from '@angular/common';\nimport { inject, Injectable, PLATFORM_ID, DOCUMENT } from '@angular/core';\nimport { debounceTime, fromEvent, merge, Subject } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nexport class TourResizeObserverService {\n constructor() {\n this.resizeElSubject = new Subject();\n this.platformId = inject(PLATFORM_ID);\n this.isResizeObserverSupported = isPlatformBrowser(this.platformId) && !!ResizeObserver;\n this.document = inject(DOCUMENT);\n this.window = this.document.defaultView;\n this.resize$ = merge(this.resizeElSubject, fromEvent(this.window, 'resize')).pipe(debounceTime(10));\n }\n observeElement(target) {\n if (this.isResizeObserverSupported && !this.resizeObserver) {\n this.resizeObserver = new ResizeObserver(() => this.resizeElSubject.next());\n }\n this.resizeObserver?.observe(target);\n }\n unobserveElement(target) {\n this.resizeObserver?.unobserve(target);\n }\n disconnect() {\n this.resizeObserver?.disconnect();\n this.resizeObserver = undefined;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: TourResizeObserverService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: TourResizeObserverService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: TourResizeObserverService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG91ci1yZXNpemUtb2JzZXJ2ZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMvbmd4LXVpLXRvdXItY29yZS9zcmMvbGliL3RvdXItcmVzaXplLW9ic2VydmVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDbEQsT0FBTyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQUMsWUFBWSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDOztBQUs3RCxNQUFNLE9BQU8seUJBQXlCO0lBSHRDO1FBS3FCLG9CQUFlLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUN0QyxlQUFVLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2pDLDhCQUF5QixHQUFHLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsY0FBYyxDQUFDO1FBRW5GLGFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDNUIsV0FBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDO1FBRXBDLFlBQU8sR0FBRyxLQUFLLENBQzNCLElBQUksQ0FBQyxlQUFlLEVBQ3BCLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUNuQyxDQUFDLElBQUksQ0FDRixZQUFZLENBQUMsRUFBRSxDQUFDLENBQ25CLENBQUM7S0FxQkw7SUFuQkcsY0FBYyxDQUFDLE1BQWU7UUFDMUIsSUFBSSxJQUFJLENBQUMseUJBQXlCLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDekQsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLGNBQWMsQ0FDcEMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsQ0FDcEMsQ0FBQztRQUNOLENBQUM7UUFFRCxJQUFJLENBQUMsY0FBYyxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsTUFBZTtRQUM1QixJQUFJLENBQUMsY0FBYyxFQUFFLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsVUFBVTtRQUNOLElBQUksQ0FBQyxjQUFjLEVBQUUsVUFBVSxFQUFFLENBQUM7UUFDbEMsSUFBSSxDQUFDLGNBQWMsR0FBRyxTQUFTLENBQUM7SUFDcEMsQ0FBQzs4R0FqQ1EseUJBQXlCO2tIQUF6Qix5QkFBeUIsY0FGdEIsTUFBTTs7MkZBRVQseUJBQXlCO2tCQUhyQyxVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7aXNQbGF0Zm9ybUJyb3dzZXJ9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7aW5qZWN0LCBJbmplY3RhYmxlLCBQTEFURk9STV9JRCwgRE9DVU1FTlR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge2RlYm91bmNlVGltZSwgZnJvbUV2ZW50LCBtZXJnZSwgU3ViamVjdH0gZnJvbSAncnhqcyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFRvdXJSZXNpemVPYnNlcnZlclNlcnZpY2Uge1xyXG5cclxuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVzaXplRWxTdWJqZWN0ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgcGxhdGZvcm1JZCA9IGluamVjdChQTEFURk9STV9JRCk7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGlzUmVzaXplT2JzZXJ2ZXJTdXBwb3J0ZWQgPSBpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpICYmICEhUmVzaXplT2JzZXJ2ZXI7XHJcbiAgICBwcml2YXRlIHJlc2l6ZU9ic2VydmVyPzogUmVzaXplT2JzZXJ2ZXI7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50ID0gaW5qZWN0KERPQ1VNRU5UKTtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgd2luZG93ID0gdGhpcy5kb2N1bWVudC5kZWZhdWx0VmlldztcclxuXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgcmVzaXplJCA9IG1lcmdlKFxyXG4gICAgICAgIHRoaXMucmVzaXplRWxTdWJqZWN0LFxyXG4gICAgICAgIGZyb21FdmVudCh0aGlzLndpbmRvdywgJ3Jlc2l6ZScpXHJcbiAgICApLnBpcGUoXHJcbiAgICAgICAgZGVib3VuY2VUaW1lKDEwKVxyXG4gICAgKTtcclxuXHJcbiAgICBvYnNlcnZlRWxlbWVudCh0YXJnZXQ6IEVsZW1lbnQpIHtcclxuICAgICAgICBpZiAodGhpcy5pc1Jlc2l6ZU9ic2VydmVyU3VwcG9ydGVkICYmICF0aGlzLnJlc2l6ZU9ic2VydmVyKSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoXHJcbiAgICAgICAgICAgICAgICAoKSA9PiB0aGlzLnJlc2l6ZUVsU3ViamVjdC5uZXh0KClcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXI/Lm9ic2VydmUodGFyZ2V0KTtcclxuICAgIH1cclxuXHJcbiAgICB1bm9ic2VydmVFbGVtZW50KHRhcmdldDogRWxlbWVudCkge1xyXG4gICAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXI/LnVub2JzZXJ2ZSh0YXJnZXQpO1xyXG4gICAgfVxyXG5cclxuICAgIGRpc2Nvbm5lY3QoKSB7XHJcbiAgICAgICAgdGhpcy5yZXNpemVPYnNlcnZlcj8uZGlzY29ubmVjdCgpO1xyXG4gICAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIgPSB1bmRlZmluZWQ7XHJcbiAgICB9XHJcblxyXG59XHJcbiJdfQ==","import { inject, Injectable, RendererFactory2, DOCUMENT } from '@angular/core';\nimport { ScrollingService } from './scrolling.service';\nimport { TourResizeObserverService } from './tour-resize-observer.service';\nimport { OverflowUtils, ScrollUtils } from './utils';\nimport * as i0 from \"@angular/core\";\nexport class TourBackdropService {\n constructor() {\n this.isSpotlightClosed = false;\n this.rendererFactory = inject(RendererFactory2);\n this.renderer = this.rendererFactory.createRenderer(null, null);\n this.resizeObserverService = inject(TourResizeObserverService);\n this.scrollingService = inject(ScrollingService);\n this.document = inject(DOCUMENT);\n }\n show(targetElement, step) {\n if (this.targetHtmlElement) {\n this.resizeObserverService.unobserveElement(this.targetHtmlElement);\n }\n this.targetHtmlElement = targetElement.nativeElement;\n this.step = step;\n this.resizeObserverService.observeElement(this.targetHtmlElement);\n if (!this.backdropElements) {\n this.backdropElements = this.createBackdropElements();\n this.subscribeToResizeEvents();\n }\n this.isSpotlightClosed = false;\n this.setBackdropPosition();\n }\n closeSpotlight() {\n if (!this.backdropElements) {\n return;\n }\n const targetRect = this.targetHtmlElement.getBoundingClientRect(), centerX = targetRect.left + (targetRect.width / 2), centerY = targetRect.top + (targetRect.height / 2), centerRect = {\n top: centerY,\n right: centerX,\n bottom: centerY,\n left: centerX,\n width: 0,\n height: 0\n };\n this.isSpotlightClosed = true;\n this.setBackdropPosition(centerRect);\n }\n setBackdropPosition(rectangle = null) {\n const docEl = this.document.documentElement, scrollContainer = ScrollUtils.getScrollContainer(this.targetHtmlElement, this.step.scrollContainer) ?? docEl, elementBoundingRect = rectangle ?? this.targetHtmlElement.getBoundingClientRect(), scrollContainerRect = scrollContainer.getBoundingClientRect(), visibleSection = OverflowUtils.getVisibleSection(elementBoundingRect, scrollContainerRect), scrollHeight = docEl.scrollHeight, scrollWidth = docEl.scrollWidth, window = this.document.defaultView, scrollX = window.scrollX, scrollY = window.scrollY, offset = this.isSpotlightClosed ? 0 : this.step.backdropConfig?.offset ?? 0, leftRect = {\n width: visibleSection.left + scrollX - offset,\n height: scrollHeight,\n top: 0,\n left: 0\n }, topRect = {\n width: visibleSection.width + offset * 2,\n height: visibleSection.top + scrollY - offset,\n top: 0,\n left: visibleSection.left + scrollX - offset\n }, bottomRect = {\n width: visibleSection.width + offset * 2,\n height: scrollHeight - (visibleSection.bottom + scrollY) - offset,\n top: visibleSection.bottom + scrollY + offset,\n left: visibleSection.left + scrollX - offset\n }, rightRect = {\n width: scrollWidth - (visibleSection.right + scrollX) - offset,\n height: scrollHeight,\n top: 0,\n left: visibleSection.right + scrollX + offset\n }, rectangles = [leftRect, topRect, bottomRect, rightRect];\n for (let i = 0; i < rectangles.length; i++) {\n const styles = this.createBackdropStyles(rectangles[i]);\n this.applyStyles(styles, this.backdropElements[i]);\n }\n }\n subscribeToResizeEvents() {\n this.resizeSubscription = this.resizeObserverService.resize$\n .subscribe(() => {\n this.setBackdropPosition();\n if (!this.step.disableScrollToAnchor) {\n this.scrollingService.ensureVisible(this.targetHtmlElement, {\n center: this.step.centerAnchorOnScroll,\n smoothScroll: false\n });\n }\n });\n }\n close() {\n if (this.backdropElements) {\n this.resizeObserverService.unobserveElement(this.targetHtmlElement);\n this.removeBackdropElement();\n this.resizeSubscription.unsubscribe();\n }\n }\n disconnectResizeObserver() {\n this.resizeObserverService.disconnect();\n }\n removeBackdropElement() {\n this.backdropElements.forEach(backdropElement => this.renderer.removeChild(this.parentContainer, backdropElement));\n this.backdropElements = undefined;\n }\n applyStyles(styles, element) {\n for (const name of Object.keys(styles)) {\n this.renderer.setStyle(element, name, styles[name]);\n }\n }\n createBackdropStyles(rectangle) {\n const config = this.step.backdropConfig, normalizedRect = {\n ...rectangle,\n width: Math.max(rectangle.width, 0),\n height: Math.max(rectangle.height, 0)\n };\n return {\n position: 'absolute',\n width: `${normalizedRect.width}px`,\n height: `${normalizedRect.height}px`,\n top: `${normalizedRect.top}px`,\n left: `${normalizedRect.left}px`,\n backgroundColor: config?.backgroundColor ?? 'rgba(0, 0, 0, 0.7)',\n zIndex: config?.zIndex ?? '101'\n };\n }\n createBackdropElement() {\n const backdropElement = this.renderer.createElement('div');\n this.renderer.addClass(backdropElement, 'ngx-ui-tour_backdrop');\n this.renderer.appendChild(this.parentContainer, backdropElement);\n return backdropElement;\n }\n createBackdropElements() {\n return Array\n .from({ length: 4 })\n .map(() => this.createBackdropElement());\n }\n get parentContainer() {\n const parent = this.step.backdropConfig?.parentContainer;\n if (parent instanceof HTMLElement) {\n return parent;\n }\n if (typeof parent === 'string') {\n const queryResult = this.document.documentElement.querySelector(parent);\n return queryResult ?? this.document.body;\n }\n return this.document.body;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: TourBackdropService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: TourBackdropService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: TourBackdropService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG91ci1iYWNrZHJvcC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGlicy9uZ3gtdWktdG91ci1jb3JlL3NyYy9saWIvdG91ci1iYWNrZHJvcC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUU3RSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUd6RSxPQUFPLEVBQUMsYUFBYSxFQUFFLFdBQVcsRUFBQyxNQUFNLFNBQVMsQ0FBQzs7QUF5Qm5ELE1BQU0sT0FBTyxtQkFBbUI7SUFIaEM7UUFTWSxzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFFakIsb0JBQWUsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUMzQyxhQUFRLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzNELDBCQUFxQixHQUFHLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBQzFELHFCQUFnQixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzVDLGFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7S0E2S2hEO0lBM0tVLElBQUksQ0FBQyxhQUF5QixFQUFFLElBQWlCO1FBQ3BELElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLHFCQUFxQixDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3hFLENBQUM7UUFFRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsYUFBYSxDQUFDLGFBQWEsQ0FBQztRQUNyRCxJQUFJLENB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Q3ZCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLGVBQWUsQ0FBQztRQUV6RCxJQUFJLE1BQU0sWUFBWSxXQUFXLEVBQUUsQ0FBQztZQUNoQyxPQUFPLE1BQU0sQ0FBQztRQUNsQixDQUFDO1FBQ0QsSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUM3QixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFnQixDQUFDO1lBRXZGLE9BQU8sV0FBVyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1FBQzdDLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO0lBQzlCLENBQUM7OEdBdkxRLG1CQUFtQjtrSEFBbkIsbUJBQW1CLGNBRmhCLE1BQU07OzJGQUVULG1CQUFtQjtrQkFIL0IsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7RWxlbWVudFJlZn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7aW5qZWN0LCBJbmplY3RhYmxlLCBSZW5kZXJlckZhY3RvcnkyLCBET0NVTUVOVH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB0eXBlIHtTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge1Njcm9sbGluZ1NlcnZpY2V9IGZyb20gJy4vc2Nyb2xsaW5nLnNlcnZpY2UnO1xyXG5pbXBvcnQge1RvdXJSZXNpemVPYnNlcnZlclNlcnZpY2V9IGZyb20gJy4vdG91ci1yZXNpemUtb2JzZXJ2ZXIuc2VydmljZSc7XHJcbmltcG9ydCB0eXBlIHtJU3RlcE9wdGlvbn0gZnJvbSAnLi90b3VyLnNlcnZpY2UnO1xyXG5cclxuaW1wb3J0IHtPdmVyZmxvd1V0aWxzLCBTY3JvbGxVdGlsc30gZnJvbSAnLi91dGlscyc7XHJcblxyXG5pbnRlcmZhY2UgUmVjdGFuZ2xlIHtcclxuICAgIHdpZHRoOiBudW1iZXI7XHJcbiAgICBoZWlnaHQ6IG51bWJlcjtcclxuICAgIHRvcDogbnVtYmVyO1xyXG4gICAgbGVmdDogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEJhY2tkcm9wQ29uZmlnIHtcclxuICAgIHpJbmRleD86IHN0cmluZztcclxuICAgIGJhY2tncm91bmRDb2xvcj86IHN0cmluZztcclxuICAgIC8qKlxyXG4gICAgICogUGFyZW50IGNvbnRhaW5lciBDU1Mgc2VsZWN0b3Igb3IgaHRtbCBlbGVtZW50IHJlZmVyZW5jZS4gU2V0IHRvIGZpeCBiYWNrZHJvcCBzdGFja2luZyBpc3N1ZXMuIERlZmF1bHRzIHRvIGJvZHkuXHJcbiAgICAgKi9cclxuICAgIHBhcmVudENvbnRhaW5lcj86IHN0cmluZyB8IEhUTUxFbGVtZW50O1xyXG4gICAgLyoqXHJcbiAgICAgKiBPZmZzZXQgaW4gcGl4ZWxzIHRvIGFkZCBzcGFjZSBiZXR3ZWVuIHRoZSBiYWNrZHJvcCBhbmQgdGhlIGFuY2hvciBlbGVtZW50LlxyXG4gICAgICovXHJcbiAgICBvZmZzZXQ/OiBudW1iZXI7XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgVG91ckJhY2tkcm9wU2VydmljZSB7XHJcblxyXG4gICAgcHJpdmF0ZSBiYWNrZHJvcEVsZW1lbnRzOiBIVE1MRWxlbWVudFtdO1xyXG4gICAgcHJpdmF0ZSB0YXJnZXRIdG1sRWxlbWVudDogSFRNTEVsZW1lbnQ7XHJcbiAgICBwcml2YXRlIHN0ZXA6IElTdGVwT3B0aW9uO1xyXG4gICAgcHJpdmF0ZSByZXNpemVTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuICAgIHByaXZhdGUgaXNTcG90bGlnaHRDbG9zZWQgPSBmYWxzZTtcclxuXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlbmRlcmVyRmFjdG9yeSA9IGluamVjdChSZW5kZXJlckZhY3RvcnkyKTtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVuZGVyZXIgPSB0aGlzLnJlbmRlcmVyRmFjdG9yeS5jcmVhdGVSZW5kZXJlcihudWxsLCBudWxsKTtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVzaXplT2JzZXJ2ZXJTZXJ2aWNlID0gaW5qZWN0KFRvdXJSZXNpemVPYnNlcnZlclNlcnZpY2UpO1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBzY3JvbGxpbmdTZXJ2aWNlID0gaW5qZWN0KFNjcm9sbGluZ1NlcnZpY2UpO1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudCA9IGluamVjdChET0NVTUVOVCk7XHJcblxyXG4gICAgcHVibGljIHNob3codGFyZ2V0RWxlbWVudDogRWxlbWVudFJlZiwgc3RlcDogSVN0ZXBPcHRpb24pIHtcclxuICAgICAgICBpZiAodGhpcy50YXJnZXRIdG1sRWxlbWVudCkge1xyXG4gICAgICAgICAgICB0aGlzLnJlc2l6ZU9ic2VydmVyU2VydmljZS51bm9ic2VydmVFbGVtZW50KHRoaXMudGFyZ2V0SHRtbEVsZW1lbnQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy50YXJnZXRIdG1sRWxlbWVudCA9IHRhcmdldEVsZW1lbnQubmF0aXZlRWxlbWVudDtcclxuICAgICAgICB0aGlzLnN0ZXAgPSBzdGVwO1xyXG5cclxuICAgICAgICB0aGlzLnJlc2l6ZU9ic2VydmVyU2VydmljZS5vYnNlcnZlRWxlbWVudCh0aGlzLnRhcmdldEh0bWxFbGVtZW50KTtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLmJhY2tkcm9wRWxlbWVudHMpIHtcclxuICAgICAgICAgICAgdGhpcy5iYWNrZHJvcEVsZW1lbnRzID0gdGhpcy5jcmVhdGVCYWNrZHJvcEVsZW1lbnRzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaWJlVG9SZXNpemVFdmVudHMoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuaXNTcG90bGlnaHRDbG9zZWQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNldEJhY2tkcm9wUG9zaXRpb24oKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgY2xvc2VTcG90bGlnaHQoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmJhY2tkcm9wRWxlbWVudHMpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgdGFyZ2V0UmVjdCA9IHRoaXMudGFyZ2V0SHRtbEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksXHJcbiAgICAgICAgICAgIGNlbnRlclggPSB0YXJnZXRSZWN0LmxlZnQgKyAodGFyZ2V0UmVjdC53aWR0aCAvIDIpLFxyXG4gICAgICAgICAgICBjZW50ZXJZID0gdGFyZ2V0UmVjdC50b3AgKyAodGFyZ2V0UmVjdC5oZWlnaHQgLyAyKSxcclxuICAgICAgICAgICAgY2VudGVyUmVjdCA9IHtcclxuICAgICAgICAgICAgICAgIHRvcDogY2VudGVyWSxcclxuICAgICAgICAgICAgICAgIHJpZ2h0OiBjZW50ZXJYLFxyXG4gICAgICAgICAgICAgICAgYm90dG9tOiBjZW50ZXJZLFxyXG4gICAgICAgICAgICAgICAgbGVmdDogY2VudGVyWCxcclxuICAgICAgICAgICAgICAgIHdpZHRoOiAwLFxyXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAwXHJcbiAgICAgICAgICAgIH0gYXMgRE9NUmVjdDtcclxuXHJcbiAgICAgICAgdGhpcy5pc1Nwb3RsaWdodENsb3NlZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zZXRCYWNrZHJvcFBvc2l0aW9uKGNlbnRlclJlY3QpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc2V0QmFja2Ryb3BQb3NpdGlvbihyZWN0YW5nbGU6IERPTVJlY3QgPSBudWxsKSB7XHJcbiAgICAgICAgY29uc3QgZG9jRWwgPSB0aGlzLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxcclxuICAgICAgICAgICAgc2Nyb2xsQ29udGFpbmVyID0gU2Nyb2xsVXRpbHMuZ2V0U2Nyb2xsQ29udGFpbmVyKHRoaXMudGFyZ2V0SHRtbEVsZW1lbnQsIHRoaXMuc3RlcC5zY3JvbGxDb250YWluZXIpID8/IGRvY0VsLFxyXG4gICAgICAgICAgICBlbGVtZW50Qm91bmRpbmdSZWN0ID0gcmVjdGFuZ2xlID8/IHRoaXMudGFyZ2V0SHRtbEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksXHJcbiAgICAgICAgICAgIHNjcm9sbENvbnRhaW5lclJlY3QgPSBzY3JvbGxDb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksXHJcbiAgICAgICAgICAgIHZpc2libGVTZWN0aW9uID0gT3ZlcmZsb3dVdGlscy5nZXRWaXNpYmxlU2VjdGlvbihlbGVtZW50Qm91bmRpbmdSZWN0LCBzY3JvbGxDb250YWluZXJSZWN0KSxcclxuICAgICAgICAgICAgc2Nyb2xsSGVpZ2h0ID0gZG9jRWwuc2Nyb2xsSGVpZ2h0LFxyXG4gICAgICAgICAgICBzY3JvbGxXaWR0aCA9IGRvY0VsLnNjcm9sbFdpZHRoLFxyXG4gICAgICAgICAgICB3aW5kb3cgPSB0aGlzLmRvY3VtZW50LmRlZmF1bHRWaWV3LFxyXG4gICAgICAgICAgICBzY3JvbGxYID0gd2luZG93LnNjcm9sbFgsXHJcbiAgICAgICAgICAgIHNjcm9sbFkgPSB3aW5kb3cuc2Nyb2xsWSxcclxuICAgICAgICAgICAgb2Zmc2V0ID0gdGhpcy5pc1Nwb3RsaWdodENsb3NlZCA/IDAgOiB0aGlzLnN0ZXAuYmFja2Ryb3BDb25maWc/Lm9mZnNldCA/PyAwLFxyXG4gICAgICAgICAgICBsZWZ0UmVjdDogUmVjdGFuZ2xlID0ge1xyXG4gICAgICAgICAgICAgICAgd2lkdGg6IHZpc2libGVTZWN0aW9uLmxlZnQgKyBzY3JvbGxYIC0gb2Zmc2V0LFxyXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiBzY3JvbGxIZWlnaHQsXHJcbiAgICAgICAgICAgICAgICB0b3A6IDAsXHJcbiAgICAgICAgICAgICAgICBsZWZ0OiAwXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHRvcFJlY3Q6IFJlY3RhbmdsZSA9IHtcclxuICAgICAgICAgICAgICAgIHdpZHRoOiB2aXNpYmxlU2VjdGlvbi53aWR0aCArIG9mZnNldCAqIDIsXHJcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IHZpc2libGVTZWN0aW9uLnRvcCArIHNjcm9sbFkgLSBvZmZzZXQsXHJcbiAgICAgICAgICAgICAgICB0b3A6IDAsXHJcbiAgICAgICAgICAgICAgICBsZWZ0OiB2aXNpYmxlU2VjdGlvbi5sZWZ0ICsgc2Nyb2xsWCAtIG9mZnNldFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBib3R0b21SZWN0OiBSZWN0YW5nbGUgPSB7XHJcbiAgICAgICAgICAgICAgICB3aWR0aDogdmlzaWJsZVNlY3Rpb24ud2lkdGggKyBvZmZzZXQgKiAyLFxyXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiBzY3JvbGxIZWlnaHQgLSAodmlzaWJsZVNlY3Rpb24uYm90dG9tICsgc2Nyb2xsWSkgLSBvZmZzZXQsXHJcbiAgICAgICAgICAgICAgICB0b3A6IHZpc2libGVTZWN0aW9uLmJvdHRvbSArIHNjcm9sbFkgKyBvZmZzZXQsXHJcbiAgICAgICAgICAgICAgICBsZWZ0OiB2aXNpYmxlU2VjdGlvbi5sZWZ0ICsgc2Nyb2xsWCAtIG9mZnNldFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICByaWdodFJlY3Q6IFJlY3RhbmdsZSA9IHtcclxuICAgICAgICAgICAgICAgIHdpZHRoOiBzY3JvbGxXaWR0aCAtICh2aXNpYmxlU2VjdGlvbi5yaWdodCArIHNjcm9sbFgpIC0gb2Zmc2V0LFxyXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiBzY3JvbGxIZWlnaHQsXHJcbiAgICAgICAgICAgICAgICB0b3A6IDAsXHJcbiAgICAgICAgICAgICAgICBsZWZ0OiB2aXNpYmxlU2VjdGlvbi5yaWdodCArIHNjcm9sbFggKyBvZmZzZXRcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgcmVjdGFuZ2xlczogUmVjdGFuZ2xlW10gPSBbbGVmdFJlY3QsIHRvcFJlY3QsIGJvdHRvbVJlY3QsIHJpZ2h0UmVjdF07XHJcblxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmVjdGFuZ2xlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBjb25zdCBzdHlsZXMgPSB0aGlzLmNyZWF0ZUJhY2tkcm9wU3R5bGVzKHJlY3RhbmdsZXNbaV0pO1xyXG4gICAgICAgICAgICB0aGlzLmFwcGx5U3R5bGVzKHN0eWxlcywgdGhpcy5iYWNrZHJvcEVsZW1lbnRzW2ldKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzdWJzY3JpYmVUb1Jlc2l6ZUV2ZW50cygpIHtcclxuICAgICAgICB0aGlzLnJlc2l6ZVN1YnNjcmlwdGlvbiA9IHRoaXMucmVzaXplT2JzZXJ2ZXJTZXJ2aWNlLnJlc2l6ZSRcclxuICAgICAgICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAgICAgICAgICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldEJhY2tkcm9wUG9zaXRpb24oKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuc3RlcC5kaXNhYmxlU2Nyb2xsVG9BbmNob3IpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxpbmdTZXJ2aWNlLmVuc3VyZVZpc2libGUodGhpcy50YXJnZXRIdG1sRWxlbWVudCwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VudGVyOiB0aGlzLnN0ZXAuY2VudGVyQW5jaG9yT25TY3JvbGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbW9vdGhTY3JvbGw6IGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgY2xvc2UoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuYmFja2Ryb3BFbGVtZW50cykge1xyXG4gICAgICAgICAgICB0aGlzLnJlc2l6ZU9ic2VydmVyU2VydmljZS51bm9ic2VydmVFbGVtZW50KHRoaXMudGFyZ2V0SHRtbEVsZW1lbnQpO1xyXG4gICAgICAgICAgICB0aGlzLnJlbW92ZUJhY2tkcm9wRWxlbWVudCgpO1xyXG4gICAgICAgICAgICB0aGlzLnJlc2l6ZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZGlzY29ubmVjdFJlc2l6ZU9ic2VydmVyKCkge1xyXG4gICAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXJTZXJ2aWNlLmRpc2Nvbm5lY3QoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHJlbW92ZUJhY2tkcm9wRWxlbWVudCgpIHtcclxuICAgICAgICB0aGlzLmJhY2tkcm9wRWxlbWVudHMuZm9yRWFjaChcclxuICAgICAgICAgICAgYmFja2Ryb3BFbGVtZW50ID0+IHRoaXMucmVuZGVyZXIucmVtb3ZlQ2hpbGQodGhpcy5wYXJlbnRDb250YWluZXIsIGJhY2tkcm9wRWxlbWVudClcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuYmFja2Ryb3BFbGVtZW50cyA9IHVuZGVmaW5lZDtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGFwcGx5U3R5bGVzKHN0eWxlczogUGFydGlhbDxDU1NTdHlsZURlY2xhcmF0aW9uPiwgZWxlbWVudDogSFRNTEVsZW1lbnQpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IG5hbWUgb2YgT2JqZWN0LmtleXMoc3R5bGVzKSkge1xyXG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGVsZW1lbnQsIG5hbWUsIHN0eWxlc1tuYW1lIGFzIGtleW9mIENTU1N0eWxlRGVjbGFyYXRpb25dKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBjcmVhdGVCYWNrZHJvcFN0eWxlcyhyZWN0YW5nbGU6IFJlY3RhbmdsZSkge1xyXG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuc3RlcC5iYWNrZHJvcENvbmZpZyxcclxuICAgICAgICAgICAgbm9ybWFsaXplZFJlY3QgPSB7XHJcbiAgICAgICAgICAgICAgICAuLi5yZWN0YW5nbGUsXHJcbiAgICAgICAgICAgICAgICB3aWR0aDogTWF0aC5tYXgocmVjdGFuZ2xlLndpZHRoLCAwKSxcclxuICAgICAgICAgICAgICAgIGhlaWdodDogTWF0aC5tYXgocmVjdGFuZ2xlLmhlaWdodCwgMClcclxuICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXHJcbiAgICAgICAgICAgIHdpZHRoOiBgJHtub3JtYWxpemVkUmVjdC53aWR0aH1weGAsXHJcbiAgICAgICAgICAgIGhlaWdodDogYCR7bm9ybWFsaXplZFJlY3QuaGVpZ2h0fXB4YCxcclxuICAgICAgICAgICAgdG9wOiBgJHtub3JtYWxpemVkUmVjdC50b3B9cHhgLFxyXG4gICAgICAgICAgICBsZWZ0OiBgJHtub3JtYWxpemVkUmVjdC5sZWZ0fXB4YCxcclxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBjb25maWc/LmJhY2tncm91bmRDb2xvciA/PyAncmdiYSgwLCAwLCAwLCAwLjcpJyxcclxuICAgICAgICAgICAgekluZGV4OiBjb25maWc/LnpJbmRleCA/PyAnMTAxJ1xyXG4gICAgICAgIH0gYXMgUGFydGlhbDxDU1NTdHlsZURlY2xhcmF0aW9uPjtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGNyZWF0ZUJhY2tkcm9wRWxlbWVudCgpIHtcclxuICAgICAgICBjb25zdCBiYWNrZHJvcEVsZW1lbnQgPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3MoYmFja2Ryb3BFbGVtZW50LCAnbmd4LXVpLXRvdXJfYmFja2Ryb3AnKTtcclxuICAgICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMucGFyZW50Q29udGFpbmVyLCBiYWNrZHJvcEVsZW1lbnQpO1xyXG4gICAgICAgIHJldHVybiBiYWNrZHJvcEVsZW1lbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBjcmVhdGVCYWNrZHJvcEVsZW1lbnRzKCkge1xyXG4gICAgICAgIHJldHVybiBBcnJheVxyXG4gICAgICAgICAgICAuZnJvbSh7bGVuZ3RoOiA0fSlcclxuICAgICAgICAgICAgLm1hcCgoKSA9PiB0aGlzLmNyZWF0ZUJhY2tkcm9wRWxlbWVudCgpKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldCBwYXJlbnRDb250YWluZXIoKTogSFRNTEVsZW1lbnQge1xyXG4gICAgICAgIGNvbnN0IHBhcmVudCA9IHRoaXMuc3RlcC5iYWNrZHJvcENvbmZpZz8ucGFyZW50Q29udGFpbmVyO1xyXG5cclxuICAgICAgICBpZiAocGFyZW50IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHBhcmVudDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHR5cGVvZiBwYXJlbnQgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHF1ZXJ5UmVzdWx0ID0gdGhpcy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQucXVlcnlTZWxlY3RvcihwYXJlbnQpIGFzIEhUTUxFbGVtZW50O1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuIHF1ZXJ5UmVzdWx0ID8/IHRoaXMuZG9jdW1lbnQuYm9keTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmRvY3VtZW50LmJvZHk7XHJcbiAgICB9XHJcblxyXG59XHJcbiJdfQ==","import { inject, Injectable, RendererFactory2 } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class AnchorClickService {\n constructor() {\n this.rendererFactory = inject(RendererFactory2);\n this.renderer = this.rendererFactory.createRenderer(null, null);\n }\n removeListener() {\n if (this.unListenToAnchorClickFn) {\n this.unListenToAnchorClickFn();\n this.unListenToAnchorClickFn = undefined;\n }\n }\n addListener(anchorEl, callback) {\n this.unListenToAnchorClickFn = this.renderer.listen(anchorEl, 'click', callback);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AnchorClickService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AnchorClickService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AnchorClickService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5jaG9yLWNsaWNrLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL25neC11aS10b3VyLWNvcmUvc3JjL2xpYi9hbmNob3ItY2xpY2suc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsRUFBQyxNQUFNLGVBQWUsQ0FBQzs7QUFLbkUsTUFBTSxPQUFPLGtCQUFrQjtJQUgvQjtRQUtxQixvQkFBZSxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzNDLGFBQVEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7S0FjL0U7SUFWVSxjQUFjO1FBQ2pCLElBQUksSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7WUFDL0IsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7WUFDL0IsSUFBSSxDQUFDLHVCQUF1QixHQUFHLFNBQVMsQ0FBQztRQUM3QyxDQUFDO0lBQ0wsQ0FBQztJQUVNLFdBQVcsQ0FBQyxRQUFxQixFQUFFLFFBQW9CO1FBQzFELElBQUksQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3JGLENBQUM7OEdBaEJRLGtCQUFrQjtrSEFBbEIsa0JBQWtCLGNBRmYsTUFBTTs7MkZBRVQsa0JBQWtCO2tCQUg5QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7aW5qZWN0LCBJbmplY3RhYmxlLCBSZW5kZXJlckZhY3RvcnkyfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQW5jaG9yQ2xpY2tTZXJ2aWNlIHtcclxuXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlbmRlcmVyRmFjdG9yeSA9IGluamVjdChSZW5kZXJlckZhY3RvcnkyKTtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVuZGVyZXIgPSB0aGlzLnJlbmRlcmVyRmFjdG9yeS5jcmVhdGVSZW5kZXJlcihudWxsLCBudWxsKTtcclxuXHJcbiAgICBwcml2YXRlIHVuTGlzdGVuVG9BbmNob3JDbGlja0ZuOiAoKSA9PiB2b2lkO1xyXG5cclxuICAgIHB1YmxpYyByZW1vdmVMaXN0ZW5lcigpIHtcclxuICAgICAgICBpZiAodGhpcy51bkxpc3RlblRvQW5jaG9yQ2xpY2tGbikge1xyXG4gICAgICAgICAgICB0aGlzLnVuTGlzdGVuVG9BbmNob3JDbGlja0ZuKCk7XHJcbiAgICAgICAgICAgIHRoaXMudW5MaXN0ZW5Ub0FuY2hvckNsaWNrRm4gPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhZGRMaXN0ZW5lcihhbmNob3JFbDogSFRNTEVsZW1lbnQsIGNhbGxiYWNrOiAoKSA9PiB2b2lkKSB7XHJcbiAgICAgICAgdGhpcy51bkxpc3RlblRvQW5jaG9yQ2xpY2tGbiA9IHRoaXMucmVuZGVyZXIubGlzdGVuKGFuY2hvckVsLCAnY2xpY2snLCBjYWxsYmFjayk7XHJcbiAgICB9XHJcbn0iXX0=","import { inject, Injectable, PLATFORM_ID, RendererFactory2 } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { ScrollUtils } from './utils';\nimport * as i0 from \"@angular/core\";\nexport class ScrollBlockingService {\n constructor() {\n this.isEnabled = false;\n this.platformId = inject(PLATFORM_ID);\n this.isBrowser = isPlatformBrowser(this.platformId);\n this.rendererFactory = inject(RendererFactory2);\n this.renderer = this.rendererFactory.createRenderer(null, null);\n }\n enable(scrollContainer) {\n if (!this.isBrowser || this.isEnabled) {\n return;\n }\n this.userScrollContainer = scrollContainer;\n this.toggleOverflow();\n this.isEnabled = true;\n }\n disable() {\n if (!this.isEnabled) {\n return;\n }\n this.toggleOverflow();\n this.isEnabled = false;\n }\n toggleOverflow() {\n // Don't try to automatically detect scroll container here since that breaks smooth scrolling\n const scrollContainer = ScrollUtils.getScrollContainer(null, this.userScrollContainer) ?? document.documentElement;\n if (this.isEnabled) {\n this.renderer.removeStyle(scrollContainer, 'overflow');\n }\n else {\n this.renderer.setStyle(scrollContainer, 'overflow', 'hidden');\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: ScrollBlockingService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: ScrollBlockingService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: ScrollBlockingService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsLWJsb2NraW5nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL25neC11aS10b3VyLWNvcmUvc3JjL2xpYi9zY3JvbGwtYmxvY2tpbmcuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDbEQsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLFNBQVMsQ0FBQzs7QUFLcEMsTUFBTSxPQUFPLHFCQUFxQjtJQUhsQztRQUtZLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFHVCxlQUFVLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2pDLGNBQVMsR0FBRyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDL0Msb0JBQWUsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUMzQyxhQUFRLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0tBZ0MvRTtJQTlCRyxNQUFNLENBQUMsZUFBcUM7UUFDeEMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3BDLE9BQU87UUFDWCxDQUFDO1FBRUQsSUFBSSxDQUFDLG1CQUFtQixHQUFHLGVBQWUsQ0FBQztRQUMzQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7SUFDMUIsQ0FBQztJQUVELE9BQU87UUFDSCxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2xCLE9BQU87UUFDWCxDQUFDO1FBRUQsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQzNCLENBQUM7SUFFTyxjQUFjO1FBQ2xCLDZGQUE2RjtRQUM3RixNQUFNLGVBQWUsR0FBRyxXQUFXLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxlQUFlLENBQUM7UUFFbkgsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsZUFBZSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzNELENBQUM7YUFBTSxDQUFDO1lBQ0osSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsZUFBZSxFQUFFLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUNsRSxDQUFDO0lBQ0wsQ0FBQzs4R0F0Q1EscUJBQXFCO2tIQUFyQixxQkFBcUIsY0FGbEIsTUFBTTs7MkZBRVQscUJBQXFCO2tCQUhqQyxVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7aW5qZWN0LCBJbmplY3RhYmxlLCBQTEFURk9STV9JRCwgUmVuZGVyZXJGYWN0b3J5Mn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7aXNQbGF0Zm9ybUJyb3dzZXJ9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7U2Nyb2xsVXRpbHN9IGZyb20gJy4vdXRpbHMnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTY3JvbGxCbG9ja2luZ1NlcnZpY2Uge1xyXG5cclxuICAgIHByaXZhdGUgaXNFbmFibGVkID0gZmFsc2U7XHJcbiAgICBwcml2YXRlIHVzZXJTY3JvbGxDb250YWluZXI6IHN0cmluZyB8IEhUTUxFbGVtZW50O1xyXG5cclxuICAgIHByaXZhdGUgcmVhZG9ubHkgcGxhdGZvcm1JZCA9IGluamVjdChQTEFURk9STV9JRCk7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGlzQnJvd3NlciA9IGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCk7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlbmRlcmVyRmFjdG9yeSA9IGluamVjdChSZW5kZXJlckZhY3RvcnkyKTtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVuZGVyZXIgPSB0aGlzLnJlbmRlcmVyRmFjdG9yeS5jcmVhdGVSZW5kZXJlcihudWxsLCBudWxsKTtcclxuXHJcbiAgICBlbmFibGUoc2Nyb2xsQ29udGFpbmVyOiBzdHJpbmcgfCBIVE1MRWxlbWVudCkge1xyXG4gICAgICAgIGlmICghdGhpcy5pc0Jyb3dzZXIgfHwgdGhpcy5pc0VuYWJsZWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy51c2VyU2Nyb2xsQ29udGFpbmVyID0gc2Nyb2xsQ29udGFpbmVyO1xyXG4gICAgICAgIHRoaXMudG9nZ2xlT3ZlcmZsb3coKTtcclxuICAgICAgICB0aGlzLmlzRW5hYmxlZCA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgZGlzYWJsZSgpIHtcclxuICAgICAgICBpZiAoIXRoaXMuaXNFbmFibGVkKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMudG9nZ2xlT3ZlcmZsb3coKTtcclxuICAgICAgICB0aGlzLmlzRW5hYmxlZCA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgdG9nZ2xlT3ZlcmZsb3coKSB7XHJcbiAgICAgICAgLy8gRG9uJ3QgdHJ5IHRvIGF1dG9tYXRpY2FsbHkgZGV0ZWN0IHNjcm9sbCBjb250YWluZXIgaGVyZSBzaW5jZSB0aGF0IGJyZWFrcyBzbW9vdGggc2Nyb2xsaW5nXHJcbiAgICAgICAgY29uc3Qgc2Nyb2xsQ29udGFpbmVyID0gU2Nyb2xsVXRpbHMuZ2V0U2Nyb2xsQ29udGFpbmVyKG51bGwsIHRoaXMudXNlclNjcm9sbENvbnRhaW5lcikgPz8gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xyXG5cclxuICAgICAgICBpZiAodGhpcy5pc0VuYWJsZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVTdHlsZShzY3JvbGxDb250YWluZXIsICdvdmVyZmxvdycpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoc2Nyb2xsQ29udGFpbmVyLCAnb3ZlcmZsb3cnLCAnaGlkZGVuJyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxufVxyXG4iXX0=","import { inject, Injectable } from '@angular/core';\nimport { NavigationStart, Router } from '@angular/router';\nimport { delay, filter, first, map, merge as mergeStatic, of, Subject, takeUntil, timeout } from 'rxjs';\nimport { ScrollingService } from './scrolling.service';\nimport { TourBackdropService } from './tour-backdrop.service';\nimport { AnchorClickService } from './anchor-click.service';\nimport { ScrollBlockingService } from './scroll-blocking.service';\nimport { deepMerge } from './utils';\nimport * as i0 from \"@angular/core\";\nexport var TourState;\n(function (TourState) {\n TourState[TourState[\"OFF\"] = 0] = \"OFF\";\n TourState[TourState[\"ON\"] = 1] = \"ON\";\n TourState[TourState[\"PAUSED\"] = 2] = \"PAUSED\";\n})(TourState || (TourState = {}));\nexport var Direction;\n(function (Direction) {\n Direction[Direction[\"Forwards\"] = 0] = \"Forwards\";\n Direction[Direction[\"Backwards\"] = 1] = \"Backwards\";\n})(Direction || (Direction = {}));\nconst DEFAULT_STEP_OPTIONS = {\n disableScrollToAnchor: false,\n prevBtnTitle: 'Prev',\n nextBtnTitle: 'Next',\n endBtnTitle: 'End',\n enableBackdrop: false,\n isAsync: false,\n isOptional: false,\n delayAfterNavigation: 100,\n delayBeforeStepShow: 0,\n nextOnAnchorClick: false,\n duplicateAnchorHandling: 'error',\n centerAnchorOnScroll: true,\n disablePageScrolling: true,\n smoothScroll: true,\n allowUserInitiatedNavigation: false,\n stepDimensions: {\n minWidth: '250px',\n maxWidth: '280px',\n width: 'auto'\n },\n showProgress: true\n};\n// noinspection JSUnusedGlobalSymbols\nexport class TourService {\n constructor() {\n this.stepShow$ = new Subject();\n this.stepHide$ = new Subject();\n this.initialize$ = new Subject();\n this.start$ = new Subject();\n this.end$ = new Subject();\n this.pause$ = new Subject();\n this.resume$ = new Subject();\n this.anchorRegister$ = new Subject();\n this.anchorUnregister$ = new Subject();\n this.events$ = mergeStatic(this.stepShow$.pipe(map(value => ({ name: 'stepShow', value }))), this.stepHide$.pipe(map(value => ({ name: 'stepHide', value }))), this.initialize$.pipe(map(value => ({ name: 'initialize', value }))), this.start$.pipe(map(value => ({ name: 'start', value }))), this.end$.pipe(map(value => ({ name: 'end', value }))), this.pause$.pipe(map(value => ({ name: 'pause', value }))), this.resume$.pipe(map(value => ({ name: 'resume', value }))), this.anchorRegister$.pipe(map(value => ({\n name: 'anchorRegister',\n value\n }))), this.anchorUnregister$.pipe(map(value => ({\n name: 'anchorUnregister',\n value\n }))));\n this.steps = [];\n this.anchors = {};\n this.status = TourState.OFF;\n this.isHotKeysEnabled = true;\n this.direction = Direction.Forwards;\n this.waitingForScroll = false;\n this.navigationStarted = false;\n this.router = inject(Router);\n this.backdrop = inject(TourBackdropService);\n this.anchorClickService = inject(AnchorClickService);\n this.scrollBlockingService = inject(ScrollBlockingService);\n this.scrollingService = inject(ScrollingService);\n }\n initialize(steps, stepDefaults) {\n if (this.status === TourState.ON) {\n console.warn('Can not re-initialize the UI tour while it\\'s still active');\n return;\n }\n if (steps && steps.length > 0) {\n this.status = TourState.OFF;\n this.steps = steps.map(step => deepMerge(DEFAULT_STEP_OPTIONS, this.userDefaults, stepDefaults, step));\n this.validateSteps();\n this.initialize$.next(this.steps);\n this.subscribeToNavigationStartEvent();\n }\n }\n setDefaults(defaultOptions) {\n this.userDefaults = defaultOptions;\n }\n getDefaults() {\n return this.userDefaults;\n }\n validateSteps() {\n for (const step of this.steps) {\n if (step.isAsync && step.isOptional && !step.asyncStepTimeout) {\n throw new Error(`Tour step with anchor id \"${step.anchorId}\" can only be both \"async\" and ` +\n `\"optional\" when \"asyncStepTimeout\" is specified!`);\n }\n }\n }\n subscribeToNavigationStartEvent() {\n this.router.events\n .pipe(filter((event) => event instanceof NavigationStart), takeUntil(this.end$))\n .subscribe((event) => {\n if (!this.currentStep) {\n return;\n }\n const browserBackBtnPressed = event.navigationTrigger === 'popstate', userNavigationAllowed = this.currentStep.allowUserInitiatedNavigation;\n if (!this.navigationStarted && (browserBackBtnPressed || !userNavigationAllowed)) {\n this.end();\n }\n });\n }\n disableHotkeys() {\n this.isHotKeysEnabled = false;\n }\n enableHotkeys() {\n this.isHotKeysEnabled = true;\n }\n start() {\n if (this.status === TourState.ON) {\n console.warn('tourService.start() called while the tour is already running.');\n return;\n }\n this.startAt(0);\n }\n startAt(stepId) {\n this.status = TourState.ON;\n this.goToStep(this.loadStep(stepId));\n this.start$.next();\n }\n end() {\n if (this.waitingForScroll) {\n return;\n }\n if (this.status === TourState.OFF) {\n return;\n }\n this.status = TourState.OFF;\n this.disableTour();\n this.currentStep = undefined;\n this.direction = Direction.Forwards;\n this.end$.next();\n }\n pause() {\n this.status = TourState.PAUSED;\n this.disableTour();\n this.pause$.next();\n }\n disableTour() {\n this.hideStep(this.currentStep);\n this.anchorClickService.removeListener();\n this.backdrop.close();\n this.backdrop.disconnectResizeObserver();\n this.scrollBlockingService.disable();\n }\n resume() {\n this.status = TourState.ON;\n this.showStep(this.currentStep);\n this.resume$.next();\n }\n toggle(pause) {\n if (pause) {\n if (this.currentStep) {\n this.pause();\n }\n else {\n this.resume();\n }\n }\n else {\n if (this.currentStep) {\n this.end();\n }\n else {\n this.start();\n }\n }\n }\n next() {\n if (this.waitingForScroll) {\n return;\n }\n this.direction = Direction.Forwards;\n if (this.hasNext(this.currentStep)) {\n this.goToStep(this.loadStep(this.currentStep.nextStep ?? this.getStepIndex(this.currentStep) + 1));\n }\n }\n getStepIndex(step) {\n const index = this.steps.indexOf(step);\n return index < 0 ? 0 : index;\n }\n hasNext(step) {\n if (!step) {\n console.warn('Can\\'t get next step. No currentStep.');\n return false;\n }\n return (step.nextStep !== undefined ||\n (this.getStepIndex(step) < this.steps.length - 1 && !this.isNextOptionalAnchorMissing(step)));\n }\n isNextOptionalAnchorMissing(step) {\n const stepIndex = this.getStepIndex(step);\n for (let i = stepIndex + 1; i < this.steps.length; i++) {\n const nextStep = this.steps[i];\n if (!nextStep.isOptional || this.anchors[nextStep.anchorId])\n return false;\n }\n return true;\n }\n prev() {\n if (this.waitingForScroll) {\n return;\n }\n this.direction = Direction.Backwards;\n if (this.hasPrev(this.currentStep)) {\n this.goToStep(this.loadStep(this.currentStep.prevStep ?? this.getStepIndex(this.currentStep) - 1));\n }\n }\n hasPrev(step) {\n if (!step) {\n console.warn('Can\\'t get previous step. No currentStep.');\n return false;\n }\n return step.prevStep !== undefined ||\n (this.getStepIndex(step) > 0 && !this.isPrevOptionalAnchorMising(step));\n }\n isPrevOptionalAnchorMising(step) {\n const stepIndex = this.getStepIndex(step);\n for (let i = stepIndex - 1; i > -1; i--) {\n const prevStep = this.steps[i];\n if (!prevStep.isOptional || this.anchors[prevStep.anchorId])\n return false;\n }\n return true;\n }\n goto(stepId) {\n this.goToStep(this.loadStep(stepId));\n }\n register(anchorId, anchor) {\n if (!anchorId) {\n return;\n }\n if (this.anchors[anchorId]) {\n const step = this.findStepByAnchorId(anchorId), duplicateAnchorHandling = step?.duplicateAnchorHandling ??\n this.userDefaults?.duplicateAnchorHandling ?? 'error';\n switch (duplicateAnchorHandling) {\n case 'error':\n throw new Error(`Tour anchor with id \"${anchorId}\" already registered!`);\n case 'registerFirst':\n return;\n }\n }\n this.anchors[anchorId] = anchor;\n this.anchorRegister$.next(anchorId);\n }\n findStepByAnchorId(anchorId) {\n return this.steps.find(step => step.anchorId === anchorId);\n }\n unregister(anchorId) {\n if (!anchorId) {\n return;\n }\n delete this.anchors[anchorId];\n this.anchorUnregister$.next(anchorId);\n }\n getStatus() {\n return this.status;\n }\n isHotkeysEnabled() {\n return this.isHotKeysEnabled;\n }\n goToStep(step) {\n if (!step) {\n console.warn('Can\\'t go to non-existent step');\n this.end();\n return;\n }\n if (this.currentStep) {\n this.backdrop.closeSpotlight();\n this.hideStep(this.currentStep);\n }\n this.anchorClickService.removeListener();\n if (step.route !== undefined && step.route !== null) {\n this.navigateToRouteAndSetStep(step);\n }\n else {\n this.setCurrentStepAsync(step);\n }\n }\n listenToOnAnchorClick(step) {\n if (step.nextOnAnchorClick) {\n const anchorEl = this.anchors[step.anchorId].element.nativeElement;\n this.anchorClickService.addListener(anchorEl, () => this.next());\n }\n }\n async navigateToRouteAndSetStep(step) {\n const url = typeof step.route === 'string' ? step.route : this.router.createUrlTree(step.route), matchOptions = {\n paths: 'exact',\n matrixParams: 'exact',\n queryParams: 'subset',\n fragment: 'exact'\n };\n const isActive = this.router.isActive(url, matchOptions);\n if (isActive) {\n this.setCurrentStepAsync(step);\n return;\n }\n this.navigationStarted = true;\n const navigated = await this.router.navigateByUrl(url);\n this.navigationStarted = false;\n if (!navigated) {\n console.warn('Navigation to route failed: ', step.route);\n this.end();\n }\n else {\n this.setCurrentStepAsync(step, step.delayAfterNavigation);\n }\n }\n loadStep(stepId) {\n if (typeof stepId === 'number') {\n return this.steps[stepId];\n }\n else {\n return this.steps.find(step => step.stepId === stepId);\n }\n }\n setCurrentStep(step) {\n this.currentStep = step;\n this.showStep(this.currentStep);\n }\n setCurrentStepAsync(step, delay = 0) {\n delay = delay || step.delayBeforeStepShow;\n setTimeout(() => this.setCurrentStep(step), delay);\n }\n async showStep(step, skipAsync = false) {\n const anchor = this.anchors[step && step.anchorId];\n if (!anchor) {\n if (step.isAsync && !skipAsync) {\n let anchorRegistered$ = this.anchorRegister$\n .pipe(filter(anchorId => anchorId === step.anchorId), first(), delay(0));\n if (step.asyncStepTimeout) {\n anchorRegistered$ = anchorRegistered$\n .pipe(timeout({\n each: step.asyncStepTimeout,\n with: () => of(null)\n }));\n }\n anchorRegistered$\n .subscribe(() => this.showStep(step, true));\n return;\n }\n if (step.isOptional) {\n this[this.direction === Direction.Forwards ? 'next' : 'prev']();\n return;\n }\n console.warn(`Can't attach to unregistered anchor with id \"${step.anchorId}\"`);\n this.end();\n return;\n }\n this.listenToOnAnchorClick(step);\n this.waitingForScroll = true;\n await this.scrollToAnchor(step);\n this.waitingForScroll = false;\n anchor.showTourStep(step);\n this.toggleBackdrop(step);\n this.togglePageScrolling(step);\n this.stepShow$.next({\n step,\n direction: this.direction\n });\n }\n hideStep(step) {\n const anchor = this.anchors[step && step.anchorId];\n if (!anchor) {\n return;\n }\n anchor.hideTourStep();\n this.stepHide$.next({\n step,\n direction: this.direction\n });\n }\n scrollToAnchor(step) {\n if (step.disableScrollToAnchor) {\n return Promise.resolve();\n }\n const anchor = this.anchors[step?.anchorId], htmlElement = anchor.element.nativeElement;\n return this.scrollingService.ensureVisible(htmlElement, {\n center: step.centerAnchorOnScroll,\n smoothScroll: step.smoothScroll,\n scrollContainer: step.scrollContainer\n });\n }\n toggleBackdrop(step) {\n const anchor = this.anchors[step?.anchorId];\n if (step.enableBackdrop) {\n this.backdrop.show(anchor.element, step);\n }\n else {\n this.backdrop.close();\n }\n }\n togglePageScrolling(step) {\n if (step.disablePageScrolling) {\n this.scrollBlockingService.enable(step.scrollContainer);\n }\n else {\n this.scrollBlockingService.disable();\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: TourService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: TourService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: TourService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG91ci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGlicy9uZ3gtdWktdG91ci1jb3JlL3NyYy9saWIvdG91ci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRWpELE9BQU8sRUFBQyxlQUFlLEVBQUUsTUFBTSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFJeEQsT0FBTyxFQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLElBQUksV0FBVyxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUN0RyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUVyRCxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUM1RCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUMxRCxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUNoRSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sU0FBUyxDQUFDOztBQTRDbEMsTUFBTSxDQUFOLElBQVksU0FJWDtBQUpELFdBQVksU0FBUztJQUNqQix1Q0FBRyxDQUFBO0lBQ0gscUNBQUUsQ0FBQTtJQUNGLDZDQUFNLENBQUE7QUFDVixDQUFDLEVBSlcsU0FBUyxLQUFULFNBQVMsUUFJcEI7QUFFRCxNQUFNLENBQU4sSUFBWSxTQUdYO0FBSEQsV0FBWSxTQUFTO0lBQ2pCLGlEQUFRLENBQUE7SUFDUixtREFBUyxDQUFBO0FBQ2IsQ0FBQyxFQUhXLFNBQVMsS0FBVCxTQUFTLFFBR3BCO0FBT0QsTUFBTSxvQkFBb0IsR0FBZ0I7SUFDdEMscUJBQXFCLEVBQUUsS0FBSztJQUM1QixZQUFZLEVB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dCwgSW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB0eXBlIHtJc0FjdGl2ZU1hdGNoT3B0aW9ucywgVXJsU2VnbWVudH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHtOYXZpZ2F0aW9uU3RhcnQsIFJvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbmltcG9ydCB0eXBlIHtUb3VyQW5jaG9yRGlyZWN0aXZlfSBmcm9tICcuL3RvdXItYW5jaG9yLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB0eXBlIHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtkZWxheSwgZmlsdGVyLCBmaXJzdCwgbWFwLCBtZXJnZSBhcyBtZXJnZVN0YXRpYywgb2YsIFN1YmplY3QsIHRha2VVbnRpbCwgdGltZW91dH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7U2Nyb2xsaW5nU2VydmljZX0gZnJvbSAnLi9zY3JvbGxpbmcuc2VydmljZSc7XHJcbmltcG9ydCB0eXBlIHtCYWNrZHJvcENvbmZpZ30gZnJvbSAnLi90b3VyLWJhY2tkcm9wLnNlcnZpY2UnO1xyXG5pbXBvcnQge1RvdXJCYWNrZHJvcFNlcnZpY2V9IGZyb20gJy4vdG91ci1iYWNrZHJvcC5zZXJ2aWNlJztcclxuaW1wb3J0IHtBbmNob3JDbGlja1NlcnZpY2V9IGZyb20gJy4vYW5jaG9yLWNsaWNrLnNlcnZpY2UnO1xyXG5pbXBvcnQge1Njcm9sbEJsb2NraW5nU2VydmljZX0gZnJvbSAnLi9zY3JvbGwtYmxvY2tpbmcuc2VydmljZSc7XHJcbmltcG9ydCB7ZGVlcE1lcmdlfSBmcm9tICcuL3V0aWxzJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU3RlcERpbWVuc2lvbnMge1xyXG4gICAgd2lkdGg/OiBzdHJpbmc7XHJcbiAgICBtaW5XaWR0aD86IHN0cmluZztcclxuICAgIG1heFdpZHRoPzogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElTdGVwT3B0aW9uIHtcclxuICAgIHN0ZXBJZD86IHN0cmluZztcclxuICAgIGFuY2hvcklkPzogc3RyaW5nO1xyXG4gICAgdGl0bGU/OiBzdHJpbmc7XHJcbiAgICBjb250ZW50Pzogc3RyaW5nO1xyXG4gICAgcm91dGU/OiBzdHJpbmcgfCBVcmxTZWdtZW50W107XHJcbiAgICBuZXh0U3RlcD86IG51bWJlciB8IHN0cmluZztcclxuICAgIHByZXZTdGVwPzogbnVtYmVyIHwgc3RyaW5nO1xyXG4gICAgZGlzYWJsZVNjcm9sbFRvQW5jaG9yPzogYm9vbGVhbjtcclxuICAgIGNlbnRlckFuY2hvck9uU2Nyb2xsPzogYm9vbGVhbjtcclxuICAgIHNtb290aFNjcm9sbD86IGJvb2xlYW47XHJcbiAgICAvKipcclxuICAgICAqIENTUyBzZWxlY3RvciBvciBodG1sIGVsZW1lbnQgcmVmZXJlbmNlLiBPbmx5IHNldCB0aGlzIGNvbmZpZyBpZiB5b3UgaGF2ZSBlbmFibGVkIFwic21vb3RoU2Nyb2xsXCIgYW5kIHRvdXIgc3RlcFxyXG4gICAgICogZGVzY3JpcHRpb24gcG9wcy11cCBiZWZvcmUgc2Nyb2xsaW5nIGhhcyBmaW5pc2hlZCBvciBkb2Vzbid0IHNob3cgdXAgYXQgYWxsLiBUaGlzIHNob3VsZCBvbmx5IGJlIHRoZSBjYXNlIHdoZW5cclxuICAgICAqIHNjcm9sbCBjb250YWluZXIgaXMgcGFydCBvZiBzaGFkb3cgRE9NLlxyXG4gICAgICovXHJcbiAgICBzY3JvbGxDb250YWluZXI/OiBzdHJpbmcgfCBIVE1MRWxlbWVudDtcclxuICAgIHByZXZCdG5UaXRsZT86IHN0cmluZztcclxuICAgIG5leHRCdG5UaXRsZT86IHN0cmluZztcclxuICAgIGVuZEJ0blRpdGxlPzogc3RyaW5nO1xyXG4gICAgZW5hYmxlQmFja2Ryb3A/OiBib29sZWFuO1xyXG4gICAgYmFja2Ryb3BDb25maWc/OiBCYWNrZHJvcENvbmZpZztcclxuICAgIGlzQXN5bmM/OiBib29sZWFuO1xyXG4gICAgYXN5bmNTdGVwVGltZW91dD86IG51bWJlcjtcclxuICAgIGlzT3B0aW9uYWw/OiBib29sZWFuO1xyXG4gICAgZGVsYXlBZnRlck5hdmlnYXRpb24/OiBudW1iZXI7XHJcbiAgICBkZWxheUJlZm9yZVN0ZXBTaG93PzogbnVtYmVyO1xyXG4gICAgbmV4dE9uQW5jaG9yQ2xpY2s/OiBib29sZWFuO1xyXG4gICAgZHVwbGljYXRlQW5jaG9ySGFuZGxpbmc/OiAnZXJyb3InIHwgJ3JlZ2lzdGVyRmlyc3QnIHwgJ3JlZ2lzdGVyTGFzdCc7XHJcbiAgICBkaXNhYmxlUGFnZVNjcm9sbGluZz86IGJvb2xlYW47XHJcbiAgICBhbGxvd1VzZXJJbml0aWF0ZWROYXZpZ2F0aW9uPzogYm9vbGVhbjtcclxuICAgIHN0ZXBEaW1lbnNpb25zPzogU3RlcERpbWVuc2lvbnM7XHJcbiAgICBwb3BvdmVyQ2xhc3M/OiBzdHJpbmc7XHJcbiAgICBzaG93UHJvZ3Jlc3M/OiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgZW51bSBUb3VyU3RhdGUge1xyXG4gICAgT0ZGLFxyXG4gICAgT04sXHJcbiAgICBQQVVTRURcclxufVxyXG5cclxuZXhwb3J0IGVudW0gRGlyZWN0aW9uIHtcclxuICAgIEZvcndhcmRzLFxyXG4gICAgQmFja3dhcmRzXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU3RlcENoYW5nZVBhcmFtczxUIGV4dGVuZHMgSVN0ZXBPcHRpb24gPSBJU3RlcE9wdGlvbj4ge1xyXG4gICAgc3RlcDogVDtcclxuICAgIGRpcmVjdGlvbjogRGlyZWN0aW9uO1xyXG59XHJcblxyXG5jb25zdCBERUZBVUxUX1NURVBfT1BUSU9OUzogSVN0ZXBPcHRpb24gPSB7XHJcbiAgICBkaXNhYmxlU2Nyb2xsVG9BbmNob3I6IGZhbHNlLFxyXG4gICAgcHJldkJ0blRpdGxlOiAnUHJldicsXHJcbiAgICBuZXh0QnRuVGl0bGU6ICdOZXh0JyxcclxuICAgIGVuZEJ0blRpdGxlOiAnRW5kJyxcclxuICAgIGVuYWJsZUJhY2tkcm9wOiBmYWxzZSxcclxuICAgIGlzQXN5bmM6IGZhbHNlLFxyXG4gICAgaXNPcHRpb25hbDogZmFsc2UsXHJcbiAgICBkZWxheUFmdGVyTmF2aWdhdGlvbjogMTAwLFxyXG4gICAgZGVsYXlCZWZvcmVTdGVwU2hvdzogMCxcclxuICAgIG5leHRPbkFuY2hvckNsaWNrOiBmYWxzZSxcclxuICAgIGR1cGxpY2F0ZUFuY2hvckhhbmRsaW5nOiAnZXJyb3InLFxyXG4gICAgY2VudGVyQW5jaG9yT25TY3JvbGw6IHRydWUsXHJcbiAgICBkaXNhYmxlUGFnZVNjcm9sbGluZzogdHJ1ZSxcclxuICAgIHNtb290aFNjcm9sbDogdHJ1ZSxcclxuICAgIGFsbG93VXNlckluaXRpYXRlZE5hdmlnYXRpb246IGZhbHNlLFxyXG4gICAgc3RlcERpbWVuc2lvbnM6IHtcclxuICAgICAgICBtaW5XaWR0aDogJzI1MHB4JyxcclxuICAgICAgICBtYXhXaWR0aDogJzI4MHB4JyxcclxuICAgICAgICB3aWR0aDogJ2F1dG8nXHJcbiAgICB9LFxyXG4gICAgc2hvd1Byb2dyZXNzOiB0cnVlXHJcbn07XHJcblxyXG4vLyBub2luc3BlY3Rpb24gSlNVbnVzZWRHbG9iYWxTeW1ib2xzXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgVG91clNlcnZpY2U8VCBleHRlbmRzIElTdGVwT3B0aW9uID0gSVN0ZXBPcHRpb24+IHtcclxuXHJcbiAgICBwdWJsaWMgc3RlcFNob3ckID0gbmV3IFN1YmplY3Q8U3RlcENoYW5nZVBhcmFtczxUPj4oKTtcclxuICAgIHB1YmxpYyBzdGVwSGlkZSQgPSBuZXcgU3ViamVjdDxTdGVwQ2hhbmdlUGFyYW1zPFQ+PigpO1xyXG4gICAgcHVibGljIGluaXRpYWxpemUkID0gbmV3IFN1YmplY3Q8VFtdPigpO1xyXG4gICAgcHVibGljIHN0YXJ0JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgICBwdWJsaWMgZW5kJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgICBwdWJsaWMgcGF1c2UkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICAgIHB1YmxpYyByZXN1bWUkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICAgIHB1YmxpYyBhbmNob3JSZWdpc3RlciQgPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XHJcbiAgICBwdWJsaWMgYW5jaG9yVW5yZWdpc3RlciQgPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XHJcbiAgICBwdWJsaWMgZXZlbnRzJDogT2JzZXJ2YWJsZTx7IG5hbWU6IHN0cmluZzsgdmFsdWU6IHVua25vd24gfT4gPSBtZXJnZVN0YXRpYyhcclxuICAgICAgICB0aGlzLnN0ZXBTaG93JC5waXBlKG1hcCh2YWx1ZSA9PiAoe25hbWU6ICdzdGVwU2hvdycsIHZhbHVlfSkpKSxcclxuICAgICAgICB0aGlzLnN0ZXBIaWRlJC5waXBlKG1hcCh2YWx1ZSA9PiAoe25hbWU6ICdzdGVwSGlkZScsIHZhbHVlfSkpKSxcclxuICAgICAgICB0aGlzLmluaXRpYWxpemUkLnBpcGUobWFwKHZhbHVlID0+ICh7bmFtZTogJ2luaXRpYWxpemUnLCB2YWx1ZX0pKSksXHJcbiAgICAgICAgdGhpcy5zdGFydCQucGlwZShtYXAodmFsdWUgPT4gKHtuYW1lOiAnc3RhcnQnLCB2YWx1ZX0pKSksXHJcbiAgICAgICAgdGhpcy5lbmQkLnBpcGUobWFwKHZhbHVlID0+ICh7bmFtZTogJ2VuZCcsIHZhbHVlfSkpKSxcclxuICAgICAgICB0aGlzLnBhdXNlJC5waXBlKG1hcCh2YWx1ZSA9PiAoe25hbWU6ICdwYXVzZScsIHZhbHVlfSkpKSxcclxuICAgICAgICB0aGlzLnJlc3VtZSQucGlwZShtYXAodmFsdWUgPT4gKHtuYW1lOiAncmVzdW1lJywgdmFsdWV9KSkpLFxyXG4gICAgICAgIHRoaXMuYW5jaG9yUmVnaXN0ZXIkLnBpcGUoXHJcbiAgICAgICAgICAgIG1hcCh2YWx1ZSA9PiAoe1xyXG4gICAgICAgICAgICAgICAgbmFtZTogJ2FuY2hvclJlZ2lzdGVyJyxcclxuICAgICAgICAgICAgICAgIHZhbHVlXHJcbiAgICAgICAgICAgIH0pKVxyXG4gICAgICAgICksXHJcbiAgICAgICAgdGhpcy5hbmNob3JVbnJlZ2lzdGVyJC5waXBlKFxyXG4gICAgICAgICAgICBtYXAodmFsdWUgPT4gKHtcclxuICAgICAgICAgICAgICAgIG5hbWU6ICdhbmNob3JVbnJlZ2lzdGVyJyxcclxuICAgICAgICAgICAgICAgIHZhbHVlXHJcbiAgICAgICAgICAgIH0pKVxyXG4gICAgICAgIClcclxuICAgICk7XHJcblxyXG4gICAgcHVibGljIHN0ZXBzOiBUW10gPSBbXTtcclxuICAgIHB1YmxpYyBjdXJyZW50U3RlcDogVDtcclxuXHJcbiAgICBwdWJsaWMgYW5jaG9yczogUmVjb3JkPHN0cmluZywgVG91ckFuY2hvckRpcmVjdGl2ZT4gPSB7fTtcclxuICAgIHByaXZhdGUgc3RhdHVzOiBUb3VyU3RhdGUgPSBUb3VyU3RhdGUuT0ZGO1xyXG4gICAgcHJpdmF0ZSBpc0hvdEtleXNFbmFibGVkID0gdHJ1ZTtcclxuICAgIHByaXZhdGUgZGlyZWN0aW9uID0gRGlyZWN0aW9uLkZvcndhcmRzO1xyXG4gICAgcHJpdmF0ZSB3YWl0aW5nRm9yU2Nyb2xsID0gZmFsc2U7XHJcbiAgICBwcml2YXRlIG5hdmlnYXRpb25TdGFydGVkID0gZmFsc2U7XHJcbiAgICBwcml2YXRlIHVzZXJEZWZhdWx0czogVDtcclxuXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBiYWNrZHJvcCA9IGluamVjdChUb3VyQmFja2Ryb3BTZXJ2aWNlKTtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgYW5jaG9yQ2xpY2tTZXJ2aWNlID0gaW5qZWN0KEFuY2hvckNsaWNrU2VydmljZSk7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNjcm9sbEJsb2NraW5nU2VydmljZSA9IGluamVjdChTY3JvbGxCbG9ja2luZ1NlcnZpY2UpO1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBzY3JvbGxpbmdTZXJ2aWNlID0gaW5qZWN0KFNjcm9sbGluZ1NlcnZpY2UpO1xyXG5cclxuICAgIHB1YmxpYyBpbml0aWFsaXplKHN0ZXBzOiBUW10sIHN0ZXBEZWZhdWx0cz86IFQpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5zdGF0dXMgPT09IFRvdXJTdGF0ZS5PTikge1xyXG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ0NhbiBub3QgcmUtaW5pdGlhbGl6ZSB0aGUgVUkgdG91ciB3aGlsZSBpdFxcJ3Mgc3RpbGwgYWN0aXZlJyk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChzdGVwcyAmJiBzdGVwcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3RhdHVzID0gVG91clN0YXRlLk9GRjtcclxuICAgICAgICAgICAgdGhpcy5zdGVwcyA9IHN0ZXBzLm1hcChcclxuICAgICAgICAgICAgICAgIHN0ZXAgPT4gZGVlcE1lcmdlKFxyXG4gICAgICAgICAgICAgICAgICAgIERFRkFVTFRfU1RFUF9PUFRJT05TIGFzIFQsXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51c2VyRGVmYXVsdHMsXHJcbiAgICAgICAgICAgICAgICAgICAgc3RlcERlZmF1bHRzLFxyXG4gICAgICAgICAgICAgICAgICAgIHN0ZXBcclxuICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0ZVN0ZXBzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZSQubmV4dCh0aGlzLnN0ZXBzKTtcclxuICAgICAgICAgICAgdGhpcy5zdWJzY3JpYmVUb05hdmlnYXRpb25TdGFydEV2ZW50KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzZXREZWZhdWx0cyhkZWZhdWx0T3B0aW9uczogVCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMudXNlckRlZmF1bHRzID0gZGVmYXVsdE9wdGlvbnM7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldERlZmF1bHRzKCk6IFQge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnVzZXJEZWZhdWx0cztcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHZhbGlkYXRlU3RlcHMoKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBzdGVwIG9mIHRoaXMuc3RlcHMpIHtcclxuICAgICAgICAgICAgaWYgKHN0ZXAuaXNBc3luYyAmJiBzdGVwLmlzT3B0aW9uYWwgJiYgIXN0ZXAuYXN5bmNTdGVwVGltZW91dCkge1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBUb3VyIHN0ZXAgd2l0aCBhbmNob3IgaWQgXCIke3N0ZXAuYW5jaG9ySWR9XCIgY2FuIG9ubHkgYmUgYm90aCBcImFzeW5jXCIgYW5kIGAgK1xyXG4gICAgICAgICAgICAgICAgICAgIGBcIm9wdGlvbmFsXCIgd2hlbiBcImFzeW5jU3RlcFRpbWVvdXRcIiBpcyBzcGVjaWZpZWQhYCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzdWJzY3JpYmVUb05hdmlnYXRpb25TdGFydEV2ZW50KClcclxuICAgIHtcclxuICAgICAgICB0aGlzLnJvdXRlci5ldmVudHNcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKGV2ZW50KTogZXZlbnQgaXMgTmF2aWdhdGlvblN0YXJ0ID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvblN0YXJ0KSxcclxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmVuZCQpXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAgICAgICAgIChldmVudCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5jdXJyZW50U3RlcCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBicm93c2VyQmFja0J0blByZXNzZWQgPSBldmVudC5uYXZpZ2F0aW9uVHJpZ2dlciA9PT0gJ3BvcHN0YXRlJyxcclxuICAgICAgICAgICAgICAgICAgICAgIHVzZXJOYXZpZ2F0aW9uQWxsb3dlZCA9IHRoaXMuY3VycmVudFN0ZXAuYWxsb3dVc2VySW5pdGlhdGVkTmF2aWdhdGlvbjtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLm5hdmlnYXRpb25TdGFydGVkICYmIChicm93c2VyQmFja0J0blByZXNzZWQgfHwgIXVzZXJOYXZpZ2F0aW9uQWxsb3dlZCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5lbmQoKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGRpc2FibGVIb3RrZXlzKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuaXNIb3RLZXlzRW5hYmxlZCA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBlbmFibGVIb3RrZXlzKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuaXNIb3RLZXlzRW5hYmxlZCA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXJ0KCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLnN0YXR1cyA9PT0gVG91clN0YXRlLk9OKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUud2FybigndG91clNlcnZpY2Uuc3RhcnQoKSBjYWxsZWQgd2hpbGUgdGhlIHRvdXIgaXMgYWxyZWFkeSBydW5uaW5nLicpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc3RhcnRBdCgwKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhcnRBdChzdGVwSWQ6IG51bWJlciB8IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc3RhdHVzID0gVG91clN0YXRlLk9OO1xyXG4gICAgICAgIHRoaXMuZ29Ub1N0ZXAodGhpcy5sb2FkU3RlcChzdGVwSWQpKTtcclxuICAgICAgICB0aGlzLnN0YXJ0JC5uZXh0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGVuZCgpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy53YWl0aW5nRm9yU2Nyb2xsKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnN0YXR1cyA9PT0gVG91clN0YXRlLk9GRikge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc3RhdHVzID0gVG91clN0YXRlLk9GRjtcclxuICAgICAgICB0aGlzLmRpc2FibGVUb3VyKCk7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50U3RlcCA9IHVuZGVmaW5lZDtcclxuICAgICAgICB0aGlzLmRpcmVjdGlvbiA9IERpcmVjdGlvbi5Gb3J3YXJkcztcclxuICAgICAgICB0aGlzLmVuZCQubmV4dCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBwYXVzZSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnN0YXR1cyA9IFRvdXJTdGF0ZS5QQVVTRUQ7XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlVG91cigpO1xyXG4gICAgICAgIHRoaXMucGF1c2UkLm5leHQoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGRpc2FibGVUb3VyKCkge1xyXG4gICAgICAgIHRoaXMuaGlkZVN0ZXAodGhpcy5jdXJyZW50U3RlcCk7XHJcbiAgICAgICAgdGhpcy5hbmNob3JDbGlja1NlcnZpY2UucmVtb3ZlTGlzdGVuZXIoKTtcclxuICAgICAgICB0aGlzLmJhY2tkcm9wLmNsb3NlKCk7XHJcbiAgICAgICAgdGhpcy5iYWNrZHJvcC5kaXNjb25uZWN0UmVzaXplT2JzZXJ2ZXIoKTtcclxuICAgICAgICB0aGlzLnNjcm9sbEJsb2NraW5nU2VydmljZS5kaXNhYmxlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHJlc3VtZSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnN0YXR1cyA9IFRvdXJTdGF0ZS5PTjtcclxuICAgICAgICB0aGlzLnNob3dTdGVwKHRoaXMuY3VycmVudFN0ZXApO1xyXG4gICAgICAgIHRoaXMucmVzdW1lJC5uZXh0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHRvZ2dsZShwYXVzZT86IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgICAgICBpZiAocGF1c2UpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVudFN0ZXApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucGF1c2UoKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVzdW1lKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50U3RlcCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5lbmQoKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3RhcnQoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgbmV4dCgpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy53YWl0aW5nRm9yU2Nyb2xsKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuZGlyZWN0aW9uID0gRGlyZWN0aW9uLkZvcndhcmRzO1xyXG4gICAgICAgIGlmICh0aGlzLmhhc05leHQodGhpcy5jdXJyZW50U3RlcCkpIHtcclxuICAgICAgICAgICAgdGhpcy5nb1RvU3RlcChcclxuICAgICAgICAgICAgICAgIHRoaXMubG9hZFN0ZXAoXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50U3RlcC5uZXh0U3RlcCA/PyB0aGlzLmdldFN0ZXBJbmRleCh0aGlzLmN1cnJlbnRTdGVwKSArIDFcclxuICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXRTdGVwSW5kZXgoc3RlcDogVCk6IG51bWJlciB7XHJcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnN0ZXBzLmluZGV4T2Yoc3RlcCk7XHJcblxyXG4gICAgICAgIHJldHVybiBpbmRleCA8IDAgPyAwIDogaW5kZXg7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGhhc05leHQoc3RlcDogVCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICghc3RlcCkge1xyXG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ0NhblxcJ3QgZ2V0IG5leHQgc3RlcC4gTm8gY3VycmVudFN0ZXAuJyk7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgc3RlcC5uZXh0U3RlcCAhPT0gdW5kZWZpbmVkIHx8XHJcbiAgICAgICAgICAgICh0aGlzLmdldFN0ZXBJbmRleChzdGVwKSA8IHRoaXMuc3RlcHMubGVuZ3RoIC0gMSAmJiAhdGhpcy5pc05leHRPcHRpb25hbEFuY2hvck1pc3Npbmcoc3RlcCkpXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGlzTmV4dE9wdGlvbmFsQW5jaG9yTWlzc2luZyhzdGVwOiBUKTogYm9vbGVhbiB7XHJcbiAgICAgICAgY29uc3Qgc3RlcEluZGV4ID0gdGhpcy5nZXRTdGVwSW5kZXgoc3RlcCk7XHJcblxyXG4gICAgICAgIGZvciAobGV0IGkgPSBzdGVwSW5kZXggKyAxOyBpIDwgdGhpcy5zdGVwcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBjb25zdCBuZXh0U3RlcCA9IHRoaXMuc3RlcHNbaV07XHJcblxyXG4gICAgICAgICAgICBpZiAoIW5leHRTdGVwLmlzT3B0aW9uYWwgfHwgdGhpcy5hbmNob3JzW25leHRTdGVwLmFuY2hvcklkXSlcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBwcmV2KCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLndhaXRpbmdGb3JTY3JvbGwpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5kaXJlY3Rpb24gPSBEaXJlY3Rpb24uQmFja3dhcmRzO1xyXG4gICAgICAgIGlmICh0aGlzLmhhc1ByZXYodGhpcy5jdXJyZW50U3RlcCkpIHtcclxuICAgICAgICAgICAgdGhpcy5nb1RvU3RlcChcclxuICAgICAgICAgICAgICAgIHRoaXMubG9hZFN0ZXAoXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50U3RlcC5wcmV2U3RlcCA/PyB0aGlzLmdldFN0ZXBJbmRleCh0aGlzLmN1cnJlbnRTdGVwKSAtIDFcclxuICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGhhc1ByZXYoc3RlcDogVCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICghc3RlcCkge1xyXG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ0NhblxcJ3QgZ2V0IHByZXZpb3VzIHN0ZXAuIE5vIGN1cnJlbnRTdGVwLicpO1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBzdGVwLnByZXZTdGVwICE9PSB1bmRlZmluZWQgfHxcclxuICAgICAgICAgICAgKHRoaXMuZ2V0U3RlcEluZGV4KHN0ZXApID4gMCAmJiAhdGhpcy5pc1ByZXZPcHRpb25hbEFuY2hvck1pc2luZyhzdGVwKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBpc1ByZXZPcHRpb25hbEFuY2hvck1pc2luZyhzdGVwOiBUKTogYm9vbGVhbiB7XHJcbiAgICAgICAgY29uc3Qgc3RlcEluZGV4ID0gdGhpcy5nZXRTdGVwSW5kZXgoc3RlcCk7XHJcblxyXG4gICAgICAgIGZvciAobGV0IGkgPSBzdGVwSW5kZXggLSAxOyBpID4gLTE7IGktLSkge1xyXG4gICAgICAgICAgICBjb25zdCBwcmV2U3RlcCA9IHRoaXMuc3RlcHNbaV07XHJcblxyXG4gICAgICAgICAgICBpZiAoIXByZXZTdGVwLmlzT3B0aW9uYWwgfHwgdGhpcy5hbmNob3JzW3ByZXZTdGVwLmFuY2hvcklkXSlcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnb3RvKHN0ZXBJZDogbnVtYmVyIHwgc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5nb1RvU3RlcCh0aGlzLmxvYWRTdGVwKHN0ZXBJZCkpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyByZWdpc3RlcihhbmNob3JJZDogc3RyaW5nLCBhbmNob3I6IFRvdXJBbmNob3JEaXJlY3RpdmUpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIWFuY2hvcklkKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmFuY2hvcnNbYW5jaG9ySWRdKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHN0ZXAgPSB0aGlzLmZpbmRTdGVwQnlBbmNob3JJZChhbmNob3JJZCksXHJcbiAgICAgICAgICAgICAgICBkdXBsaWNhdGVBbmNob3JIYW5kbGluZyA9IHN0ZXA/LmR1cGxpY2F0ZUFuY2hvckhhbmRsaW5nID8/XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51c2VyRGVmYXVsdHM/LmR1cGxpY2F0ZUFuY2hvckhhbmRsaW5nID8/ICdlcnJvcic7XHJcblxyXG4gICAgICAgICAgICBzd2l0Y2ggKGR1cGxpY2F0ZUFuY2hvckhhbmRsaW5nKSB7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdlcnJvcic6XHJcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBUb3VyIGFuY2hvciB3aXRoIGlkIFwiJHthbmNob3JJZH1cIiBhbHJlYWR5IHJlZ2lzdGVyZWQhYCk7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdyZWdpc3RlckZpcnN0JzpcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuYW5jaG9yc1thbmNob3JJZF0gPSBhbmNob3I7XHJcbiAgICAgICAgdGhpcy5hbmNob3JSZWdpc3RlciQubmV4dChhbmNob3JJZCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBmaW5kU3RlcEJ5QW5jaG9ySWQoYW5jaG9ySWQ6IHN0cmluZyk6IFQge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnN0ZXBzLmZpbmQoc3RlcCA9PiBzdGVwLmFuY2hvcklkID09PSBhbmNob3JJZCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHVucmVnaXN0ZXIoYW5jaG9ySWQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIGlmICghYW5jaG9ySWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBkZWxldGUgdGhpcy5hbmNob3JzW2FuY2hvcklkXTtcclxuICAgICAgICB0aGlzLmFuY2hvclVucmVnaXN0ZXIkLm5leHQoYW5jaG9ySWQpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRTdGF0dXMoKTogVG91clN0YXRlIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zdGF0dXM7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGlzSG90a2V5c0VuYWJsZWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNIb3RLZXlzRW5hYmxlZDtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdvVG9TdGVwKHN0ZXA6IFQpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIXN0ZXApIHtcclxuICAgICAgICAgICAgY29uc29sZS53YXJuKCdDYW5cXCd0IGdvIHRvIG5vbi1leGlzdGVudCBzdGVwJyk7XHJcbiAgICAgICAgICAgIHRoaXMuZW5kKCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudFN0ZXApIHtcclxuICAgICAgICAgICAgdGhpcy5iYWNrZHJvcC5jbG9zZVNwb3RsaWdodCgpO1xyXG4gICAgICAgICAgICB0aGlzLmhpZGVTdGVwKHRoaXMuY3VycmVudFN0ZXApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5hbmNob3JDbGlja1NlcnZpY2UucmVtb3ZlTGlzdGVuZXIoKTtcclxuXHJcbiAgICAgICAgaWYgKHN0ZXAucm91dGUgIT09IHVuZGVmaW5lZCAmJiBzdGVwLnJvdXRlICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHRoaXMubmF2aWdhdGVUb1JvdXRlQW5kU2V0U3RlcChzdGVwKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnNldEN1cnJlbnRTdGVwQXN5bmMoc3RlcCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgbGlzdGVuVG9PbkFuY2hvckNsaWNrKHN0ZXA6IFQpIHtcclxuICAgICAgICBpZiAoc3RlcC5uZXh0T25BbmNob3JDbGljaykge1xyXG4gICAgICAgICAgICBjb25zdCBhbmNob3JFbCA9IHRoaXMuYW5jaG9yc1tzdGVwLmFuY2hvcklkXS5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICAgICAgICAgIHRoaXMuYW5jaG9yQ2xpY2tTZXJ2aWNlLmFkZExpc3RlbmVyKGFuY2hvckVsLCAoKSA9PiB0aGlzLm5leHQoKSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgYXN5bmMgbmF2aWdhdGVUb1JvdXRlQW5kU2V0U3RlcChzdGVwOiBUKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gdHlwZW9mIHN0ZXAucm91dGUgPT09ICdzdHJpbmcnID8gc3RlcC5yb3V0ZSA6IHRoaXMucm91dGVyLmNyZWF0ZVVybFRyZWUoc3RlcC5yb3V0ZSksXHJcbiAgICAgICAgICAgIG1hdGNoT3B0aW9uczogSXNBY3RpdmVNYXRjaE9wdGlvbnMgPSB7XHJcbiAgICAgICAgICAgICAgICBwYXRoczogJ2V4YWN0JyxcclxuICAgICAgICAgICAgICAgIG1hdHJpeFBhcmFtczogJ2V4YWN0JyxcclxuICAgICAgICAgICAgICAgIHF1ZXJ5UGFyYW1zOiAnc3Vic2V0JyxcclxuICAgICAgICAgICAgICAgIGZyYWdtZW50OiAnZXhhY3QnXHJcbiAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgIGNvbnN0IGlzQWN0aXZlID0gdGhpcy5yb3V0ZXIuaXNBY3RpdmUodXJsLCBtYXRjaE9wdGlvbnMpO1xyXG5cclxuICAgICAgICBpZiAoaXNBY3RpdmUpIHtcclxuICAgICAgICAgICAgdGhpcy5zZXRDdXJyZW50U3RlcEFzeW5jKHN0ZXApO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLm5hdmlnYXRpb25TdGFydGVkID0gdHJ1ZTtcclxuICAgICAgICBjb25zdCBuYXZpZ2F0ZWQgPSBhd2FpdCB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHVybCk7XHJcbiAgICAgICAgdGhpcy5uYXZpZ2F0aW9uU3RhcnRlZCA9IGZhbHNlO1xyXG5cclxuICAgICAgICBpZiAoIW5hdmlnYXRlZCkge1xyXG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ05hdmlnYXRpb24gdG8gcm91dGUgZmFpbGVkOiAnLCBzdGVwLnJvdXRlKTtcclxuICAgICAgICAgICAgdGhpcy5lbmQoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnNldEN1cnJlbnRTdGVwQXN5bmMoc3RlcCwgc3RlcC5kZWxheUFmdGVyTmF2aWdhdGlvbik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgbG9hZFN0ZXAoc3RlcElkOiBudW1iZXIgfCBzdHJpbmcpOiBUIHtcclxuICAgICAgICBpZiAodHlwZW9mIHN0ZXBJZCA9PT0gJ251bWJlcicpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3RlcHNbc3RlcElkXTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zdGVwcy5maW5kKHN0ZXAgPT4gc3RlcC5zdGVwSWQgPT09IHN0ZXBJZCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc2V0Q3VycmVudFN0ZXAoc3RlcDogVCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuY3VycmVudFN0ZXAgPSBzdGVwO1xyXG4gICAgICAgIHRoaXMuc2hvd1N0ZXAodGhpcy5jdXJyZW50U3RlcCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzZXRDdXJyZW50U3RlcEFzeW5jKHN0ZXA6IFQsIGRlbGF5ID0gMCk6IHZvaWQge1xyXG4gICAgICAgIGRlbGF5ID0gZGVsYXkgfHwgc3RlcC5kZWxheUJlZm9yZVN0ZXBTaG93O1xyXG5cclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuc2V0Q3VycmVudFN0ZXAoc3RlcCksIGRlbGF5KTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgYXN5bmMgc2hvd1N0ZXAoc3RlcDogVCwgc2tpcEFzeW5jID0gZmFsc2UpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgICAgICBjb25zdCBhbmNob3IgPSB0aGlzLmFuY2hvcnNbc3RlcCAmJiBzdGVwLmFuY2hvcklkXTtcclxuXHJcbiAgICAgICAgaWYgKCFhbmNob3IpIHtcclxuICAgICAgICAgICAgaWYgKHN0ZXAuaXNBc3luYyAmJiAhc2tpcEFzeW5jKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgYW5jaG9yUmVnaXN0ZXJlZCQgPSB0aGlzLmFuY2hvclJlZ2lzdGVyJFxyXG4gICAgICAgICAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIoYW5jaG9ySWQgPT4gYW5jaG9ySWQgPT09IHN0ZXAuYW5jaG9ySWQpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaXJzdCgpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxheSgwKVxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHN0ZXAuYXN5bmNTdGVwVGltZW91dCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGFuY2hvclJlZ2lzdGVyZWQkID0gYW5jaG9yUmVnaXN0ZXJlZCRcclxuICAgICAgICAgICAgICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0KHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlYWNoOiBzdGVwLmFzeW5jU3RlcFRpbWVvdXQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aDogKCkgPT4gb2YobnVsbClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgYW5jaG9yUmVnaXN0ZXJlZCRcclxuICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoKSA9PiB0aGlzLnNob3dTdGVwKHN0ZXAsIHRydWUpXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoc3RlcC5pc09wdGlvbmFsKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzW3RoaXMuZGlyZWN0aW9uID09PSBEaXJlY3Rpb24uRm9yd2FyZHMgPyAnbmV4dCcgOiAncHJldiddKCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgQ2FuJ3QgYXR0YWNoIHRvIHVucmVnaXN0ZXJlZCBhbmNob3Igd2l0aCBpZCBcIiR7c3RlcC5hbmNob3JJZH1cImApO1xyXG4gICAgICAgICAgICB0aGlzLmVuZCgpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubGlzdGVuVG9PbkFuY2hvckNsaWNrKHN0ZXApO1xyXG4gICAgICAgIHRoaXMud2FpdGluZ0ZvclNjcm9sbCA9IHRydWU7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5zY3JvbGxUb0FuY2hvcihzdGVwKTtcclxuICAgICAgICB0aGlzLndhaXRpbmdGb3JTY3JvbGwgPSBmYWxzZTtcclxuICAgICAgICBhbmNob3Iuc2hvd1RvdXJTdGVwKHN0ZXApO1xyXG4gICAgICAgIHRoaXMudG9nZ2xlQmFja2Ryb3Aoc3RlcCk7XHJcbiAgICAgICAgdGhpcy50b2dnbGVQYWdlU2Nyb2xsaW5nKHN0ZXApO1xyXG4gICAgICAgIHRoaXMuc3RlcFNob3ckLm5leHQoe1xyXG4gICAgICAgICAgICBzdGVwLFxyXG4gICAgICAgICAgICBkaXJlY3Rpb246IHRoaXMuZGlyZWN0aW9uXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBoaWRlU3RlcChzdGVwOiBUKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgYW5jaG9yID0gdGhpcy5hbmNob3JzW3N0ZXAgJiYgc3RlcC5hbmNob3JJZF07XHJcbiAgICAgICAgaWYgKCFhbmNob3IpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBhbmNob3IuaGlkZVRvdXJTdGVwKCk7XHJcbiAgICAgICAgdGhpcy5zdGVwSGlkZSQubmV4dCh7XHJcbiAgICAgICAgICAgIHN0ZXAsXHJcbiAgICAgICAgICAgIGRpcmVjdGlvbjogdGhpcy5kaXJlY3Rpb25cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHNjcm9sbFRvQW5jaG9yKHN0ZXA6IFQpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgICAgICBpZiAoc3RlcC5kaXNhYmxlU2Nyb2xsVG9BbmNob3IpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgYW5jaG9yID0gdGhpcy5hbmNob3JzW3N0ZXA/LmFuY2hvcklkXSxcclxuICAgICAgICAgICAgaHRtbEVsZW1lbnQgPSBhbmNob3IuZWxlbWVudC5uYXRpdmVFbGVtZW50O1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5zY3JvbGxpbmdTZXJ2aWNlLmVuc3VyZVZpc2libGUoaHRtbEVsZW1lbnQsIHtcclxuICAgICAgICAgICAgY2VudGVyOiBzdGVwLmNlbnRlckFuY2hvck9uU2Nyb2xsLFxyXG4gICAgICAgICAgICBzbW9vdGhTY3JvbGw6IHN0ZXAuc21vb3RoU2Nyb2xsLFxyXG4gICAgICAgICAgICBzY3JvbGxDb250YWluZXI6IHN0ZXAuc2Nyb2xsQ29udGFpbmVyXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSB0b2dnbGVCYWNrZHJvcChzdGVwOiBUKSB7XHJcbiAgICAgICAgY29uc3QgYW5jaG9yID0gdGhpcy5hbmNob3JzW3N0ZXA/LmFuY2hvcklkXTtcclxuXHJcbiAgICAgICAgaWYgKHN0ZXAuZW5hYmxlQmFja2Ryb3ApIHtcclxuICAgICAgICAgICAgdGhpcy5iYWNrZHJvcC5zaG93KGFuY2hvci5lbGVtZW50LCBzdGVwKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmJhY2tkcm9wLmNsb3NlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgdG9nZ2xlUGFnZVNjcm9sbGluZyhzdGVwOiBUKSB7XHJcbiAgICAgICAgaWYgKHN0ZXAuZGlzYWJsZVBhZ2VTY3JvbGxpbmcpIHtcclxuICAgICAgICAgICAgdGhpcy5zY3JvbGxCbG9ja2luZ1NlcnZpY2UuZW5hYmxlKHN0ZXAuc2Nyb2xsQ29udGFpbmVyKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnNjcm9sbEJsb2NraW5nU2VydmljZS5kaXNhYmxlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxufVxyXG4iXX0=","import { ChangeDetectionStrategy, Component, HostListener, inject } from '@angular/core';\nimport { TourService, TourState } from './tour.service';\nimport * as i0 from \"@angular/core\";\nexport class TourHotkeyListenerComponent {\n constructor() {\n this.tourService = inject(TourService);\n }\n /**\n * Configures hot keys for controlling the tour with the keyboard\n */\n onEscapeKey() {\n if (this.tourService.getStatus() === TourState.ON &&\n this.tourService.isHotkeysEnabled()) {\n this.tourService.end();\n }\n }\n onArrowRightKey() {\n const step = this.tourService.currentStep;\n if (this.tourService.getStatus() === TourState.ON &&\n this.tourService.hasNext(this.tourService.currentStep) &&\n this.tourService.isHotkeysEnabled() &&\n !step?.nextOnAnchorClick) {\n this.tourService.next();\n }\n }\n onArrowLeftKey() {\n if (this.tourService.getStatus() === TourState.ON &&\n this.tourService.hasPrev(this.tourService.currentStep) &&\n this.tourService.isHotkeysEnabled()) {\n this.tourService.prev();\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: TourHotkeyListenerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.0.4\", type: TourHotkeyListenerComponent, isStandalone: true, selector: \"tour-hotkey-listener\", host: { listeners: { \"window:keydown.Escape\": \"onEscapeKey()\", \"window:keydown.ArrowRight\": \"onArrowRightKey()\", \"window:keydown.ArrowLeft\": \"onArrowLeftKey()\" } }, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: TourHotkeyListenerComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'tour-hotkey-listener',\n template: `<ng-content></ng-content>`,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], propDecorators: { onEscapeKey: [{\n type: HostListener,\n args: ['window:keydown.Escape']\n }], onArrowRightKey: [{\n type: HostListener,\n args: ['window:keydown.ArrowRight']\n }], onArrowLeftKey: [{\n type: HostListener,\n args: ['window:keydown.ArrowLeft']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG91ci1ob3RrZXktbGlzdGVuZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGlicy9uZ3gtdWktdG91ci1jb3JlL3NyYy9saWIvdG91ci1ob3RrZXktbGlzdGVuZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN2RixPQUFPLEVBQUMsV0FBVyxFQUFFLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDOztBQVF0RCxNQUFNLE9BQU8sMkJBQTJCO0lBTHhDO1FBT3VCLGdCQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0tBdUN4RDtJQXJDRzs7T0FFRztJQUVJLFdBQVc7UUFDZCxJQUNJLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLEtBQUssU0FBUyxDQUFDLEVBQUU7WUFDN0MsSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsRUFBRSxFQUNyQyxDQUFDO1lBQ0MsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUMzQixDQUFDO0lBQ0wsQ0FBQztJQUdNLGVBQWU7UUFDbEIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUM7UUFFMUMsSUFDSSxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxLQUFLLFNBQVMsQ0FBQyxFQUFFO1lBQzdDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDO1lBQ3RELElBQUksQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLEVBQUU7WUFDbkMsQ0FBQyxJQUFJLEVBQUUsaUJBQWlCLEVBQzFCLENBQUM7WUFDQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzVCLENBQUM7SUFDTCxDQUFDO0lBR00sY0FBYztRQUNqQixJQUNJLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLEtBQUssU0FBUyxDQUFDLEVBQUU7WUFDN0MsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUM7WUFDdEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsRUFBRSxFQUNyQyxDQUFDO1lBQ0MsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM1QixDQUFDO0lBQ0wsQ0FBQzs4R0F4Q1EsMkJBQTJCO2tHQUEzQiwyQkFBMkIscVBBSDFCLDJCQUEyQjs7MkZBRzVCLDJCQUEyQjtrQkFMdkMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsc0JBQXNCO29CQUNoQyxRQUFRLEVBQUUsMkJBQTJCO29CQUNyQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDbEQ7OEJBU1UsV0FBVztzQkFEakIsWUFBWTt1QkFBQyx1QkFBdUI7Z0JBVzlCLGVBQWU7c0JBRHJCLFlBQVk7dUJBQUMsMkJBQTJCO2dCQWVsQyxjQUFjO3NCQURwQixZQUFZO3VCQUFDLDBCQUEwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSG9zdExpc3RlbmVyLCBpbmplY3R9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1RvdXJTZXJ2aWNlLCBUb3VyU3RhdGV9IGZyb20gJy4vdG91ci5zZXJ2aWNlJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAndG91ci1ob3RrZXktbGlzdGVuZXInLFxyXG4gICAgdGVtcGxhdGU6IGA8bmctY29udGVudD48L25nLWNvbnRlbnQ+YCxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUb3VySG90a2V5TGlzdGVuZXJDb21wb25lbnQge1xyXG5cclxuICAgIHByb3RlY3RlZCByZWFkb25seSB0b3VyU2VydmljZSA9IGluamVjdChUb3VyU2VydmljZSk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb25maWd1cmVzIGhvdCBrZXlzIGZvciBjb250cm9sbGluZyB0aGUgdG91ciB3aXRoIHRoZSBrZXlib2FyZFxyXG4gICAgICovXHJcbiAgICBASG9zdExpc3RlbmVyKCd3aW5kb3c6a2V5ZG93bi5Fc2NhcGUnKVxyXG4gICAgcHVibGljIG9uRXNjYXBlS2V5KCk6IHZvaWQge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgICAgdGhpcy50b3VyU2VydmljZS5nZXRTdGF0dXMoKSA9PT0gVG91clN0YXRlLk9OICYmXHJcbiAgICAgICAgICAgIHRoaXMudG91clNlcnZpY2UuaXNIb3RrZXlzRW5hYmxlZCgpXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIHRoaXMudG91clNlcnZpY2UuZW5kKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzprZXlkb3duLkFycm93UmlnaHQnKVxyXG4gICAgcHVibGljIG9uQXJyb3dSaWdodEtleSgpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBzdGVwID0gdGhpcy50b3VyU2VydmljZS5jdXJyZW50U3RlcDtcclxuXHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICB0aGlzLnRvdXJTZXJ2aWNlLmdldFN0YXR1cygpID09PSBUb3VyU3RhdGUuT04gJiZcclxuICAgICAgICAgICAgdGhpcy50b3VyU2VydmljZS5oYXNOZXh0KHRoaXMudG91clNlcnZpY2UuY3VycmVudFN0ZXApICYmXHJcbiAgICAgICAgICAgIHRoaXMudG91clNlcnZpY2UuaXNIb3RrZXlzRW5hYmxlZCgpICYmXHJcbiAgICAgICAgICAgICFzdGVwPy5uZXh0T25BbmNob3JDbGlja1xyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgICB0aGlzLnRvdXJTZXJ2aWNlLm5leHQoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgQEhvc3RMaXN0ZW5lcignd2luZG93OmtleWRvd24uQXJyb3dMZWZ0JylcclxuICAgIHB1YmxpYyBvbkFycm93TGVmdEtleSgpOiB2b2lkIHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIHRoaXMudG91clNlcnZpY2UuZ2V0U3RhdHVzKCkgPT09IFRvdXJTdGF0ZS5PTiAmJlxyXG4gICAgICAgICAgICB0aGlzLnRvdXJTZXJ2aWNlLmhhc1ByZXYodGhpcy50b3VyU2VydmljZS5jdXJyZW50U3RlcCkgJiZcclxuICAgICAgICAgICAgdGhpcy50b3VyU2VydmljZS5pc0hvdGtleXNFbmFibGVkKClcclxuICAgICAgICApIHtcclxuICAgICAgICAgICAgdGhpcy50b3VyU2VydmljZS5wcmV2KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiJdfQ==","import { afterNextRender, Directive, ElementRef, inject, DOCUMENT } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class BaseTourProxyAnchor {\n constructor() {\n this.document = inject(DOCUMENT);\n afterNextRender({\n read: () => this.setAnchorElement()\n });\n }\n setAnchorElement() {\n if (this.anchorEl instanceof HTMLElement) {\n this.anchorDirective.element = new ElementRef(this.anchorEl);\n return;\n }\n const htmlElement = this.document.querySelector(this.anchorEl);\n if (!htmlElement) {\n throw new Error(`Element with \"${this.anchorEl}\" CSS selector could not be found!`);\n }\n this.anchorDirective.element = new ElementRef(htmlElement);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: BaseTourProxyAnchor, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.0.4\", type: BaseTourProxyAnchor, isStandalone: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: BaseTourProxyAnchor, decorators: [{\n type: Directive\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS10b3VyLXByb3h5LWFuY2hvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMvbmd4LXVpLXRvdXItY29yZS9zcmMvbGliL2Jhc2UtdG91ci1wcm94eS1hbmNob3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGVBQWUsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7O0FBS3ZGLE1BQU0sT0FBZ0IsbUJBQW1CO0lBT3JDO1FBSmlCLGFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFLekMsZUFBZSxDQUFDO1lBQ1osSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtTQUN0QyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sZ0JBQWdCO1FBQ3BCLElBQUksSUFBSSxDQUFDLFFBQVEsWUFBWSxXQUFXLEVBQUUsQ0FBQztZQUN2QyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sR0FBRyxJQUFJLFVBQVUsQ0FBYyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDMUUsT0FBTztRQUNYLENBQUM7UUFDRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBYyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFNUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2YsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsSUFBSSxDQUFDLFFBQVEsb0NBQW9DLENBQUMsQ0FBQztRQUN4RixDQUFDO1FBRUQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLEdBQUcsSUFBSSxVQUFVLENBQWMsV0FBVyxDQUFDLENBQUM7SUFDNUUsQ0FBQzs4R0F6QmlCLG1CQUFtQjtrR0FBbkIsbUJBQW1COzsyRkFBbkIsbUJBQW1CO2tCQUR4QyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHthZnRlck5leHRSZW5kZXIsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgaW5qZWN0LCBET0NVTUVOVH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB0eXBlIHtUb3VyQW5jaG9yRGlyZWN0aXZlfSBmcm9tICcuL3RvdXItYW5jaG9yLmRpcmVjdGl2ZSc7XHJcblxyXG5cclxuQERpcmVjdGl2ZSgpXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlVG91clByb3h5QW5jaG9yIHtcclxuXHJcbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgcmVhZG9ubHkgYW5jaG9yRGlyZWN0aXZlOiBUb3VyQW5jaG9yRGlyZWN0aXZlO1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudCA9IGluamVjdChET0NVTUVOVCk7XHJcblxyXG4gICAgcHVibGljIGFic3RyYWN0IGFuY2hvckVsOiBzdHJpbmcgfCBIVE1MRWxlbWVudDtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICBhZnRlck5leHRSZW5kZXIoe1xyXG4gICAgICAgICAgICByZWFkOiAoKSA9PiB0aGlzLnNldEFuY2hvckVsZW1lbnQoKVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc2V0QW5jaG9yRWxlbWVudCgpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5hbmNob3JFbCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSB7XHJcbiAgICAgICAgICAgIHRoaXMuYW5jaG9yRGlyZWN0aXZlLmVsZW1lbnQgPSBuZXcgRWxlbWVudFJlZjxIVE1MRWxlbWVudD4odGhpcy5hbmNob3JFbCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgaHRtbEVsZW1lbnQgPSB0aGlzLmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3I8SFRNTEVsZW1lbnQ+KHRoaXMuYW5jaG9yRWwpO1xyXG5cclxuICAgICAgICBpZiAoIWh0bWxFbGVtZW50KSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRWxlbWVudCB3aXRoIFwiJHt0aGlzLmFuY2hvckVsfVwiIENTUyBzZWxlY3RvciBjb3VsZCBub3QgYmUgZm91bmQhYCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmFuY2hvckRpcmVjdGl2ZS5lbGVtZW50ID0gbmV3IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KGh0bWxFbGVtZW50KTtcclxuICAgIH1cclxuXHJcbn1cclxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './public_api';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXVpLXRvdXItY29yZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYnMvbmd4LXVpLXRvdXItY29yZS9zcmMvbmd4LXVpLXRvdXItY29yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpY19hcGknO1xuIl19"],"names":["mergeStatic"],"mappings":"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"}