@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 • 20.6 kB
Source Map (JSON)
{"version":3,"file":"ng-doc-ui-kit-utils.mjs","sources":["../../../../libs/ui-kit/utils/focus-utils.ts","../../../../libs/ui-kit/utils/overlay-utils.ts","../../../../libs/ui-kit/utils/position-utils.ts","../../../../libs/ui-kit/utils/ng-doc-ui-kit-utils.ts"],"sourcesContent":["export class NgDocFocusUtils {\n\tstatic isNativeKeyboardFocusable(element: Element): boolean {\n\t\tif (element.hasAttribute('disabled') || element.getAttribute('tabIndex') === '-1') {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (\n\t\t\t(element instanceof HTMLElement && element.isContentEditable) ||\n\t\t\telement.getAttribute('tabIndex') === '0'\n\t\t) {\n\t\t\treturn true;\n\t\t}\n\n\t\tswitch (element.tagName) {\n\t\t\tcase 'BUTTON':\n\t\t\tcase 'SELECT':\n\t\t\tcase 'TEXTAREA':\n\t\t\t\treturn true;\n\t\t\tcase 'VIDEO':\n\t\t\tcase 'AUDIO':\n\t\t\t\treturn element.hasAttribute('controls');\n\t\t\tcase 'INPUT':\n\t\t\t\treturn element.getAttribute('type') !== 'hidden';\n\t\t\tcase 'A':\n\t\t\tcase 'LINK':\n\t\t\t\treturn element.hasAttribute('href');\n\t\t\tdefault:\n\t\t\t\treturn false;\n\t\t}\n\t}\n\n\tstatic getClosestKeyboardFocusable(\n\t\tinitial: HTMLElement,\n\t\troot: Node,\n\t\tforward: boolean = true,\n\t): HTMLElement | null {\n\t\tif (!root.ownerDocument) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\tconst svgNodeFilter: NodeFilter = ((node: Node) =>\n\t\t\t'ownerSVGElement' in node ? NodeFilter.FILTER_REJECT : NodeFilter.FILTER_ACCEPT) as never;\n\n\t\tconst treeWalker: TreeWalker = root.ownerDocument.createTreeWalker(\n\t\t\troot,\n\t\t\tNodeFilter.SHOW_ELEMENT,\n\t\t\tsvgNodeFilter,\n\t\t);\n\n\t\ttreeWalker.currentNode = initial;\n\n\t\twhile (forward ? treeWalker.nextNode() : treeWalker.previousNode()) {\n\t\t\tif (treeWalker.currentNode instanceof HTMLElement) {\n\t\t\t\tinitial = treeWalker.currentNode;\n\t\t\t}\n\n\t\t\tif (NgDocFocusUtils.isNativeKeyboardFocusable(initial)) {\n\t\t\t\treturn initial;\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tstatic focusClosestElement(initial: HTMLElement, root: Node, forward: boolean = true): void {\n\t\tconst focusable: HTMLElement | null = NgDocFocusUtils.getClosestKeyboardFocusable(\n\t\t\tinitial,\n\t\t\troot,\n\t\t\tforward,\n\t\t);\n\t\tif (focusable) {\n\t\t\tfocusable.focus();\n\t\t}\n\t}\n}\n","import { ConnectedPosition, ConnectionPositionPair } from '@angular/cdk/overlay';\nimport { asArray } from '@ng-doc/core/helpers/as-array';\nimport {\n NgDocHorizontalAlign,\n NgDocOverlayPosition,\n NgDocOverlayRelativePosition,\n NgDocVerticalAlign,\n} from '@ng-doc/ui-kit/types';\n\nexport const NG_DOC_ARROW_MARGIN: number = 32;\n\nconst POSITION_DESCRIPTION: Record<string, ConnectedPosition> = {\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};\n\nexport class NgDocOverlayUtils {\n static getConnectedPosition(\n dropdownPositions: NgDocOverlayPosition | NgDocOverlayPosition[],\n origin: HTMLElement,\n offset: number = 0,\n withPointer: boolean = false,\n ): ConnectedPosition[] {\n return asArray(dropdownPositions).map((position: NgDocOverlayPosition) => {\n const connectedPosition: ConnectedPosition = NgDocOverlayUtils.toConnectedPosition(position);\n const marginMultiplier: number = NgDocOverlayUtils.getMarginMultiplier(connectedPosition);\n const marginX: number = !NgDocOverlayUtils.isVerticalPosition(connectedPosition)\n ? offset * marginMultiplier\n : 0;\n const marginY: number = 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\n static toConnectedPosition(position: NgDocOverlayPosition): ConnectedPosition {\n return typeof position === 'string' ? { ...POSITION_DESCRIPTION[position] } : { ...position };\n }\n\n static toConnectedPositions(positions: NgDocOverlayPosition[]): ConnectedPosition[] {\n return positions.map(NgDocOverlayUtils.toConnectedPosition);\n }\n\n static getOffsetX(origin: HTMLElement, position: ConnectedPosition): number {\n const isVertical: boolean = NgDocOverlayUtils.isVerticalPosition(position);\n const offsetMultiplier: number = NgDocOverlayUtils.getOffsetMultiplier(position);\n const isCenter: boolean = NgDocOverlayUtils.isCenterPosition(position);\n const width: number =\n (position.originX === 'center' && position.overlayX !== 'center') ||\n NgDocOverlayUtils.overlayIsOutByX(position)\n ? NG_DOC_ARROW_MARGIN - 24\n : origin.offsetWidth;\n return (\n (isVertical && !isCenter ? Math.max(NG_DOC_ARROW_MARGIN - width, 0) : 0) * offsetMultiplier\n );\n }\n\n static getOffsetY(origin: HTMLElement, position: ConnectedPosition): number {\n const isVertical: boolean = NgDocOverlayUtils.isVerticalPosition(position);\n const offsetMultiplier: number = NgDocOverlayUtils.getOffsetMultiplier(position);\n const isCenter: boolean = NgDocOverlayUtils.isCenterPosition(position);\n const height: number =\n (position.originY === 'center' && position.overlayY !== 'center') ||\n NgDocOverlayUtils.overlayIsOutByY(position)\n ? NG_DOC_ARROW_MARGIN - 24\n : origin.offsetHeight;\n return (\n (!isVertical && !isCenter ? Math.max(NG_DOC_ARROW_MARGIN - height, 0) : 0) * offsetMultiplier\n );\n }\n\n static overlayIsOutByX(position: ConnectedPosition): boolean {\n return (\n (position.originX === 'start' && position.overlayX === 'end') ||\n (position.originX === 'end' && position.overlayX === 'start')\n );\n }\n\n static overlayIsOutByY(position: ConnectedPosition): boolean {\n return (\n (position.originY === 'top' && position.overlayY === 'bottom') ||\n (position.originY === 'bottom' && position.overlayY === 'top')\n );\n }\n\n static getOffsetMultiplier(position: ConnectedPosition): number {\n return (NgDocOverlayUtils.isVerticalPosition(position) && position.overlayX === 'end') ||\n (!NgDocOverlayUtils.isVerticalPosition(position) && position.overlayY === 'bottom')\n ? 1\n : -1;\n }\n\n static getMarginMultiplier(position: ConnectedPosition): number {\n return ['right', 'bottom'].includes(NgDocOverlayUtils.getRelativePosition(position) || '')\n ? 1\n : -1;\n }\n\n static isVerticalPosition(position: ConnectedPosition): boolean {\n return ['bottom', 'top'].includes(NgDocOverlayUtils.getRelativePosition(position) || '');\n }\n\n static isCenterPosition(position: ConnectedPosition): boolean {\n return position.overlayX === 'center' || position.overlayY === 'center';\n }\n\n static getPositionAlign(\n position: ConnectedPosition,\n ): NgDocHorizontalAlign | NgDocVerticalAlign | null {\n if (NgDocOverlayUtils.isVerticalPosition(position)) {\n return position.overlayX === 'start' ? 'left' : position.overlayX === 'end' ? 'right' : null;\n } else {\n return position.originY === 'top' ? 'top' : position.originY === 'bottom' ? 'bottom' : null;\n }\n }\n\n static getRelativePosition(pos: NgDocOverlayPosition): NgDocOverlayRelativePosition | null {\n const position: ConnectedPosition = 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\n static getOverlayPosition(positionPair: ConnectionPositionPair): NgDocOverlayPosition {\n const existsPosition: NgDocOverlayPosition = Object.keys(POSITION_DESCRIPTION).find(\n (key: string) => {\n const positionDescription: ConnectedPosition = POSITION_DESCRIPTION[key];\n return (\n positionPair.originX === positionDescription.originX &&\n positionPair.originY === positionDescription.originY &&\n positionPair.overlayX === positionDescription.overlayX &&\n positionPair.overlayY === positionDescription.overlayY\n );\n },\n ) as NgDocOverlayPosition;\n return existsPosition ? existsPosition : positionPair;\n }\n}\n","import { Point } from '@angular/cdk/drag-drop';\n\nexport class NgDocPositionUtils {\n\t/**\n\t * Getting the position of the element relative to the viewPort, this function is faster than BoundingClientRect,\n\t * it also takes into account the change in the position of the element through transform\n\t * @param element\n\t */\n\tstatic getElementPosition(element: HTMLElement | null): Point {\n\t\tlet xPos: number = 0;\n\t\tlet yPos: number = 0;\n\n\t\twhile (element) {\n\t\t\tif (element === document.body) {\n\t\t\t\tconst documentElement: HTMLElement = document.documentElement;\n\t\t\t\txPos +=\n\t\t\t\t\tdocumentElement.offsetLeft - documentElement.scrollLeft + documentElement.clientLeft;\n\t\t\t\tyPos += documentElement.offsetTop - documentElement.scrollTop + documentElement.clientTop;\n\t\t\t\telement = null;\n\t\t\t} else {\n\t\t\t\tconst elementMatrix: DOMMatrix = new DOMMatrix(element.style.transform);\n\t\t\t\txPos += element.offsetLeft - element.scrollLeft + element.clientLeft + elementMatrix.m41;\n\t\t\t\tyPos += element.offsetTop - element.scrollTop + element.clientTop + elementMatrix.m42;\n\t\t\t\telement = NgDocPositionUtils.getOffsetParent(element) as HTMLElement;\n\t\t\t}\n\t\t}\n\t\treturn { x: xPos, y: yPos };\n\t}\n\n\t/**\n\t * An implementation of the element.offsetParent function, this implementation closes a bug in Firefox when it\n\t * returns an offsetParent for elements with position: fixed\n\t * @param element\n\t */\n\tstatic getOffsetParent(element: HTMLElement): HTMLElement | null {\n\t\tconst computerStyles: CSSStyleDeclaration = getComputedStyle(element);\n\t\tif (computerStyles.position === 'fixed' || computerStyles.display === 'none') {\n\t\t\treturn null;\n\t\t}\n\t\treturn element.offsetParent as HTMLElement;\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}