{"version":3,"file":"mosaic-design-infosec-components-components-float-panel.mjs","sources":["../../../libs/components/float-panel/src/lib/types/alignment.ts","../../../libs/components/float-panel/src/lib/types/bound-position.ts","../../../libs/components/float-panel/src/lib/constants/options.ts","../../../libs/components/float-panel/src/lib/constants/state.ts","../../../libs/components/float-panel/src/lib/directives/float-panel-drag-trigger/float-panel-drag-trigger.directive.ts","../../../libs/components/float-panel/src/lib/directives/float-panel-drag-ignore/float-panel-drag-ignore.directive.ts","../../../libs/components/float-panel/src/lib/components/float-panel/float-panel.component.ts","../../../libs/components/float-panel/src/lib/components/float-panel/float-panel.component.html","../../../libs/components/float-panel/src/lib/float-panel.module.ts","../../../libs/components/float-panel/mosaic-design-infosec-components-components-float-panel.ts"],"sourcesContent":["export enum Alignment {\n    Left = 'left',\n    Right = 'right',\n    Normal = 'normal'\n}\n","export enum BoundPosition {\n    Fixed = 'fixed',\n    Absolute = 'absolute'\n}\n","import { BoundPosition, FloatPanelOptions } from '../types';\n\nexport const defaultFloatPanelOptions: Readonly<FloatPanelOptions> = {\n    boundPosition: BoundPosition.Fixed,\n    isBoundConstrainedByWindow: true,\n    hasBackdrop: false,\n    hasInnerBackDrop: false,\n    minWidth: 360,\n    minHeight: 96,\n    isResizingEnabled: true,\n    isStickingOnMoveEnabled: true,\n    isStickingOnResizeEnabled: true,\n    stickingBoundaryWidth: 10,\n    stopMouseDownEventOnBorderOrCorner: true\n};\n","import { Alignment, FloatPanelState } from '../types';\n\nexport const defaultFloatPanelState: Readonly<FloatPanelState> = {\n    left: 500,\n    top: 500,\n    width: 400,\n    height: 300,\n    alignment: Alignment.Normal\n};\n","import { Directive, ElementRef, EventEmitter, HostBinding, HostListener, Output } from '@angular/core';\n\n@Directive({\n    selector: '[icFloatPanelDragTrigger]'\n})\nexport class IcFloatPanelDragTriggerDirective {\n    @HostBinding('class.ic-float-panel-drag-trigger_active')\n    get isActive(): boolean {\n        return this._isActive;\n    }\n\n    private _isActive = false;\n\n    @Output() activeChange = new EventEmitter<boolean>();\n\n    @HostBinding('class') private defaultClass = 'ic-float-panel-drag-trigger';\n\n    constructor(public elementRef: ElementRef) {}\n\n    get element(): HTMLElement {\n        return this.elementRef.nativeElement as HTMLElement;\n    }\n\n    @HostListener('mousedown')\n    onMouseDown(): void {\n        this._isActive = true;\n        this.activeChange.emit(this.isActive);\n    }\n\n    @HostListener('window:mouseup')\n    onMouseUp(): void {\n        this._isActive = false;\n        this.activeChange.emit(this.isActive);\n    }\n}\n","import { Directive, ElementRef, EventEmitter, HostBinding, HostListener, Output } from '@angular/core';\n\n@Directive({\n    selector: '[icFloatPanelDragIgnore]'\n})\nexport class IcFloatPanelDragIgnoreDirective {\n    @HostBinding('class.ic-float-panel-drag-ignore_active')\n    get isActive(): boolean {\n        return this._isActive;\n    }\n\n    private _isActive = false;\n\n    @Output() activeChange = new EventEmitter<boolean>();\n\n    @HostBinding('class') private defaultClass = 'ic-float-panel-drag-ignore';\n\n    constructor(public elementRef: ElementRef) {}\n\n    get element(): HTMLElement {\n        return this.elementRef.nativeElement as HTMLElement;\n    }\n\n    @HostListener('mousedown')\n    onMouseDown(): void {\n        this._isActive = true;\n        this.activeChange.emit(this.isActive);\n    }\n\n    @HostListener('window:mouseup')\n    onMouseUp(): void {\n        this._isActive = false;\n        this.activeChange.emit(this.isActive);\n    }\n}\n","import { Point } from '@angular/cdk/drag-drop';\nimport {\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    Component,\n    ContentChildren,\n    ElementRef,\n    EventEmitter,\n    HostBinding,\n    HostListener,\n    Inject,\n    Input,\n    NgZone,\n    OnDestroy,\n    Output,\n    QueryList,\n    Renderer2,\n    ViewEncapsulation\n} from '@angular/core';\n\nimport { isEqualByHash } from '@mosaic-design/infosec-components/external/object-hash/utils';\nimport { WINDOW, WindowRef } from '@mosaic-design/infosec-components/tokens';\n\nimport { defaultFloatPanelOptions, defaultFloatPanelState } from '../../constants';\nimport { IcFloatPanelDragIgnoreDirective, IcFloatPanelDragTriggerDirective } from '../../directives';\nimport { Alignment, BoundPosition, FloatPanelOptions, FloatPanelPositionAndSize, FloatPanelState } from '../../types';\n\ninterface RectConstraint {\n    left: number;\n    top: number;\n    right: number;\n    bottom: number;\n}\n\nenum ResizeDirection {\n    Left = 'left',\n    Right = 'right',\n    Top = 'top',\n    Bottom = 'bottom'\n}\n\nenum FloatPanelAction {\n    None = 'none',\n    Resize = 'resize',\n    Drag = 'drag'\n}\n\ninterface Size {\n    width: number;\n    height: number;\n}\n\n@Component({\n    selector: 'ic-float-panel',\n    templateUrl: './float-panel.component.html',\n    styleUrls: ['./float-panel.component.scss'],\n    host: {\n        class: 'ic-float-panel'\n    },\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None\n})\nexport class FloatPanelComponent implements AfterViewInit, OnDestroy {\n    resizeDirection = ResizeDirection;\n    floatPanelAction = FloatPanelAction;\n\n    @Input() set state(value: FloatPanelState | undefined) {\n        const state = value ? { ...value } : { ...defaultFloatPanelState };\n\n        if (!isEqualByHash(this._state, state)) {\n            this._state = state;\n            this.refresh();\n            this.isStateInitialized = true;\n        }\n    }\n\n    private _state: FloatPanelState = { ...defaultFloatPanelState };\n\n    @Input() set options(value: FloatPanelOptions) {\n        this._options = {\n            ...defaultFloatPanelOptions,\n            ...value\n        };\n\n        if (this.isStateInitialized) {\n            this.refresh();\n        }\n    }\n\n    private _options: FloatPanelOptions = { ...defaultFloatPanelOptions };\n\n    @Output() stateChange = new EventEmitter<FloatPanelState>();\n\n    @ContentChildren(IcFloatPanelDragTriggerDirective, { descendants: true })\n    dragTriggers: QueryList<IcFloatPanelDragTriggerDirective> | undefined;\n\n    @ContentChildren(IcFloatPanelDragIgnoreDirective, { descendants: true })\n    dragIgnores: QueryList<IcFloatPanelDragIgnoreDirective> | undefined;\n\n    action = FloatPanelAction.None;\n    resizeDirections: ResizeDirection[] = [];\n    isContentHovered = false;\n\n    private isStateInitialized = false;\n    private actionStartPosition: Point = { x: 0, y: 0 };\n    private sizeOnActionStart: Size = { width: 0, height: 0 };\n    private sizeBeforeSticking: Size | undefined;\n    private readonly listeners: (() => void)[] = [];\n    private lastEmittedState: FloatPanelState | undefined;\n\n    constructor(\n        @Inject(WINDOW) private windowRef: WindowRef,\n        private ngZone: NgZone,\n        private renderer: Renderer2,\n        private floatPanelRef: ElementRef<Element>\n    ) {}\n\n    ngAfterViewInit(): void {\n        this.refresh();\n    }\n\n    ngOnDestroy(): void {\n        this.clearListeners();\n    }\n\n    get isRightPanel(): boolean {\n        return this._state.alignment === Alignment.Right;\n    }\n\n    get isLeftPanel(): boolean {\n        return this._state.alignment === Alignment.Left;\n    }\n\n    get hasTriggers(): boolean {\n        return (this.dragTriggers && this.dragTriggers.length > 0) || false;\n    }\n\n    get hasDragIgnores(): boolean {\n        return (this.dragIgnores && this.dragIgnores.length > 0) || false;\n    }\n\n    @HostBinding('class.ic-float-panel_without-triggers')\n    get withoutTriggers(): boolean {\n        return !this.hasTriggers;\n    }\n\n    @HostBinding('class.ic-float-panel_resizing')\n    get isResizing(): boolean {\n        return this.action === FloatPanelAction.Resize;\n    }\n\n    @HostBinding('class.ic-float-panel_dragging')\n    get isDragging(): boolean {\n        return this.action === FloatPanelAction.Drag;\n    }\n\n    @HostBinding('class.ic-float-panel_bound-by-element')\n    get hasBoundDomElement(): boolean {\n        return (this._options.bound && this._options.bound instanceof HTMLElement) || false;\n    }\n\n    @HostBinding('class.ic-float-panel_bound-position-absolute')\n    get isBoundPositionAbsolute(): boolean {\n        return this._options.boundPosition === BoundPosition.Absolute;\n    }\n\n    get activeTrigger(): IcFloatPanelDragTriggerDirective | undefined {\n        return this.dragTriggers?.find((trigger) => trigger.isActive);\n    }\n\n    get activeDragIgnore(): IcFloatPanelDragIgnoreDirective | undefined {\n        return this.dragIgnores?.find((ignore) => ignore.isActive);\n    }\n\n    get hasBackdrop(): boolean {\n        return !!this._options.hasBackdrop;\n    }\n\n    get hasInnerBackdrop(): boolean {\n        return !!this._options.hasInnerBackDrop;\n    }\n\n    get isResizingEnabled(): boolean {\n        return this._options.isResizingEnabled;\n    }\n\n    refresh(): void {\n        switch (this._state.alignment) {\n            case Alignment.Left:\n                this.alignToLeft();\n                break;\n            case Alignment.Right:\n                this.alignToRight();\n                break;\n            default:\n                this.fit();\n        }\n\n        this.refreshStyles();\n    }\n\n    @HostListener('mousedown', ['$event'])\n    onMouseDown(event: MouseEvent): void {\n        if (this.hasDragIgnores && this.activeDragIgnore) {\n            return;\n        }\n\n        if ((this.hasTriggers && this.activeTrigger) || !this.hasTriggers) {\n            this.actionStartPosition = {\n                x: event.clientX,\n                y: event.clientY\n            };\n\n            this.sizeOnActionStart = {\n                width: this._state.width,\n                height: this._state.height\n            };\n\n            this.action = FloatPanelAction.Drag;\n\n            this.createRenderListeners();\n        }\n    }\n\n    onWindowMouseUp(): void {\n        this.clearListeners();\n\n        this.ngZone.run(() => {\n            if (this.action !== FloatPanelAction.None) {\n                this.emitState();\n            }\n\n            this.action = FloatPanelAction.None;\n            this.resizeDirections = [];\n        });\n    }\n\n    onWindowMouseMove(event: MouseEvent): void {\n        switch (this.action) {\n            case FloatPanelAction.Resize:\n                this.resize(event);\n                break;\n            case FloatPanelAction.Drag:\n                this.move(event);\n                break;\n            default:\n                return;\n        }\n\n        this.refreshStyles();\n    }\n\n    @HostListener('window:resize')\n    onWindowResize(): void {\n        this.refresh();\n    }\n\n    onContentMouseEnter(): void {\n        this.isContentHovered = true;\n    }\n\n    onContentMouseLeave(): void {\n        this.isContentHovered = false;\n    }\n\n    onBorderOrCornerMouseDown(event: MouseEvent, ...resizeDirections: ResizeDirection[]): void {\n        if (this._options.stopMouseDownEventOnBorderOrCorner) {\n            event.stopPropagation();\n            event.preventDefault();\n        }\n\n        this.action = FloatPanelAction.Resize;\n        this.resizeDirections = resizeDirections;\n\n        this.actionStartPosition = {\n            x: event.clientX,\n            y: event.clientY\n        };\n\n        this.sizeOnActionStart = {\n            width: this._state.width,\n            height: this._state.height\n        };\n\n        this.createRenderListeners();\n    }\n\n    private createRenderListeners(): void {\n        this.ngZone.runOutsideAngular(() => {\n            this.listeners.push(this.renderer.listen('document', 'mouseup', () => this.onWindowMouseUp()));\n        });\n\n        this.ngZone.runOutsideAngular(() => {\n            this.listeners.push(\n                this.renderer.listen('document', 'mousemove', (e: MouseEvent) => this.onWindowMouseMove(e))\n            );\n        });\n    }\n\n    private clearListeners(): void {\n        while (this.listeners.length > 0) {\n            const unsubscribe = this.listeners.pop();\n\n            if (unsubscribe) {\n                unsubscribe();\n            }\n        }\n    }\n\n    /**\n     * Bound rect in current viewport coordinates\n     */\n    private get viewportBoundRect(): DOMRect {\n        const { bound } = this._options;\n\n        if (bound) {\n            const result = bound instanceof HTMLElement ? bound.getBoundingClientRect() : bound;\n\n            return this._options.isBoundConstrainedByWindow ? this.constraintBoundByWindow(result) : result;\n        } else {\n            return new DOMRect(0, 0, this.windowRef.innerWidth, this.windowRef.innerHeight);\n        }\n    }\n\n    /**\n     * Bound rect in current state coordinates. Can be different from viewport coordinates when\n     * bound specified as HtmlElement and position is absolute.\n     */\n    private get stateBoundRect(): DOMRect {\n        const { bound, boundPosition } = this._options;\n\n        if (bound && bound instanceof HTMLElement && boundPosition === BoundPosition.Absolute) {\n            const boundClientRect = bound.getBoundingClientRect();\n\n            const result = new DOMRect(0, 0, boundClientRect.width, boundClientRect.height);\n\n            return this._options.isBoundConstrainedByWindow ? this.constraintBoundByWindow(result) : result;\n        } else {\n            return this.viewportBoundRect;\n        }\n    }\n\n    private emitState(): void {\n        try {\n            const value = {\n                ...this._state\n            };\n\n            if (!isEqualByHash(value, this.lastEmittedState)) {\n                this.lastEmittedState = value;\n                this.stateChange.emit(value);\n            }\n\n            // eslint-disable-next-line no-empty\n        } catch {}\n    }\n\n    private resize(event: MouseEvent): void {\n        this._state.alignment = Alignment.Normal;\n\n        const cursorPosition: Point = {\n            x: event.clientX,\n            y: event.clientY\n        };\n\n        const boundRect = this.viewportBoundRect;\n\n        if (this._options.isStickingOnResizeEnabled) {\n            if (cursorPosition.x < boundRect.left + (this._options.stickingBoundaryWidth || 0)) {\n                this.alignToLeft();\n                this.onWindowMouseUp();\n\n                return;\n            }\n\n            if (cursorPosition.x > boundRect.right - (this._options.stickingBoundaryWidth || 0)) {\n                this.alignToRight();\n                this.onWindowMouseUp();\n\n                return;\n            }\n        }\n\n        const isOutboundResize =\n            cursorPosition.x < boundRect.left ||\n            cursorPosition.x > boundRect.right ||\n            cursorPosition.y < boundRect.y ||\n            cursorPosition.y > boundRect.bottom;\n\n        if (isOutboundResize) {\n            return;\n        }\n\n        let delta = this.calculateResizeDelta(cursorPosition);\n        delta = this.constraintResizeDeltaByBound(delta);\n        const recalculatedPositionAndSize = this.calculatePositionAndSizeOnResize(delta);\n\n        this.actionStartPosition = {\n            x: event.clientX,\n            y: event.clientY\n        };\n\n        this._state = {\n            ...this._state,\n            ...recalculatedPositionAndSize\n        };\n    }\n\n    private calculateResizeDelta(cursorPosition: Point): Point {\n        const delta: Point = {\n            x: cursorPosition.x - this.actionStartPosition.x,\n            y: cursorPosition.y - this.actionStartPosition.y\n        };\n\n        const boundRect = this.viewportBoundRect;\n        const stateBoundRect = this.stateBoundRect;\n\n        const left = this._state.left + boundRect.left - stateBoundRect.left;\n        const top = this._state.top + boundRect.top - stateBoundRect.top;\n\n        if (this.resizeDirections.includes(ResizeDirection.Left)) {\n            if (delta.x < 0 && cursorPosition.x > left) {\n                delta.x = 0;\n            }\n        }\n\n        if (this.resizeDirections.includes(ResizeDirection.Right)) {\n            if (delta.x > 0) {\n                const right = left + this._state.width;\n\n                if (cursorPosition.x < right) {\n                    delta.x = 0;\n                }\n            }\n        }\n\n        if (this.resizeDirections.includes(ResizeDirection.Top)) {\n            if (delta.y < 0 && cursorPosition.y > top) {\n                delta.y = 0;\n            }\n        }\n\n        if (this.resizeDirections.includes(ResizeDirection.Bottom)) {\n            if (delta.y > 0) {\n                const bottom = top + this._state.height;\n\n                if (cursorPosition.y < bottom) {\n                    delta.y = 0;\n                }\n            }\n        }\n\n        return delta;\n    }\n\n    private constraintResizeDeltaByBound(delta: Point): Point {\n        const stateBoundRect = this.stateBoundRect;\n\n        const maxDelta: RectConstraint = {\n            left: Math.max(0, this._state.left - stateBoundRect.left),\n            top: Math.max(0, this._state.top - stateBoundRect.top),\n            bottom: Math.max(0, stateBoundRect.bottom - this._state.top - this._state.height),\n            right: Math.max(0, stateBoundRect.right - this._state.left - this._state.width)\n        };\n\n        const result: Point = { ...delta };\n\n        for (const direction of this.resizeDirections) {\n            switch (direction) {\n                case ResizeDirection.Left:\n                    result.x = Math.max(-maxDelta.left, delta.x);\n                    break;\n                case ResizeDirection.Top:\n                    result.y = Math.max(-maxDelta.top, delta.y);\n                    break;\n                case ResizeDirection.Right:\n                    result.x = Math.min(maxDelta.right, delta.x);\n                    break;\n                case ResizeDirection.Bottom:\n                    result.y = Math.min(maxDelta.bottom, delta.y);\n                    break;\n                default:\n            }\n        }\n\n        return result;\n    }\n\n    private calculatePositionAndSizeOnResize(delta: Point): FloatPanelPositionAndSize {\n        const result: FloatPanelPositionAndSize = {\n            top: this._state.top,\n            left: this._state.left,\n            width: this._state.width,\n            height: this._state.height\n        };\n\n        for (const direction of this.resizeDirections) {\n            const width = Math.max(result.width - delta.x, this._options.minWidth || 0);\n            const height = Math.max(result.height - delta.y, this._options.minHeight || 0);\n\n            switch (direction) {\n                case ResizeDirection.Left:\n                    result.left += result.width - width;\n                    result.width = width;\n                    break;\n                case ResizeDirection.Top:\n                    result.top += result.height - height;\n                    result.height = height;\n                    break;\n                case ResizeDirection.Right:\n                    result.width = Math.max(result.width + delta.x, this._options.minWidth || 0);\n                    break;\n                case ResizeDirection.Bottom:\n                    result.height = Math.max(result.height + delta.y, this._options.minHeight || 0);\n                    break;\n                default:\n            }\n        }\n\n        return result;\n    }\n\n    private saveSizeBeforeSticking(): void {\n        if (!this.sizeBeforeSticking) {\n            if (this._state.width > 0 && this._state.height > 0) {\n                this.sizeBeforeSticking = {\n                    width: this._state.width,\n                    height: this._state.height\n                };\n            }\n        }\n    }\n\n    private alignToLeft(): void {\n        this.saveSizeBeforeSticking();\n\n        const boundRect = this.stateBoundRect;\n\n        this._state = {\n            ...this._state,\n            alignment: Alignment.Left,\n            left: boundRect.left,\n            top: boundRect.top,\n            width: this._options.minWidth || 0,\n            height: boundRect.height\n        };\n    }\n\n    private alignToRight(): void {\n        this.saveSizeBeforeSticking();\n\n        const boundRect = this.stateBoundRect;\n\n        this._state = {\n            ...this._state,\n            alignment: Alignment.Right,\n            left: boundRect.right - (this._options.minWidth || 0),\n            top: boundRect.top,\n            width: this._options.minWidth || 0,\n            height: boundRect.height\n        };\n    }\n\n    private fit(): void {\n        const boundRect = this.stateBoundRect;\n\n        const changedPositionAndSize: FloatPanelPositionAndSize = {\n            top: this._state.top,\n            left: this._state.left,\n            width: this._state.width,\n            height: this._state.height\n        };\n\n        if (this._state.left < boundRect.left) {\n            changedPositionAndSize.left = boundRect.left;\n        }\n\n        if (this._state.top < boundRect.top) {\n            changedPositionAndSize.top = boundRect.top;\n        }\n\n        const right = this._state.left + this._state.width;\n        if (right > boundRect.right) {\n            if (boundRect.width > this._state.width) {\n                changedPositionAndSize.left = this._state.left - (right - boundRect.width);\n            } else {\n                changedPositionAndSize.width = Math.max(\n                    this._state.width - (right - boundRect.width),\n                    this._options.minWidth || 0\n                );\n            }\n        }\n\n        const bottom = this._state.top + this._state.height;\n        if (bottom > boundRect.bottom) {\n            if (boundRect.height > this._state.height) {\n                changedPositionAndSize.top = boundRect.bottom - this._state.height;\n            } else {\n                changedPositionAndSize.height = Math.max(boundRect.height, this._options.minHeight || 0);\n            }\n        }\n\n        this._state = {\n            ...this._state,\n            ...changedPositionAndSize\n        };\n\n        this.emitState();\n    }\n\n    private findUnstickPosition(): Point {\n        const half = 2;\n\n        const activeTriggerRect = this.activeTrigger?.element.getBoundingClientRect();\n        if (activeTriggerRect) {\n            return {\n                x: activeTriggerRect.x - this._state.left + activeTriggerRect.width / half,\n                y: activeTriggerRect.y - this._state.top + activeTriggerRect.height / half\n            };\n        } else {\n            return this.sizeBeforeSticking\n                ? {\n                      x: this.sizeBeforeSticking.width / half,\n                      y: this.sizeBeforeSticking.height / half\n                  }\n                : { x: 0, y: 0 };\n        }\n    }\n\n    private move(event: MouseEvent): void {\n        const viewportBoundRect = this.viewportBoundRect;\n        const stateBoundRect = this.stateBoundRect;\n\n        const boundRectLeftWithStickingBoundaryWidth =\n            viewportBoundRect.left + (this._options.stickingBoundaryWidth || 0);\n        const boundRectRightWithStickingBoundaryWidth =\n            viewportBoundRect.right - (this._options.stickingBoundaryWidth || 0);\n\n        if (this._options.isStickingOnMoveEnabled) {\n            if (\n                event.clientX < boundRectLeftWithStickingBoundaryWidth &&\n                !this.sizeBeforeSticking?.width &&\n                !this.sizeBeforeSticking?.height\n            ) {\n                this.alignToLeft();\n\n                return;\n            }\n\n            if (\n                event.clientX > boundRectRightWithStickingBoundaryWidth &&\n                !this.sizeBeforeSticking?.width &&\n                !this.sizeBeforeSticking?.height\n            ) {\n                this.alignToRight();\n\n                return;\n            }\n        }\n\n        const isCursorInBoundRect =\n            event.clientX >= boundRectLeftWithStickingBoundaryWidth &&\n            event.clientX <= boundRectRightWithStickingBoundaryWidth;\n\n        if (isCursorInBoundRect) {\n            if (this.sizeBeforeSticking) {\n                this._state.width = this.sizeBeforeSticking.width;\n                this._state.height = this.sizeBeforeSticking.height;\n\n                const unstickPosition = this.findUnstickPosition();\n\n                this._state.left = event.clientX - viewportBoundRect.left - unstickPosition.x;\n                this._state.top = event.clientY - viewportBoundRect.top - unstickPosition.y;\n\n                this.sizeBeforeSticking = undefined;\n                this._state.alignment = Alignment.Normal;\n            } else {\n                this._state.left += event.clientX - this.actionStartPosition.x;\n                this._state.top += event.clientY - this.actionStartPosition.y;\n            }\n\n            this._state.top = Math.max(this._state.top, stateBoundRect.top);\n\n            this._state.top = Math.min(this._state.top, stateBoundRect.bottom - this._state.height);\n\n            if (!this._options.isStickingOnMoveEnabled) {\n                this._state.left = Math.max(this._state.left, stateBoundRect.left);\n                this._state.left = Math.min(this._state.left, stateBoundRect.right - this._state.width);\n            }\n        }\n\n        this.actionStartPosition = {\n            x: event.clientX,\n            y: event.clientY\n        };\n    }\n\n    private refreshStyles(): void {\n        const element = this.floatPanelRef.nativeElement;\n\n        this.renderer.setStyle(element, 'left', `${this._state.left}px`);\n        this.renderer.setStyle(element, 'top', `${this._state.top}px`);\n        this.renderer.setStyle(element, 'width', `${this._state.width}px`);\n        this.renderer.setStyle(element, 'height', `${this._state.height}px`);\n    }\n\n    private constraintBoundByWindow(bound: DOMRect): DOMRect {\n        const windowRect = new DOMRect(0, 0, this.windowRef.innerWidth, this.windowRef.innerHeight);\n\n        const left = Math.max(bound.left, windowRect.left);\n        const top = Math.max(bound.top, windowRect.top);\n        const right = Math.min(bound.right, windowRect.right);\n        const bottom = Math.min(bound.bottom, windowRect.bottom);\n\n        return new DOMRect(left, top, right - left, bottom - top);\n    }\n}\n","<div\n    *ngIf=\"hasBackdrop\"\n    class=\"ic-float-panel__backdrop\"\n    [ngClass]=\"{ 'ic-float-panel__backdrop_active': isContentHovered || action !== floatPanelAction.None }\"\n></div>\n\n<div class=\"ic-float-panel__content\" (mouseenter)=\"onContentMouseEnter()\" (mouseleave)=\"onContentMouseLeave()\">\n    <ng-content></ng-content>\n</div>\n\n<div\n    *ngIf=\"hasInnerBackdrop\"\n    class=\"ic-float-panel__inner-backdrop\"\n    [ngClass]=\"{ 'ic-float-panel__inner-backdrop_active': action !== floatPanelAction.None }\"\n></div>\n\n<ng-container *ngIf=\"isResizingEnabled\">\n    <div\n        class=\"ic-float-panel__border ic-float-panel__border_top\"\n        *ngIf=\"!isLeftPanel && !isRightPanel\"\n        (mousedown)=\"onBorderOrCornerMouseDown($event, resizeDirection.Top)\"\n    ></div>\n\n    <div\n        class=\"ic-float-panel__border ic-float-panel__border_right\"\n        *ngIf=\"!isRightPanel\"\n        (mousedown)=\"onBorderOrCornerMouseDown($event, resizeDirection.Right)\"\n    ></div>\n\n    <div\n        class=\"ic-float-panel__border ic-float-panel__border_bottom\"\n        *ngIf=\"!isLeftPanel && !isRightPanel\"\n        (mousedown)=\"onBorderOrCornerMouseDown($event, resizeDirection.Bottom)\"\n    ></div>\n\n    <div\n        class=\"ic-float-panel__border ic-float-panel__border_left\"\n        *ngIf=\"!isLeftPanel\"\n        (mousedown)=\"onBorderOrCornerMouseDown($event, resizeDirection.Left)\"\n    ></div>\n\n    <div\n        class=\"ic-float-panel__corner ic-float-panel__corner_top-left\"\n        *ngIf=\"!isLeftPanel\"\n        (mousedown)=\"onBorderOrCornerMouseDown($event, resizeDirection.Top, resizeDirection.Left)\"\n    ></div>\n\n    <div\n        class=\"ic-float-panel__corner ic-float-panel__corner_bottom-left\"\n        *ngIf=\"!isLeftPanel\"\n        (mousedown)=\"onBorderOrCornerMouseDown($event, resizeDirection.Bottom, resizeDirection.Left)\"\n    ></div>\n\n    <div\n        class=\"ic-float-panel__corner ic-float-panel__corner_top-right\"\n        *ngIf=\"!isRightPanel\"\n        (mousedown)=\"onBorderOrCornerMouseDown($event, resizeDirection.Top, resizeDirection.Right)\"\n    ></div>\n\n    <div\n        class=\"ic-float-panel__corner ic-float-panel__corner_bottom-right\"\n        *ngIf=\"!isRightPanel\"\n        (mousedown)=\"onBorderOrCornerMouseDown($event, resizeDirection.Bottom, resizeDirection.Right)\"\n    ></div>\n</ng-container>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { FloatPanelComponent } from './components';\nimport { IcFloatPanelDragIgnoreDirective, IcFloatPanelDragTriggerDirective } from './directives';\n\n/**\n * @deprecated Будет удален в 19 версии. Компоненты будут standalone\n */\n@NgModule({\n    imports: [CommonModule],\n    declarations: [FloatPanelComponent, IcFloatPanelDragTriggerDirective, IcFloatPanelDragIgnoreDirective],\n    exports: [FloatPanelComponent, IcFloatPanelDragTriggerDirective, IcFloatPanelDragIgnoreDirective]\n})\nexport class IcFloatPanelModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}