{"version":3,"file":"ironsource-fusion-ui-directives-reposition.mjs","sources":["../../../projects/fusion-ui/directives/reposition/reposition.directive.ts","../../../projects/fusion-ui/directives/reposition/ironsource-fusion-ui-directives-reposition.ts"],"sourcesContent":["import {AfterViewInit, Directive, ElementRef, Input, OnInit} from '@angular/core';\nimport {IShiftPosition, TooltipPosition} from '@ironsource/fusion-ui/components/tooltip/common/base';\nimport {RepositionOffset} from './reposition.entities';\nimport {isNullOrUndefined} from '@ironsource/fusion-ui/utils';\n\n/**\n * Used @floating-ui/dom (flip()) For flip position of dropped element like drop-menu\n */\n@Directive({\n    selector: '[fusionReposition]',\n    standalone: true\n})\nexport class RepositionDirective implements OnInit, AfterViewInit {\n    @Input('fusionReposition') referenceElementSelector: string;\n    @Input() fusionRepositionOffset: RepositionOffset;\n    @Input() fusionRepositionPlacement: TooltipPosition = TooltipPosition.Bottom;\n\n    private hostElement: HTMLElement = this.elRef.nativeElement;\n    private referenceElement: HTMLElement;\n    private clientHeight = document.body.clientHeight;\n\n    constructor(private elRef: ElementRef) {}\n\n    ngOnInit() {\n        this.referenceElement = document.querySelector(this.referenceElementSelector);\n    }\n\n    ngAfterViewInit() {\n        this.calcForReposition();\n    }\n\n    private calcForReposition(): void {\n        if (!!this.referenceElement) {\n            let shiftPosition: IShiftPosition;\n            const rectReference = this.referenceElement.getBoundingClientRect();\n            const rectHost = this.hostElement.getBoundingClientRect();\n\n            shiftPosition = this.calcPosition(this.fusionRepositionPlacement, rectHost, rectReference);\n            shiftPosition = this.applyOffset(shiftPosition);\n\n            shiftPosition = this.checkForFlip(this.fusionRepositionPlacement, shiftPosition, rectHost, rectReference);\n\n            Object.assign(this.hostElement.style, {\n                left: `${shiftPosition.left}px`,\n                top: `${shiftPosition.top}px`\n            });\n        }\n    }\n\n    private calcPosition(pos: TooltipPosition, hostRect: DOMRect, refRect: DOMRect): IShiftPosition {\n        const commonX = refRect.x + refRect.width / 2 - hostRect.width / 2;\n        const commonY = refRect.y + refRect.height / 2 - hostRect.height / 2;\n        let position: IShiftPosition = {top: refRect.y, left: refRect.x};\n\n        switch (pos) {\n            case TooltipPosition.Top:\n                position = {left: commonX, top: refRect.y - hostRect.height};\n                break;\n            case TooltipPosition.TopRight:\n                position = {left: refRect.x - hostRect.width + refRect.width, top: refRect.y - hostRect.height};\n                break;\n            case TooltipPosition.TopLeft:\n                position = {left: refRect.x, top: refRect.y - hostRect.height};\n                break;\n            case TooltipPosition.Bottom:\n                position = {left: commonX, top: refRect.y + refRect.height};\n                break;\n            case TooltipPosition.BottomRight:\n                position = {left: refRect.x - hostRect.width + refRect.width, top: refRect.y + refRect.height};\n                break;\n            case TooltipPosition.BottomLeft:\n                position = {left: refRect.x, top: refRect.y + refRect.height - hostRect.height};\n                break;\n            case TooltipPosition.Right:\n                position = {left: refRect.x + refRect.width, top: commonY};\n                break;\n            case TooltipPosition.Left:\n                position = {left: refRect.x - hostRect.width, top: commonY};\n                break;\n        }\n        return position;\n    }\n\n    private applyOffset(position: IShiftPosition, afterFlip = false): IShiftPosition {\n        if (!isNullOrUndefined(this.fusionRepositionOffset?.y)) {\n            if (afterFlip) {\n                position.top = position.top + this.fusionRepositionOffset.y * -1;\n            } else {\n                position.top = position.top + this.fusionRepositionOffset.y;\n            }\n        }\n        if (!isNullOrUndefined(this.fusionRepositionOffset?.x)) {\n            if (afterFlip) {\n                position.left = position.left + (this.fusionRepositionOffset.x - 1);\n            } else {\n                position.left = position.left + this.fusionRepositionOffset.x;\n            }\n        }\n        return position;\n    }\n\n    private checkForFlip(pos: TooltipPosition, position: IShiftPosition, hostRect: DOMRect, rectReference: DOMRect): IShiftPosition {\n        switch (pos) {\n            case TooltipPosition.Bottom:\n            case TooltipPosition.BottomLeft:\n            case TooltipPosition.BottomRight:\n                if (this.clientHeight - (position.top + hostRect.height) < 0) {\n                    pos =\n                        pos === TooltipPosition.Bottom\n                            ? TooltipPosition.Top\n                            : pos === TooltipPosition.BottomLeft\n                            ? TooltipPosition.TopLeft\n                            : TooltipPosition.TopRight;\n\n                    position = this.applyOffset(this.calcPosition(pos, hostRect, rectReference), true);\n                }\n                break;\n        }\n\n        return position;\n    }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}