{"version":3,"file":"moxa-formoxa-mx-resize.mjs","sources":["../../../../libs/formoxa/mx-resize/src/lib/components/mx-resize-handler.component.ts","../../../../libs/formoxa/mx-resize/src/lib/directives/mx-resize.directive.ts","../../../../libs/formoxa/mx-resize/src/moxa-formoxa-mx-resize.ts"],"sourcesContent":["import { CdkDragEnd, CdkDragMove, DragDropModule } from '@angular/cdk/drag-drop';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, ElementRef, Input, NgZone, booleanAttribute, inject } from '@angular/core';\nimport { Subject, auditTime, startWith, tap, withLatestFrom } from 'rxjs';\n\n@Component({\n  selector: 'mx-resize-handler',\n  imports: [CommonModule, DragDropModule],\n  template: `\n    @if (trigger$ | async) {\n      <span\n        class=\"mx-resize-right\"\n        cdkDrag\n        cdkDragLockAxis=\"x\"\n        (cdkDragStarted)=\"dragStarted()\"\n        (cdkDragMoved)=\"dragMoved($event)\"\n        (cdkDragEnded)=\"dragEnded($event)\"\n      ></span>\n      <span\n        class=\"mx-resize-bottom\"\n        cdkDrag\n        cdkDragLockAxis=\"y\"\n        (cdkDragStarted)=\"dragStarted()\"\n        (cdkDragMoved)=\"dragMoved($event)\"\n        (cdkDragEnded)=\"dragEnded($event)\"\n      ></span>\n      <span\n        class=\"mx-resize-corner\"\n        cdkDrag\n        (cdkDragStarted)=\"dragStarted()\"\n        (cdkDragMoved)=\"dragMoved($event)\"\n        (cdkDragEnded)=\"dragEnded($event)\"\n      ></span>\n      @if (showIcon) {\n        <span class=\"mx-resize-corner mx-resize-corner__icon\"></span>\n      }\n    }\n  `,\n  styleUrls: ['./mx-resize-handler.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MxResizeHandlerComponent {\n  private readonly elementRef = inject(ElementRef);\n  private readonly ngZone = inject(NgZone);\n\n  @Input({ transform: booleanAttribute }) showIcon: boolean = false;\n\n  private startSize$ = new Subject<DOMRect>();\n  private dragMove$ = new Subject<CdkDragMove>();\n  private dragMoveAudited$ = this.dragMove$.pipe(\n    withLatestFrom(this.startSize$),\n    auditTime(16),\n    tap(([{ distance }, rect]) => {\n      this.ngZone.runOutsideAngular(() => {\n        this.hostElement.style.width = `${rect.width + distance.x}px`;\n        this.hostElement.style.height = `${rect.height + distance.y}px`;\n      });\n    })\n  );\n  readonly trigger$ = this.dragMoveAudited$.pipe(startWith(true));\n  readonly resized$ = new Subject<DOMRect>();\n\n  get hostElement(): HTMLElement {\n    return this.elementRef.nativeElement.parentElement;\n  }\n\n  dragStarted(): void {\n    this.startSize$.next(this.hostElement.getBoundingClientRect());\n  }\n\n  dragMoved($event: CdkDragMove): void {\n    this.dragMove$.next($event);\n  }\n\n  dragEnded($event: CdkDragEnd): void {\n    $event.source._dragRef.reset();\n    this.resized$.next(this.hostElement.getBoundingClientRect());\n  }\n}\n","import {\n  ComponentRef,\n  Directive,\n  ElementRef,\n  EventEmitter,\n  Input,\n  Output,\n  Renderer2,\n  SimpleChanges,\n  ViewContainerRef,\n  booleanAttribute,\n  inject\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { MxResizeHandlerComponent } from '../components/mx-resize-handler.component';\n\n@Directive({\n  selector: '[mxResize]',\n  standalone: true,\n  host: {\n    '[class.mx-resize]': 'true'\n  }\n})\nexport class MxResizeDirective {\n  private readonly elementRef = inject(ElementRef);\n  private readonly viewContainerRef = inject(ViewContainerRef);\n  private readonly renderer = inject(Renderer2);\n  private subscriptions = new Subscription();\n  private handlerComponent: ComponentRef<MxResizeHandlerComponent> | null = null;\n\n  @Input({ alias: 'mxResizeShowIcon', transform: booleanAttribute }) showIcon: boolean = false;\n  @Input({ transform: booleanAttribute }) mxResize: boolean = true;\n  @Output() mxResized = new EventEmitter<DOMRect>();\n\n  createComponent() {\n    this.handlerComponent = this.viewContainerRef.createComponent(MxResizeHandlerComponent);\n    this.renderer.appendChild(this.elementRef.nativeElement, this.handlerComponent.location.nativeElement);\n    const sub = this.handlerComponent.instance.resized$.subscribe((e) => this.mxResized.emit(e));\n    this.updateSubscriptions(sub);\n  }\n\n  removeComponent() {\n    this.viewContainerRef.clear();\n    this.subscriptions.unsubscribe();\n  }\n\n  updateHandler() {\n    if (this.handlerComponent) {\n      this.handlerComponent.instance.showIcon = this.showIcon;\n    }\n  }\n\n  updateSubscriptions(sub: Subscription) {\n    this.subscriptions.unsubscribe();\n    this.subscriptions = new Subscription();\n    this.subscriptions.add(sub);\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if ('mxResize' in changes) {\n      if (changes['mxResize'].currentValue) {\n        this.createComponent();\n      } else {\n        this.removeComponent();\n      }\n    }\n    if ('showIcon' in changes) {\n      this.updateHandler();\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.subscriptions.unsubscribe();\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}