{"version":3,"file":"seniorsistemas-angular-components-help-popover.mjs","sources":["../../projects/angular-components/help-popover/src/lib/help-popover/help-popover/help-popover.component.ts","../../projects/angular-components/help-popover/src/lib/help-popover/help-popover/help-popover.component.html","../../projects/angular-components/help-popover/src/lib/help-popover/help-popover.directive.ts","../../projects/angular-components/help-popover/src/lib/help-popover/help-popover.module.ts","../../projects/angular-components/help-popover/src/seniorsistemas-angular-components-help-popover.ts"],"sourcesContent":["import { Component, ElementRef, EventEmitter, OnDestroy, TemplateRef, ViewChild } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { HelpPopoverArrowPosition, HelpPopoverPosition } from '../models/help-popover.models';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\nimport { ButtonComponent } from '@seniorsistemas/angular-components/button';\r\n\r\n@Component({\r\n    selector: 's-help-popover',\r\n    templateUrl: './help-popover.component.html',\r\n    styleUrls: ['./help-popover.component.scss'],\r\n    standalone: true,\r\n    imports: [NgTemplateOutlet, ButtonComponent],\r\n})\r\nexport class HelpPopoverComponent implements OnDestroy {\r\n    private readonly VALID_POSITIONS: HelpPopoverPosition[] = ['top', 'bottom', 'left', 'right'];\r\n    private readonly VALID_ARROW_POSITIONS: HelpPopoverArrowPosition[] = ['beginning', 'end', 'middle'];\r\n    private _position: HelpPopoverPosition = 'bottom';\r\n    popoverContent: string | TemplateRef<any> | null = null;\r\n    closeButton = true;\r\n    icon = '';\r\n    header = '';\r\n    footer = '';\r\n    button = '';\r\n    visible = false;\r\n    @ViewChild('arrowElement', { read: ElementRef, static: true }) arrowElement: ElementRef<HTMLElement> | null = null;\r\n    public get position(): HelpPopoverPosition {\r\n        return this._position;\r\n    }\r\n    public set position(value: HelpPopoverPosition) {\r\n        if (!this.VALID_POSITIONS.includes(value)) {\r\n            throw new Error(`Invalid position: ${value}. Valid positions: ${this.VALID_POSITIONS}`);\r\n        }\r\n        this._position = value;\r\n    }\r\n\r\n    private _arrowPosition: HelpPopoverArrowPosition = 'beginning';\r\n    public get arrowPosition(): HelpPopoverArrowPosition {\r\n        return this._arrowPosition;\r\n    }\r\n    public set arrowPosition(value: HelpPopoverArrowPosition) {\r\n        if (!this.VALID_ARROW_POSITIONS.includes(value)) {\r\n            throw new Error(`Invalid arrow position: ${value}. Valid arrow positions: ${this.VALID_ARROW_POSITIONS}`);\r\n        }\r\n        this._arrowPosition = value;\r\n    }\r\n\r\n    buttonClicked!: EventEmitter<void>;\r\n\r\n    closed = new Subject<void>();\r\n    get contentIsString() {\r\n        return typeof this.popoverContent === 'string';\r\n    }\r\n\r\n    get popoverContentTemplateRef() {\r\n        return this.popoverContent as TemplateRef<any>;\r\n    }\r\n\r\n    get hasHeaderContainer() {\r\n        const _hasHeader = this.hasHeaderText;\r\n        const hasIcon = this.hasIcon;\r\n        const hasCloseButton = this.closeButton;\r\n        return _hasHeader || hasIcon || hasCloseButton;\r\n    }\r\n\r\n    get hasFooter() {\r\n        const _hasFooterText = this.hasFooterText;\r\n        const hasButtonText = this.button && this.button.length > 0;\r\n        return _hasFooterText || hasButtonText;\r\n    }\r\n\r\n    get hasHeaderText() {\r\n        return this.header && this.header.length > 0;\r\n    }\r\n\r\n    get hasFooterText() {\r\n        return this.footer && this.footer.length > 0;\r\n    }\r\n\r\n    get hasIcon() {\r\n        return this.icon && this.icon.length > 0;\r\n    }\r\n\r\n    close() {\r\n        this.closed.next();\r\n    }\r\n\r\n    clickButton() {\r\n        this.buttonClicked!.emit();\r\n    }\r\n\r\n    ngOnDestroy(): void {\r\n        this.closed.complete();\r\n    }\r\n}\r\n","<div\n    class=\"popover-container\"\n    [style.visibility]=\"visible ? 'visible' : 'hidden'\"\n    [class.popover-container-top]=\"position === 'top'\"\n    [class.popover-container-right]=\"position === 'right'\"\n    [class.popover-container-bottom]=\"position === 'bottom'\"\n    [class.popover-container-left]=\"position === 'left'\"\n>\n    <div\n        class=\"arrow-container\"\n        [class.arrow-container-beginning]=\"arrowPosition === 'beginning'\"\n        [class.arrow-container-middle]=\"arrowPosition === 'middle'\"\n        [class.arrow-container-end]=\"arrowPosition === 'end'\"\n    >\n        <div\n            class=\"arrow\"\n            #arrowElement\n        ></div>\n    </div>\n    <div class=\"popover\">\n        @if (hasHeaderContainer) {\n            <div\n                class=\"popover-header-container\"\n                [class.space-between]=\"hasIcon || hasHeaderText\"\n                [class.flex-end]=\"!(hasIcon || hasHeaderText) && closeButton\"\n            >\n                @if (hasIcon || hasHeaderText) {\n                    <div class=\"popover-header-container-text\">\n                        @if (hasIcon) {\n                            <div class=\"popover-icon\">\n                                <i [class]=\"icon\"></i>\n                            </div>\n                        }\n                        @if (hasHeaderText) {\n                            <div class=\"popover-header-text\">\n                                {{ header }}\n                            </div>\n                        }\n                    </div>\n                }\n                @if (closeButton) {\n                    <div class=\"popover-close-button\">\n                        <i\n                            class=\"fas fa-times\"\n                            (click)=\"close()\"\n                        ></i>\n                    </div>\n                }\n            </div>\n        }\n\n        <div class=\"popover-content\">\n            @if (contentIsString) {\n                {{ popoverContent }}\n            } @else {\n                <ng-container *ngTemplateOutlet=\"popoverContentTemplateRef\"></ng-container>\n            }\n        </div>\n\n        @if (hasFooter) {\n            <div class=\"separator\"></div>\n            <div\n                class=\"popover-footer-container\"\n                [class.space-between]=\"hasFooterText\"\n                [class.flex-end]=\"!hasFooterText\"\n            >\n                @if (hasFooterText) {\n                    <p class=\"popover-footer-text\">\n                        {{ footer }}\n                    </p>\n                }\n                @if (button && button.length > 0) {\n                    <div class=\"popover-footer-button\">\n                        <s-button\n                            [label]=\"button\"\n                            priority=\"primary\"\n                            size=\"small\"\n                            (clicked)=\"clickButton()\"\n                            [disabled]=\"false\"\n                            [auxiliary]=\"false\"\n                        >\n                        </s-button>\n                    </div>\n                }\n            </div>\n        }\n    </div>\n</div>\n\n","import {\r\n    ComponentRef,\r\n    Directive,\r\n    ElementRef,\r\n    EventEmitter,\r\n    HostListener,\r\n    inject,\r\n    Input,\r\n    OnDestroy,\r\n    OnInit,\r\n    Output,\r\n    TemplateRef,\r\n    ViewContainerRef,\r\n} from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { debounceTime, takeUntil } from 'rxjs/operators';\r\nimport { HelpPopoverComponent } from './help-popover/help-popover.component';\r\nimport { HelpPopoverArrowPosition, HelpPopoverPosition } from './models/help-popover.models';\r\nimport {\r\n    ElementLeftoverPosition,\r\n    ElementPosition,\r\n    getElementLeftoverContentAvailable,\r\n    getElementPositionInfo,\r\n    isMousePositionOutsideOfElement,\r\n} from '@seniorsistemas/angular-components/utils';\r\n\r\n/**\r\n * @description Diretiva que exibe um popover de ajuda ao clicar no elemento hospedeiro.\r\n * O popover suporta conteúdo como texto simples ou `TemplateRef`, além de botão de fechar,\r\n * ícone, cabeçalho, rodapé e posição configurável. Pode ser acionado programaticamente.\r\n *\r\n * @example\r\n * ```html\r\n * <button [sHelpPopover]=\"'Informe aqui o seu CPF'\" popoverPosition=\"right\">?</button>\r\n * ```\r\n *\r\n * @category Overlay\r\n */\r\n@Directive({\r\n    selector: '[sHelpPopover]',\r\n    exportAs: 'sHelpPopover',\r\n    standalone: true,\r\n})\r\nexport class HelpPopoverDirective implements OnDestroy, OnInit {\r\n    private readonly MUTATION_OBSERVER_CONFIG: MutationObserverInit = {\r\n        attributes: true,\r\n        childList: true,\r\n        subtree: true,\r\n    };\r\n    private readonly OBSERVER_CALLBACK = () => {\r\n        if (!this.componentRef) {\r\n            return;\r\n        }\r\n        this.applyPositionIntoElement();\r\n    };\r\n    private readonly RESIZE_OBSERVER = () => {\r\n        this.onResize$.next();\r\n    };\r\n\r\n    /**\r\n     * @description Conteúdo do popover. Aceita uma `string` com texto simples ou um `TemplateRef`\r\n     * para renderizar conteúdo Angular customizado dentro do popover.\r\n     */\r\n    @Input() sHelpPopover: string | TemplateRef<any> | null = null;\r\n\r\n    /**\r\n     * @description Quando `true`, exibe o botão de fechar (X) no cabeçalho do popover.\r\n     *\r\n     * @default true\r\n     */\r\n    @Input() closeButton = true;\r\n\r\n    /**\r\n     * @description Classe de ícone exibida no cabeçalho do popover (ex: classe de Font Awesome).\r\n     */\r\n    @Input() popoverIcon = '';\r\n\r\n    /**\r\n     * @description Texto exibido no cabeçalho do popover.\r\n     */\r\n    @Input() popoverHeader = '';\r\n\r\n    /**\r\n     * @description Texto exibido no rodapé do popover.\r\n     */\r\n    @Input() popoverFooter = '';\r\n\r\n    /**\r\n     * @description Texto do botão de ação exibido no rodapé do popover.\r\n     * Ao clicar, emite o evento `buttonClicked`.\r\n     */\r\n    @Input() popoverButtonText = '';\r\n\r\n    /**\r\n     * @description Alinhamento da seta indicadora em relação ao lado do popover.\r\n     * Valores aceitos: `'beginning'` (padrão), `'middle'`, `'end'`.\r\n     *\r\n     * @default 'beginning'\r\n     */\r\n    @Input() popoverArrowPosition: HelpPopoverArrowPosition = 'beginning';\r\n\r\n    /**\r\n     * @description Posição do popover em relação ao elemento hospedeiro.\r\n     * Valores aceitos: `'top'`, `'bottom'` (padrão), `'left'`, `'right'`.\r\n     * O componente tenta reposicionar automaticamente caso não haja espaço.\r\n     *\r\n     * @default 'bottom'\r\n     */\r\n    @Input()\r\n    public set popoverPosition(value: HelpPopoverPosition) {\r\n        this._popoverPosition = value;\r\n        this.internalPosition = value;\r\n    }\r\n\r\n    public get popoverPosition(): HelpPopoverPosition {\r\n        return this._popoverPosition;\r\n    }\r\n\r\n    /**\r\n     * @description Emitido quando o usuário clica no botão de ação do rodapé do popover.\r\n     */\r\n    @Output() buttonClicked = new EventEmitter<void>();\r\n\r\n    private _popoverPosition: HelpPopoverPosition = 'bottom';\r\n\r\n    private onDestroy$ = new Subject<void>();\r\n    private componentRef: ComponentRef<HelpPopoverComponent> | null = null;\r\n    private mutationObserverPopoverElement: MutationObserver | null = null;\r\n    private mutationObserverPopoverContent: MutationObserver | null = null;\r\n    private internalPosition: HelpPopoverPosition = 'bottom';\r\n    private onResize$ = new Subject<void>();\r\n    private manualTrigger = false;\r\n    private listener = (event: PointerEvent | MouseEvent) => {\r\n        if (!this.componentRef) {\r\n            return;\r\n        }\r\n        const totalElementArea = this.getPopoverElement.getBoundingClientRect();\r\n        if (isMousePositionOutsideOfElement(event, totalElementArea)) {\r\n            this.destroy();\r\n        }\r\n    };\r\n    private readonly viewContainerRef = inject(ViewContainerRef);\r\n    private readonly element: ElementRef<HTMLElement> = inject(ElementRef);\r\n\r\n    ngOnInit(): void {\r\n        const popoverElementObserver = new MutationObserver(this.OBSERVER_CALLBACK);\r\n        this.mutationObserverPopoverElement = popoverElementObserver;\r\n        popoverElementObserver.observe(this.element.nativeElement, this.MUTATION_OBSERVER_CONFIG);\r\n        window.addEventListener('resize', this.RESIZE_OBSERVER);\r\n        window.addEventListener('scrollend', this.OBSERVER_CALLBACK);\r\n        this.onResize$.pipe(takeUntil(this.onDestroy$), debounceTime(100)).subscribe(this.OBSERVER_CALLBACK);\r\n    }\r\n\r\n    show() {\r\n        this.manualTrigger = true;\r\n        this._createComponent();\r\n    }\r\n\r\n    @HostListener('click')\r\n    doClick() {\r\n        if (this.manualTrigger) {\r\n            return;\r\n        }\r\n        this._createComponent();\r\n    }\r\n\r\n    ngOnDestroy(): void {\r\n        this.onDestroy$.next();\r\n        this.onDestroy$.complete();\r\n        this.destroy();\r\n        if (this.mutationObserverPopoverElement) {\r\n            this.mutationObserverPopoverElement.disconnect();\r\n        }\r\n        window.removeEventListener('resize', this.RESIZE_OBSERVER);\r\n        window.removeEventListener('scrollend', this.OBSERVER_CALLBACK);\r\n    }\r\n\r\n    private _createComponent() {\r\n        if (!this.sHelpPopover) {\r\n            return;\r\n        }\r\n        if (this.componentRef) {\r\n            this.destroy();\r\n        }\r\n        const componentRef = this.viewContainerRef.createComponent(HelpPopoverComponent);\r\n        this.componentRef = componentRef;\r\n        if (this.mutationObserverPopoverContent) {\r\n            this.mutationObserverPopoverContent.disconnect();\r\n        }\r\n        this.mutationObserverPopoverContent = new MutationObserver(this.OBSERVER_CALLBACK);\r\n        const element = this.getPopoverElement as HTMLElement;\r\n        this.mutationObserverPopoverContent.observe(\r\n            element.querySelector('.popover-content') as HTMLElement,\r\n            this.MUTATION_OBSERVER_CONFIG,\r\n        );\r\n        document.body.appendChild(componentRef.location.nativeElement);\r\n        setTimeout(() => {\r\n            document.addEventListener('click', this.listener);\r\n        });\r\n        const component = componentRef.instance;\r\n        component.popoverContent = this.sHelpPopover;\r\n        component.closeButton = this.closeButton;\r\n        component.icon = this.popoverIcon;\r\n        component.header = this.popoverHeader;\r\n        component.footer = this.popoverFooter;\r\n        component.button = this.popoverButtonText;\r\n        component.position = this.internalPosition;\r\n        component.arrowPosition = this.popoverArrowPosition;\r\n        component.buttonClicked = this.buttonClicked;\r\n        component.closed.pipe(takeUntil(this.onDestroy$)).subscribe(() => {\r\n            this.destroy();\r\n        });\r\n        this.applyPositionIntoElement();\r\n    }\r\n\r\n    private destroy() {\r\n        document.removeEventListener('click', this.listener);\r\n        if (this.componentRef) {\r\n            this.componentRef.destroy();\r\n            this.componentRef = null;\r\n        }\r\n\r\n        this.internalPosition = this.popoverPosition;\r\n\r\n        if (this.mutationObserverPopoverContent) {\r\n            this.mutationObserverPopoverContent.disconnect();\r\n        }\r\n    }\r\n\r\n    private applyPositionIntoElement() {\r\n        const popoverElementPosition = getElementPositionInfo(this.element.nativeElement);\r\n        const position = this.validPosition;\r\n        this.internalPosition = position;\r\n        this.popoverComponentInstance.position = this.internalPosition;\r\n        setTimeout(() => {\r\n            switch (this.internalPosition) {\r\n                case 'bottom': {\r\n                    this.applyPopoverPositionBottom(popoverElementPosition);\r\n                    break;\r\n                }\r\n                case 'top': {\r\n                    this.applyPopoverPositionTop(popoverElementPosition);\r\n                    break;\r\n                }\r\n                case 'left': {\r\n                    this.applyPopoverPositionLeft(popoverElementPosition);\r\n                    break;\r\n                }\r\n                case 'right': {\r\n                    this.applyPopoverPositionRight(popoverElementPosition);\r\n                    break;\r\n                }\r\n            }\r\n            this.popoverComponentInstance.visible = true;\r\n        });\r\n    }\r\n\r\n    private applyPopoverPositionBottom(popoverElementPosition: ElementPosition) {\r\n        const popoverElement = this.getPopoverElement;\r\n        const leftPopover = this.getHorizontalLeft(popoverElementPosition);\r\n        popoverElement.style.position = 'absolute';\r\n        popoverElement.style.left = `${leftPopover}px`;\r\n        popoverElement.style.top = `calc(${popoverElementPosition.top}px + ${popoverElementPosition.elementHeight}px)`;\r\n    }\r\n\r\n    private applyPopoverPositionTop(popoverElementPosition: ElementPosition) {\r\n        const popoverElement = this.getPopoverElement;\r\n        const leftPopover = this.getHorizontalLeft(popoverElementPosition);\r\n        const popoverHeight = popoverElement.getBoundingClientRect().height;\r\n        popoverElement.style.position = 'absolute';\r\n        popoverElement.style.left = `${leftPopover}px`;\r\n        popoverElement.style.top = `calc(${popoverElementPosition.top}px - ${popoverHeight}px)`;\r\n    }\r\n\r\n    private applyPopoverPositionLeft(popoverElementPosition: ElementPosition) {\r\n        const popoverElement = this.getPopoverElement;\r\n        const popoverWidth = popoverElement.getBoundingClientRect().width;\r\n        popoverElement.style.position = 'absolute';\r\n        popoverElement.style.left = `calc(${popoverElementPosition.right}px - ${popoverWidth + popoverElementPosition.elementWidth}px)`;\r\n        popoverElement.style.top = this.getVerticalTop(popoverElementPosition);\r\n    }\r\n\r\n    private applyPopoverPositionRight(popoverElementPosition: ElementPosition) {\r\n        const popoverElement = this.getPopoverElement;\r\n        popoverElement.style.position = 'absolute';\r\n        popoverElement.style.left = `calc(${popoverElementPosition.right}px)`;\r\n        popoverElement.style.top = this.getVerticalTop(popoverElementPosition);\r\n    }\r\n\r\n    private getHorizontalLeft(popoverElementPosition: ElementPosition) {\r\n        const popoverElement = this.getPopoverElement;\r\n        const popoverWidth = popoverElement.getBoundingClientRect().width;\r\n        let _horizontalLeft = popoverElementPosition.left;\r\n        if (this.popoverArrowPosition === 'end') {\r\n            _horizontalLeft = popoverElementPosition.right - popoverWidth;\r\n        } else if (this.popoverArrowPosition === 'middle') {\r\n            _horizontalLeft = popoverElementPosition.left + popoverElementPosition.elementWidth / 2 - popoverWidth / 2;\r\n        }\r\n        return _horizontalLeft;\r\n    }\r\n\r\n    private getVerticalTop(popoverElementPosition: ElementPosition) {\r\n        const arrowElement = this.popoverComponentInstance.arrowElement?.nativeElement as HTMLElement;\r\n        const arrowElementPosition = getElementPositionInfo(arrowElement);\r\n        const popoverContentPosition = getElementPositionInfo(this.getPopoverElement);\r\n        const popoverElement = this.getPopoverElement;\r\n        const popoverHeight = popoverElement.getBoundingClientRect().height;\r\n        let top = `calc(${popoverElementPosition.top}px - ${popoverHeight / 2}px + ${popoverElementPosition.elementHeight / 2}px)`;\r\n\r\n        const arrowMiddle = arrowElementPosition.elementHeight / 2;\r\n        if (this.popoverArrowPosition === 'beginning') {\r\n            const distanceArrowFromStart = arrowElementPosition.top - popoverContentPosition.top;\r\n            top = `calc(${popoverElementPosition.top}px + ${popoverElementPosition.elementHeight / 2}px - ${distanceArrowFromStart + arrowMiddle}px)`;\r\n        } else if (this.popoverArrowPosition === 'end') {\r\n            const distanceArrowFromEnd =\r\n                popoverContentPosition.top +\r\n                popoverContentPosition.elementHeight -\r\n                (arrowElementPosition.top + arrowElementPosition.elementHeight);\r\n            top = `calc(${popoverElementPosition.top}px - ${popoverContentPosition.elementHeight}px + ${popoverElementPosition.elementHeight / 2}px + ${distanceArrowFromEnd + arrowMiddle}px)`;\r\n        }\r\n        return top;\r\n    }\r\n\r\n    private getLeftoverContentAvailableForPopover(): ElementLeftoverPosition {\r\n        return getElementLeftoverContentAvailable(this.element.nativeElement);\r\n    }\r\n\r\n    private get getPopoverElement(): HTMLElement {\r\n        return this.componentRef?.location.nativeElement as HTMLElement;\r\n    }\r\n\r\n    private get popoverComponentInstance() {\r\n        return this.componentRef?.instance as HelpPopoverComponent;\r\n    }\r\n\r\n    /**\r\n     * Given the current position of the popover and the available space around\r\n     * the trigger element, this function will return the position that the popover\r\n     * will be set at.\r\n     *\r\n     * If the popover will fit at the given position, it will return the same\r\n     * position.\r\n     *\r\n     * If the popover will not fit at the given position, it will return the position\r\n     * that has the most available space (top or bottom).\r\n     *\r\n     * If there is no position with available space, it will return the given\r\n     * position.\r\n     *\r\n     * @returns The position that the popover will be set at.\r\n     */\r\n    private get validPosition(): HelpPopoverPosition {\r\n        const { freeDistanceToBottom, freeDistanceToTop, freeDistanceToLeft, freeDistanceToRight } =\r\n            this.getLeftoverContentAvailableForPopover();\r\n\r\n        const popoverElementPosition = getElementPositionInfo(this.getPopoverElement);\r\n        const popoverElementWidth = popoverElementPosition.elementWidth;\r\n        const popoverElementHeight = popoverElementPosition.elementHeight;\r\n\r\n        const remainingSpaceBottom = freeDistanceToBottom - popoverElementHeight;\r\n        const remainingSpaceTop = freeDistanceToTop - popoverElementHeight;\r\n        const remainingSpaceLeft = freeDistanceToLeft - popoverElementWidth;\r\n        const remainingSpaceRight = freeDistanceToRight - popoverElementWidth;\r\n\r\n        const canSetAtBottom = remainingSpaceBottom > 0;\r\n        const canSetAtTop = remainingSpaceTop > 0;\r\n        const canSetAtLeft = remainingSpaceLeft > 0;\r\n        const canSetAtRight = remainingSpaceRight > 0;\r\n\r\n        let validPosition: HelpPopoverPosition | undefined = undefined;\r\n        if (canSetAtBottom && this.popoverPosition === 'bottom') {\r\n            validPosition = 'bottom';\r\n        } else if (canSetAtTop && this.popoverPosition === 'top') {\r\n            validPosition = 'top';\r\n        } else if (canSetAtLeft && this.popoverPosition === 'left') {\r\n            validPosition = 'left';\r\n        } else if (canSetAtRight && this.popoverPosition === 'right') {\r\n            validPosition = 'right';\r\n        }\r\n\r\n        const needUseOtherPosition = !validPosition;\r\n        if (needUseOtherPosition) {\r\n            const freePositions: { position: HelpPopoverPosition; freeDistance: number }[] = [\r\n                {\r\n                    position: 'bottom' as HelpPopoverPosition,\r\n                    freeDistance: remainingSpaceBottom,\r\n                },\r\n                {\r\n                    position: 'top' as HelpPopoverPosition,\r\n                    freeDistance: remainingSpaceTop,\r\n                },\r\n            ].filter((x) => x.freeDistance > 0);\r\n\r\n            if (freePositions.length === 0) {\r\n                return this.popoverPosition;\r\n            }\r\n            const itemWithMaxFreeDistance = freePositions.sort((a, b) => b.freeDistance - a.freeDistance)[0];\r\n            return itemWithMaxFreeDistance.position;\r\n        } else {\r\n            return this.popoverPosition;\r\n        }\r\n    }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { HelpPopoverDirective } from './help-popover.directive';\r\n@NgModule({\r\n    imports: [HelpPopoverDirective],\r\n    exports: [HelpPopoverDirective],\r\n})\r\nexport class HelpPopoverModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}