{"version":3,"file":"hslayers-ng-common-download.mjs","sources":["../../../projects/hslayers/common/download/download.directive.ts","../../../projects/hslayers/common/download/hslayers-ng-common-download.ts"],"sourcesContent":["import {\n  Directive,\n  EventEmitter,\n  HostListener,\n  Input,\n  OnDestroy,\n  Output,\n  inject,\n} from '@angular/core';\nimport {DomSanitizer, SafeResourceUrl} from '@angular/platform-browser';\n\n@Directive({\n  selector: '[hsDownload]',\n  standalone: true,\n})\nexport class HsDownloadDirective implements OnDestroy {\n  private domSanitizer = inject(DomSanitizer);\n\n  @Input() hsDownload = '';\n  @Input() mimeType = '';\n  @Output() downloadPrepared = new EventEmitter<SafeResourceUrl>();\n\n  private exportedHref: SafeResourceUrl | null = null;\n  private blobUrl: string | null = null;\n\n  /**\n   * Clean up any created object URLs when the directive is destroyed\n   */\n  ngOnDestroy(): void {\n    this.cleanupResources();\n  }\n\n  /**\n   * Prepare the download URL only when the user clicks\n   */\n  @HostListener('click')\n  onClick(): void {\n    this.prepareDownload();\n  }\n\n  /**\n   * Creates the Blob and object URL for download\n   */\n  prepareDownload(): void {\n    // Clean up previous resources if they exist\n    this.cleanupResources();\n\n    // Create new resources\n    const data = new Blob([this.hsDownload], {type: this.mimeType});\n    this.blobUrl = URL.createObjectURL(data);\n    this.exportedHref = this.domSanitizer.bypassSecurityTrustResourceUrl(\n      this.blobUrl,\n    );\n\n    // Emit the prepared URL\n    this.downloadPrepared.emit(this.exportedHref);\n  }\n\n  /**\n   * Cleanup resources to prevent memory leaks\n   */\n  private cleanupResources(): void {\n    if (this.blobUrl) {\n      URL.revokeObjectURL(this.blobUrl);\n      this.blobUrl = null;\n      this.exportedHref = null;\n    }\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;MAea,mBAAmB,CAAA;AAJhC,IAAA,WAAA,GAAA;AAKU,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;QAElC,IAAA,CAAA,UAAU,GAAG,EAAE;QACf,IAAA,CAAA,QAAQ,GAAG,EAAE;AACZ,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,YAAY,EAAmB;QAExD,IAAA,CAAA,YAAY,GAA2B,IAAI;QAC3C,IAAA,CAAA,OAAO,GAAkB,IAAI;AA6CtC,IAAA;AA3CC;;AAEG;IACH,WAAW,GAAA;QACT,IAAI,CAAC,gBAAgB,EAAE;IACzB;AAEA;;AAEG;IAEH,OAAO,GAAA;QACL,IAAI,CAAC,eAAe,EAAE;IACxB;AAEA;;AAEG;IACH,eAAe,GAAA;;QAEb,IAAI,CAAC,gBAAgB,EAAE;;AAGvB,QAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,EAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAC,CAAC;QAC/D,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC;AACxC,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,8BAA8B,CAClE,IAAI,CAAC,OAAO,CACb;;QAGD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;IAC/C;AAEA;;AAEG;IACK,gBAAgB,GAAA;AACtB,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC;AACjC,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI;AACnB,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI;QAC1B;IACF;+GApDW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,WAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAJ/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;sBAIE;;sBACA;;sBACA;;sBAeA,YAAY;uBAAC,OAAO;;;ACnCvB;;AAEG;;;;"}