UNPKG

@yelon/abc

Version:

Common business components of ng-yunzai.

1 lines 8.32 kB
{"version":3,"file":"down-file.mjs","sources":["../../../../packages/abc/down-file/down-file.directive.ts","../../../../packages/abc/down-file/down-file.module.ts","../../../../packages/abc/down-file/down-file.ts"],"sourcesContent":["import { HttpResponse } from '@angular/common/http';\nimport { Directive, ElementRef, EventEmitter, Input, Output, inject } from '@angular/core';\nimport { finalize } from 'rxjs';\n\nimport { saveAs } from 'file-saver';\n\nimport { _HttpClient } from '@yelon/theme';\n\n@Directive({\n selector: '[down-file]',\n exportAs: 'downFile',\n host: {\n '(click)': '_click($event)'\n }\n})\nexport class DownFileDirective {\n private readonly el: HTMLButtonElement = inject(ElementRef).nativeElement;\n private readonly _http = inject(_HttpClient);\n @Input('http-data') httpData: any;\n @Input('http-body') httpBody: any;\n @Input('http-method') httpMethod: string = 'get';\n @Input({ alias: 'http-url', required: true }) httpUrl!: string;\n @Input('file-name') fileName?: string | ((rep: HttpResponse<Blob>) => string);\n @Input() pre?: (ev: MouseEvent) => Promise<boolean>;\n @Output() readonly success = new EventEmitter<HttpResponse<Blob>>();\n @Output() readonly error = new EventEmitter<any>();\n\n private getDisposition(data: string | null): any {\n const arr: Array<Record<string, string>> = (data || '')\n .split(';')\n .filter(i => i.includes('='))\n .map(v => {\n const strArr = v.split('=');\n const utfId = `UTF-8''`;\n let value = strArr[1];\n if (value.startsWith(utfId)) value = value.substring(utfId.length);\n return { [strArr[0].trim()]: value };\n });\n return arr.reduce((_o, item) => item, {});\n }\n private isFileSaverSupported = false;\n\n constructor() {\n try {\n this.isFileSaverSupported = !!new Blob();\n } catch {}\n if (!this.isFileSaverSupported) {\n this.el.classList.add(`down-file__not-support`);\n }\n }\n\n private setDisabled(status: boolean): void {\n const el = this.el;\n el.disabled = status;\n el.classList[status ? 'add' : 'remove'](`down-file__disabled`);\n }\n\n async _click(ev: MouseEvent): Promise<void> {\n if (!this.isFileSaverSupported || (typeof this.pre === 'function' && !(await this.pre(ev)))) {\n ev.stopPropagation();\n ev.preventDefault();\n return;\n }\n this.setDisabled(true);\n this._http\n .request(this.httpMethod, this.httpUrl, {\n params: this.httpData || {},\n responseType: 'blob',\n observe: 'response',\n body: this.httpBody\n })\n .pipe(finalize(() => this.setDisabled(false)))\n .subscribe({\n next: (res: HttpResponse<Blob>) => {\n if (res.status !== 200 || res.body!.size <= 0) {\n this.error.emit(res);\n return;\n }\n const disposition = this.getDisposition(res.headers.get('content-disposition'));\n let fileName = this.fileName;\n if (typeof fileName === 'function') fileName = fileName(res);\n fileName =\n fileName ||\n disposition[`filename*`] ||\n disposition[`filename`] ||\n res.headers.get('filename') ||\n res.headers.get('x-filename');\n saveAs(res.body!, decodeURI(fileName as string));\n this.success.emit(res);\n },\n error: err => this.error.emit(err)\n });\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { YunzaiThemeModule } from '@yelon/theme';\n\nimport { DownFileDirective } from './down-file.directive';\n\nconst DIRECTIVES = [DownFileDirective];\n\n@NgModule({\n imports: [CommonModule, YunzaiThemeModule, ...DIRECTIVES],\n exports: DIRECTIVES\n})\nexport class DownFileModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;;MAea,iBAAiB,CAAA;AACX,IAAA,EAAE,GAAsB,MAAM,CAAC,UAAU,CAAC,CAAC,aAAa;AACxD,IAAA,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC;AACxB,IAAA,QAAQ;AACR,IAAA,QAAQ;IACN,UAAU,GAAW,KAAK;AACF,IAAA,OAAO;AACjC,IAAA,QAAQ;AACnB,IAAA,GAAG;AACO,IAAA,OAAO,GAAG,IAAI,YAAY,EAAsB;AAChD,IAAA,KAAK,GAAG,IAAI,YAAY,EAAO;AAE1C,IAAA,cAAc,CAAC,IAAmB,EAAA;AACxC,QAAA,MAAM,GAAG,GAAkC,CAAC,IAAI,IAAI,EAAE;aACnD,KAAK,CAAC,GAAG;aACT,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;aAC3B,GAAG,CAAC,CAAC,IAAG;YACP,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;YAC3B,MAAM,KAAK,GAAG,CAAA,OAAA,CAAS;AACvB,YAAA,IAAI,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC;AACrB,YAAA,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC;gBAAE,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC;AAClE,YAAA,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK,EAAE;AACtC,QAAA,CAAC,CAAC;AACJ,QAAA,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,IAAI,KAAK,IAAI,EAAE,EAAE,CAAC;IAC3C;IACQ,oBAAoB,GAAG,KAAK;AAEpC,IAAA,WAAA,GAAA;AACE,QAAA,IAAI;YACF,IAAI,CAAC,oBAAoB,GAAG,CAAC,CAAC,IAAI,IAAI,EAAE;QAC1C;QAAE,MAAM,EAAC;AACT,QAAA,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;YAC9B,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA,sBAAA,CAAwB,CAAC;QACjD;IACF;AAEQ,IAAA,WAAW,CAAC,MAAe,EAAA;AACjC,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE;AAClB,QAAA,EAAE,CAAC,QAAQ,GAAG,MAAM;AACpB,QAAA,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAA,mBAAA,CAAqB,CAAC;IAChE;IAEA,MAAM,MAAM,CAAC,EAAc,EAAA;QACzB,IAAI,CAAC,IAAI,CAAC,oBAAoB,KAAK,OAAO,IAAI,CAAC,GAAG,KAAK,UAAU,IAAI,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;YAC3F,EAAE,CAAC,eAAe,EAAE;YACpB,EAAE,CAAC,cAAc,EAAE;YACnB;QACF;AACA,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AACtB,QAAA,IAAI,CAAC;aACF,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,EAAE;AACtC,YAAA,MAAM,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE;AAC3B,YAAA,YAAY,EAAE,MAAM;AACpB,YAAA,OAAO,EAAE,UAAU;YACnB,IAAI,EAAE,IAAI,CAAC;SACZ;AACA,aAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAC5C,aAAA,SAAS,CAAC;AACT,YAAA,IAAI,EAAE,CAAC,GAAuB,KAAI;AAChC,gBAAA,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,IAAK,CAAC,IAAI,IAAI,CAAC,EAAE;AAC7C,oBAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;oBACpB;gBACF;AACA,gBAAA,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;AAC/E,gBAAA,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ;gBAC5B,IAAI,OAAO,QAAQ,KAAK,UAAU;AAAE,oBAAA,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC;gBAC5D,QAAQ;oBACN,QAAQ;wBACR,WAAW,CAAC,WAAW,CAAC;wBACxB,WAAW,CAAC,UAAU,CAAC;AACvB,wBAAA,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;AAC3B,wBAAA,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;gBAC/B,MAAM,CAAC,GAAG,CAAC,IAAK,EAAE,SAAS,CAAC,QAAkB,CAAC,CAAC;AAChD,gBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;YACxB,CAAC;AACD,YAAA,KAAK,EAAE,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG;AAClC,SAAA,CAAC;IACN;uGA7EW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,UAAA,CAAA,EAAA,UAAA,EAAA,CAAA,aAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,SAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,UAAA,CAAA,EAAA,GAAA,EAAA,KAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAP7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,QAAQ,EAAE,UAAU;AACpB,oBAAA,IAAI,EAAE;AACJ,wBAAA,SAAS,EAAE;AACZ;AACF,iBAAA;wDAIqB,QAAQ,EAAA,CAAA;sBAA3B,KAAK;uBAAC,WAAW;gBACE,QAAQ,EAAA,CAAA;sBAA3B,KAAK;uBAAC,WAAW;gBACI,UAAU,EAAA,CAAA;sBAA/B,KAAK;uBAAC,aAAa;gBAC0B,OAAO,EAAA,CAAA;sBAApD,KAAK;AAAC,gBAAA,IAAA,EAAA,CAAA,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE;gBACxB,QAAQ,EAAA,CAAA;sBAA3B,KAAK;uBAAC,WAAW;gBACT,GAAG,EAAA,CAAA;sBAAX;gBACkB,OAAO,EAAA,CAAA;sBAAzB;gBACkB,KAAK,EAAA,CAAA;sBAAvB;;;AClBH,MAAM,UAAU,GAAG,CAAC,iBAAiB,CAAC;MAMzB,cAAc,CAAA;uGAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,YAHf,YAAY,EAAE,iBAAiB,EAHvB,iBAAiB,aAAjB,iBAAiB,CAAA,EAAA,CAAA;wGAMxB,cAAc,EAAA,OAAA,EAAA,CAHf,YAAY,EAAE,iBAAiB,CAAA,EAAA,CAAA;;2FAG9B,cAAc,EAAA,UAAA,EAAA,CAAA;kBAJ1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,EAAE,iBAAiB,EAAE,GAAG,UAAU,CAAC;AACzD,oBAAA,OAAO,EAAE;AACV,iBAAA;;;ACZD;;AAEG;;;;"}