UNPKG

@ng-doc/ui-kit

Version:

<!-- PROJECT LOGO --> <br /> <div align="center"> <a href="https://github.com/ng-doc/ng-doc"> <img src="https://ng-doc.com/assets/images/ng-doc.svg?raw=true" alt="Logo" height="150px"> </a>

1 lines 49.3 kB
{"version":3,"file":"ng-doc-ui-kit-utils.mjs","sources":["../tmp-esm2022/utils/focus-utils.js","../tmp-esm2022/utils/overlay-utils.js","../tmp-esm2022/utils/position-utils.js","../tmp-esm2022/utils/ng-doc-ui-kit-utils.js"],"sourcesContent":["export class NgDocFocusUtils {\n static isNativeKeyboardFocusable(element) {\n if (element.hasAttribute('disabled') || element.getAttribute('tabIndex') === '-1') {\n return false;\n }\n if ((element instanceof HTMLElement && element.isContentEditable) ||\n element.getAttribute('tabIndex') === '0') {\n return true;\n }\n switch (element.tagName) {\n case 'BUTTON':\n case 'SELECT':\n case 'TEXTAREA':\n return true;\n case 'VIDEO':\n case 'AUDIO':\n return element.hasAttribute('controls');\n case 'INPUT':\n return element.getAttribute('type') !== 'hidden';\n case 'A':\n case 'LINK':\n return element.hasAttribute('href');\n default:\n return false;\n }\n }\n static getClosestKeyboardFocusable(initial, root, forward = true) {\n if (!root.ownerDocument) {\n return null;\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const svgNodeFilter = ((node) => 'ownerSVGElement' in node ? NodeFilter.FILTER_REJECT : NodeFilter.FILTER_ACCEPT);\n const treeWalker = root.ownerDocument.createTreeWalker(root, NodeFilter.SHOW_ELEMENT, svgNodeFilter);\n treeWalker.currentNode = initial;\n while (forward ? treeWalker.nextNode() : treeWalker.previousNode()) {\n if (treeWalker.currentNode instanceof HTMLElement) {\n initial = treeWalker.currentNode;\n }\n if (NgDocFocusUtils.isNativeKeyboardFocusable(initial)) {\n return initial;\n }\n }\n return null;\n }\n static focusClosestElement(initial, root, forward = true) {\n const focusable = NgDocFocusUtils.getClosestKeyboardFocusable(initial, root, forward);\n if (focusable) {\n focusable.focus();\n }\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXMtdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3VpLWtpdC91dGlscy9mb2N1cy11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sZUFBZTtJQUMzQixNQUFNLENBQUMseUJBQXlCLENBQUMsT0FBZ0I7UUFDaEQsSUFBSSxPQUFPLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDbkYsT0FBTyxLQUFLLENBQUM7UUFDZCxDQUFDO1FBRUQsSUFDQyxDQUFDLE9BQU8sWUFBWSxXQUFXLElBQUksT0FBTyxDQUFDLGlCQUFpQixDQUFDO1lBQzdELE9BQU8sQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLEtBQUssR0FBRyxFQUN2QyxDQUFDO1lBQ0YsT0FBTyxJQUFJLENBQUM7UUFDYixDQUFDO1FBRUQsUUFBUSxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDekIsS0FBSyxRQUFRLENBQUM7WUFDZCxLQUFLLFFBQVEsQ0FBQztZQUNkLEtBQUssVUFBVTtnQkFDZCxPQUFPLElBQUksQ0FBQztZQUNiLEtBQUssT0FBTyxDQUFDO1lBQ2IsS0FBSyxPQUFPO2dCQUNYLE9BQU8sT0FBTyxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUN6QyxLQUFLLE9BQU87Z0JBQ1gsT0FBTyxPQUFPLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxLQUFLLFFBQVEsQ0FBQztZQUNsRCxLQUFLLEdBQUcsQ0FBQztZQUNULEtBQUssTUFBTTtnQkFDVixPQUFPLE9BQU8sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDckM7Z0JBQ0MsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO0lBQ0YsQ0FBQztJQUVELE1BQU0sQ0FBQywyQkFBMkIsQ0FDakMsT0FBb0IsRUFDcEIsSUFBVSxFQUNWLFVBQW1CLElBQUk7UUFFdkIsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN6QixPQUFPLElBQUksQ0FBQztRQUNiLENBQUM7UUFFRCxtRUFBbUU7UUFDbkUsTUFBTSxhQUFhLEdBQWUsQ0FBQyxDQUFDLElBQVUsRUFBRSxFQUFFLENBQ2pELGlCQUFpQixJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBVSxDQUFDO1FBRTNGLE1BQU0sVUFBVSxHQUFlLElBQUksQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQ2pFLElBQUksRUFDSixVQUFVLENBQUMsWUFBWSxFQUN2QixhQUFhLENBQ2IsQ0FBQztRQUVGLFVBQVUsQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDO1FBRWpDLE9BQU8sT0FBTyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDO1lBQ3BFLElBQUksVUFBVSxDQUFDLFdBQVcsWUFBWSxXQUFXLEVBQUUsQ0FBQztnQkFDbkQsT0FBTyxHQUFHLFVBQVUsQ0FBQyxXQUFXLENBQUM7WUFDbEMsQ0FBQztZQUVELElBQUksZUFBZSxDQUFDLHlCQUF5QixDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0JBQ3hELE9BQU8sT0FBTyxDQUFDO1lBQ2hCLENBQUM7UUFDRixDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDYixDQUFDO0lBRUQsTUFBTSxDQUFDLG1CQUFtQixDQUFDLE9BQW9CLEVBQUUsSUFBVSxFQUFFLFVBQW1CLElBQUk7UUFDbkYsTUFBTSxTQUFTLEdBQXVCLGVBQWUsQ0FBQywyQkFBMkIsQ0FDaEYsT0FBTyxFQUNQLElBQUksRUFDSixPQUFPLENBQ1AsQ0FBQztRQUNGLElBQUksU0FBUyxFQUFFLENBQUM7WUFDZixTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDbkIsQ0FBQztJQUNGLENBQUM7Q0FDRCIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBOZ0RvY0ZvY3VzVXRpbHMge1xuXHRzdGF0aWMgaXNOYXRpdmVLZXlib2FyZEZvY3VzYWJsZShlbGVtZW50OiBFbGVtZW50KTogYm9vbGVhbiB7XG5cdFx0aWYgKGVsZW1lbnQuaGFzQXR0cmlidXRlKCdkaXNhYmxlZCcpIHx8IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCd0YWJJbmRleCcpID09PSAnLTEnKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0aWYgKFxuXHRcdFx0KGVsZW1lbnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCAmJiBlbGVtZW50LmlzQ29udGVudEVkaXRhYmxlKSB8fFxuXHRcdFx0ZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ3RhYkluZGV4JykgPT09ICcwJ1xuXHRcdCkge1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXG5cdFx0c3dpdGNoIChlbGVtZW50LnRhZ05hbWUpIHtcblx0XHRcdGNhc2UgJ0JVVFRPTic6XG5cdFx0XHRjYXNlICdTRUxFQ1QnOlxuXHRcdFx0Y2FzZSAnVEVYVEFSRUEnOlxuXHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdGNhc2UgJ1ZJREVPJzpcblx0XHRcdGNhc2UgJ0FVRElPJzpcblx0XHRcdFx0cmV0dXJuIGVsZW1lbnQuaGFzQXR0cmlidXRlKCdjb250cm9scycpO1xuXHRcdFx0Y2FzZSAnSU5QVVQnOlxuXHRcdFx0XHRyZXR1cm4gZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ3R5cGUnKSAhPT0gJ2hpZGRlbic7XG5cdFx0XHRjYXNlICdBJzpcblx0XHRcdGNhc2UgJ0xJTksnOlxuXHRcdFx0XHRyZXR1cm4gZWxlbWVudC5oYXNBdHRyaWJ1dGUoJ2hyZWYnKTtcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdH1cblxuXHRzdGF0aWMgZ2V0Q2xvc2VzdEtleWJvYXJkRm9jdXNhYmxlKFxuXHRcdGluaXRpYWw6IEhUTUxFbGVtZW50LFxuXHRcdHJvb3Q6IE5vZGUsXG5cdFx0Zm9yd2FyZDogYm9vbGVhbiA9IHRydWUsXG5cdCk6IEhUTUxFbGVtZW50IHwgbnVsbCB7XG5cdFx0aWYgKCFyb290Lm93bmVyRG9jdW1lbnQpIHtcblx0XHRcdHJldHVybiBudWxsO1xuXHRcdH1cblxuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWFzc2lnbm1lbnRcblx0XHRjb25zdCBzdmdOb2RlRmlsdGVyOiBOb2RlRmlsdGVyID0gKChub2RlOiBOb2RlKSA9PlxuXHRcdFx0J293bmVyU1ZHRWxlbWVudCcgaW4gbm9kZSA/IE5vZGVGaWx0ZXIuRklMVEVSX1JFSkVDVCA6IE5vZGVGaWx0ZXIuRklMVEVSX0FDQ0VQVCkgYXMgbmV2ZXI7XG5cblx0XHRjb25zdCB0cmVlV2Fsa2VyOiBUcmVlV2Fsa2VyID0gcm9vdC5vd25lckRvY3VtZW50LmNyZWF0ZVRyZWVXYWxrZXIoXG5cdFx0XHRyb290LFxuXHRcdFx0Tm9kZUZpbHRlci5TSE9XX0VMRU1FTlQsXG5cdFx0XHRzdmdOb2RlRmlsdGVyLFxuXHRcdCk7XG5cblx0XHR0cmVlV2Fsa2VyLmN1cnJlbnROb2RlID0gaW5pdGlhbDtcblxuXHRcdHdoaWxlIChmb3J3YXJkID8gdHJlZVdhbGtlci5uZXh0Tm9kZSgpIDogdHJlZVdhbGtlci5wcmV2aW91c05vZGUoKSkge1xuXHRcdFx0aWYgKHRyZWVXYWxrZXIuY3VycmVudE5vZGUgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkge1xuXHRcdFx0XHRpbml0aWFsID0gdHJlZVdhbGtlci5jdXJyZW50Tm9kZTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKE5nRG9jRm9jdXNVdGlscy5pc05hdGl2ZUtleWJvYXJkRm9jdXNhYmxlKGluaXRpYWwpKSB7XG5cdFx0XHRcdHJldHVybiBpbml0aWFsO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBudWxsO1xuXHR9XG5cblx0c3RhdGljIGZvY3VzQ2xvc2VzdEVsZW1lbnQoaW5pdGlhbDogSFRNTEVsZW1lbnQsIHJvb3Q6IE5vZGUsIGZvcndhcmQ6IGJvb2xlYW4gPSB0cnVlKTogdm9pZCB7XG5cdFx0Y29uc3QgZm9jdXNhYmxlOiBIVE1MRWxlbWVudCB8IG51bGwgPSBOZ0RvY0ZvY3VzVXRpbHMuZ2V0Q2xvc2VzdEtleWJvYXJkRm9jdXNhYmxlKFxuXHRcdFx0aW5pdGlhbCxcblx0XHRcdHJvb3QsXG5cdFx0XHRmb3J3YXJkLFxuXHRcdCk7XG5cdFx0aWYgKGZvY3VzYWJsZSkge1xuXHRcdFx0Zm9jdXNhYmxlLmZvY3VzKCk7XG5cdFx0fVxuXHR9XG59XG4iXX0=","import { asArray } from '@ng-doc/core/helpers/as-array';\nexport const NG_DOC_ARROW_MARGIN = 32;\nconst POSITION_DESCRIPTION = {\n 'top-left': {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n },\n 'top-center': {\n originX: 'center',\n originY: 'top',\n overlayX: 'center',\n overlayY: 'bottom',\n },\n 'top-right': {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n },\n 'bottom-left': {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n },\n 'bottom-center': {\n originX: 'center',\n originY: 'bottom',\n overlayX: 'center',\n overlayY: 'top',\n },\n 'bottom-right': {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n },\n 'left-top': {\n originX: 'start',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'top',\n },\n 'left-center': {\n originX: 'start',\n originY: 'center',\n overlayX: 'end',\n overlayY: 'center',\n },\n 'left-bottom': {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'bottom',\n },\n 'right-top': {\n originX: 'end',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'top',\n },\n 'right-center': {\n originX: 'end',\n originY: 'center',\n overlayX: 'start',\n overlayY: 'center',\n },\n 'right-bottom': {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'bottom',\n },\n};\nexport class NgDocOverlayUtils {\n static getConnectedPosition(dropdownPositions, origin, offset = 0, withPointer = false) {\n return asArray(dropdownPositions).map((position) => {\n const connectedPosition = NgDocOverlayUtils.toConnectedPosition(position);\n const marginMultiplier = NgDocOverlayUtils.getMarginMultiplier(connectedPosition);\n const marginX = !NgDocOverlayUtils.isVerticalPosition(connectedPosition)\n ? offset * marginMultiplier\n : 0;\n const marginY = NgDocOverlayUtils.isVerticalPosition(connectedPosition)\n ? offset * marginMultiplier\n : 0;\n connectedPosition.offsetX = connectedPosition.offsetX || 0;\n connectedPosition.offsetY = connectedPosition.offsetY || 0;\n connectedPosition.offsetX +=\n (withPointer ? NgDocOverlayUtils.getOffsetX(origin, connectedPosition) : 0) + marginX;\n connectedPosition.offsetY +=\n (withPointer ? NgDocOverlayUtils.getOffsetY(origin, connectedPosition) : 0) + marginY;\n return connectedPosition;\n });\n }\n static toConnectedPosition(position) {\n return typeof position === 'string' ? { ...POSITION_DESCRIPTION[position] } : { ...position };\n }\n static toConnectedPositions(positions) {\n return positions.map(NgDocOverlayUtils.toConnectedPosition);\n }\n static getOffsetX(origin, position) {\n const isVertical = NgDocOverlayUtils.isVerticalPosition(position);\n const offsetMultiplier = NgDocOverlayUtils.getOffsetMultiplier(position);\n const isCenter = NgDocOverlayUtils.isCenterPosition(position);\n const width = (position.originX === 'center' && position.overlayX !== 'center') ||\n NgDocOverlayUtils.overlayIsOutByX(position)\n ? NG_DOC_ARROW_MARGIN - 24\n : origin.offsetWidth;\n return ((isVertical && !isCenter ? Math.max(NG_DOC_ARROW_MARGIN - width, 0) : 0) * offsetMultiplier);\n }\n static getOffsetY(origin, position) {\n const isVertical = NgDocOverlayUtils.isVerticalPosition(position);\n const offsetMultiplier = NgDocOverlayUtils.getOffsetMultiplier(position);\n const isCenter = NgDocOverlayUtils.isCenterPosition(position);\n const height = (position.originY === 'center' && position.overlayY !== 'center') ||\n NgDocOverlayUtils.overlayIsOutByY(position)\n ? NG_DOC_ARROW_MARGIN - 24\n : origin.offsetHeight;\n return ((!isVertical && !isCenter ? Math.max(NG_DOC_ARROW_MARGIN - height, 0) : 0) * offsetMultiplier);\n }\n static overlayIsOutByX(position) {\n return ((position.originX === 'start' && position.overlayX === 'end') ||\n (position.originX === 'end' && position.overlayX === 'start'));\n }\n static overlayIsOutByY(position) {\n return ((position.originY === 'top' && position.overlayY === 'bottom') ||\n (position.originY === 'bottom' && position.overlayY === 'top'));\n }\n static getOffsetMultiplier(position) {\n return (NgDocOverlayUtils.isVerticalPosition(position) && position.overlayX === 'end') ||\n (!NgDocOverlayUtils.isVerticalPosition(position) && position.overlayY === 'bottom')\n ? 1\n : -1;\n }\n static getMarginMultiplier(position) {\n return ['right', 'bottom'].includes(NgDocOverlayUtils.getRelativePosition(position) || '')\n ? 1\n : -1;\n }\n static isVerticalPosition(position) {\n return ['bottom', 'top'].includes(NgDocOverlayUtils.getRelativePosition(position) || '');\n }\n static isCenterPosition(position) {\n return position.overlayX === 'center' || position.overlayY === 'center';\n }\n static getPositionAlign(position) {\n if (NgDocOverlayUtils.isVerticalPosition(position)) {\n return position.overlayX === 'start' ? 'left' : position.overlayX === 'end' ? 'right' : null;\n }\n else {\n return position.originY === 'top' ? 'top' : position.originY === 'bottom' ? 'bottom' : null;\n }\n }\n static getRelativePosition(pos) {\n const position = NgDocOverlayUtils.toConnectedPosition(pos);\n if (position.originY === 'bottom' && position.overlayY === 'top') {\n return 'bottom';\n }\n if (position.originY === 'top' && position.overlayY === 'bottom') {\n return 'top';\n }\n if (position.originX === 'start' && position.overlayX === 'end') {\n return 'left';\n }\n if (position.originX === 'end' && position.overlayX === 'start') {\n return 'right';\n }\n return null;\n }\n static getOverlayPosition(positionPair) {\n const existsPosition = Object.keys(POSITION_DESCRIPTION).find((key) => {\n const positionDescription = POSITION_DESCRIPTION[key];\n return (positionPair.originX === positionDescription.originX &&\n positionPair.originY === positionDescription.originY &&\n positionPair.overlayX === positionDescription.overlayX &&\n positionPair.overlayY === positionDescription.overlayY);\n });\n return existsPosition ? existsPosition : positionPair;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvdWkta2l0L3V0aWxzL292ZXJsYXktdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBUXhELE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFXLEVBQUUsQ0FBQztBQUU5QyxNQUFNLG9CQUFvQixHQUFzQztJQUM5RCxVQUFVLEVBQUU7UUFDVixPQUFPLEVBQUUsT0FBTztRQUNoQixPQUFPLEVBQUUsS0FBSztRQUNkLFFBQVEsRUFBRSxPQUFPO1FBQ2pCLFFBQVEsRUFBRSxRQUFRO0tBQ25CO0lBQ0QsWUFBWSxFQUFFO1FBQ1osT0FBTyxFQUFFLFFBQVE7UUFDakIsT0FBTyxFQUFFLEtBQUs7UUFDZCxRQUFRLEVBQUUsUUFBUTtRQUNsQixRQUFRLEVBQUUsUUFBUTtLQUNuQjtJQUNELFdBQVcsRUFBRTtRQUNYLE9BQU8sRUFBRSxLQUFLO1FBQ2QsT0FBTyxFQUFFLEtBQUs7UUFDZCxRQUFRLEVBQUUsS0FBSztRQUNmLFFBQVEsRUFBRSxRQUFRO0tBQ25CO0lBQ0QsYUFBYSxFQUFFO1FBQ2IsT0FBTyxFQUFFLE9BQU87UUFDaEIsT0FBTyxFQUFFLFFBQVE7UUFDakIsUUFBUSxFQUFFLE9BQU87UUFDakIsUUFBUSxFQUFFLEtBQUs7S0FDaEI7SUFDRCxlQUFlLEVBQUU7UUFDZixPQUFPLEVBQUUsUUFBUTtRQUNqQixPQUFPLEVBQUUsUUFBUTtRQUNqQixRQUFRLEVBQUUsUUFBUTtRQUNsQixRQUFRLEVBQUUsS0FBSztLQUNoQjtJQUNELGNBQWMsRUFBRTtRQUNkLE9BQU8sRUFBRSxLQUFLO1FBQ2QsT0FBTyxFQUFFLFFBQVE7UUFDakIsUUFBUSxFQUFFLEtBQUs7UUFDZixRQUFRLEVBQUUsS0FBSztLQUNoQjtJQUNELFVBQVUsRUFBRTtRQUNWLE9BQU8sRUFBRSxP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QUFZLENBQUMsUUFBUSxLQUFLLG1CQUFtQixDQUFDLFFBQVE7Z0JBQ3RELFlBQVksQ0FBQyxRQUFRLEtBQUssbUJBQW1CLENBQUMsUUFBUSxDQUN2RCxDQUFDO1FBQ0osQ0FBQyxDQUNzQixDQUFDO1FBQzFCLE9BQU8sY0FBYyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQztJQUN4RCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25uZWN0ZWRQb3NpdGlvbiwgQ29ubmVjdGlvblBvc2l0aW9uUGFpciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IGFzQXJyYXkgfSBmcm9tICdAbmctZG9jL2NvcmUvaGVscGVycy9hcy1hcnJheSc7XG5pbXBvcnQge1xuICBOZ0RvY0hvcml6b250YWxBbGlnbixcbiAgTmdEb2NPdmVybGF5UG9zaXRpb24sXG4gIE5nRG9jT3ZlcmxheVJlbGF0aXZlUG9zaXRpb24sXG4gIE5nRG9jVmVydGljYWxBbGlnbixcbn0gZnJvbSAnQG5nLWRvYy91aS1raXQvdHlwZXMnO1xuXG5leHBvcnQgY29uc3QgTkdfRE9DX0FSUk9XX01BUkdJTjogbnVtYmVyID0gMzI7XG5cbmNvbnN0IFBPU0lUSU9OX0RFU0NSSVBUSU9OOiBSZWNvcmQ8c3RyaW5nLCBDb25uZWN0ZWRQb3NpdGlvbj4gPSB7XG4gICd0b3AtbGVmdCc6IHtcbiAgICBvcmlnaW5YOiAnc3RhcnQnLFxuICAgIG9yaWdpblk6ICd0b3AnLFxuICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxuICAgIG92ZXJsYXlZOiAnYm90dG9tJyxcbiAgfSxcbiAgJ3RvcC1jZW50ZXInOiB7XG4gICAgb3JpZ2luWDogJ2NlbnRlcicsXG4gICAgb3JpZ2luWTogJ3RvcCcsXG4gICAgb3ZlcmxheVg6ICdjZW50ZXInLFxuICAgIG92ZXJsYXlZOiAnYm90dG9tJyxcbiAgfSxcbiAgJ3RvcC1yaWdodCc6IHtcbiAgICBvcmlnaW5YOiAnZW5kJyxcbiAgICBvcmlnaW5ZOiAndG9wJyxcbiAgICBvdmVybGF5WDogJ2VuZCcsXG4gICAgb3ZlcmxheVk6ICdib3R0b20nLFxuICB9LFxuICAnYm90dG9tLWxlZnQnOiB7XG4gICAgb3JpZ2luWDogJ3N0YXJ0JyxcbiAgICBvcmlnaW5ZOiAnYm90dG9tJyxcbiAgICBvdmVybGF5WDogJ3N0YXJ0JyxcbiAgICBvdmVybGF5WTogJ3RvcCcsXG4gIH0sXG4gICdib3R0b20tY2VudGVyJzoge1xuICAgIG9yaWdpblg6ICdjZW50ZXInLFxuICAgIG9yaWdpblk6ICdib3R0b20nLFxuICAgIG92ZXJsYXlYOiAnY2VudGVyJyxcbiAgICBvdmVybGF5WTogJ3RvcCcsXG4gIH0sXG4gICdib3R0b20tcmlnaHQnOiB7XG4gICAgb3JpZ2luWDogJ2VuZCcsXG4gICAgb3JpZ2luWTogJ2JvdHRvbScsXG4gICAgb3ZlcmxheVg6ICdlbmQnLFxuICAgIG92ZXJsYXlZOiAndG9wJyxcbiAgfSxcbiAgJ2xlZnQtdG9wJzoge1xuICAgIG9yaWdpblg6ICdzdGFydCcsXG4gICAgb3JpZ2luWTogJ3RvcCcsXG4gICAgb3ZlcmxheVg6ICdlbmQnLFxuICAgIG92ZXJsYXlZOiAndG9wJyxcbiAgfSxcbiAgJ2xlZnQtY2VudGVyJzoge1xuICAgIG9yaWdpblg6ICdzdGFydCcsXG4gICAgb3JpZ2luWTogJ2NlbnRlcicsXG4gICAgb3ZlcmxheVg6ICdlbmQnLFxuICAgIG92ZXJsYXlZOiAnY2VudGVyJyxcbiAgfSxcbiAgJ2xlZnQtYm90dG9tJzoge1xuICAgIG9yaWdpblg6ICdzdGFydCcsXG4gICAgb3JpZ2luWTogJ2JvdHRvbScsXG4gICAgb3ZlcmxheVg6ICdlbmQnLFxuICAgIG92ZXJsYXlZOiAnYm90dG9tJyxcbiAgfSxcbiAgJ3JpZ2h0LXRvcCc6IHtcbiAgICBvcmlnaW5YOiAnZW5kJyxcbiAgICBvcmlnaW5ZOiAndG9wJyxcbiAgICBvdmVybGF5WDogJ3N0YXJ0JyxcbiAgICBvdmVybGF5WTogJ3RvcCcsXG4gIH0sXG4gICdyaWdodC1jZW50ZXInOiB7XG4gICAgb3JpZ2luWDogJ2VuZCcsXG4gICAgb3JpZ2luWTogJ2NlbnRlcicsXG4gICAgb3ZlcmxheVg6ICdzdGFydCcsXG4gICAgb3ZlcmxheVk6ICdjZW50ZXInLFxuICB9LFxuICAncmlnaHQtYm90dG9tJzoge1xuICAgIG9yaWdpblg6ICdlbmQnLFxuICAgIG9yaWdpblk6ICdib3R0b20nLFxuICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxuICAgIG92ZXJsYXlZOiAnYm90dG9tJyxcbiAgfSxcbn07XG5cbmV4cG9ydCBjbGFzcyBOZ0RvY092ZXJsYXlVdGlscyB7XG4gIHN0YXRpYyBnZXRDb25uZWN0ZWRQb3NpdGlvbihcbiAgICBkcm9wZG93blBvc2l0aW9uczogTmdEb2NPdmVybGF5UG9zaXRpb24gfCBOZ0RvY092ZXJsYXlQb3NpdGlvbltdLFxuICAgIG9yaWdpbjogSFRNTEVsZW1lbnQsXG4gICAgb2Zmc2V0OiBudW1iZXIgPSAwLFxuICAgIHdpdGhQb2ludGVyOiBib29sZWFuID0gZmFsc2UsXG4gICk6IENvbm5lY3RlZFBvc2l0aW9uW10ge1xuICAgIHJldHVybiBhc0FycmF5KGRyb3Bkb3duUG9zaXRpb25zKS5tYXAoKHBvc2l0aW9uOiBOZ0RvY092ZXJsYXlQb3NpdGlvbikgPT4ge1xuICAgICAgY29uc3QgY29ubmVjdGVkUG9zaXRpb246IENvbm5lY3RlZFBvc2l0aW9uID0gTmdEb2NPdmVybGF5VXRpbHMudG9Db25uZWN0ZWRQb3NpdGlvbihwb3NpdGlvbik7XG4gICAgICBjb25zdCBtYXJnaW5NdWx0aXBsaWVyOiBudW1iZXIgPSBOZ0RvY092ZXJsYXlVdGlscy5nZXRNYXJnaW5NdWx0aXBsaWVyKGNvbm5lY3RlZFBvc2l0aW9uKTtcbiAgICAgIGNvbnN0IG1hcmdpblg6IG51bWJlciA9ICFOZ0RvY092ZXJsYXlVdGlscy5pc1ZlcnRpY2FsUG9zaXRpb24oY29ubmVjdGVkUG9zaXRpb24pXG4gICAgICAgID8gb2Zmc2V0ICogbWFyZ2luTXVsdGlwbGllclxuICAgICAgICA6IDA7XG4gICAgICBjb25zdCBtYXJnaW5ZOiBudW1iZXIgPSBOZ0RvY092ZXJsYXlVdGlscy5pc1ZlcnRpY2FsUG9zaXRpb24oY29ubmVjdGVkUG9zaXRpb24pXG4gICAgICAgID8gb2Zmc2V0ICogbWFyZ2luTXVsdGlwbGllclxuICAgICAgICA6IDA7XG4gICAgICBjb25uZWN0ZWRQb3NpdGlvbi5vZmZzZXRYID0gY29ubmVjdGVkUG9zaXRpb24ub2Zmc2V0WCB8fCAwO1xuICAgICAgY29ubmVjdGVkUG9zaXRpb24ub2Zmc2V0WSA9IGNvbm5lY3RlZFBvc2l0aW9uLm9mZnNldFkgfHwgMDtcbiAgICAgIGNvbm5lY3RlZFBvc2l0aW9uLm9mZnNldFggKz1cbiAgICAgICAgKHdpdGhQb2ludGVyID8gTmdEb2NPdmVybGF5VXRpbHMuZ2V0T2Zmc2V0WChvcmlnaW4sIGNvbm5lY3RlZFBvc2l0aW9uKSA6IDApICsgbWFyZ2luWDtcbiAgICAgIGNvbm5lY3RlZFBvc2l0aW9uLm9mZnNldFkgKz1cbiAgICAgICAgKHdpdGhQb2ludGVyID8gTmdEb2NPdmVybGF5VXRpbHMuZ2V0T2Zmc2V0WShvcmlnaW4sIGNvbm5lY3RlZFBvc2l0aW9uKSA6IDApICsgbWFyZ2luWTtcbiAgICAgIHJldHVybiBjb25uZWN0ZWRQb3NpdGlvbjtcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyB0b0Nvbm5lY3RlZFBvc2l0aW9uKHBvc2l0aW9uOiBOZ0RvY092ZXJsYXlQb3NpdGlvbik6IENvbm5lY3RlZFBvc2l0aW9uIHtcbiAgICByZXR1cm4gdHlwZW9mIHBvc2l0aW9uID09PSAnc3RyaW5nJyA/IHsgLi4uUE9TSVRJT05fREVTQ1JJUFRJT05bcG9zaXRpb25dIH0gOiB7IC4uLnBvc2l0aW9uIH07XG4gIH1cblxuICBzdGF0aWMgdG9Db25uZWN0ZWRQb3NpdGlvbnMocG9zaXRpb25zOiBOZ0RvY092ZXJsYXlQb3NpdGlvbltdKTogQ29ubmVjdGVkUG9zaXRpb25bXSB7XG4gICAgcmV0dXJuIHBvc2l0aW9ucy5tYXAoTmdEb2NPdmVybGF5VXRpbHMudG9Db25uZWN0ZWRQb3NpdGlvbik7XG4gIH1cblxuICBzdGF0aWMgZ2V0T2Zmc2V0WChvcmlnaW46IEhUTUxFbGVtZW50LCBwb3NpdGlvbjogQ29ubmVjdGVkUG9zaXRpb24pOiBudW1iZXIge1xuICAgIGNvbnN0IGlzVmVydGljYWw6IGJvb2xlYW4gPSBOZ0RvY092ZXJsYXlVdGlscy5pc1ZlcnRpY2FsUG9zaXRpb24ocG9zaXRpb24pO1xuICAgIGNvbnN0IG9mZnNldE11bHRpcGxpZXI6IG51bWJlciA9IE5nRG9jT3ZlcmxheVV0aWxzLmdldE9mZnNldE11bHRpcGxpZXIocG9zaXRpb24pO1xuICAgIGNvbnN0IGlzQ2VudGVyOiBib29sZWFuID0gTmdEb2NPdmVybGF5VXRpbHMuaXNDZW50ZXJQb3NpdGlvbihwb3NpdGlvbik7XG4gICAgY29uc3Qgd2lkdGg6IG51bWJlciA9XG4gICAgICAocG9zaXRpb24ub3JpZ2luWCA9PT0gJ2NlbnRlcicgJiYgcG9zaXRpb24ub3ZlcmxheVggIT09ICdjZW50ZXInKSB8fFxuICAgICAgTmdEb2NPdmVybGF5VXRpbHMub3ZlcmxheUlzT3V0QnlYKHBvc2l0aW9uKVxuICAgICAgICA/IE5HX0RPQ19BUlJPV19NQVJHSU4gLSAyNFxuICAgICAgICA6IG9yaWdpbi5vZmZzZXRXaWR0aDtcbiAgICByZXR1cm4gKFxuICAgICAgKGlzVmVydGljYWwgJiYgIWlzQ2VudGVyID8gTWF0aC5tYXgoTkdfRE9DX0FSUk9XX01BUkdJTiAtIHdpZHRoLCAwKSA6IDApICogb2Zmc2V0TXVsdGlwbGllclxuICAgICk7XG4gIH1cblxuICBzdGF0aWMgZ2V0T2Zmc2V0WShvcmlnaW46IEhUTUxFbGVtZW50LCBwb3NpdGlvbjogQ29ubmVjdGVkUG9zaXRpb24pOiBudW1iZXIge1xuICAgIGNvbnN0IGlzVmVydGljYWw6IGJvb2xlYW4gPSBOZ0RvY092ZXJsYXlVdGlscy5pc1ZlcnRpY2FsUG9zaXRpb24ocG9zaXRpb24pO1xuICAgIGNvbnN0IG9mZnNldE11bHRpcGxpZXI6IG51bWJlciA9IE5nRG9jT3ZlcmxheVV0aWxzLmdldE9mZnNldE11bHRpcGxpZXIocG9zaXRpb24pO1xuICAgIGNvbnN0IGlzQ2VudGVyOiBib29sZWFuID0gTmdEb2NPdmVybGF5VXRpbHMuaXNDZW50ZXJQb3NpdGlvbihwb3NpdGlvbik7XG4gICAgY29uc3QgaGVpZ2h0OiBudW1iZXIgPVxuICAgICAgKHBvc2l0aW9uLm9yaWdpblkgPT09ICdjZW50ZXInICYmIHBvc2l0aW9uLm92ZXJsYXlZICE9PSAnY2VudGVyJykgfHxcbiAgICAgIE5nRG9jT3ZlcmxheVV0aWxzLm92ZXJsYXlJc091dEJ5WShwb3NpdGlvbilcbiAgICAgICAgPyBOR19ET0NfQVJST1dfTUFSR0lOIC0gMjRcbiAgICAgICAgOiBvcmlnaW4ub2Zmc2V0SGVpZ2h0O1xuICAgIHJldHVybiAoXG4gICAgICAoIWlzVmVydGljYWwgJiYgIWlzQ2VudGVyID8gTWF0aC5tYXgoTkdfRE9DX0FSUk9XX01BUkdJTiAtIGhlaWdodCwgMCkgOiAwKSAqIG9mZnNldE11bHRpcGxpZXJcbiAgICApO1xuICB9XG5cbiAgc3RhdGljIG92ZXJsYXlJc091dEJ5WChwb3NpdGlvbjogQ29ubmVjdGVkUG9zaXRpb24pOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgKHBvc2l0aW9uLm9yaWdpblggPT09ICdzdGFydCcgJiYgcG9zaXRpb24ub3ZlcmxheVggPT09ICdlbmQnKSB8fFxuICAgICAgKHBvc2l0aW9uLm9yaWdpblggPT09ICdlbmQnICYmIHBvc2l0aW9uLm92ZXJsYXlYID09PSAnc3RhcnQnKVxuICAgICk7XG4gIH1cblxuICBzdGF0aWMgb3ZlcmxheUlzT3V0QnlZKHBvc2l0aW9uOiBDb25uZWN0ZWRQb3NpdGlvbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICAocG9zaXRpb24ub3JpZ2luWSA9PT0gJ3RvcCcgJiYgcG9zaXRpb24ub3ZlcmxheVkgPT09ICdib3R0b20nKSB8fFxuICAgICAgKHBvc2l0aW9uLm9yaWdpblkgPT09ICdib3R0b20nICYmIHBvc2l0aW9uLm92ZXJsYXlZID09PSAndG9wJylcbiAgICApO1xuICB9XG5cbiAgc3RhdGljIGdldE9mZnNldE11bHRpcGxpZXIocG9zaXRpb246IENvbm5lY3RlZFBvc2l0aW9uKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKE5nRG9jT3ZlcmxheVV0aWxzLmlzVmVydGljYWxQb3NpdGlvbihwb3NpdGlvbikgJiYgcG9zaXRpb24ub3ZlcmxheVggPT09ICdlbmQnKSB8fFxuICAgICAgKCFOZ0RvY092ZXJsYXlVdGlscy5pc1ZlcnRpY2FsUG9zaXRpb24ocG9zaXRpb24pICYmIHBvc2l0aW9uLm92ZXJsYXlZID09PSAnYm90dG9tJylcbiAgICAgID8gMVxuICAgICAgOiAtMTtcbiAgfVxuXG4gIHN0YXRpYyBnZXRNYXJnaW5NdWx0aXBsaWVyKHBvc2l0aW9uOiBDb25uZWN0ZWRQb3NpdGlvbik6IG51bWJlciB7XG4gICAgcmV0dXJuIFsncmlnaHQnLCAnYm90dG9tJ10uaW5jbHVkZXMoTmdEb2NPdmVybGF5VXRpbHMuZ2V0UmVsYXRpdmVQb3NpdGlvbihwb3NpdGlvbikgfHwgJycpXG4gICAgICA/IDFcbiAgICAgIDogLTE7XG4gIH1cblxuICBzdGF0aWMgaXNWZXJ0aWNhbFBvc2l0aW9uKHBvc2l0aW9uOiBDb25uZWN0ZWRQb3NpdGlvbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBbJ2JvdHRvbScsICd0b3AnXS5pbmNsdWRlcyhOZ0RvY092ZXJsYXlVdGlscy5nZXRSZWxhdGl2ZVBvc2l0aW9uKHBvc2l0aW9uKSB8fCAnJyk7XG4gIH1cblxuICBzdGF0aWMgaXNDZW50ZXJQb3NpdGlvbihwb3NpdGlvbjogQ29ubmVjdGVkUG9zaXRpb24pOiBib29sZWFuIHtcbiAgICByZXR1cm4gcG9zaXRpb24ub3ZlcmxheVggPT09ICdjZW50ZXInIHx8IHBvc2l0aW9uLm92ZXJsYXlZID09PSAnY2VudGVyJztcbiAgfVxuXG4gIHN0YXRpYyBnZXRQb3NpdGlvbkFsaWduKFxuICAgIHBvc2l0aW9uOiBDb25uZWN0ZWRQb3NpdGlvbixcbiAgKTogTmdEb2NIb3Jpem9udGFsQWxpZ24gfCBOZ0RvY1ZlcnRpY2FsQWxpZ24gfCBudWxsIHtcbiAgICBpZiAoTmdEb2NPdmVybGF5VXRpbHMuaXNWZXJ0aWNhbFBvc2l0aW9uKHBvc2l0aW9uKSkge1xuICAgICAgcmV0dXJuIHBvc2l0aW9uLm92ZXJsYXlYID09PSAnc3RhcnQnID8gJ2xlZnQnIDogcG9zaXRpb24ub3ZlcmxheVggPT09ICdlbmQnID8gJ3JpZ2h0JyA6IG51bGw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBwb3NpdGlvbi5vcmlnaW5ZID09PSAndG9wJyA/ICd0b3AnIDogcG9zaXRpb24ub3JpZ2luWSA9PT0gJ2JvdHRvbScgPyAnYm90dG9tJyA6IG51bGw7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGdldFJlbGF0aXZlUG9zaXRpb24ocG9zOiBOZ0RvY092ZXJsYXlQb3NpdGlvbik6IE5nRG9jT3ZlcmxheVJlbGF0aXZlUG9zaXRpb24gfCBudWxsIHtcbiAgICBjb25zdCBwb3NpdGlvbjogQ29ubmVjdGVkUG9zaXRpb24gPSBOZ0RvY092ZXJsYXlVdGlscy50b0Nvbm5lY3RlZFBvc2l0aW9uKHBvcyk7XG4gICAgaWYgKHBvc2l0aW9uLm9yaWdpblkgPT09ICdib3R0b20nICYmIHBvc2l0aW9uLm92ZXJsYXlZID09PSAndG9wJykge1xuICAgICAgcmV0dXJuICdib3R0b20nO1xuICAgIH1cbiAgICBpZiAocG9zaXRpb24ub3JpZ2luWSA9PT0gJ3RvcCcgJiYgcG9zaXRpb24ub3ZlcmxheVkgPT09ICdib3R0b20nKSB7XG4gICAgICByZXR1cm4gJ3RvcCc7XG4gICAgfVxuICAgIGlmIChwb3NpdGlvbi5vcmlnaW5YID09PSAnc3RhcnQnICYmIHBvc2l0aW9uLm92ZXJsYXlYID09PSAnZW5kJykge1xuICAgICAgcmV0dXJuICdsZWZ0JztcbiAgICB9XG4gICAgaWYgKHBvc2l0aW9uLm9yaWdpblggPT09ICdlbmQnICYmIHBvc2l0aW9uLm92ZXJsYXlYID09PSAnc3RhcnQnKSB7XG4gICAgICByZXR1cm4gJ3JpZ2h0JztcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBzdGF0aWMgZ2V0T3ZlcmxheVBvc2l0aW9uKHBvc2l0aW9uUGFpcjogQ29ubmVjdGlvblBvc2l0aW9uUGFpcik6IE5nRG9jT3ZlcmxheVBvc2l0aW9uIHtcbiAgICBjb25zdCBleGlzdHNQb3NpdGlvbjogTmdEb2NPdmVybGF5UG9zaXRpb24gPSBPYmplY3Qua2V5cyhQT1NJVElPTl9ERVNDUklQVElPTikuZmluZChcbiAgICAgIChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCBwb3NpdGlvbkRlc2NyaXB0aW9uOiBDb25uZWN0ZWRQb3NpdGlvbiA9IFBPU0lUSU9OX0RFU0NSSVBUSU9OW2tleV07XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgcG9zaXRpb25QYWlyLm9yaWdpblggPT09IHBvc2l0aW9uRGVzY3JpcHRpb24ub3JpZ2luWCAmJlxuICAgICAgICAgIHBvc2l0aW9uUGFpci5vcmlnaW5ZID09PSBwb3NpdGlvbkRlc2NyaXB0aW9uLm9yaWdpblkgJiZcbiAgICAgICAgICBwb3NpdGlvblBhaXIub3ZlcmxheVggPT09IHBvc2l0aW9uRGVzY3JpcHRpb24ub3ZlcmxheVggJiZcbiAgICAgICAgICBwb3NpdGlvblBhaXIub3ZlcmxheVkgPT09IHBvc2l0aW9uRGVzY3JpcHRpb24ub3ZlcmxheVlcbiAgICAgICAgKTtcbiAgICAgIH0sXG4gICAgKSBhcyBOZ0RvY092ZXJsYXlQb3NpdGlvbjtcbiAgICByZXR1cm4gZXhpc3RzUG9zaXRpb24gPyBleGlzdHNQb3NpdGlvbiA6IHBvc2l0aW9uUGFpcjtcbiAgfVxufVxuIl19","export class NgDocPositionUtils {\n /**\n * Getting the position of the element relative to the viewPort, this function is faster than BoundingClientRect,\n * it also takes into account the change in the position of the element through transform\n * @param element\n */\n static getElementPosition(element) {\n let xPos = 0;\n let yPos = 0;\n while (element) {\n if (element === document.body) {\n const documentElement = document.documentElement;\n xPos +=\n documentElement.offsetLeft - documentElement.scrollLeft + documentElement.clientLeft;\n yPos += documentElement.offsetTop - documentElement.scrollTop + documentElement.clientTop;\n element = null;\n }\n else {\n const elementMatrix = new DOMMatrix(element.style.transform);\n xPos += element.offsetLeft - element.scrollLeft + element.clientLeft + elementMatrix.m41;\n yPos += element.offsetTop - element.scrollTop + element.clientTop + elementMatrix.m42;\n element = NgDocPositionUtils.getOffsetParent(element);\n }\n }\n return { x: xPos, y: yPos };\n }\n /**\n * An implementation of the element.offsetParent function, this implementation closes a bug in Firefox when it\n * returns an offsetParent for elements with position: fixed\n * @param element\n */\n static getOffsetParent(element) {\n const computerStyles = getComputedStyle(element);\n if (computerStyles.position === 'fixed' || computerStyles.display === 'none') {\n return null;\n }\n return element.offsetParent;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9zaXRpb24tdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3VpLWtpdC91dGlscy9wb3NpdGlvbi11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLE9BQU8sa0JBQWtCO0lBQzlCOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsa0JBQWtCLENBQUMsT0FBMkI7UUFDcEQsSUFBSSxJQUFJLEdBQVcsQ0FBQyxDQUFDO1FBQ3JCLElBQUksSUFBSSxHQUFXLENBQUMsQ0FBQztRQUVyQixPQUFPLE9BQU8sRUFBRSxDQUFDO1lBQ2hCLElBQUksT0FBTyxLQUFLLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDL0IsTUFBTSxlQUFlLEdBQWdCLFFBQVEsQ0FBQyxlQUFlLENBQUM7Z0JBQzlELElBQUk7b0JBQ0gsZUFBZSxDQUFDLFVBQVUsR0FBRyxlQUFlLENBQUMsVUFBVSxHQUFHLGVBQWUsQ0FBQyxVQUFVLENBQUM7Z0JBQ3RGLElBQUksSUFBSSxlQUFlLENBQUMsU0FBUyxHQUFHLGVBQWUsQ0FBQyxTQUFTLEdBQUcsZUFBZSxDQUFDLFNBQVMsQ0FBQztnQkFDMUYsT0FBTyxHQUFHLElBQUksQ0FBQztZQUNoQixDQUFDO2lCQUFNLENBQUM7Z0JBQ1AsTUFBTSxhQUFhLEdBQWMsSUFBSSxTQUFTLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDeEUsSUFBSSxJQUFJLE9BQU8sQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxHQUFHLGFBQWEsQ0FBQyxHQUFHLENBQUM7Z0JBQ3pGLElBQUksSUFBSSxPQUFPLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDLFNBQVMsR0FBRyxhQUFhLENBQUMsR0FBRyxDQUFDO2dCQUN0RixPQUFPLEdBQUcsa0JBQWtCLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBZ0IsQ0FBQztZQUN0RSxDQUFDO1FBQ0YsQ0FBQztRQUNELE9BQU8sRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxlQUFlLENBQUMsT0FBb0I7UUFDMUMsTUFBTSxjQUFjLEdBQXdCLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3RFLElBQUksY0FBYyxDQUFDLFFBQVEsS0FBSyxPQUFPLElBQUksY0FBYyxDQUFDLE9BQU8sS0FBSyxNQUFNLEVBQUUsQ0FBQztZQUM5RSxPQUFPLElBQUksQ0FBQztRQUNiLENBQUM7UUFDRCxPQUFPLE9BQU8sQ0FBQyxZQUEyQixDQUFDO0lBQzVDLENBQUM7Q0FDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBvaW50IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5cbmV4cG9ydCBjbGFzcyBOZ0RvY1Bvc2l0aW9uVXRpbHMge1xuXHQvKipcblx0ICogR2V0dGluZyB0aGUgcG9zaXRpb24gb2YgdGhlIGVsZW1lbnQgcmVsYXRpdmUgdG8gdGhlIHZpZXdQb3J0LCB0aGlzIGZ1bmN0aW9uIGlzIGZhc3RlciB0aGFuIEJvdW5kaW5nQ2xpZW50UmVjdCxcblx0ICogaXQgYWxzbyB0YWtlcyBpbnRvIGFjY291bnQgdGhlIGNoYW5nZSBpbiB0aGUgcG9zaXRpb24gb2YgdGhlIGVsZW1lbnQgdGhyb3VnaCB0cmFuc2Zvcm1cblx0ICogQHBhcmFtIGVsZW1lbnRcblx0ICovXG5cdHN0YXRpYyBnZXRFbGVtZW50UG9zaXRpb24oZWxlbWVudDogSFRNTEVsZW1lbnQgfCBudWxsKTogUG9pbnQge1xuXHRcdGxldCB4UG9zOiBudW1iZXIgPSAwO1xuXHRcdGxldCB5UG9zOiBudW1iZXIgPSAwO1xuXG5cdFx0d2hpbGUgKGVsZW1lbnQpIHtcblx0XHRcdGlmIChlbGVtZW50ID09PSBkb2N1bWVudC5ib2R5KSB7XG5cdFx0XHRcdGNvbnN0IGRvY3VtZW50RWxlbWVudDogSFRNTEVsZW1lbnQgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG5cdFx0XHRcdHhQb3MgKz1cblx0XHRcdFx0XHRkb2N1bWVudEVsZW1lbnQub2Zmc2V0TGVmdCAtIGRvY3VtZW50RWxlbWVudC5zY3JvbGxMZWZ0ICsgZG9jdW1lbnRFbGVtZW50LmNsaWVudExlZnQ7XG5cdFx0XHRcdHlQb3MgKz0gZG9jdW1lbnRFbGVtZW50Lm9mZnNldFRvcCAtIGRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3AgKyBkb2N1bWVudEVsZW1lbnQuY2xpZW50VG9wO1xuXHRcdFx0XHRlbGVtZW50ID0gbnVsbDtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGNvbnN0IGVsZW1lbnRNYXRyaXg6IERPTU1hdHJpeCA9IG5ldyBET01NYXRyaXgoZWxlbWVudC5zdHlsZS50cmFuc2Zvcm0pO1xuXHRcdFx0XHR4UG9zICs9IGVsZW1lbnQub2Zmc2V0TGVmdCAtIGVsZW1lbnQuc2Nyb2xsTGVmdCArIGVsZW1lbnQuY2xpZW50TGVmdCArIGVsZW1lbnRNYXRyaXgubTQxO1xuXHRcdFx0XHR5UG9zICs9IGVsZW1lbnQub2Zmc2V0VG9wIC0gZWxlbWVudC5zY3JvbGxUb3AgKyBlbGVtZW50LmNsaWVudFRvcCArIGVsZW1lbnRNYXRyaXgubTQyO1xuXHRcdFx0XHRlbGVtZW50ID0gTmdEb2NQb3NpdGlvblV0aWxzLmdldE9mZnNldFBhcmVudChlbGVtZW50KSBhcyBIVE1MRWxlbWVudDtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIHsgeDogeFBvcywgeTogeVBvcyB9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBlbGVtZW50Lm9mZnNldFBhcmVudCBmdW5jdGlvbiwgdGhpcyBpbXBsZW1lbnRhdGlvbiBjbG9zZXMgYSBidWcgaW4gRmlyZWZveCB3aGVuIGl0XG5cdCAqIHJldHVybnMgYW4gb2Zmc2V0UGFyZW50IGZvciBlbGVtZW50cyB3aXRoIHBvc2l0aW9uOiBmaXhlZFxuXHQgKiBAcGFyYW0gZWxlbWVudFxuXHQgKi9cblx0c3RhdGljIGdldE9mZnNldFBhcmVudChlbGVtZW50OiBIVE1MRWxlbWVudCk6IEhUTUxFbGVtZW50IHwgbnVsbCB7XG5cdFx0Y29uc3QgY29tcHV0ZXJTdHlsZXM6IENTU1N0eWxlRGVjbGFyYXRpb24gPSBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpO1xuXHRcdGlmIChjb21wdXRlclN0eWxlcy5wb3NpdGlvbiA9PT0gJ2ZpeGVkJyB8fCBjb21wdXRlclN0eWxlcy5kaXNwbGF5ID09PSAnbm9uZScpIHtcblx0XHRcdHJldHVybiBudWxsO1xuXHRcdH1cblx0XHRyZXR1cm4gZWxlbWVudC5vZmZzZXRQYXJlbnQgYXMgSFRNTEVsZW1lbnQ7XG5cdH1cbn1cbiJdfQ==","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctZG9jLXVpLWtpdC11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvdWkta2l0L3V0aWxzL25nLWRvYy11aS1raXQtdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0="],"names":[],"mappings":"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"}