{"version":3,"file":"usitsdasdesign-dds-ng-shared-resize-handler.mjs","sources":["../../src/app/dds/shared/resize-handler/constants.ts","../../src/app/dds/shared/resize-handler/resize-handler.service.ts","../../src/app/dds/shared/resize-handler/resize-handler.directive.ts","../../src/app/dds/shared/resize-handler/resize-handler.module.ts","../../src/app/dds/shared/resize-handler/usitsdasdesign-dds-ng-shared-resize-handler.ts"],"sourcesContent":["export const TABLET_BREAKPOINT = 1024;\nexport const MOBILE_BREAKPOINT = 575;\n","import { Injectable } from '@angular/core';\nimport { Devices } from '@usitsdasdesign/dds-ng/shared';\nimport { fromEvent, Observable } from 'rxjs';\nimport { map, share } from 'rxjs/operators';\nimport { MOBILE_BREAKPOINT, TABLET_BREAKPOINT } from './constants';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ResizeHandlerService {\n  // Breakpoint width for tablet devices.\n  public tabletBreakPoint = TABLET_BREAKPOINT;\n\n  // Breakpoint width for mobile devices.\n  public mobileBreakPoint = MOBILE_BREAKPOINT;\n\n  // Observable that emits the current device type whenever a resize event occurs.\n  public device$: Observable<Devices>;\n\n  constructor() {\n    this.device$ = fromEvent(window, 'resize').pipe(\n      share(),\n      map(() => {\n        return this.getDevice();\n      })\n    );\n  }\n\n  // Determines the current device type based on the window width.\n  public getDevice(): Devices {\n    if (window.innerWidth <= this.mobileBreakPoint) {\n      return Devices.mobile;\n    } else if (window.innerWidth <= this.tabletBreakPoint) {\n      return Devices.tablet;\n    }\n\n    return Devices.desktop;\n  }\n}\n","import { Directive, ElementRef, Input, OnDestroy, OnInit, Renderer2 } from '@angular/core';\nimport { Devices, DevicesClass } from '@usitsdasdesign/dds-ng/shared';\nimport { Subscription } from 'rxjs';\nimport { ResizeHandlerService } from './resize-handler.service';\n\n@Directive({\n  selector: '[ddsResize]',\n  standalone: true\n})\nexport class ResizeHandlerDirective implements OnInit, OnDestroy {\n  // Determines if the directive should respond to device changes.\n  @Input() isResponsive = true;\n\n  private resizeSubscription = new Subscription();\n  private _currentDevice: Devices;\n\n  // Gets the current device type.\n  get currentDevice(): Devices {\n    return this._currentDevice;\n  }\n\n  // Sets the current device type and updates the CSS classes accordingly.\n  set currentDevice(device: Devices) {\n    this._currentDevice = device;\n    this.removeDeviceClasses();\n    this.addCurrentDeviceClass(device);\n  }\n\n  constructor(private renderer: Renderer2, private el: ElementRef, private resizeHandlerService: ResizeHandlerService) { }\n\n  public ngOnInit(): void {\n    if (this.isResponsive) {\n      this.currentDevice = this.resizeHandlerService.getDevice();\n      this.resizeSubscription = this.resizeHandlerService.device$.subscribe((device) => (this.currentDevice = device));\n    }\n  }\n\n  public ngOnDestroy(): void {\n    this.resizeSubscription.unsubscribe();\n  }\n\n  // Adds the CSS class corresponding to the current device type.\n  private addCurrentDeviceClass(device: keyof typeof DevicesClass): void {\n    this.renderer.addClass(this.el.nativeElement, DevicesClass[device]);\n  }\n\n  // Removes all device-specific CSS classes.\n  private removeDeviceClasses(): void {\n    for (const key in Devices) {\n      if (Devices[key as keyof typeof Devices]) {\n        this.renderer.removeClass(\n          this.el.nativeElement,\n          DevicesClass[key as keyof typeof DevicesClass]\n        );\n      }\n    }\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { ResizeHandlerDirective } from './resize-handler.directive';\nimport { ResizeHandlerService } from './resize-handler.service';\n\n@NgModule({\n  declarations: [],\n  imports: [ResizeHandlerDirective],\n  exports: [ResizeHandlerDirective],\n  providers: [ResizeHandlerService],\n})\nexport class ResizeHandlerModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.ResizeHandlerService"],"mappings":";;;;;;AAAO,MAAM,iBAAiB,GAAG,IAAI;AAC9B,MAAM,iBAAiB,GAAG,GAAG;;MCQvB,oBAAoB,CAAA;AAU/B,IAAA,WAAA,GAAA;;QARO,IAAA,CAAA,gBAAgB,GAAG,iBAAiB;;QAGpC,IAAA,CAAA,gBAAgB,GAAG,iBAAiB;AAMzC,QAAA,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,IAAI,CAC7C,KAAK,EAAE,EACP,GAAG,CAAC,MAAK;AACP,YAAA,OAAO,IAAI,CAAC,SAAS,EAAE;QACzB,CAAC,CAAC,CACH;IACH;;IAGO,SAAS,GAAA;QACd,IAAI,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC,gBAAgB,EAAE;YAC9C,OAAO,OAAO,CAAC,MAAM;QACvB;aAAO,IAAI,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACrD,OAAO,OAAO,CAAC,MAAM;QACvB;QAEA,OAAO,OAAO,CAAC,OAAO;IACxB;8GA5BW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,cAFnB,MAAM,EAAA,CAAA,CAAA;;2FAEP,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAHhC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCCY,sBAAsB,CAAA;;AAQjC,IAAA,IAAI,aAAa,GAAA;QACf,OAAO,IAAI,CAAC,cAAc;IAC5B;;IAGA,IAAI,aAAa,CAAC,MAAe,EAAA;AAC/B,QAAA,IAAI,CAAC,cAAc,GAAG,MAAM;QAC5B,IAAI,CAAC,mBAAmB,EAAE;AAC1B,QAAA,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC;IACpC;AAEA,IAAA,WAAA,CAAoB,QAAmB,EAAU,EAAc,EAAU,oBAA0C,EAAA;QAA/F,IAAA,CAAA,QAAQ,GAAR,QAAQ;QAAqB,IAAA,CAAA,EAAE,GAAF,EAAE;QAAsB,IAAA,CAAA,oBAAoB,GAApB,oBAAoB;;QAjBpF,IAAA,CAAA,YAAY,GAAG,IAAI;AAEpB,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,YAAY,EAAE;IAewE;IAEhH,QAAQ,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE;YAC1D,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,MAAM,MAAM,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,CAAC;QAClH;IACF;IAEO,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE;IACvC;;AAGQ,IAAA,qBAAqB,CAAC,MAAiC,EAAA;AAC7D,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;IACrE;;IAGQ,mBAAmB,GAAA;AACzB,QAAA,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE;AACzB,YAAA,IAAI,OAAO,CAAC,GAA2B,CAAC,EAAE;AACxC,gBAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CACvB,IAAI,CAAC,EAAE,CAAC,aAAa,EACrB,YAAY,CAAC,GAAgC,CAAC,CAC/C;YACH;QACF;IACF;8GA/CW,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,oBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAJlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,UAAU,EAAE;AACb,iBAAA;;sBAGE;;;MCDU,mBAAmB,CAAA;8GAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAnB,mBAAmB,EAAA,OAAA,EAAA,CAJpB,sBAAsB,CAAA,EAAA,OAAA,EAAA,CACtB,sBAAsB,CAAA,EAAA,CAAA,CAAA;+GAGrB,mBAAmB,EAAA,SAAA,EAFnB,CAAC,oBAAoB,CAAC,EAAA,CAAA,CAAA;;2FAEtB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,EAAE;oBAChB,OAAO,EAAE,CAAC,sBAAsB,CAAC;oBACjC,OAAO,EAAE,CAAC,sBAAsB,CAAC;oBACjC,SAAS,EAAE,CAAC,oBAAoB,CAAC;AAClC,iBAAA;;;ACTD;;AAEG;;;;"}