{"version":3,"file":"deja-js-component-v2-tooltip.mjs","sources":["../../../../projects/deja-js/component/v2/tooltip/tooltip.directive.ts","../../../../projects/deja-js/component/v2/tooltip/tooltip.model.ts","../../../../projects/deja-js/component/v2/tooltip/tooltip-component.interface.ts","../../../../projects/deja-js/component/v2/tooltip/tooltip.service.ts","../../../../projects/deja-js/component/v2/tooltip/index.ts","../../../../projects/deja-js/component/v2/tooltip/deja-js-component-v2-tooltip.ts"],"sourcesContent":["/*\n *  @license\n *  Copyright Hôpitaux Universitaires de Genève. All Rights Reserved.\n *\n *  Use of this source code is governed by an Apache-2.0 license that can be\n *  found in the LICENSE file at https://github.com/DSI-HUG/dejajs-components/blob/master/LICENSE\n */\n\nimport { Directive, ElementRef, Input } from '@angular/core';\nimport { Destroy } from '@deja-js/component/core';\nimport { filter, fromEvent, Observable, switchMap, take, takeUntil, timer } from 'rxjs';\n\n@Directive({\n    selector: '[app-tooltip]'\n})\nexport class TooltipDirective extends Destroy {\n    // eslint-disable-next-line @angular-eslint/no-input-rename\n    @Input('tooltip-delay') public delay = 300;\n\n    @Input('app-tooltip') public openTooltip$: (element: HTMLElement) => Observable<void>;\n\n    public constructor(elementRef: ElementRef) {\n        super();\n\n        const triggerElement = elementRef.nativeElement as HTMLElement;\n\n        const leave$ = fromEvent<MouseEvent>(triggerElement, 'mouseleave');\n\n        fromEvent<MouseEvent>(triggerElement, 'mouseenter').pipe(\n            switchMap(() => timer(this.delay).pipe(\n                take(1),\n                filter(() => !!this.openTooltip$),\n                switchMap(() => this.openTooltip$(triggerElement)),\n                takeUntil(leave$)\n            )),\n            takeUntil(this.destroyed$)\n        ).subscribe();\n    }\n}\n","/*\n *  @license\n *  Copyright Hôpitaux Universitaires de Genève. All Rights Reserved.\n *\n *  Use of this source code is governed by an Apache-2.0 license that can be\n *  found in the LICENSE file at https://github.com/DSI-HUG/dejajs-components/blob/master/LICENSE\n */\n\nimport { MatDialogConfig } from '@angular/material/dialog';\n\nexport class TooltipConfig<D> extends MatDialogConfig<D> {\n    public hideDelay?: number;\n}\n","/*\n *  @license\n *  Copyright Hôpitaux Universitaires de Genève. All Rights Reserved.\n *\n *  Use of this source code is governed by an Apache-2.0 license that can be\n *  found in the LICENSE file at https://github.com/DSI-HUG/dejajs-components/blob/master/LICENSE\n */\n\nimport { ElementRef } from '@angular/core';\n\nexport interface TooltipComponentInterface {\n    elementRef: ElementRef<HTMLElement>;\n}\n","/*\n *  @license\n *  Copyright Hôpitaux Universitaires de Genève. All Rights Reserved.\n *\n *  Use of this source code is governed by an Apache-2.0 license that can be\n *  found in the LICENSE file at https://github.com/DSI-HUG/dejajs-components/blob/master/LICENSE\n */\n\nimport { ConnectedPosition } from '@angular/cdk/overlay';\nimport { Type } from '@angular/core';\nimport { MatDialog, MatDialogConfig, MatDialogRef } from '@angular/material/dialog';\nimport { AbstractLazyModule, LazyLoaderService, subscribeWith } from '@deja-js/component/core';\nimport { merge } from 'lodash-es';\nimport { debounceTime, delay, EMPTY, filter, fromEvent, map, mergeWith, Observable, shareReplay, Subject, switchMap, tap, withLatestFrom } from 'rxjs';\n\nimport { TooltipConfig } from './tooltip.model';\nimport { TooltipComponentInterface } from './tooltip-component.interface';\n\n\nexport abstract class TooltipService<D> {\n    protected close$ = new Subject<void>();\n\n    protected positions: ReadonlyArray<ConnectedPosition> = [\n        {\n            originX: 'center',\n            originY: 'bottom',\n            overlayX: 'center',\n            overlayY: 'top',\n            offsetY: 20\n        },\n        {\n            originX: 'center',\n            originY: 'top',\n            overlayX: 'center',\n            overlayY: 'bottom',\n            offsetY: -20\n        },\n        {\n            originX: 'start',\n            originY: 'center',\n            overlayX: 'end',\n            overlayY: 'center',\n            offsetX: -20\n        },\n        {\n            originX: 'end',\n            originY: 'center',\n            overlayX: 'start',\n            overlayY: 'top',\n            offsetX: 20\n        },\n        {\n            originX: 'start',\n            originY: 'bottom',\n            overlayX: 'start',\n            overlayY: 'top',\n            offsetY: 20\n        },\n        {\n            originX: 'start',\n            originY: 'top',\n            overlayX: 'start',\n            overlayY: 'bottom',\n            offsetY: -20\n        },\n        {\n            originX: 'end',\n            originY: 'bottom',\n            overlayX: 'end',\n            overlayY: 'top',\n            offsetY: 20\n        },\n        {\n            originX: 'end',\n            originY: 'top',\n            overlayX: 'end',\n            overlayY: 'bottom',\n            offsetY: -20\n        },\n        {\n            originX: 'start',\n            originY: 'top',\n            overlayX: 'start',\n            overlayY: 'top'\n        }\n    ];\n\n    public constructor(\n        private lazyLoaderService: LazyLoaderService,\n        private dialog: MatDialog,\n        private tooltipConfig?: MatDialogConfig<D>\n    ) {\n        if (!this.tooltipConfig) {\n            this.tooltipConfig = new MatDialogConfig();\n        }\n    }\n\n    public open$(triggerElement: HTMLElement, tooltipData: D, tooltipConfig?: TooltipConfig<D>): Observable<void> {\n        this.close();\n\n        const additionalPanelClass = (tooltipConfig?.panelClass && tooltipConfig.panelClass instanceof Array && tooltipConfig.panelClass)\n            || (tooltipConfig?.panelClass && typeof tooltipConfig?.panelClass === 'string' && [tooltipConfig?.panelClass])\n            || new Array<string>();\n\n        const config = merge(tooltipConfig, {\n            hasBackdrop: false,\n            panelClass: ['tooltip-overlay', 'no-padding-dialog', 'tooltip-opening', ...additionalPanelClass]\n        } as TooltipConfig<D>);\n\n\n        const dialogRef$ = this.openRef$(tooltipData, triggerElement, config).pipe(\n            shareReplay({ bufferSize: 1, refCount: false })\n        );\n\n        const checkClose$ = dialogRef$.pipe(\n            switchMap(dialogRef => {\n                const tooltipElement = dialogRef.componentInstance.elementRef?.nativeElement.parentElement;\n\n                const mouseEnterTooltip$ = tooltipElement ? fromEvent(tooltipElement, 'mouseenter') : EMPTY;\n                const mouseEnterTrigger$ = triggerElement ? fromEvent(triggerElement, 'mouseenter') : EMPTY;\n                const mouseLeaveTooltip$ = tooltipElement ? fromEvent(tooltipElement, 'mouseleave') : EMPTY;\n                const mouseLeaveTrigger$ = triggerElement ? fromEvent(triggerElement, 'mouseleave') : EMPTY;\n                const set$ = mouseEnterTooltip$.pipe(\n                    mergeWith(mouseEnterTrigger$),\n                    map(() => false)\n                );\n                const reset$ = mouseLeaveTooltip$.pipe(\n                    mergeWith(mouseLeaveTrigger$),\n                    map(() => true)\n                );\n                return set$.pipe(\n                    mergeWith(reset$),\n                    debounceTime(config.hideDelay || 10),\n                    filter(Boolean),\n                    map(() => undefined as void)\n                );\n            })\n        );\n\n        const close$ = checkClose$.pipe(\n            mergeWith(this.close$),\n            withLatestFrom(dialogRef$),\n            tap(([_, dialogRef]) => dialogRef.removePanelClass('tooltip-opened')),\n            delay(300),\n            tap(([response, dialogRef]) => dialogRef.close(response))\n        );\n\n        return dialogRef$.pipe(\n            switchMap(dialogRef => dialogRef.afterClosed()),\n            subscribeWith(close$),\n            shareReplay({ bufferSize: 1, refCount: false })\n        );\n    }\n\n    public close(): void {\n        this.close$.next();\n    }\n\n    protected openRef$(tooltipData: D, triggerElement: HTMLElement, tooltipConfig: Partial<TooltipConfig<D>>): Observable<MatDialogRef<TooltipComponentInterface, void>> {\n        return this.lazyLoaderService.loadModule$(this.getModule()).pipe(\n            switchMap(moduleInfos => {\n                const config = merge({}, this.tooltipConfig, tooltipConfig || {} as Partial<MatDialogConfig<D>>);\n                config.data = tooltipData || {} as D;\n                config.minWidth = config.minWidth || '100px';\n                config.injector = moduleInfos.injector;\n\n                const dialogRef = this.dialog.open<TooltipComponentInterface, D, void>(moduleInfos.module.componentType, config);\n                return dialogRef.afterOpened().pipe(\n                    map(() => dialogRef)\n                );\n            }),\n            tap(dialogRef => {\n                const componentInstance = dialogRef.componentInstance;\n                const tooltipBounds = componentInstance.elementRef?.nativeElement.parentElement.getBoundingClientRect();\n                const triggerBounds = triggerElement?.getBoundingClientRect();\n                const bodyBounds = document.body.getBoundingClientRect();\n\n                if (tooltipBounds && triggerBounds) {\n                    this.positions.find((position, index) => {\n                        // Calc trigger alignment\n                        let left = position.offsetX || 0;\n                        switch (position.originX) {\n                            case 'start':\n                                left += triggerBounds.left;\n                                break;\n                            case 'end':\n                                left += triggerBounds.right;\n                                break;\n                            default:\n                                left += triggerBounds.left + triggerBounds.width / 2;\n                                break;\n                        }\n\n                        let top = position.offsetY || 0;\n                        switch (position.originY) {\n                            case 'top':\n                                top += triggerBounds.top;\n                                break;\n                            case 'bottom':\n                                top += triggerBounds.bottom;\n                                break;\n                            default:\n                                top += triggerBounds.top + triggerBounds.height / 2;\n                                break;\n                        }\n\n                        // Calc overlay position\n                        switch (position.overlayX) {\n                            case 'center':\n                                left -= tooltipBounds.width / 2;\n                                break;\n                            case 'end':\n                                left -= tooltipBounds.width;\n                                break;\n                            default:\n                                break;\n                        }\n\n                        switch (position.overlayY) {\n                            case 'center':\n                                top -= tooltipBounds.height / 2;\n                                break;\n                            case 'bottom':\n                                top -= tooltipBounds.height;\n                                break;\n                            default:\n                                break;\n                        }\n\n                        if ((index < this.positions.length - 1) && (left < bodyBounds.left || top < bodyBounds.top || (left + tooltipBounds.width) > bodyBounds.right || (top + tooltipBounds.height) > bodyBounds.bottom)) {\n                            // Try another psoition\n                            return false;\n                        }\n\n                        if ((left + tooltipBounds.width) > bodyBounds.right) {\n                            left = bodyBounds.right - tooltipBounds.width;\n                        }\n\n                        if ((top + tooltipBounds.height) > bodyBounds.bottom) {\n                            top = bodyBounds.bottom - tooltipBounds.height;\n                        }\n\n                        if (top < bodyBounds.top) {\n                            top = bodyBounds.top;\n                        }\n\n                        if (left < bodyBounds.left) {\n                            left = bodyBounds.left;\n                        }\n\n                        dialogRef.updatePosition({\n                            left: `${left}px`,\n                            top: `${top}px`\n                        });\n                        dialogRef.addPanelClass('tooltip-opened');\n\n                        return true;\n                    });\n                } else {\n                    console.error('A tooltip component must inherits from TooltipComponent directive. Position can\\'t be updated');\n                }\n            })\n        );\n    }\n\n    protected abstract getModule(): Promise<Type<AbstractLazyModule<TooltipComponentInterface>>>;\n}\n","/*\n *  @license\n *  Copyright Hôpitaux Universitaires de Genève. All Rights Reserved.\n *\n *  Use of this source code is governed by an Apache-2.0 license that can be\n *  found in the LICENSE file at https://github.com/DSI-HUG/dejajs-components/blob/master/LICENSE\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { TooltipDirective } from './tooltip.directive';\n\n@NgModule({\n    declarations: [\n        TooltipDirective\n    ],\n    exports: [\n        TooltipDirective\n    ],\n    imports: [\n        CommonModule\n    ]\n})\nexport class TooltipModule { }\n\nexport * from './tooltip.model';\nexport * from './tooltip-component.interface';\nexport * from './tooltip.service';\nexport * from './tooltip.directive';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}