cmat 0.0.82 → 0.0.84
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/cmat-components-adapter.mjs +19 -13
- package/fesm2022/cmat-components-adapter.mjs.map +1 -1
- package/fesm2022/cmat-components-breadcrumb.mjs.map +1 -1
- package/fesm2022/cmat-components-card.mjs.map +1 -1
- package/fesm2022/cmat-components-carousel.mjs +20 -20
- package/fesm2022/cmat-components-carousel.mjs.map +1 -1
- package/fesm2022/cmat-components-cascade.mjs +7 -5
- package/fesm2022/cmat-components-cascade.mjs.map +1 -1
- package/fesm2022/cmat-components-chip-input.mjs.map +1 -1
- package/fesm2022/cmat-components-code-editor.mjs +3 -2
- package/fesm2022/cmat-components-code-editor.mjs.map +1 -1
- package/fesm2022/cmat-components-custom-formly.mjs +228 -108
- package/fesm2022/cmat-components-custom-formly.mjs.map +1 -1
- package/fesm2022/cmat-components-date-range.mjs +20 -11
- package/fesm2022/cmat-components-date-range.mjs.map +1 -1
- package/fesm2022/cmat-components-date-time-display.mjs.map +1 -1
- package/fesm2022/cmat-components-drawer.mjs +0 -2
- package/fesm2022/cmat-components-drawer.mjs.map +1 -1
- package/fesm2022/cmat-components-empty-state.mjs.map +1 -1
- package/fesm2022/cmat-components-file-preview.mjs.map +1 -1
- package/fesm2022/cmat-components-filter-toolbar.mjs.map +1 -1
- package/fesm2022/cmat-components-form-actions.mjs.map +1 -1
- package/fesm2022/cmat-components-fullscreen.mjs +1 -1
- package/fesm2022/cmat-components-fullscreen.mjs.map +1 -1
- package/fesm2022/cmat-components-highlight.mjs +1 -1
- package/fesm2022/cmat-components-highlight.mjs.map +1 -1
- package/fesm2022/cmat-components-image-viewer.mjs +29 -11
- package/fesm2022/cmat-components-image-viewer.mjs.map +1 -1
- package/fesm2022/cmat-components-inline-loading.mjs.map +1 -1
- package/fesm2022/cmat-components-json-editor.mjs +16 -26
- package/fesm2022/cmat-components-json-editor.mjs.map +1 -1
- package/fesm2022/cmat-components-knob-input.mjs +8 -7
- package/fesm2022/cmat-components-knob-input.mjs.map +1 -1
- package/fesm2022/cmat-components-masonry.mjs.map +1 -1
- package/fesm2022/cmat-components-material-color-picker.mjs +3 -3
- package/fesm2022/cmat-components-material-color-picker.mjs.map +1 -1
- package/fesm2022/cmat-components-material-datetimepicker.mjs +28 -16
- package/fesm2022/cmat-components-material-datetimepicker.mjs.map +1 -1
- package/fesm2022/cmat-components-navigation.mjs +1 -0
- package/fesm2022/cmat-components-navigation.mjs.map +1 -1
- package/fesm2022/cmat-components-opt-input.mjs +2 -2
- package/fesm2022/cmat-components-opt-input.mjs.map +1 -1
- package/fesm2022/cmat-components-org-chart.mjs.map +1 -1
- package/fesm2022/cmat-components-page-header.mjs.map +1 -1
- package/fesm2022/cmat-components-password-strength.mjs +8 -5
- package/fesm2022/cmat-components-password-strength.mjs.map +1 -1
- package/fesm2022/cmat-components-popover.mjs +2 -2
- package/fesm2022/cmat-components-popover.mjs.map +1 -1
- package/fesm2022/cmat-components-qrcode.mjs +9 -2
- package/fesm2022/cmat-components-qrcode.mjs.map +1 -1
- package/fesm2022/cmat-components-rating.mjs +1 -1
- package/fesm2022/cmat-components-rating.mjs.map +1 -1
- package/fesm2022/cmat-components-rich-text-editor.mjs.map +1 -1
- package/fesm2022/cmat-components-select-search.mjs +25 -24
- package/fesm2022/cmat-components-select-search.mjs.map +1 -1
- package/fesm2022/cmat-components-select-table.mjs +42 -15
- package/fesm2022/cmat-components-select-table.mjs.map +1 -1
- package/fesm2022/cmat-components-select-tree.mjs +3 -1
- package/fesm2022/cmat-components-select-tree.mjs.map +1 -1
- package/fesm2022/cmat-components-skeleton.mjs.map +1 -1
- package/fesm2022/cmat-components-speed-dial.mjs +24 -5
- package/fesm2022/cmat-components-speed-dial.mjs.map +1 -1
- package/fesm2022/cmat-components-status-tag.mjs.map +1 -1
- package/fesm2022/cmat-components-table-toolbar.mjs.map +1 -1
- package/fesm2022/cmat-components-timeline.mjs.map +1 -1
- package/fesm2022/cmat-components-toast.mjs +20 -13
- package/fesm2022/cmat-components-toast.mjs.map +1 -1
- package/fesm2022/cmat-components-transfer-picker.mjs +11 -6
- package/fesm2022/cmat-components-transfer-picker.mjs.map +1 -1
- package/fesm2022/cmat-components-treetable.mjs +4 -3
- package/fesm2022/cmat-components-treetable.mjs.map +1 -1
- package/fesm2022/cmat-components-upload.mjs +29 -15
- package/fesm2022/cmat-components-upload.mjs.map +1 -1
- package/fesm2022/cmat-components-x6-angular-shape.mjs +2 -2
- package/fesm2022/cmat-components-x6-angular-shape.mjs.map +1 -1
- package/fesm2022/cmat-directives-animate-on-scroll.mjs.map +1 -1
- package/fesm2022/cmat-directives-autofocus.mjs.map +1 -1
- package/fesm2022/cmat-directives-data-exporter.mjs +1 -1
- package/fesm2022/cmat-directives-data-exporter.mjs.map +1 -1
- package/fesm2022/cmat-directives-debounce.mjs.map +1 -1
- package/fesm2022/cmat-directives-digit-only.mjs +12 -18
- package/fesm2022/cmat-directives-digit-only.mjs.map +1 -1
- package/fesm2022/cmat-directives-seamless-auto-scroll.mjs +3 -2
- package/fesm2022/cmat-directives-seamless-auto-scroll.mjs.map +1 -1
- package/fesm2022/cmat-lib-mock-api.mjs +7 -7
- package/fesm2022/cmat-lib-mock-api.mjs.map +1 -1
- package/fesm2022/cmat-pipes-find-by-key.mjs +1 -1
- package/fesm2022/cmat-pipes-find-by-key.mjs.map +1 -1
- package/fesm2022/cmat-pipes-group-by.mjs +9 -5
- package/fesm2022/cmat-pipes-group-by.mjs.map +1 -1
- package/fesm2022/cmat-pipes-keys.mjs.map +1 -1
- package/fesm2022/cmat-pipes-secure.mjs +9 -1
- package/fesm2022/cmat-pipes-secure.mjs.map +1 -1
- package/fesm2022/cmat-services-alert.mjs +16 -7
- package/fesm2022/cmat-services-alert.mjs.map +1 -1
- package/fesm2022/cmat-services-data.mjs.map +1 -1
- package/fesm2022/cmat-services-export-as.mjs +11 -10
- package/fesm2022/cmat-services-export-as.mjs.map +1 -1
- package/fesm2022/cmat-services-local-storage.mjs +42 -4
- package/fesm2022/cmat-services-local-storage.mjs.map +1 -1
- package/fesm2022/cmat-services-title.mjs +2 -2
- package/fesm2022/cmat-services-title.mjs.map +1 -1
- package/fesm2022/cmat-services-translation.mjs.map +1 -1
- package/fesm2022/cmat-services-utils.mjs +78 -57
- package/fesm2022/cmat-services-utils.mjs.map +1 -1
- package/fesm2022/cmat-validators.mjs +4 -1
- package/fesm2022/cmat-validators.mjs.map +1 -1
- package/fesm2022/cmat.mjs +746 -426
- package/fesm2022/cmat.mjs.map +1 -1
- package/package.json +1 -1
- package/types/cmat-components-adapter.d.ts +24 -24
- package/types/cmat-components-breadcrumb.d.ts +1 -1
- package/types/cmat-components-card.d.ts +1 -1
- package/types/cmat-components-carousel.d.ts +23 -23
- package/types/cmat-components-cascade.d.ts +12 -12
- package/types/cmat-components-chip-input.d.ts +8 -8
- package/types/cmat-components-code-editor.d.ts +2 -2
- package/types/cmat-components-custom-formly.d.ts +121 -44
- package/types/cmat-components-date-range.d.ts +31 -16
- package/types/cmat-components-drawer.d.ts +2 -3
- package/types/cmat-components-file-preview.d.ts +1 -1
- package/types/cmat-components-image-viewer.d.ts +5 -3
- package/types/cmat-components-json-editor.d.ts +7 -9
- package/types/cmat-components-knob-input.d.ts +3 -3
- package/types/cmat-components-masonry.d.ts +3 -3
- package/types/cmat-components-material-color-picker.d.ts +13 -9
- package/types/cmat-components-material-datetimepicker.d.ts +26 -10
- package/types/cmat-components-navigation.d.ts +1 -1
- package/types/cmat-components-opt-input.d.ts +8 -8
- package/types/cmat-components-popover.d.ts +1 -1
- package/types/cmat-components-qrcode.d.ts +2 -1
- package/types/cmat-components-rating.d.ts +13 -13
- package/types/cmat-components-select-search.d.ts +5 -5
- package/types/cmat-components-select-table.d.ts +12 -8
- package/types/cmat-components-select-tree.d.ts +1 -1
- package/types/cmat-components-speed-dial.d.ts +3 -0
- package/types/cmat-components-timeline.d.ts +2 -2
- package/types/cmat-components-toast.d.ts +2 -2
- package/types/cmat-components-transfer-picker.d.ts +5 -4
- package/types/cmat-components-treetable.d.ts +2 -2
- package/types/cmat-components-upload.d.ts +36 -29
- package/types/cmat-components-x6-angular-shape.d.ts +1 -1
- package/types/cmat-directives-autofocus.d.ts +1 -1
- package/types/cmat-directives-data-exporter.d.ts +3 -2
- package/types/cmat-directives-debounce.d.ts +5 -5
- package/types/cmat-directives-digit-only.d.ts +7 -7
- package/types/cmat-directives-seamless-auto-scroll.d.ts +2 -2
- package/types/cmat-lib-mock-api.d.ts +1 -1
- package/types/cmat-pipes-find-by-key.d.ts +2 -1
- package/types/cmat-pipes-group-by.d.ts +7 -1
- package/types/cmat-pipes-keys.d.ts +4 -1
- package/types/cmat-pipes-secure.d.ts +1 -0
- package/types/cmat-services-alert.d.ts +14 -13
- package/types/cmat-services-data.d.ts +3 -3
- package/types/cmat-services-export-as.d.ts +4 -3
- package/types/cmat-services-local-storage.d.ts +14 -2
- package/types/cmat-services-translation.d.ts +3 -3
- package/types/cmat-services-utils.d.ts +31 -15
- package/types/cmat-validators.d.ts +1 -1
- package/types/cmat.d.ts +465 -303
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cmat-components-upload.mjs","sources":["../../../projects/cmat/components/upload/files.util.service.ts","../../../projects/cmat/components/upload/upload.component.ts","../../../projects/cmat/components/upload/upload.component.html","../../../projects/cmat/components/upload/upload-queue/upload-queue.component.ts","../../../projects/cmat/components/upload/upload-queue/upload-queue.component.html","../../../projects/cmat/components/upload/cmat-components-upload.ts"],"sourcesContent":["import { HttpClient } from '@angular/common/http';\r\nimport { DestroyRef, Injectable, inject } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { IUrlStateConfig, CmatUrlStateConfigService } from 'cmat/services/config';\r\nimport { CmatUtilsService } from 'cmat/services/utils';\r\nimport { Observable, catchError, map, tap } from 'rxjs';\r\nimport { FileListModel } from './files.type';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CmatFilesUtilService {\r\n private _http = inject(HttpClient);\r\n private _urlStateConfigService = inject(CmatUrlStateConfigService);\r\n private readonly _destroyRef = inject(DestroyRef);\r\n\r\n private _config: IUrlStateConfig;\r\n\r\n constructor() {\r\n this._urlStateConfigService.config$\r\n .pipe(takeUntilDestroyed(this._destroyRef))\r\n .subscribe((config: IUrlStateConfig) => {\r\n this._config = config;\r\n });\r\n }\r\n\r\n downloadFile(fileId: string, isStream: boolean = true): Observable<any> {\r\n return this._http.get(`${this._config.fileUrl}/download/${fileId}`, {\r\n headers: CmatUtilsService.getRequestCryptoHeaders(fileId),\r\n observe: 'response',\r\n reportProgress: true,\r\n responseType: 'blob',\r\n params: {\r\n isStream\r\n }\r\n },).pipe<any>(\r\n catchError(CmatUtilsService.handleError));\r\n }\r\n\r\n downloadFileZip(fileIds?: string[]): Observable<any> {\r\n return this._http.post(`${this._config.fileUrl}/download`, fileIds, {\r\n headers: CmatUtilsService.getRequestCryptoHeaders('fileZip'),\r\n observe: 'response',\r\n reportProgress: true,\r\n responseType: 'blob',\r\n }).pipe<any>(\r\n catchError(CmatUtilsService.handleError));\r\n }\r\n\r\n uploadFile(file: FormData): Observable<any> {\r\n return this._http.post(`${this._config.fileUrl}/upload`, file, {\r\n headers: CmatUtilsService.getRequestCryptoHeaders('files'),\r\n observe: 'events',\r\n reportProgress: true,\r\n responseType: 'json'\r\n }).pipe(\r\n tap((res: any) => res),\r\n catchError(CmatUtilsService.handleError));\r\n }\r\n\r\n uploadFileToProcessed(file: FormData): Observable<any> {\r\n return this._http.post(`${this._config.fileUrl}/upload/finish`, file, {\r\n headers: CmatUtilsService.getRequestCryptoHeaders('files'),\r\n observe: 'events',\r\n reportProgress: true,\r\n responseType: 'json'\r\n }).pipe(\r\n tap((res: any) => res),\r\n catchError(CmatUtilsService.handleError));\r\n }\r\n\r\n switchPublic(fileId: string, isPublic: boolean): Observable<any> {\r\n return this._http.patch(`${this._config.fileUrl}/switch-public/${fileId}`, {\r\n id: fileId,\r\n isPublic\r\n }, {\r\n headers: CmatUtilsService.getRequestCryptoHeaders('files-switch-public')\r\n }).pipe(\r\n catchError(err => CmatUtilsService.handleError(err))\r\n );\r\n }\r\n\r\n deleteFile(fileId: string): Observable<any> {\r\n return this._http.delete(`${this._config.fileUrl}/${fileId}`, {\r\n headers: CmatUtilsService.getRequestCryptoHeaders(fileId)\r\n }).pipe(\r\n catchError(err => CmatUtilsService.handleError(err))\r\n );\r\n }\r\n\r\n getFileList(queryData: object, pageIndex: number = -1, pageSize: number = -1): Observable<any> {\r\n if (this._config.enableDataProtect) {\r\n return this._http.post(`${this._config.fileUrl}/${pageIndex}/${pageSize}`,\r\n CmatUtilsService.getEncryptData(JSON.stringify(queryData)),\r\n {\r\n headers: CmatUtilsService.getRequestCryptoHeaders('fileList'),\r\n responseType: 'text'\r\n }\r\n )\r\n .pipe(\r\n map((res: string) => JSON.parse(CmatUtilsService.getDecryptData(res))),\r\n catchError(err => CmatUtilsService.handleError(err))\r\n );\r\n } else {\r\n return this._http.post<FileListModel>(`${this._config.fileUrl}/${pageIndex}/${pageSize}`, queryData, {\r\n headers: CmatUtilsService.getRequestCryptoHeaders('fileList'),\r\n responseType: 'json'\r\n })\r\n .pipe(\r\n tap((res: FileListModel) => res),\r\n catchError(err => CmatUtilsService.handleError(err))\r\n );\r\n }\r\n }\r\n}\r\n","import { NgClass } from '@angular/common';\r\nimport { HttpEventType } from '@angular/common/http';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n DestroyRef,\r\n EventEmitter,\r\n Input,\r\n OnInit,\r\n Output,\r\n ViewEncapsulation,\r\n inject,\r\n signal,\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { CmatBytesPipe } from 'cmat/pipes/bytes';\r\nimport { CmatUtilsService } from 'cmat/services/utils';\r\nimport { saveAs } from 'file-saver-es';\r\nimport { FileModel } from './files.type';\r\nimport { CmatFilesUtilService } from './files.util.service';\r\n\r\n@Component({\r\n selector: 'cmat-upload',\r\n templateUrl: './upload.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n exportAs: 'cmatUpload',\r\n imports: [MatButtonModule, MatIconModule, MatProgressBarModule, MatTooltipModule, CmatBytesPipe, NgClass]\r\n})\r\nexport class CmatUploadComponent implements OnInit {\r\n @Input()\r\n fileAlias: string = 'fileData';\r\n\r\n @Input()\r\n filePath: string = '';\r\n\r\n @Input()\r\n fileCategory: string = '';\r\n\r\n @Input()\r\n isPublic: boolean = false;\r\n\r\n @Input()\r\n editMode: boolean = false;\r\n\r\n @Input() autoUpload = true;\r\n\r\n @Input()\r\n id: string;\r\n\r\n @Output() removeEvent = new EventEmitter<CmatUploadComponent>();\r\n @Output() uploadEvent = new EventEmitter<any>();\r\n\r\n readonly progressPercentage = signal(0);\r\n readonly loaded = signal(0);\r\n readonly total = signal(0);\r\n readonly isUploading = signal(false);\r\n\r\n private _fileService = inject(CmatFilesUtilService);\r\n private readonly _destroyRef = inject(DestroyRef);\r\n\r\n private _file: any;\r\n\r\n @Input()\r\n get file(): any {\r\n return this._file;\r\n }\r\n set file(file: any) {\r\n this._file = file;\r\n this.total.set(this._file.size);\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n get fileType(): 'csv' | 'gif' | 'word' | 'excel' | 'jpg' | 'outlook' | 'pdf' | 'png' | 'ppt' | 'file' | 'text' | 'video' | 'zip' {\r\n return CmatUtilsService.getFileType(this.file.type);\r\n }\r\n\r\n ngOnInit(): void {\r\n if (this.autoUpload && this.id === null) {\r\n this.upload();\r\n }\r\n }\r\n\r\n\r\n upload(): void {\r\n this.isUploading.set(true);\r\n const fileModel = {\r\n id: null,\r\n fileName: this.file.name,\r\n length: this.file.size,\r\n fileCategory: this.fileCategory,\r\n isPublic: this.isPublic,\r\n filePath: this.filePath,\r\n fileType: 'file',\r\n data: this.file\r\n } as FileModel;\r\n\r\n fileModel.fileType = this.fileType;\r\n\r\n const formData = new FormData();\r\n\r\n formData.set('fileData', this._file, this._file.name);\r\n formData.append('fileInfo', JSON.stringify(fileModel));\r\n\r\n this._fileService.uploadFile(formData).pipe(\r\n takeUntilDestroyed(this._destroyRef)\r\n ).subscribe((event: any) => {\r\n if (event.type === HttpEventType.UploadProgress) {\r\n this.progressPercentage.set(Math.floor(event.loaded * 100 / event.total));\r\n this.loaded.set(event.loaded);\r\n this.total.set(event.total);\r\n }\r\n if (event.type === HttpEventType.Response) {\r\n this.id = event.body.id;\r\n this.file.id = event.body.id;\r\n\r\n this.isUploading.set(false);\r\n\r\n this.uploadEvent.emit(this.file);\r\n }\r\n });\r\n }\r\n\r\n download(): void {\r\n this._fileService.downloadFile(this.id).pipe(\r\n takeUntilDestroyed(this._destroyRef)\r\n ).subscribe((file: any) => {\r\n saveAs(new Blob([file.body], { type: 'text/plain;charset=utf-8' }), this.file.name);\r\n });\r\n }\r\n\r\n remove(): void {\r\n this.removeEvent.emit(this);\r\n }\r\n}\r\n","<div class=\"flex flex-col\">\r\n <div class=\"flex flex-row items-center\">\r\n <span class=\"flex items-center px-1\">\r\n <mat-icon class=\"icon-size-6 text-hint\"\r\n [svgIcon]=\"fileType\"></mat-icon>\r\n </span>\r\n <span matTooltip=\"{{file.name}}\"\r\n class=\"text-sm flex flex-auto whitespace-nowrap overflow-x-hidden text-ellipsis\">{{file.name}}({{file.size | cmatBytes}})</span>\r\n <span class=\"flex flex-row gap-1 print:hidden\">\r\n @if(id===null){\r\n <button matIconButton color=\"primary\" class=\"w-8 min-h-8 h-8 max-w-8\" [ngClass]=\"{'disabled' : isUploading()}\"\r\n (click)=\"upload()\">\r\n <mat-icon class=\"icon-size-5\" [svgIcon]=\"'mat_outline:file_upload'\"></mat-icon>\r\n </button>\r\n }\r\n\r\n @if(id!==null){\r\n <button matIconButton color=\"primary\" class=\"w-8 min-h-8 h-8 max-w-8\" (click)=\"download()\">\r\n <mat-icon class=\"icon-size-5\" [svgIcon]=\"'mat_outline:file_download'\"></mat-icon>\r\n </button>\r\n }\r\n\r\n @if(editMode){\r\n <button matIconButton color=\"warn\" class=\"w-8 min-h-8 h-8 max-w-8\" (click)=\"remove()\">\r\n <mat-icon class=\"icon-size-5\" [svgIcon]=\"'heroicons_solid:trash'\"></mat-icon>\r\n </button>\r\n }\r\n </span>\r\n </div>\r\n @if(id===null){\r\n <mat-progress-bar [value]=\"progressPercentage()\"></mat-progress-bar>\r\n <div class=\"text-sm block whitespace-nowrap overflow-x-hidden text-ellipsis\">\r\n <span>{{progressPercentage()}}%</span><span> {{loaded() | cmatBytes}} of {{total() | cmatBytes}}</span>\r\n </div>\r\n }\r\n</div>\r\n","import { AfterViewInit, ChangeDetectionStrategy, Component, DestroyRef, ElementRef, EventEmitter, HostListener, Input, Output, QueryList, ViewChildren, ViewEncapsulation, forwardRef, inject, signal } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatListModule } from '@angular/material/list';\r\nimport { CmatMediaWatcherService } from 'cmat/services/media-watcher';\r\nimport { CmatUploadComponent } from '../upload.component';\r\n\r\n@Component({\r\n selector: 'cmat-upload-queue',\r\n templateUrl: './upload-queue.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n exportAs: 'cmatUploadQueue',\r\n imports: [MatCardModule, MatListModule, MatButtonModule, MatIconModule, CmatUploadComponent]\r\n})\r\nexport class CmatUploadQueueComponent implements AfterViewInit {\r\n @ViewChildren(forwardRef(() => CmatUploadComponent)) fileUploads: QueryList<CmatUploadComponent>;\r\n @Input()\r\n fileAlias: string = 'fileData';\r\n\r\n @Input()\r\n filePath: string = '';\r\n @Input()\r\n fileCategory: string;\r\n\r\n @Input()\r\n isPublic: boolean = false;\r\n\r\n @Input()\r\n required: boolean = false;\r\n\r\n @Input()\r\n autoUpload: boolean = true;\r\n\r\n @Input() multiple: boolean = true;\r\n @Input() accept: string = '';\r\n @Input() title: string = '附件';\r\n @Input() editMode: boolean = false;\r\n @Input()\r\n filesData: any[] | undefined = [];\r\n\r\n @Output() outputRemoveIdEvent = new EventEmitter<string>();\r\n @Output() outputUploadIdEvent = new EventEmitter<string>();\r\n @Output() outputFilesDataEvent = new EventEmitter<any>();\r\n\r\n public id = 'cmatupload-' + Math.floor(Math.random() * 1000000);\r\n\r\n readonly isHandSet = signal(false);\r\n\r\n private _cmatMediaWatcherService = inject(CmatMediaWatcherService);\r\n private _elementRef = inject(ElementRef);\r\n private readonly _destroyRef = inject(DestroyRef);\r\n\r\n\r\n constructor() {\r\n this._cmatMediaWatcherService.onMediaChange$\r\n .pipe(takeUntilDestroyed(this._destroyRef))\r\n .subscribe(({ matchingAliases }) => {\r\n this.isHandSet.set(!matchingAliases.includes('lg'));\r\n });\r\n }\r\n\r\n @HostListener('drop', ['$event'])\r\n onDrop(event: any): void {\r\n const files = event.dataTransfer.files;\r\n\r\n for (const file of files) {\r\n if (this.accept?.includes(file.type))\r\n this.add(file);\r\n }\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n\r\n @HostListener('dragover', ['$event'])\r\n onDropOver(event: any): void {\r\n event.preventDefault();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n const fileUpload = this._elementRef.nativeElement.querySelector('#' + this.id) as HTMLInputElement;\r\n\r\n fileUpload.onchange = (): void => {\r\n for (let index = 0; index < (fileUpload.files?.length ?? 0); index++) {\r\n const file = fileUpload.files![index];\r\n this.add(file);\r\n }\r\n };\r\n }\r\n\r\n add(file: any): void {\r\n if (!this.isFileTypeAccepted(file.type)) {\r\n return;\r\n }\r\n\r\n if (!Array.isArray(this.filesData)) {\r\n this.filesData = [];\r\n }\r\n\r\n if (!(!this.multiple && this.filesData.length > 0)) {\r\n this.filesData = [...this.filesData, file];\r\n } else if (this.fileUploads.first.id === null) {\r\n this.filesData = [...this.filesData, file];\r\n this.fileUploads.first.remove();\r\n }\r\n\r\n }\r\n\r\n upload(event: any): void {\r\n this.outputUploadIdEvent.emit(event.id);\r\n\r\n this.outputFilesDataEvent.emit(this.filesData);\r\n }\r\n\r\n remove(event: CmatUploadComponent): void {\r\n if (this.filesData) {\r\n const index = this.filesData.findIndex(j=>j===event.file);\r\n if (index > -1) {\r\n this.filesData.splice(index, 1);\r\n if (event.file.id) {\r\n this.outputRemoveIdEvent.emit(event.file.id);\r\n }\r\n\r\n this.outputFilesDataEvent.emit(this.filesData);\r\n }\r\n\r\n }\r\n }\r\n\r\n uploadAll(): void {\r\n this.fileUploads.forEach((fileUpload) => {\r\n if (fileUpload.id === null) {\r\n fileUpload.upload();\r\n }\r\n });\r\n\r\n }\r\n\r\n removeAll(): void {\r\n this.fileUploads.forEach((fileUpload) => { fileUpload.remove() });\r\n }\r\n\r\n choose(): void {\r\n (this._elementRef.nativeElement.querySelector('#' + this.id) as HTMLInputElement).click();\r\n }\r\n\r\n private isFileTypeAccepted(fileType: string): boolean {\r\n if (!this.accept || this.accept === '') {\r\n return true;\r\n }\r\n\r\n const acceptedTypes = this.accept.split(',').map(type => type.trim());\r\n\r\n return acceptedTypes.some((type) => {\r\n if (type.endsWith('/*')) {\r\n const prefix = type.slice(0, -1);\r\n return fileType.startsWith(prefix);\r\n }\r\n return fileType === type;\r\n });\r\n }\r\n}\r\n","<mat-card>\r\n <mat-card-header>\r\n <mat-card-title>\r\n <legend class=\"text-lg\">\r\n {{title}}\r\n @if(required){\r\n <span>*</span>\r\n }\r\n </legend>\r\n </mat-card-title>\r\n </mat-card-header>\r\n <input type=\"file\" class=\"hidden\" [id]=\"id\" [multiple]=\"multiple\" [accept]=\"accept\" />\r\n\r\n @if(editMode){\r\n <mat-card-actions class=\"flex flex-row gap-1 print:hidden\">\r\n @if(!isHandSet()){\r\n <button matButton=\"filled\" color=\"primary\" (click)=\"choose()\">\r\n @if(autoUpload){\r\n <mat-icon [svgIcon]=\"'mat_outline:file_upload'\"></mat-icon>\r\n }@else {\r\n <mat-icon [svgIcon]=\"'mat_outline:add_box'\"></mat-icon>\r\n }\r\n <span class=\"ml-2\">选择</span>\r\n </button>\r\n @if(filesData&&multiple&&filesData.length > 0){\r\n @if(!autoUpload){\r\n <button matButton=\"filled\" color=\"accent\" (click)=\"uploadAll()\"><mat-icon\r\n [svgIcon]=\"'mat_outline:file_upload'\"></mat-icon><span class=\"ml-2\">上传全部</span></button>\r\n }\r\n\r\n <button matButton=\"filled\" color=\"warn\" (click)=\"removeAll()\"><mat-icon\r\n [svgIcon]=\"'heroicons_solid:trash'\"></mat-icon><span class=\"ml-2\">删除全部</span></button>\r\n }\r\n }@else {\r\n <button matIconButton color=\"primary\" (click)=\"choose()\">\r\n @if(autoUpload){\r\n <mat-icon [svgIcon]=\"'mat_outline:file_upload'\"></mat-icon>\r\n }@else {\r\n <mat-icon [svgIcon]=\"'mat_outline:add_box'\"></mat-icon>\r\n }\r\n </button>\r\n\r\n @if(filesData&&multiple&&filesData.length > 0){\r\n @if(!autoUpload){\r\n <button matIconButton color=\"accent\" (click)=\"uploadAll()\"><mat-icon\r\n [svgIcon]=\"'mat_outline:file_upload'\"></mat-icon></button>\r\n }\r\n\r\n <button matIconButton color=\"warn\" (click)=\"removeAll()\"><mat-icon\r\n [svgIcon]=\"'heroicons_solid:trash'\"></mat-icon></button>\r\n }\r\n }\r\n </mat-card-actions>\r\n }\r\n\r\n <mat-card-content>\r\n <mat-list class=\"border-t\">\r\n @for (file of filesData; track $index) {\r\n <mat-list-item class=\"cmat-upload-file-item h-full\">\r\n <cmat-upload class=\"my-2\" [fileAlias]=\"fileAlias\" [filePath]=\"filePath\" [fileCategory]=\"fileCategory\"\r\n [autoUpload]=\"autoUpload\" [editMode]=\"editMode\" [file]=\"file\" [id]=\"file.id||null\" [isPublic]=\"isPublic\"\r\n (removeEvent)=\"remove($event)\" (uploadEvent)=\"upload($event)\"></cmat-upload>\r\n </mat-list-item>\r\n }\r\n </mat-list>\r\n </mat-card-content>\r\n</mat-card>\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i3","i2"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cmat-components-upload.mjs","sources":["../../../projects/cmat/components/upload/files.util.service.ts","../../../projects/cmat/components/upload/upload.component.ts","../../../projects/cmat/components/upload/upload.component.html","../../../projects/cmat/components/upload/upload-queue/upload-queue.component.ts","../../../projects/cmat/components/upload/upload-queue/upload-queue.component.html","../../../projects/cmat/components/upload/cmat-components-upload.ts"],"sourcesContent":["import { HttpClient, HttpEvent, HttpResponse } from '@angular/common/http';\r\nimport { DestroyRef, Injectable, inject } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { IUrlStateConfig, CmatUrlStateConfigService } from 'cmat/services/config';\r\nimport { CmatUtilsService } from 'cmat/services/utils';\r\nimport { Observable, catchError, map, tap } from 'rxjs';\r\nimport { FileListModel } from './files.type';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CmatFilesUtilService {\r\n private _http = inject(HttpClient);\r\n private _urlStateConfigService = inject(CmatUrlStateConfigService);\r\n private readonly _destroyRef = inject(DestroyRef);\r\n\r\n private _config: IUrlStateConfig;\r\n\r\n constructor() {\r\n this._urlStateConfigService.config$\r\n .pipe(takeUntilDestroyed(this._destroyRef))\r\n .subscribe((config: IUrlStateConfig) => {\r\n this._config = config;\r\n });\r\n }\r\n\r\n downloadFile(fileId: string, isStream: boolean = true): Observable<HttpResponse<Blob>> {\r\n return this._http.get(`${this._config.fileUrl}/download/${fileId}`, {\r\n headers: CmatUtilsService.getRequestCryptoHeaders(fileId),\r\n observe: 'response',\r\n reportProgress: true,\r\n responseType: 'blob',\r\n params: {\r\n isStream\r\n }\r\n },).pipe(\r\n catchError(CmatUtilsService.handleError));\r\n }\r\n\r\n downloadFileZip(fileIds?: string[]): Observable<HttpResponse<Blob>> {\r\n return this._http.post(`${this._config.fileUrl}/download`, fileIds, {\r\n headers: CmatUtilsService.getRequestCryptoHeaders('fileZip'),\r\n observe: 'response',\r\n reportProgress: true,\r\n responseType: 'blob',\r\n }).pipe(\r\n catchError(CmatUtilsService.handleError));\r\n }\r\n\r\n uploadFile(file: FormData): Observable<HttpEvent<Record<string, unknown>>> {\r\n return this._http.post<Record<string, unknown>>(`${this._config.fileUrl}/upload`, file, {\r\n headers: CmatUtilsService.getRequestCryptoHeaders('files'),\r\n observe: 'events',\r\n reportProgress: true,\r\n responseType: 'json'\r\n }).pipe(\r\n catchError(CmatUtilsService.handleError));\r\n }\r\n\r\n uploadFileToProcessed(file: FormData): Observable<HttpEvent<Record<string, unknown>>> {\r\n return this._http.post<Record<string, unknown>>(`${this._config.fileUrl}/upload/finish`, file, {\r\n headers: CmatUtilsService.getRequestCryptoHeaders('files'),\r\n observe: 'events',\r\n reportProgress: true,\r\n responseType: 'json'\r\n }).pipe(\r\n catchError(CmatUtilsService.handleError));\r\n }\r\n\r\n switchPublic(fileId: string, isPublic: boolean): Observable<Record<string, unknown>> {\r\n return this._http.patch<Record<string, unknown>>(`${this._config.fileUrl}/switch-public/${fileId}`, {\r\n id: fileId,\r\n isPublic\r\n }, {\r\n headers: CmatUtilsService.getRequestCryptoHeaders('files-switch-public')\r\n }).pipe(\r\n catchError((err): Observable<never> => CmatUtilsService.handleError(err))\r\n );\r\n }\r\n\r\n deleteFile(fileId: string): Observable<Record<string, unknown>> {\r\n return this._http.delete<Record<string, unknown>>(`${this._config.fileUrl}/${fileId}`, {\r\n headers: CmatUtilsService.getRequestCryptoHeaders(fileId)\r\n }).pipe(\r\n catchError((err): Observable<never> => CmatUtilsService.handleError(err))\r\n );\r\n }\r\n\r\n getFileList(queryData: object, pageIndex: number = -1, pageSize: number = -1): Observable<FileListModel> {\r\n if (this._config.enableDataProtect) {\r\n return this._http.post(`${this._config.fileUrl}/${pageIndex}/${pageSize}`,\r\n CmatUtilsService.getEncryptData(JSON.stringify(queryData)),\r\n {\r\n headers: CmatUtilsService.getRequestCryptoHeaders('fileList'),\r\n responseType: 'text'\r\n }\r\n )\r\n .pipe(\r\n map((res: string): FileListModel => JSON.parse(CmatUtilsService.getDecryptData(res)) as FileListModel),\r\n catchError(err => CmatUtilsService.handleError(err))\r\n );\r\n } else {\r\n return this._http.post<FileListModel>(`${this._config.fileUrl}/${pageIndex}/${pageSize}`, queryData, {\r\n headers: CmatUtilsService.getRequestCryptoHeaders('fileList'),\r\n responseType: 'json'\r\n })\r\n .pipe(\r\n tap((res: FileListModel) => res),\r\n catchError(err => CmatUtilsService.handleError(err))\r\n );\r\n }\r\n }\r\n}","import { NgClass } from '@angular/common';\r\nimport { HttpEvent, HttpEventType, HttpResponse } from '@angular/common/http';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n DestroyRef,\r\n EventEmitter,\r\n Input,\r\n OnInit,\r\n Output,\r\n ViewEncapsulation,\r\n inject,\r\n signal,\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { CmatBytesPipe } from 'cmat/pipes/bytes';\r\nimport { CmatUtilsService } from 'cmat/services/utils';\r\nimport { saveAs } from 'file-saver-es';\r\nimport { FileModel } from './files.type';\r\nimport { CmatFilesUtilService } from './files.util.service';\r\n\r\ntype UploadFile = File & { id?: string | null };\r\n\r\n@Component({\r\n selector: 'cmat-upload',\r\n templateUrl: './upload.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n exportAs: 'cmatUpload',\r\n imports: [MatButtonModule, MatIconModule, MatProgressBarModule, MatTooltipModule, CmatBytesPipe, NgClass]\r\n})\r\nexport class CmatUploadComponent implements OnInit {\r\n @Input()\r\n fileAlias: string = 'fileData';\r\n\r\n @Input()\r\n filePath: string = '';\r\n\r\n @Input()\r\n fileCategory: string = '';\r\n\r\n @Input()\r\n isPublic: boolean = false;\r\n\r\n @Input()\r\n editMode: boolean = false;\r\n\r\n @Input() autoUpload = true;\r\n\r\n @Input()\r\n id: string | null = null;\r\n\r\n @Output() removeEvent = new EventEmitter<CmatUploadComponent>();\r\n @Output() uploadEvent = new EventEmitter<UploadFile>();\r\n\r\n readonly progressPercentage = signal(0);\r\n readonly loaded = signal(0);\r\n readonly total = signal(0);\r\n readonly isUploading = signal(false);\r\n\r\n private _fileService = inject(CmatFilesUtilService);\r\n private readonly _destroyRef = inject(DestroyRef);\r\n\r\n private _file: UploadFile;\r\n\r\n @Input()\r\n get file(): UploadFile {\r\n return this._file;\r\n }\r\n set file(file: UploadFile) {\r\n this._file = file;\r\n this.total.set(this._file.size);\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n get fileType(): 'csv' | 'gif' | 'word' | 'excel' | 'jpg' | 'outlook' | 'pdf' | 'png' | 'ppt' | 'file' | 'text' | 'video' | 'zip' {\r\n return CmatUtilsService.getFileType(this.file.type);\r\n }\r\n\r\n ngOnInit(): void {\r\n if (this.autoUpload && this.id === null) {\r\n this.upload();\r\n }\r\n }\r\n\r\n\r\n upload(): void {\r\n this.isUploading.set(true);\r\n const fileModel = {\r\n id: null,\r\n fileName: this.file.name,\r\n length: this.file.size,\r\n fileCategory: this.fileCategory,\r\n isPublic: this.isPublic,\r\n filePath: this.filePath,\r\n fileType: 'file',\r\n data: this.file\r\n } as FileModel;\r\n\r\n fileModel.fileType = this.fileType;\r\n\r\n const formData = new FormData();\r\n\r\n formData.set('fileData', this._file, this._file.name);\r\n formData.append('fileInfo', JSON.stringify(fileModel));\r\n\r\n this._fileService.uploadFile(formData).pipe(\r\n takeUntilDestroyed(this._destroyRef)\r\n ).subscribe((event: HttpEvent<Record<string, unknown>>) => {\r\n if (event.type === HttpEventType.UploadProgress && typeof event.total === 'number') {\r\n this.progressPercentage.set(Math.floor(event.loaded * 100 / event.total));\r\n this.loaded.set(event.loaded);\r\n this.total.set(event.total);\r\n }\r\n if (event.type === HttpEventType.Response) {\r\n const fileId = typeof event.body?.id === 'string' ? event.body.id : undefined;\r\n if (!fileId) {\r\n this.isUploading.set(false);\r\n return;\r\n }\r\n\r\n this.id = fileId;\r\n this.file.id = fileId;\r\n\r\n this.isUploading.set(false);\r\n\r\n this.uploadEvent.emit(this.file);\r\n }\r\n });\r\n }\r\n\r\n download(): void {\r\n if (!this.id) return;\r\n this._fileService.downloadFile(this.id).pipe(\r\n takeUntilDestroyed(this._destroyRef)\r\n ).subscribe((file: HttpResponse<Blob>) => {\r\n saveAs(new Blob([file.body ?? new Blob()], { type: 'text/plain;charset=utf-8' }), this.file.name);\r\n });\r\n }\r\n\r\n remove(): void {\r\n this.removeEvent.emit(this);\r\n }\r\n}","<div class=\"flex flex-col\">\r\n <div class=\"flex flex-row items-center\">\r\n <span class=\"flex items-center px-1\">\r\n <mat-icon class=\"icon-size-6 text-hint\"\r\n [svgIcon]=\"fileType\"></mat-icon>\r\n </span>\r\n <span matTooltip=\"{{file.name}}\"\r\n class=\"text-sm flex flex-auto whitespace-nowrap overflow-x-hidden text-ellipsis\">{{file.name}}({{file.size | cmatBytes}})</span>\r\n <span class=\"flex flex-row gap-1 print:hidden\">\r\n @if(id===null){\r\n <button matIconButton color=\"primary\" class=\"w-8 min-h-8 h-8 max-w-8\" [ngClass]=\"{'disabled' : isUploading()}\"\r\n (click)=\"upload()\">\r\n <mat-icon class=\"icon-size-5\" [svgIcon]=\"'mat_outline:file_upload'\"></mat-icon>\r\n </button>\r\n }\r\n\r\n @if(id!==null){\r\n <button matIconButton color=\"primary\" class=\"w-8 min-h-8 h-8 max-w-8\" (click)=\"download()\">\r\n <mat-icon class=\"icon-size-5\" [svgIcon]=\"'mat_outline:file_download'\"></mat-icon>\r\n </button>\r\n }\r\n\r\n @if(editMode){\r\n <button matIconButton color=\"warn\" class=\"w-8 min-h-8 h-8 max-w-8\" (click)=\"remove()\">\r\n <mat-icon class=\"icon-size-5\" [svgIcon]=\"'heroicons_solid:trash'\"></mat-icon>\r\n </button>\r\n }\r\n </span>\r\n </div>\r\n @if(id===null){\r\n <mat-progress-bar [value]=\"progressPercentage()\"></mat-progress-bar>\r\n <div class=\"text-sm block whitespace-nowrap overflow-x-hidden text-ellipsis\">\r\n <span>{{progressPercentage()}}%</span><span> {{loaded() | cmatBytes}} of {{total() | cmatBytes}}</span>\r\n </div>\r\n }\r\n</div>\r\n","import { AfterViewInit, ChangeDetectionStrategy, Component, DestroyRef, ElementRef, EventEmitter, HostListener, Input, Output, QueryList, ViewChildren, ViewEncapsulation, forwardRef, inject, signal } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatListModule } from '@angular/material/list';\r\nimport { CmatMediaWatcherService } from 'cmat/services/media-watcher';\r\nimport { CmatUploadComponent } from '../upload.component';\r\n\r\nexport type UploadQueueFile = File & { id?: string | null };\r\n\r\n@Component({\r\n selector: 'cmat-upload-queue',\r\n templateUrl: './upload-queue.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n exportAs: 'cmatUploadQueue',\r\n imports: [MatCardModule, MatListModule, MatButtonModule, MatIconModule, CmatUploadComponent]\r\n})\r\nexport class CmatUploadQueueComponent implements AfterViewInit {\r\n @ViewChildren(forwardRef(() => CmatUploadComponent)) fileUploads: QueryList<CmatUploadComponent>;\r\n @Input()\r\n fileAlias: string = 'fileData';\r\n\r\n @Input()\r\n filePath: string = '';\r\n @Input()\r\n fileCategory: string;\r\n\r\n @Input()\r\n isPublic: boolean = false;\r\n\r\n @Input()\r\n required: boolean = false;\r\n\r\n @Input()\r\n autoUpload: boolean = true;\r\n\r\n @Input() multiple: boolean = true;\r\n @Input() accept: string = '';\r\n @Input() title: string = '附件';\r\n @Input() editMode: boolean = false;\r\n @Input()\r\n filesData: UploadQueueFile[] = [];\r\n\r\n @Output() outputRemoveIdEvent = new EventEmitter<string>();\r\n @Output() outputUploadIdEvent = new EventEmitter<string>();\r\n @Output() outputFilesDataEvent = new EventEmitter<UploadQueueFile[]>();\r\n\r\n public id = 'cmatupload-' + crypto.randomUUID().slice(0, 8);\r\n\r\n readonly isHandSet = signal(false);\r\n\r\n private _cmatMediaWatcherService = inject(CmatMediaWatcherService);\r\n private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n private readonly _destroyRef = inject(DestroyRef);\r\n\r\n\r\n constructor() {\r\n this._cmatMediaWatcherService.onMediaChange$\r\n .pipe(takeUntilDestroyed(this._destroyRef))\r\n .subscribe(({ matchingAliases }): void => {\r\n this.isHandSet.set(!matchingAliases.includes('lg'));\r\n });\r\n }\r\n\r\n @HostListener('drop', ['$event'])\r\n onDrop(event: DragEvent): void {\r\n const files = event.dataTransfer?.files;\r\n\r\n if (!files) return;\r\n\r\n for (const file of files) {\r\n if (this.accept?.includes(file.type))\r\n this.add(file);\r\n }\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n\r\n @HostListener('dragover', ['$event'])\r\n onDropOver(event: DragEvent): void {\r\n event.preventDefault();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n const fileUpload = this._elementRef.nativeElement.querySelector(`#${this.id}`);\r\n\r\n if (!(fileUpload instanceof HTMLInputElement)) {\r\n return;\r\n }\r\n\r\n fileUpload.onchange = (): void => {\r\n for (let index = 0; index < (fileUpload.files?.length ?? 0); index++) {\r\n const file = fileUpload.files![index];\r\n this.add(file);\r\n }\r\n };\r\n }\r\n\r\n add(file: UploadQueueFile): void {\r\n if (!this.isFileTypeAccepted(file.type)) {\r\n return;\r\n }\r\n\r\n if (!Array.isArray(this.filesData)) {\r\n this.filesData = [];\r\n }\r\n\r\n if (!(!this.multiple && this.filesData.length > 0)) {\r\n this.filesData = [...this.filesData, file];\r\n } else if (this.fileUploads.first.id === null) {\r\n this.filesData = [...this.filesData, file];\r\n this.fileUploads.first.remove();\r\n }\r\n\r\n }\r\n\r\n upload(event: CmatUploadComponent | UploadQueueFile): void {\r\n const uploadId = event instanceof CmatUploadComponent ? event.id : event.id;\r\n this.outputUploadIdEvent.emit(uploadId ?? '');\r\n\r\n this.outputFilesDataEvent.emit(this.filesData);\r\n }\r\n\r\n remove(event: CmatUploadComponent): void {\r\n if (this.filesData) {\r\n const index = this.filesData.findIndex((j): boolean => j === event.file);\r\n if (index > -1) {\r\n this.filesData.splice(index, 1);\r\n if (event.file.id) {\r\n this.outputRemoveIdEvent.emit(event.file.id);\r\n }\r\n\r\n this.outputFilesDataEvent.emit(this.filesData);\r\n }\r\n\r\n }\r\n }\r\n\r\n uploadAll(): void {\r\n this.fileUploads.forEach((fileUpload): void => {\r\n if (fileUpload.id === null) {\r\n fileUpload.upload();\r\n }\r\n });\r\n\r\n }\r\n\r\n removeAll(): void {\r\n this.fileUploads.forEach((fileUpload): void => { fileUpload.remove() });\r\n }\r\n\r\n choose(): void {\r\n this._elementRef.nativeElement.querySelector(`#${this.id}`)?.dispatchEvent(new MouseEvent('click'));\r\n }\r\n\r\n private isFileTypeAccepted(fileType: string): boolean {\r\n if (!this.accept || this.accept === '') {\r\n return true;\r\n }\r\n\r\n const acceptedTypes = this.accept.split(',').map(type => type.trim());\r\n\r\n return acceptedTypes.some((type): boolean => {\r\n if (type.endsWith('/*')) {\r\n const prefix = type.slice(0, -1);\r\n return fileType.startsWith(prefix);\r\n }\r\n return fileType === type;\r\n });\r\n }\r\n}","<mat-card>\r\n <mat-card-header>\r\n <mat-card-title>\r\n <legend class=\"text-lg\">\r\n {{title}}\r\n @if(required){\r\n <span>*</span>\r\n }\r\n </legend>\r\n </mat-card-title>\r\n </mat-card-header>\r\n <input type=\"file\" class=\"hidden\" [id]=\"id\" [multiple]=\"multiple\" [accept]=\"accept\" />\r\n\r\n @if(editMode){\r\n <mat-card-actions class=\"flex flex-row gap-1 print:hidden\">\r\n @if(!isHandSet()){\r\n <button matButton=\"filled\" color=\"primary\" (click)=\"choose()\">\r\n @if(autoUpload){\r\n <mat-icon [svgIcon]=\"'mat_outline:file_upload'\"></mat-icon>\r\n }@else {\r\n <mat-icon [svgIcon]=\"'mat_outline:add_box'\"></mat-icon>\r\n }\r\n <span class=\"ml-2\">选择</span>\r\n </button>\r\n @if(filesData&&multiple&&filesData.length > 0){\r\n @if(!autoUpload){\r\n <button matButton=\"filled\" color=\"accent\" (click)=\"uploadAll()\"><mat-icon\r\n [svgIcon]=\"'mat_outline:file_upload'\"></mat-icon><span class=\"ml-2\">上传全部</span></button>\r\n }\r\n\r\n <button matButton=\"filled\" color=\"warn\" (click)=\"removeAll()\"><mat-icon\r\n [svgIcon]=\"'heroicons_solid:trash'\"></mat-icon><span class=\"ml-2\">删除全部</span></button>\r\n }\r\n }@else {\r\n <button matIconButton color=\"primary\" (click)=\"choose()\">\r\n @if(autoUpload){\r\n <mat-icon [svgIcon]=\"'mat_outline:file_upload'\"></mat-icon>\r\n }@else {\r\n <mat-icon [svgIcon]=\"'mat_outline:add_box'\"></mat-icon>\r\n }\r\n </button>\r\n\r\n @if(filesData&&multiple&&filesData.length > 0){\r\n @if(!autoUpload){\r\n <button matIconButton color=\"accent\" (click)=\"uploadAll()\"><mat-icon\r\n [svgIcon]=\"'mat_outline:file_upload'\"></mat-icon></button>\r\n }\r\n\r\n <button matIconButton color=\"warn\" (click)=\"removeAll()\"><mat-icon\r\n [svgIcon]=\"'heroicons_solid:trash'\"></mat-icon></button>\r\n }\r\n }\r\n </mat-card-actions>\r\n }\r\n\r\n <mat-card-content>\r\n <mat-list class=\"border-t\">\r\n @for (file of filesData; track $index) {\r\n <mat-list-item class=\"cmat-upload-file-item h-full\">\r\n <cmat-upload class=\"my-2\" [fileAlias]=\"fileAlias\" [filePath]=\"filePath\" [fileCategory]=\"fileCategory\"\r\n [autoUpload]=\"autoUpload\" [editMode]=\"editMode\" [file]=\"file\" [id]=\"file.id||null\" [isPublic]=\"isPublic\"\r\n (removeEvent)=\"remove($event)\" (uploadEvent)=\"upload($event)\"></cmat-upload>\r\n </mat-list-item>\r\n }\r\n </mat-list>\r\n </mat-card-content>\r\n</mat-card>\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i3","i2"],"mappings":"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"}
|
|
@@ -141,8 +141,8 @@ class AngularShapeView extends NodeView {
|
|
|
141
141
|
return container;
|
|
142
142
|
}
|
|
143
143
|
getNgArguments() {
|
|
144
|
-
const
|
|
145
|
-
return
|
|
144
|
+
const cell = this.cell;
|
|
145
|
+
return cell.data?.ngArguments ?? {};
|
|
146
146
|
}
|
|
147
147
|
setInstanceInput(content, ref) {
|
|
148
148
|
const ngArguments = this.getNgArguments();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cmat-components-x6-angular-shape.mjs","sources":["../../../projects/cmat/components/x6-angular-shape/node.ts","../../../projects/cmat/components/x6-angular-shape/registry.ts","../../../projects/cmat/components/x6-angular-shape/view.ts","../../../projects/cmat/components/x6-angular-shape/cmat-components-x6-angular-shape.ts"],"sourcesContent":["/* eslint-disable no-redeclare */\r\n/* eslint-disable @typescript-eslint/no-namespace */\r\nimport { Node, Markup, ObjectExt, NodeProperties } from '@antv/x6';\r\nimport { MarkupJSONMarkup } from '@antv/x6/lib/view/markup';\r\n\r\nexport class AngularShape<\r\n Properties extends AngularShape.Properties = AngularShape.Properties,\r\n> extends Node<Properties> { }\r\n\r\nexport namespace AngularShape {\r\n export type Primer = 'rect' | 'circle' | 'path' | 'ellipse' | 'polygon' | 'polyline';\r\n\r\n export interface Properties extends NodeProperties {\r\n primer?: Primer;\r\n }\r\n}\r\n\r\nexport namespace AngularShape {\r\n function getMarkup(primer?: Primer) : MarkupJSONMarkup[]{\r\n const content = Markup.getForeignObjectMarkup();\r\n\r\n if (primer) {\r\n return [\r\n {\r\n tagName: primer,\r\n selector: 'body',\r\n },\r\n content,\r\n ];\r\n } \r\n\r\n return [content];\r\n }\r\n\r\n AngularShape.config<Properties>({\r\n view: 'angular-shape-view',\r\n markup: getMarkup(),\r\n attrs: {\r\n body: {\r\n fill: 'none',\r\n stroke: 'none',\r\n refWidth: '100%',\r\n refHeight: '100%',\r\n },\r\n fo: {\r\n refWidth: '100%',\r\n refHeight: '100%',\r\n },\r\n },\r\n propHooks(metadata: Properties) {\r\n if (metadata.markup == null) {\r\n const primer = metadata.primer;\r\n if (primer) {\r\n metadata.markup = getMarkup(primer);\r\n\r\n let attrs = {};\r\n switch (primer) {\r\n case 'circle':\r\n attrs = {\r\n refCx: '50%',\r\n refCy: '50%',\r\n refR: '50%',\r\n };\r\n break;\r\n case 'ellipse':\r\n attrs = {\r\n refCx: '50%',\r\n refCy: '50%',\r\n refRx: '50%',\r\n refRy: '50%',\r\n };\r\n break;\r\n default:\r\n break;\r\n }\r\n metadata.attrs = ObjectExt.merge(\r\n {},\r\n {\r\n body: {\r\n refWidth: null,\r\n refHeight: null,\r\n ...attrs,\r\n },\r\n },\r\n metadata.attrs ?? {},\r\n );\r\n }\r\n }\r\n return metadata;\r\n },\r\n });\r\n\r\n Node.registry.register('angular-shape', AngularShape, true);\r\n}","import { Injector, TemplateRef, Type } from '@angular/core';\r\nimport { Graph } from '@antv/x6';\r\n\r\nexport type Content = TemplateRef<any> | Type<any>;\r\n\r\nexport type AngularShapeConfig = {\r\n shape: string;\r\n injector: Injector;\r\n content: Content;\r\n} & Record<string, any>;\r\n\r\nexport const registerInfo = new Map<\r\n string,\r\n {\r\n injector: Injector;\r\n content: Content;\r\n }\r\n>();\r\n\r\nexport function register(config: AngularShapeConfig): void {\r\n const { shape, injector, content, ...others } = config;\r\n\r\n registerInfo.set(shape, { injector, content });\r\n\r\n Graph.registerNode(\r\n shape,\r\n {\r\n inherit: 'angular-shape',\r\n ...others,\r\n },\r\n true,\r\n );\r\n}","/* eslint-disable no-redeclare */\r\n/* eslint-disable @typescript-eslint/no-namespace */\r\nimport { ApplicationRef, ComponentRef, createComponent, EmbeddedViewRef, Renderer2, TemplateRef, ViewContainerRef } from '@angular/core';\r\nimport { Dom, NodeView } from '@antv/x6';\r\nimport { AngularShape } from './node';\r\nimport { Content, registerInfo } from './registry';\r\n\r\nexport class AngularShapeView extends NodeView<AngularShape> {\r\n getNodeContainer(): HTMLDivElement {\r\n return this.selectors?.foContent as HTMLDivElement;\r\n }\r\n\r\n override onMouseDown(e: Dom.MouseDownEvent, x: number, y: number): void {\r\n const target = e.target as Element;\r\n const tagName = target.tagName.toLowerCase();\r\n if (tagName === 'input') {\r\n const type = target.getAttribute('type');\r\n if (type == null || ['text', 'password', 'number', 'email', 'search', 'tel', 'url'].includes(type)) {\r\n return;\r\n }\r\n }\r\n\r\n super.onMouseDown(e, x, y);\r\n }\r\n\r\n override unmount(): this {\r\n this.unmountAngularContent();\r\n super.unmount();\r\n return this;\r\n }\r\n\r\n override confirmUpdate(flag: number): number {\r\n const ret = super.confirmUpdate(flag);\r\n return this.handleAction(ret, AngularShapeView.action, () => this.renderAngularContent());\r\n }\r\n\r\n protected renderAngularContent(): void {\r\n this.unmountAngularContent();\r\n const container = this.getNodeContainer();\r\n if (container) {\r\n const node = this.cell;\r\n const { injector, content } = registerInfo.get(node.shape)!; \r\n const applicationRef = injector.get(ApplicationRef);\r\n const environmentInjector = applicationRef.injector; \r\n \r\n if (content instanceof TemplateRef) {\r\n const viewContainerRef = injector.get(ViewContainerRef);\r\n const renderer=injector.get(Renderer2);\r\n const ngArguments = this.getNgArguments();\r\n const embeddedViewRef = viewContainerRef.createEmbeddedView(content, { ngArguments });\r\n embeddedViewRef.rootNodes.forEach(node =>renderer.appendChild(container,node));\r\n node.on('change:data', () => this.setInstanceInput(content, embeddedViewRef));\r\n } else { \r\n const componentRef = createComponent(content, { environmentInjector, hostElement: container });\r\n applicationRef.attachView(componentRef.hostView);\r\n this.setInstanceInput(content, componentRef);\r\n node.on('change:data', () => this.setInstanceInput(content, componentRef));\r\n node.on('removed', () => componentRef.destroy());\r\n }\r\n }\r\n }\r\n\r\n protected unmountAngularContent(): HTMLDivElement {\r\n const container = this.getNodeContainer();\r\n container.innerHTML = '';\r\n return container;\r\n }\r\n\r\n\r\n private getNgArguments(): Record<string, any> {\r\n const input = (this.cell.data?.ngArguments as Record<string, any>) || {};\r\n return input;\r\n }\r\n\r\n \r\n private setInstanceInput(content: Content, ref: EmbeddedViewRef<any> | ComponentRef<any>): void {\r\n const ngArguments = this.getNgArguments();\r\n if (content instanceof TemplateRef) {\r\n const embeddedViewRef = ref as EmbeddedViewRef<any>;\r\n embeddedViewRef.context = { ngArguments };\r\n } else {\r\n const componentRef = ref as ComponentRef<any>;\r\n Object.keys(ngArguments).forEach(v => componentRef.setInput(v, ngArguments[v]));\r\n }\r\n }\r\n}\r\n\r\nexport namespace AngularShapeView {\r\n export const action = 'angular' as any;\r\n\r\n AngularShapeView.config({\r\n bootstrap: [action],\r\n actions: {\r\n component: action,\r\n },\r\n });\r\n\r\n NodeView.registry.register('angular-shape-view', AngularShapeView, true);\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;AAAA;AACA;AAIM,MAAO,YAEX,SAAQ,IAAgB,CAAA;AAAI;AAU9B,CAAA,UAAiB,YAAY,EAAA;IACzB,SAAS,SAAS,CAAC,MAAe,EAAA;AAC9B,QAAA,MAAM,OAAO,GAAG,MAAM,CAAC,sBAAsB,EAAE;QAE/C,IAAI,MAAM,EAAE;YACR,OAAO;AACC,gBAAA;AACI,oBAAA,OAAO,EAAE,MAAM;AACf,oBAAA,QAAQ,EAAE,MAAM;AACnB,iBAAA;gBACD,OAAO;aACV;QACT;QAEA,OAAO,CAAC,OAAO,CAAC;IACpB;IAEA,YAAY,CAAC,MAAM,CAAa;AAC5B,QAAA,IAAI,EAAE,oBAAoB;QAC1B,MAAM,EAAE,SAAS,EAAE;AACnB,QAAA,KAAK,EAAE;AACH,YAAA,IAAI,EAAE;AACF,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,MAAM,EAAE,MAAM;AACd,gBAAA,QAAQ,EAAE,MAAM;AAChB,gBAAA,SAAS,EAAE,MAAM;AACpB,aAAA;AACD,YAAA,EAAE,EAAE;AACA,gBAAA,QAAQ,EAAE,MAAM;AAChB,gBAAA,SAAS,EAAE,MAAM;AACpB,aAAA;AACJ,SAAA;AACD,QAAA,SAAS,CAAC,QAAoB,EAAA;AAC1B,YAAA,IAAI,QAAQ,CAAC,MAAM,IAAI,IAAI,EAAE;AACzB,gBAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM;gBAC9B,IAAI,MAAM,EAAE;AACR,oBAAA,QAAQ,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;oBAEnC,IAAI,KAAK,GAAG,EAAE;oBACd,QAAQ,MAAM;AACV,wBAAA,KAAK,QAAQ;AACT,4BAAA,KAAK,GAAG;AACJ,gCAAA,KAAK,EAAE,KAAK;AACZ,gCAAA,KAAK,EAAE,KAAK;AACZ,gCAAA,IAAI,EAAE,KAAK;6BACd;4BACD;AACJ,wBAAA,KAAK,SAAS;AACV,4BAAA,KAAK,GAAG;AACJ,gCAAA,KAAK,EAAE,KAAK;AACZ,gCAAA,KAAK,EAAE,KAAK;AACZ,gCAAA,KAAK,EAAE,KAAK;AACZ,gCAAA,KAAK,EAAE,KAAK;6BACf;4BACD;AACJ,wBAAA;4BACI;;oBAER,QAAQ,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,CAC5B,EAAE,EACF;AACI,wBAAA,IAAI,EAAE;AACF,4BAAA,QAAQ,EAAE,IAAI;AACd,4BAAA,SAAS,EAAE,IAAI;AACf,4BAAA,GAAG,KAAK;AACX,yBAAA;AACJ,qBAAA,EACD,QAAQ,CAAC,KAAK,IAAI,EAAE,CACvB;gBACL;YACJ;AACA,YAAA,OAAO,QAAQ;QACnB,CAAC;AACJ,KAAA,CAAC;IAEF,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,eAAe,EAAE,YAAY,EAAE,IAAI,CAAC;AAC/D,CAAC,EA5EgB,YAAY,KAAZ,YAAY,GAAA,EAAA,CAAA,CAAA;;ACNtB,MAAM,YAAY,GAAG,IAAI,GAAG;AAQ7B,SAAU,QAAQ,CAAC,MAA0B,EAAA;AACjD,IAAA,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,EAAE,GAAG,MAAM;IAEtD,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;AAE9C,IAAA,KAAK,CAAC,YAAY,CAChB,KAAK,EACL;AACE,QAAA,OAAO,EAAE,eAAe;AACxB,QAAA,GAAG,MAAM;KACV,EACD,IAAI,CACL;AACH;;AChCA;AACA;AAMM,MAAO,gBAAiB,SAAQ,QAAsB,CAAA;IAC1D,gBAAgB,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,SAAS,EAAE,SAA2B;IACpD;AAES,IAAA,WAAW,CAAC,CAAqB,EAAE,CAAS,EAAE,CAAS,EAAA;AAC9D,QAAA,MAAM,MAAM,GAAG,CAAC,CAAC,MAAiB;QAClC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE;AAC5C,QAAA,IAAI,OAAO,KAAK,OAAO,EAAE;YACvB,MAAM,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC;YACxC,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;gBAClG;YACF;QACF;QAEA,KAAK,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC5B;IAES,OAAO,GAAA;QACd,IAAI,CAAC,qBAAqB,EAAE;QAC5B,KAAK,CAAC,OAAO,EAAE;AACf,QAAA,OAAO,IAAI;IACb;AAES,IAAA,aAAa,CAAC,IAAY,EAAA;QACjC,MAAM,GAAG,GAAG,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC;AACrC,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,gBAAgB,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAC3F;IAEU,oBAAoB,GAAA;QAC5B,IAAI,CAAC,qBAAqB,EAAE;AAC5B,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,EAAE;QACzC,IAAI,SAAS,EAAE;AACb,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI;AACtB,YAAA,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAE;YAC3D,MAAM,cAAc,GAAG,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC;AACnD,YAAA,MAAM,mBAAmB,GAAG,cAAc,CAAC,QAAQ;AAEnD,YAAA,IAAI,OAAO,YAAY,WAAW,EAAE;gBAClC,MAAM,gBAAgB,GAAG,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC;gBACvD,MAAM,QAAQ,GAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC;AACtC,gBAAA,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE;AACzC,gBAAA,MAAM,eAAe,GAAG,gBAAgB,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,CAAC;AACrF,gBAAA,eAAe,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,IAAG,QAAQ,CAAC,WAAW,CAAC,SAAS,EAAC,IAAI,CAAC,CAAC;AAC9E,gBAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;YAC/E;iBAAO;AACL,gBAAA,MAAM,YAAY,GAAG,eAAe,CAAC,OAAO,EAAE,EAAE,mBAAmB,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC;AAC9F,gBAAA,cAAc,CAAC,UAAU,CAAC,YAAY,CAAC,QAAQ,CAAC;AAChD,gBAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,YAAY,CAAC;AAC5C,gBAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;AAC1E,gBAAA,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,YAAY,CAAC,OAAO,EAAE,CAAC;YAClD;QACF;IACF;IAEU,qBAAqB,GAAA;AAC7B,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,EAAE;AACzC,QAAA,SAAS,CAAC,SAAS,GAAG,EAAE;AACxB,QAAA,OAAO,SAAS;IAClB;IAGQ,cAAc,GAAA;QACpB,MAAM,KAAK,GAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,WAAmC,IAAI,EAAE;AACxE,QAAA,OAAO,KAAK;IACd;IAGQ,gBAAgB,CAAC,OAAgB,EAAE,GAA6C,EAAA;AACtF,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE;AACzC,QAAA,IAAI,OAAO,YAAY,WAAW,EAAE;YAClC,MAAM,eAAe,GAAG,GAA2B;AACnD,YAAA,eAAe,CAAC,OAAO,GAAG,EAAE,WAAW,EAAE;QAC3C;aAAO;YACL,MAAM,YAAY,GAAG,GAAwB;YAC7C,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;QACjF;IACF;AACD;AAED,CAAA,UAAiB,gBAAgB,EAAA;IAClB,gBAAA,CAAA,MAAM,GAAG,SAAgB;IAEtC,gBAAgB,CAAC,MAAM,CAAC;AACtB,QAAA,SAAS,EAAE,CAAC,gBAAA,CAAA,MAAM,CAAC;AACnB,QAAA,OAAO,EAAE;YACP,SAAS,EAAE,iBAAA,MAAM;AAClB,SAAA;AACF,KAAA,CAAC;IAEF,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,oBAAoB,EAAE,gBAAgB,EAAE,IAAI,CAAC;AAC1E,CAAC,EAXgB,gBAAgB,KAAhB,gBAAgB,GAAA,EAAA,CAAA,CAAA;;ACvFjC;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"cmat-components-x6-angular-shape.mjs","sources":["../../../projects/cmat/components/x6-angular-shape/node.ts","../../../projects/cmat/components/x6-angular-shape/registry.ts","../../../projects/cmat/components/x6-angular-shape/view.ts","../../../projects/cmat/components/x6-angular-shape/cmat-components-x6-angular-shape.ts"],"sourcesContent":["/* eslint-disable no-redeclare */\r\n/* eslint-disable @typescript-eslint/no-namespace */\r\nimport { Node, Markup, ObjectExt, NodeProperties } from '@antv/x6';\r\nimport { MarkupJSONMarkup } from '@antv/x6/lib/view/markup';\r\n\r\nexport class AngularShape<\r\n Properties extends AngularShape.Properties = AngularShape.Properties,\r\n> extends Node<Properties> { }\r\n\r\nexport namespace AngularShape {\r\n export type Primer = 'rect' | 'circle' | 'path' | 'ellipse' | 'polygon' | 'polyline';\r\n\r\n export interface Properties extends NodeProperties {\r\n primer?: Primer;\r\n }\r\n}\r\n\r\nexport namespace AngularShape {\r\n function getMarkup(primer?: Primer) : MarkupJSONMarkup[]{\r\n const content = Markup.getForeignObjectMarkup();\r\n\r\n if (primer) {\r\n return [\r\n {\r\n tagName: primer,\r\n selector: 'body',\r\n },\r\n content,\r\n ];\r\n } \r\n\r\n return [content];\r\n }\r\n\r\n AngularShape.config<Properties>({\r\n view: 'angular-shape-view',\r\n markup: getMarkup(),\r\n attrs: {\r\n body: {\r\n fill: 'none',\r\n stroke: 'none',\r\n refWidth: '100%',\r\n refHeight: '100%',\r\n },\r\n fo: {\r\n refWidth: '100%',\r\n refHeight: '100%',\r\n },\r\n },\r\n propHooks(metadata: Properties) {\r\n if (metadata.markup == null) {\r\n const primer = metadata.primer;\r\n if (primer) {\r\n metadata.markup = getMarkup(primer);\r\n\r\n let attrs = {};\r\n switch (primer) {\r\n case 'circle':\r\n attrs = {\r\n refCx: '50%',\r\n refCy: '50%',\r\n refR: '50%',\r\n };\r\n break;\r\n case 'ellipse':\r\n attrs = {\r\n refCx: '50%',\r\n refCy: '50%',\r\n refRx: '50%',\r\n refRy: '50%',\r\n };\r\n break;\r\n default:\r\n break;\r\n }\r\n metadata.attrs = ObjectExt.merge(\r\n {},\r\n {\r\n body: {\r\n refWidth: null,\r\n refHeight: null,\r\n ...attrs,\r\n },\r\n },\r\n metadata.attrs ?? {},\r\n );\r\n }\r\n }\r\n return metadata;\r\n },\r\n });\r\n\r\n Node.registry.register('angular-shape', AngularShape, true);\r\n}","import { Injector, TemplateRef, Type } from '@angular/core';\r\nimport { Graph } from '@antv/x6';\r\n\r\nexport type Content = TemplateRef<any> | Type<any>;\r\n\r\nexport type AngularShapeConfig = {\r\n shape: string;\r\n injector: Injector;\r\n content: Content;\r\n} & Record<string, any>;\r\n\r\nexport const registerInfo = new Map<\r\n string,\r\n {\r\n injector: Injector;\r\n content: Content;\r\n }\r\n>();\r\n\r\nexport function register(config: AngularShapeConfig): void {\r\n const { shape, injector, content, ...others } = config;\r\n\r\n registerInfo.set(shape, { injector, content });\r\n\r\n Graph.registerNode(\r\n shape,\r\n {\r\n inherit: 'angular-shape',\r\n ...others,\r\n },\r\n true,\r\n );\r\n}","/* eslint-disable no-redeclare */\r\n/* eslint-disable @typescript-eslint/no-namespace */\r\nimport { ApplicationRef, ComponentRef, createComponent, EmbeddedViewRef, Renderer2, TemplateRef, ViewContainerRef } from '@angular/core';\r\nimport { Dom, NodeView } from '@antv/x6';\r\nimport type { FlagManagerAction } from '@antv/x6/lib/view/flag'; // Adjust path if needed\r\nimport { AngularShape } from './node';\r\nimport { Content, registerInfo } from './registry';\r\n\r\nexport class AngularShapeView extends NodeView<AngularShape> {\r\n getNodeContainer(): HTMLDivElement {\r\n return this.selectors?.foContent as HTMLDivElement;\r\n }\r\n\r\n override onMouseDown(e: Dom.MouseDownEvent, x: number, y: number): void {\r\n const target = e.target as Element;\r\n const tagName = target.tagName.toLowerCase();\r\n if (tagName === 'input') {\r\n const type = target.getAttribute('type');\r\n if (type == null || ['text', 'password', 'number', 'email', 'search', 'tel', 'url'].includes(type)) {\r\n return;\r\n }\r\n }\r\n\r\n super.onMouseDown(e, x, y);\r\n }\r\n\r\n override unmount(): this {\r\n this.unmountAngularContent();\r\n super.unmount();\r\n return this;\r\n }\r\n\r\n override confirmUpdate(flag: number): number {\r\n const ret = super.confirmUpdate(flag);\r\n \r\n return this.handleAction(ret, AngularShapeView.action as unknown as FlagManagerAction, () => this.renderAngularContent());\r\n }\r\n\r\n protected renderAngularContent(): void {\r\n this.unmountAngularContent();\r\n const container = this.getNodeContainer();\r\n if (container) {\r\n const node = this.cell;\r\n const { injector, content } = registerInfo.get(node.shape)!; \r\n const applicationRef = injector.get(ApplicationRef);\r\n const environmentInjector = applicationRef.injector; \r\n \r\n if (content instanceof TemplateRef) {\r\n const viewContainerRef = injector.get(ViewContainerRef);\r\n const renderer=injector.get(Renderer2);\r\n const ngArguments = this.getNgArguments();\r\n const embeddedViewRef = viewContainerRef.createEmbeddedView(content, { ngArguments });\r\n embeddedViewRef.rootNodes.forEach(node =>renderer.appendChild(container,node));\r\n node.on('change:data', () => this.setInstanceInput(content, embeddedViewRef));\r\n } else { \r\n const componentRef = createComponent(content, { environmentInjector, hostElement: container });\r\n applicationRef.attachView(componentRef.hostView);\r\n this.setInstanceInput(content, componentRef);\r\n node.on('change:data', () => this.setInstanceInput(content, componentRef));\r\n node.on('removed', () => componentRef.destroy());\r\n }\r\n }\r\n }\r\n\r\n protected unmountAngularContent(): HTMLDivElement {\r\n const container = this.getNodeContainer();\r\n container.innerHTML = '';\r\n return container;\r\n }\r\n\r\n\r\n private getNgArguments(): Record<string, unknown> {\r\n const cell = this.cell as unknown as { data?: { ngArguments?: Record<string, unknown> } };\r\n return cell.data?.ngArguments ?? {};\r\n }\r\n\r\n \r\n private setInstanceInput(content: Content, ref: EmbeddedViewRef<{ ngArguments: Record<string, unknown> }> | ComponentRef<object>): void {\r\n const ngArguments = this.getNgArguments();\r\n if (content instanceof TemplateRef) {\r\n const embeddedViewRef = ref as EmbeddedViewRef<{ ngArguments: Record<string, unknown> }>;\r\n embeddedViewRef.context = { ngArguments };\r\n } else {\r\n const componentRef = ref as ComponentRef<object>;\r\n Object.keys(ngArguments).forEach(v => componentRef.setInput(v, ngArguments[v]));\r\n }\r\n }\r\n}\r\n\r\nexport namespace AngularShapeView {\r\n export const action = 'angular' as const;\r\n\r\n AngularShapeView.config({\r\n bootstrap: [action as unknown as FlagManagerAction] as const,\r\n actions: {\r\n component: action as unknown as FlagManagerAction ,\r\n },\r\n });\r\n\r\n NodeView.registry.register('angular-shape-view', AngularShapeView, true);\r\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cmat-directives-animate-on-scroll.mjs","sources":["../../../projects/cmat/directives/animate-on-scroll/scroll.service.ts","../../../projects/cmat/directives/animate-on-scroll/animate-on-scroll.directive.ts","../../../projects/cmat/directives/animate-on-scroll/cmat-directives-animate-on-scroll.ts"],"sourcesContent":["import { Injectable, OnDestroy } from '@angular/core';\r\nimport { Observable, Subscription, EMPTY, fromEvent } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ScrollService implements OnDestroy {\r\n scrollObs: Observable<any>;\r\n resizeObs: Observable<any>;\r\n pos: number;\r\n private _scrollSub: Subscription = new Subscription();\r\n private _resizeSub: Subscription = new Subscription();\r\n\r\n constructor() {\r\n this.manageScrollPos();\r\n this.scrollObs =\r\n typeof window !== 'undefined' ? fromEvent(window, 'scroll') : EMPTY;\r\n this._scrollSub = this.scrollObs.subscribe(() => this.manageScrollPos());\r\n this.resizeObs =\r\n typeof window !== 'undefined' ? fromEvent(window, 'resize') : EMPTY;\r\n this._resizeSub = this.resizeObs.subscribe(() => this.manageScrollPos());\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._scrollSub.unsubscribe();\r\n this._resizeSub.unsubscribe();\r\n }\r\n\r\n private manageScrollPos(): void {\r\n this.pos = typeof window !== 'undefined' ? window.scrollY : 0;\r\n }\r\n}\r\n","import { AfterViewInit, Directive, ElementRef, Input, OnDestroy, OnInit, Renderer2, inject } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { ScrollService } from './scroll.service';\r\n\r\n@Directive({\r\n selector: '[cmatAnimateOnScroll]',\r\n providers:[ScrollService]\r\n})\r\nexport class CmatAnimationOnScrollDirective implements OnInit, OnDestroy, AfterViewInit {\r\n @Input() animationName: string | null; // use fadeIn as default if not specified, specify null for no animation\r\n @Input() offset: number = 80; // for scroll Listener\r\n @Input() useScroll?: boolean;\r\n @Input() threshold?: number; // for intersection observer only for the time being\r\n\r\n private _offsetTop: number;\r\n private _isVisible: boolean;\r\n private _winHeight: number;\r\n private _scrollSub: Subscription = new Subscription();\r\n private _resizeSub: Subscription = new Subscription();\r\n private _elementRef = inject(ElementRef);\r\n private _renderer = inject(Renderer2);\r\n private _scroll = inject(ScrollService);\r\n\r\n private get id(): string {\r\n return this._elementRef.nativeElement.id;\r\n }\r\n\r\n ngOnInit(): void {\r\n if (!this.animationName) {\r\n return;\r\n }\r\n this._isVisible = false;\r\n this.useScroll = this.useScroll ?? this.useScroll === false\r\n ? false\r\n : true;\r\n this.threshold = this.threshold ? this.threshold || 0.5 : 0.5;\r\n if ('IntersectionObserver' in window && this.useScroll) {\r\n const options: IntersectionObserverInit = {\r\n root: null,\r\n threshold: this.threshold,\r\n rootMargin: '0px',\r\n };\r\n const observer: IntersectionObserver = new IntersectionObserver(\r\n (entries) => {\r\n entries.forEach((entry) => {\r\n if (!entry.isIntersecting) {\r\n return;\r\n }\r\n this.addAnimationClass();\r\n });\r\n },\r\n options\r\n );\r\n observer.observe(this._elementRef.nativeElement);\r\n return;\r\n }\r\n this._scrollSub = this._scroll.scrollObs.subscribe(() =>\r\n this.manageVisibility()\r\n );\r\n this._resizeSub = this._scroll.resizeObs.subscribe(() =>\r\n this.manageVisibility()\r\n );\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n setTimeout(() => this.manageVisibility(), 1);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._scrollSub.unsubscribe();\r\n this._resizeSub.unsubscribe();\r\n }\r\n\r\n private manageVisibility(): void {\r\n if (this._isVisible) {\r\n return;\r\n }\r\n this.getWinHeight();\r\n this.getOffsetTop();\r\n const scrollTrigger = this._offsetTop + this.offset - this._winHeight;\r\n if (this._scroll.pos >= scrollTrigger) {\r\n this.addAnimationClass();\r\n }\r\n }\r\n\r\n private addAnimationClass(): void {\r\n if (!this.animationName) {\r\n return;\r\n }\r\n this._isVisible = true;\r\n this.setClass(this.animationName);\r\n }\r\n\r\n private setClass(classes: string): void {\r\n for (const c of classes.split(' ')) {\r\n this._renderer.addClass(this._elementRef.nativeElement, c);\r\n }\r\n }\r\n\r\n private getWinHeight(): void {\r\n this._winHeight = typeof window !== 'undefined' ? window.innerHeight : 0;\r\n }\r\n\r\n private getOffsetTop(): void {\r\n if (\r\n typeof this._elementRef.nativeElement.getBoundingClientRect === 'function'\r\n ) {\r\n const viewportTop =\r\n this._elementRef.nativeElement.getBoundingClientRect().top;\r\n const clientTop = this._elementRef.nativeElement.clientTop;\r\n this._offsetTop = viewportTop + this._scroll.pos - clientTop;\r\n } else {\r\n this._offsetTop = 0;\r\n }\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cmat-directives-animate-on-scroll.mjs","sources":["../../../projects/cmat/directives/animate-on-scroll/scroll.service.ts","../../../projects/cmat/directives/animate-on-scroll/animate-on-scroll.directive.ts","../../../projects/cmat/directives/animate-on-scroll/cmat-directives-animate-on-scroll.ts"],"sourcesContent":["import { Injectable, OnDestroy } from '@angular/core';\r\nimport { Observable, Subscription, EMPTY, fromEvent } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ScrollService implements OnDestroy {\r\n scrollObs: Observable<any>;\r\n resizeObs: Observable<any>;\r\n pos: number;\r\n private _scrollSub: Subscription = new Subscription();\r\n private _resizeSub: Subscription = new Subscription();\r\n\r\n constructor() {\r\n this.manageScrollPos();\r\n this.scrollObs =\r\n typeof window !== 'undefined' ? fromEvent(window, 'scroll') : EMPTY;\r\n this._scrollSub = this.scrollObs.subscribe(() => this.manageScrollPos());\r\n this.resizeObs =\r\n typeof window !== 'undefined' ? fromEvent(window, 'resize') : EMPTY;\r\n this._resizeSub = this.resizeObs.subscribe(() => this.manageScrollPos());\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._scrollSub.unsubscribe();\r\n this._resizeSub.unsubscribe();\r\n }\r\n\r\n private manageScrollPos(): void {\r\n this.pos = typeof window !== 'undefined' ? window.scrollY : 0;\r\n }\r\n}\r\n","import { AfterViewInit, Directive, ElementRef, Input, OnDestroy, OnInit, Renderer2, inject } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { ScrollService } from './scroll.service';\r\n\r\n@Directive({\r\n selector: '[cmatAnimateOnScroll]',\r\n providers:[ScrollService]\r\n})\r\nexport class CmatAnimationOnScrollDirective implements OnInit, OnDestroy, AfterViewInit {\r\n @Input() animationName: string | null; // use fadeIn as default if not specified, specify null for no animation\r\n @Input() offset: number = 80; // for scroll Listener\r\n @Input() useScroll?: boolean;\r\n @Input() threshold?: number; // for intersection observer only for the time being\r\n\r\n private _offsetTop: number;\r\n private _isVisible: boolean;\r\n private _winHeight: number;\r\n private _scrollSub: Subscription = new Subscription();\r\n private _resizeSub: Subscription = new Subscription();\r\n private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n private _renderer = inject(Renderer2);\r\n private _scroll = inject(ScrollService);\r\n\r\n private get id(): string {\r\n return this._elementRef.nativeElement.id;\r\n }\r\n\r\n ngOnInit(): void {\r\n if (!this.animationName) {\r\n return;\r\n }\r\n this._isVisible = false;\r\n this.useScroll = this.useScroll ?? this.useScroll === false\r\n ? false\r\n : true;\r\n this.threshold = this.threshold ? this.threshold || 0.5 : 0.5;\r\n if ('IntersectionObserver' in window && this.useScroll) {\r\n const options: IntersectionObserverInit = {\r\n root: null,\r\n threshold: this.threshold,\r\n rootMargin: '0px',\r\n };\r\n const observer: IntersectionObserver = new IntersectionObserver(\r\n (entries) => {\r\n entries.forEach((entry) => {\r\n if (!entry.isIntersecting) {\r\n return;\r\n }\r\n this.addAnimationClass();\r\n });\r\n },\r\n options\r\n );\r\n observer.observe(this._elementRef.nativeElement);\r\n return;\r\n }\r\n this._scrollSub = this._scroll.scrollObs.subscribe(() =>\r\n this.manageVisibility()\r\n );\r\n this._resizeSub = this._scroll.resizeObs.subscribe(() =>\r\n this.manageVisibility()\r\n );\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n setTimeout(() => this.manageVisibility(), 1);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._scrollSub.unsubscribe();\r\n this._resizeSub.unsubscribe();\r\n }\r\n\r\n private manageVisibility(): void {\r\n if (this._isVisible) {\r\n return;\r\n }\r\n this.getWinHeight();\r\n this.getOffsetTop();\r\n const scrollTrigger = this._offsetTop + this.offset - this._winHeight;\r\n if (this._scroll.pos >= scrollTrigger) {\r\n this.addAnimationClass();\r\n }\r\n }\r\n\r\n private addAnimationClass(): void {\r\n if (!this.animationName) {\r\n return;\r\n }\r\n this._isVisible = true;\r\n this.setClass(this.animationName);\r\n }\r\n\r\n private setClass(classes: string): void {\r\n for (const c of classes.split(' ')) {\r\n this._renderer.addClass(this._elementRef.nativeElement, c);\r\n }\r\n }\r\n\r\n private getWinHeight(): void {\r\n this._winHeight = typeof window !== 'undefined' ? window.innerHeight : 0;\r\n }\r\n\r\n private getOffsetTop(): void {\r\n if (\r\n typeof this._elementRef.nativeElement.getBoundingClientRect === 'function'\r\n ) {\r\n const viewportTop =\r\n this._elementRef.nativeElement.getBoundingClientRect().top;\r\n const clientTop = this._elementRef.nativeElement.clientTop;\r\n this._offsetTop = viewportTop + this._scroll.pos - clientTop;\r\n } else {\r\n this._offsetTop = 0;\r\n }\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;MAMa,aAAa,CAAA;AAOtB,IAAA,WAAA,GAAA;AAHQ,QAAA,IAAA,CAAA,UAAU,GAAiB,IAAI,YAAY,EAAE;AAC7C,QAAA,IAAA,CAAA,UAAU,GAAiB,IAAI,YAAY,EAAE;QAGjD,IAAI,CAAC,eAAe,EAAE;AACtB,QAAA,IAAI,CAAC,SAAS;AACV,YAAA,OAAO,MAAM,KAAK,WAAW,GAAG,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,KAAK;AACvE,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;AACxE,QAAA,IAAI,CAAC,SAAS;AACV,YAAA,OAAO,MAAM,KAAK,WAAW,GAAG,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,KAAK;AACvE,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;IAC5E;IAEA,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE;AAC7B,QAAA,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE;IACjC;IAEQ,eAAe,GAAA;AACnB,QAAA,IAAI,CAAC,GAAG,GAAG,OAAO,MAAM,KAAK,WAAW,GAAG,MAAM,CAAC,OAAO,GAAG,CAAC;IACjE;8GAxBS,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAb,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,aAAa,cAFV,MAAM,EAAA,CAAA,CAAA;;2FAET,aAAa,EAAA,UAAA,EAAA,CAAA;kBAHzB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE;AACf,iBAAA;;;MCGY,8BAA8B,CAAA;AAJ3C,IAAA,WAAA,GAAA;AAMa,QAAA,IAAA,CAAA,MAAM,GAAW,EAAE,CAAC;AAOrB,QAAA,IAAA,CAAA,UAAU,GAAiB,IAAI,YAAY,EAAE;AAC7C,QAAA,IAAA,CAAA,UAAU,GAAiB,IAAI,YAAY,EAAE;AAC7C,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAA0B,UAAU,CAAC;AACzD,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;AAC7B,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC;AA8F1C,IAAA;AA5FG,IAAA,IAAY,EAAE,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE;IAC5C;IAEA,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACrB;QACJ;AACA,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK;QACvB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,KAAK;AAC9C,cAAE;cACA,IAAI;AACd,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,GAAG,GAAG,GAAG;QAC7D,IAAI,sBAAsB,IAAI,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE;AACpD,YAAA,MAAM,OAAO,GAA6B;AACtC,gBAAA,IAAI,EAAE,IAAI;gBACV,SAAS,EAAE,IAAI,CAAC,SAAS;AACzB,gBAAA,UAAU,EAAE,KAAK;aACpB;YACD,MAAM,QAAQ,GAAyB,IAAI,oBAAoB,CAC3D,CAAC,OAAO,KAAI;AACR,gBAAA,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AACtB,oBAAA,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE;wBACvB;oBACJ;oBACA,IAAI,CAAC,iBAAiB,EAAE;AAC5B,gBAAA,CAAC,CAAC;YACN,CAAC,EACD,OAAO,CACV;YACD,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;YAChD;QACJ;AACA,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,MAC/C,IAAI,CAAC,gBAAgB,EAAE,CAC1B;AACD,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,MAC/C,IAAI,CAAC,gBAAgB,EAAE,CAC1B;IACL;IAEA,eAAe,GAAA;QACX,UAAU,CAAC,MAAM,IAAI,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;IAChD;IAEA,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE;AAC7B,QAAA,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE;IACjC;IAEQ,gBAAgB,GAAA;AACpB,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB;QACJ;QACA,IAAI,CAAC,YAAY,EAAE;QACnB,IAAI,CAAC,YAAY,EAAE;AACnB,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU;QACrE,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,aAAa,EAAE;YACnC,IAAI,CAAC,iBAAiB,EAAE;QAC5B;IACJ;IAEQ,iBAAiB,GAAA;AACrB,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACrB;QACJ;AACA,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC;IACrC;AAEQ,IAAA,QAAQ,CAAC,OAAe,EAAA;QAC5B,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;AAChC,YAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC,CAAC;QAC9D;IACJ;IAEQ,YAAY,GAAA;AAChB,QAAA,IAAI,CAAC,UAAU,GAAG,OAAO,MAAM,KAAK,WAAW,GAAG,MAAM,CAAC,WAAW,GAAG,CAAC;IAC5E;IAEQ,YAAY,GAAA;QAChB,IACI,OAAO,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,qBAAqB,KAAK,UAAU,EAC5E;AACE,YAAA,MAAM,WAAW,GACb,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,GAAG;YAC9D,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,SAAS;AAC1D,YAAA,IAAI,CAAC,UAAU,GAAG,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,SAAS;QAChE;aAAO;AACH,YAAA,IAAI,CAAC,UAAU,GAAG,CAAC;QACvB;IACJ;8GA1GS,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA9B,8BAA8B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,WAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,SAAA,EAF7B,CAAC,aAAa,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAEhB,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAJ1C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,uBAAuB;oBACjC,SAAS,EAAC,CAAC,aAAa;AAC3B,iBAAA;;sBAEI;;sBACA;;sBACA;;sBACA;;;ACZL;;AAEG;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cmat-directives-autofocus.mjs","sources":["../../../projects/cmat/directives/autofocus/autofocus.directive.ts","../../../projects/cmat/directives/autofocus/cmat-directives-autofocus.ts"],"sourcesContent":["import { Directive, ElementRef, inject } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[cmatAutofocus]'\r\n})\r\nexport class CmatAutofocusDirective {\r\n element = inject(ElementRef);\r\n\r\n constructor() {\r\n setTimeout(() => {\r\n this.element.nativeElement.focus();\r\n }, 0);\r\n\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;MAKa,sBAAsB,CAAA;AAGjC,IAAA,WAAA,GAAA;AAFA,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"cmat-directives-autofocus.mjs","sources":["../../../projects/cmat/directives/autofocus/autofocus.directive.ts","../../../projects/cmat/directives/autofocus/cmat-directives-autofocus.ts"],"sourcesContent":["import { Directive, ElementRef, inject } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[cmatAutofocus]'\r\n})\r\nexport class CmatAutofocusDirective {\r\n element = inject<ElementRef<HTMLElement>>(ElementRef);\r\n\r\n constructor() {\r\n setTimeout(() => {\r\n this.element.nativeElement.focus();\r\n }, 0);\r\n\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;MAKa,sBAAsB,CAAA;AAGjC,IAAA,WAAA,GAAA;AAFA,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAA0B,UAAU,CAAC;QAGnD,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE;QACpC,CAAC,EAAE,CAAC,CAAC;IAEP;8GARW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAHlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE;AACX,iBAAA;;;ACJD;;AAEG;;;;"}
|
|
@@ -89,7 +89,7 @@ class WorksheetExporter extends FileExporter {
|
|
|
89
89
|
}
|
|
90
90
|
async createContent(rows, options) {
|
|
91
91
|
const workSheet = (await import('xlsx')).utils.json_to_sheet(rows, {
|
|
92
|
-
skipHeader: true
|
|
92
|
+
skipHeader: true
|
|
93
93
|
});
|
|
94
94
|
return await this.workSheetToContent(workSheet, options);
|
|
95
95
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cmat-directives-data-exporter.mjs","sources":["../../../projects/cmat/directives/data-exporter/options.ts","../../../projects/cmat/directives/data-exporter/mime.ts","../../../projects/cmat/directives/data-exporter/constants.ts","../../../projects/cmat/directives/data-exporter/services/file-util.ts","../../../projects/cmat/directives/data-exporter/services/exporters/file-exporter.ts","../../../projects/cmat/directives/data-exporter/services/exporters/worksheet-exporter.ts","../../../projects/cmat/directives/data-exporter/services/exporters/csv-exporter.service.ts","../../../projects/cmat/directives/data-exporter/services/exporters/json-exporter.service.ts","../../../projects/cmat/directives/data-exporter/services/exporters/txt-exporter.service.ts","../../../projects/cmat/directives/data-exporter/services/exporters/xls-exporter.service.ts","../../../projects/cmat/directives/data-exporter/services/exporters/xlsx-exporter.service.ts","../../../projects/cmat/directives/data-exporter/services/service-locator.service.ts","../../../projects/cmat/directives/data-exporter/data-exporter.directive.ts","../../../projects/cmat/directives/data-exporter/cmat-directives-data-exporter.ts"],"sourcesContent":["import { WritingOptions } from 'xlsx';\r\n\r\n/* eslint-disable @typescript-eslint/naming-convention */\r\nexport interface ExporterListInfo {\r\n code: string;\r\n label: string;\r\n}\r\n\r\nexport enum ExportType {\r\n XLS = 'xls',\r\n XLSX = 'xlsx',\r\n CSV = 'csv',\r\n TXT = 'txt',\r\n JSON = 'json'\r\n}\r\n\r\nexport interface Options {\r\n fileName?: string;\r\n}\r\n\r\nexport interface TxtOptions extends Options {\r\n delimiter?: string;\r\n}\r\n\r\nexport interface ExcelOptions extends Options, Omit<WritingOptions, 'bookType'> {\r\n columnWidths: number[];\r\n}\r\n","export class Mime {\r\n extension: string;\r\n contentTypeHeader: string;\r\n\r\n constructor(extension: string, contentTypeHeader: string) {\r\n this.extension = extension;\r\n this.contentTypeHeader = contentTypeHeader;\r\n }\r\n}\r\n","import { Mime } from './mime';\r\nimport { ExportType } from './options';\r\n\r\nexport const TYPE_ARRAY = 'array';\r\nexport const CHAR_SET_UTF = ';charset=utf-';\r\nexport const CHAR_SET_UTF_8 = CHAR_SET_UTF + '8';\r\nexport const CONTENT_TYPE_TEXT = ExportType.TXT + '/';\r\nexport const CONTENT_TYPE_APPLICATION = 'application/';\r\nexport const CONTENT_TYPE_EXCEL = CONTENT_TYPE_APPLICATION + 'octet-stream';\r\nexport const CONTENT_TYPE_JSON = CONTENT_TYPE_APPLICATION + 'json';\r\nexport const DOT = '.';\r\nexport const COMMA = ',';\r\nexport const EXTENSION_XLS = DOT + ExportType.XLS;\r\nexport const EXTENSION_XLSX = DOT + ExportType.XLSX;\r\nexport const EXTENSION_CSV = DOT + ExportType.CSV;\r\nexport const EXTENSION_JSON = DOT + ExportType.JSON;\r\nexport const EXTENSION_TEXT = DOT + ExportType.TXT;\r\nexport const MIME_EXCEL_XLS = new Mime(EXTENSION_XLS, CONTENT_TYPE_EXCEL + CHAR_SET_UTF_8);\r\nexport const MIME_EXCEL_XLSX = new Mime(EXTENSION_XLSX, CONTENT_TYPE_EXCEL + CHAR_SET_UTF_8);\r\nexport const MIME_JSON = new Mime(EXTENSION_JSON, CONTENT_TYPE_JSON + CHAR_SET_UTF_8);\r\nexport const MIME_TXT = new Mime(EXTENSION_TEXT, CONTENT_TYPE_TEXT + ExportType.TXT + CHAR_SET_UTF_8);\r\nexport const MIME_CSV = new Mime(EXTENSION_CSV, CONTENT_TYPE_TEXT + ExportType.CSV + CHAR_SET_UTF_8);\r\nexport const REF = '!ref';\r\nexport const XLS_REGEX = DOT + '*.' + ExportType.XLS + '$';\r\nexport const RETURN = '\\n';\r\nexport const TAB = '\\t';\r\nexport const XLSX_COLS = '!cols';\r\nexport const BOM = '\\uFEFF';\r\n","import * as FileSaver from 'file-saver-es';\r\nimport { DOT, XLS_REGEX } from '../constants';\r\nimport { Mime } from '../mime';\r\nimport { ExportType, Options } from '../options';\r\n\r\nexport class FileUtil {\r\n public static save(content: string, mime: Mime, options?: Options):void {\r\n const blob = new Blob([content], {type: mime.contentTypeHeader});\r\n let fileName = '附件';\r\n if (options?.fileName) {\r\n fileName = options.fileName;\r\n }\r\n FileSaver.saveAs(blob, fileName + mime.extension);\r\n }\r\n\r\n\r\n public static isXls(fileName: string): boolean {\r\n return fileName.toLowerCase().match(XLS_REGEX) != null;\r\n }\r\n\r\n public static identifyExportType(fileName?: string): ExportType {\r\n if (fileName && FileUtil.isXls(fileName)) {\r\n return ExportType.XLS;\r\n } else {\r\n return ExportType.XLSX;\r\n }\r\n }\r\n\r\n public static removeExtension(options?: Options):void {\r\n if (options)\r\n options.fileName = options.fileName?.split(DOT)[0];\r\n }\r\n}\r\n","import { Exporter } from './exporter';\r\nimport { Mime } from '../../mime';\r\nimport { Options } from '../../options';\r\nimport { FileUtil } from '../file-util';\r\n\r\nexport abstract class FileExporter<T extends Options> implements Exporter<T> {\r\n public export(rows: any[], options?: T): void {\r\n if (!rows) {\r\n throw new Error('Empty json array is provided, rows parameter is mandatory!');\r\n }\r\n const mimeType = this.getMimeType();\r\n void this.createContent(rows, options).then((content) => {\r\n FileUtil.save(content, mimeType, options);\r\n });\r\n }\r\n\r\n public abstract createContent(rows: any[], options?: T): Promise<any>;\r\n public abstract getMimeType(): Mime;\r\n}\r\n","import { WorkSheet } from 'xlsx';\r\nimport { FileExporter } from './file-exporter';\r\nimport { Mime } from '../../mime';\r\nimport { Options } from '../../options';\r\n\r\nexport abstract class WorksheetExporter<T extends Options> extends FileExporter<T> {\r\n constructor() {\r\n super();\r\n }\r\n\r\n public async createContent(rows: any[], options?: T): Promise<any> {\r\n const workSheet: WorkSheet = (await import('xlsx')).utils.json_to_sheet(rows, {\r\n skipHeader: true // we don't want to see object properties as our headers\r\n });\r\n return await this.workSheetToContent(workSheet, options);\r\n }\r\n public abstract workSheetToContent(workSheet: WorkSheet, options?: T): Promise<any>;\r\n public abstract override getMimeType(): Mime;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { WorkSheet } from 'xlsx';\r\nimport { WorksheetExporter } from './worksheet-exporter';\r\nimport { BOM, COMMA, MIME_CSV } from '../../constants';\r\nimport { Mime } from '../../mime';\r\nimport { TxtOptions } from '../../options';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CsvExporterService extends WorksheetExporter<TxtOptions> {\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n public async workSheetToContent(worksheet: WorkSheet, options?: TxtOptions): Promise<any> {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n const content = (await import('xlsx')).utils.sheet_to_csv(worksheet, { FS: options?.delimiter ?? COMMA });\r\n return BOM + content;\r\n }\r\n\r\n public getMimeType(): Mime {\r\n return MIME_CSV;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { FileExporter } from './file-exporter';\r\nimport { MIME_JSON } from '../../constants';\r\nimport { Mime } from '../../mime';\r\nimport { Options } from '../../options';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class JsonExporterService extends FileExporter<Options> {\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n public async createContent(rows: any[], options?: Options): Promise<any> {\r\n return await new Promise((resolve) => {\r\n resolve(JSON.stringify(rows));\r\n });;\r\n }\r\n public getMimeType(): Mime {\r\n return MIME_JSON;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { FileExporter } from './file-exporter';\r\nimport { MIME_TXT, RETURN, TAB } from '../../constants';\r\nimport { Mime } from '../../mime';\r\nimport { TxtOptions } from '../../options';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TxtExporterService extends FileExporter<TxtOptions> {\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n public async createContent(rows: any[], options?: TxtOptions): Promise<any> {\r\n return await new Promise((resolve) => {\r\n let content = '';\r\n rows.forEach((element) => {\r\n content += Object.values(element).join(this._getDelimiter(options)) + RETURN;\r\n });\r\n\r\n resolve(JSON.stringify(content));\r\n });\r\n }\r\n\r\n public getMimeType(): Mime {\r\n return MIME_TXT;\r\n }\r\n\r\n private _getDelimiter(options?: TxtOptions): string {\r\n if (options?.delimiter) {\r\n return options.delimiter;\r\n } else {\r\n return TAB;\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { WorkSheet } from 'xlsx';\r\nimport { WorksheetExporter } from './worksheet-exporter';\r\nimport { MIME_EXCEL_XLS, TYPE_ARRAY, XLSX_COLS } from '../../constants';\r\nimport { Mime } from '../../mime';\r\nimport { ExcelOptions } from '../../options';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class XlsExporterService extends WorksheetExporter<ExcelOptions> {\r\n constructor() {\r\n super();\r\n }\r\n\r\n public async workSheetToContent(worksheet: WorkSheet, options: ExcelOptions = {} as ExcelOptions): Promise<any> {\r\n const { utils, write } = await import('xlsx');\r\n const workBook = utils.book_new();\r\n\r\n this._correctTypes(options);\r\n utils.book_append_sheet(workBook, worksheet, options.sheet);\r\n\r\n if (options.columnWidths) {\r\n worksheet[XLSX_COLS] = this._convertToWch(options.columnWidths);\r\n } else {\r\n const jsonTable = utils.sheet_to_json<string | number[]>(worksheet, {\r\n header: 1,\r\n raw: true,\r\n rawNumbers: true,\r\n });\r\n const maxRowSize = Math.max(...jsonTable.map(row => row.length));\r\n\r\n const wchArray = Array.from({ length: maxRowSize }).map((_, rowIndex) => {\r\n const row = Array.from({ length: jsonTable.length }).map(\r\n (_, i) => String(jsonTable[i][rowIndex] ?? '').length\r\n );\r\n\r\n return { wch: Math.max(...row)*3 > 40 ? 40 : Math.max(...row)*3 };\r\n });\r\n worksheet[XLSX_COLS] = wchArray;\r\n }\r\n\r\n return write(workBook, options);\r\n }\r\n\r\n public getMimeType(): Mime {\r\n return MIME_EXCEL_XLS;\r\n }\r\n\r\n private _correctTypes(options: ExcelOptions): void {\r\n options.type ??= TYPE_ARRAY;\r\n (options as any).bookType = this.getMimeType().extension.replace('.', ''); // sheetjs requires bookingType for excel format\r\n }\r\n\r\n private _convertToWch(columnWidths: number[]): { wch: number }[] {\r\n return columnWidths.map(width => ({ wch: width }));\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { XlsExporterService } from './xls-exporter.service';\r\nimport { MIME_EXCEL_XLSX } from '../../constants';\r\nimport { Mime } from '../../mime';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class XlsxExporterService extends XlsExporterService {\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n public override getMimeType(): Mime {\r\n return MIME_EXCEL_XLSX;\r\n }\r\n}\r\n","import { Injectable, Injector, inject } from '@angular/core';\r\nimport { ExportType, Options } from '../options';\r\nimport { CsvExporterService } from './exporters/csv-exporter.service';\r\nimport { Exporter } from './exporters/exporter';\r\nimport { JsonExporterService } from './exporters/json-exporter.service';\r\nimport { TxtExporterService } from './exporters/txt-exporter.service';\r\nimport { XlsExporterService } from './exporters/xls-exporter.service';\r\nimport { XlsxExporterService } from './exporters/xlsx-exporter.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ServiceLocatorService {\r\n private _injector = inject(Injector);\r\n\r\n public getService(exportType: ExportType | 'xls' | 'xlsx' | 'csv' | 'txt' | 'json'): Exporter<Options> {\r\n switch (exportType) {\r\n case 'xls':\r\n case ExportType.XLS:\r\n return this._injector.get<XlsExporterService>(XlsExporterService);\r\n case 'xlsx':\r\n case ExportType.XLSX:\r\n return this._injector.get<XlsxExporterService>(XlsxExporterService);\r\n case 'json':\r\n case ExportType.JSON:\r\n return this._injector.get<JsonExporterService>(JsonExporterService);\r\n case 'txt':\r\n case ExportType.TXT:\r\n return this._injector.get<TxtExporterService>(TxtExporterService);\r\n case 'csv':\r\n case ExportType.CSV:\r\n return this._injector.get<CsvExporterService>(CsvExporterService);\r\n default:\r\n return this._injector.get<XlsxExporterService>(XlsxExporterService);\r\n }\r\n }\r\n}\r\n","import { Directive, Input, OnChanges, SimpleChanges, inject } from '@angular/core';\r\nimport dayjs from 'dayjs';\r\nimport { ExcelOptions, ExporterListInfo, ExportType, Options, TxtOptions } from './options';\r\nimport { Exporter } from './services/exporters/exporter';\r\nimport { ServiceLocatorService } from './services/service-locator.service';\r\n\r\n@Directive({\r\n selector: 'button[cmatDataExporter]'\r\n})\r\nexport class CmatDataExporterDirective implements OnChanges {\r\n @Input() dataSource: any[];\r\n @Input() exportColumns: ExporterListInfo[];\r\n @Input() options?: Options | ExcelOptions | TxtOptions;\r\n @Input() exportType: ExportType | 'xls' | 'xlsx' | 'csv' | 'txt' | 'json';\r\n @Input() transformBoolean: boolean = true;\r\n @Input() transformDate: boolean = true;\r\n @Input() dateFormat: string = 'YYYY-MM-DD';\r\n\r\n private _serviceLocator = inject(ServiceLocatorService);\r\n private _data: any[];\r\n private _exporterService: Exporter<Options>;\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes.dataSource) {\r\n if (this.dataSource?.length > 0) {\r\n this._data = [];\r\n this._loadExporter(this.exportType);\r\n this._data = [\r\n this.exportColumns.map(column => ({ [column.code]: column.label }))\r\n .reduce((acc, curr) => ({ ...acc, ...curr }), {}) as Record<string, string>,\r\n ...this.dataSource.map(user =>\r\n this.exportColumns.reduce((acc, column) => {\r\n let value = user[column.code];\r\n if (this.transformBoolean && typeof value === 'boolean') {\r\n value = value ? '是' : '否';\r\n }\r\n else if (this.transformDate && (value instanceof Date || typeof value === 'string')) {\r\n const datePattern = /^\\d{4}[-/]\\d{1,2}[-/]\\d{1,2}/;\r\n\r\n if (typeof value === 'string' && !datePattern.test(value)) {\r\n return { ...acc, [column.code]: value };\r\n }\r\n\r\n const dateValue = dayjs(value);\r\n\r\n if (dateValue.isValid()) {\r\n value = dateValue.format(this.dateFormat);\r\n }\r\n }\r\n\r\n return { ...acc, [column.code]: value };\r\n }, {})\r\n )\r\n ] as (Record<string, string>)[];\r\n\r\n this._exporterService.export(this._data, this.options);\r\n }\r\n }\r\n }\r\n\r\n private _loadExporter(exportType: ExportType | 'xls' | 'xlsx' | 'csv' | 'txt' | 'json'): void {\r\n this._exporterService = this._serviceLocator.getService(exportType);\r\n }\r\n\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cmat-directives-data-exporter.mjs","sources":["../../../projects/cmat/directives/data-exporter/options.ts","../../../projects/cmat/directives/data-exporter/mime.ts","../../../projects/cmat/directives/data-exporter/constants.ts","../../../projects/cmat/directives/data-exporter/services/file-util.ts","../../../projects/cmat/directives/data-exporter/services/exporters/file-exporter.ts","../../../projects/cmat/directives/data-exporter/services/exporters/worksheet-exporter.ts","../../../projects/cmat/directives/data-exporter/services/exporters/csv-exporter.service.ts","../../../projects/cmat/directives/data-exporter/services/exporters/json-exporter.service.ts","../../../projects/cmat/directives/data-exporter/services/exporters/txt-exporter.service.ts","../../../projects/cmat/directives/data-exporter/services/exporters/xls-exporter.service.ts","../../../projects/cmat/directives/data-exporter/services/exporters/xlsx-exporter.service.ts","../../../projects/cmat/directives/data-exporter/services/service-locator.service.ts","../../../projects/cmat/directives/data-exporter/data-exporter.directive.ts","../../../projects/cmat/directives/data-exporter/cmat-directives-data-exporter.ts"],"sourcesContent":["import { WritingOptions } from 'xlsx';\r\n\r\n/* eslint-disable @typescript-eslint/naming-convention */\r\nexport interface ExporterListInfo {\r\n code: string;\r\n label: string;\r\n}\r\n\r\nexport enum ExportType {\r\n XLS = 'xls',\r\n XLSX = 'xlsx',\r\n CSV = 'csv',\r\n TXT = 'txt',\r\n JSON = 'json'\r\n}\r\n\r\nexport interface Options {\r\n fileName?: string;\r\n}\r\n\r\nexport interface TxtOptions extends Options {\r\n delimiter?: string;\r\n}\r\n\r\nexport interface ExcelOptions extends Options, Omit<WritingOptions, 'bookType'> {\r\n columnWidths: number[];\r\n}\r\n","export class Mime {\r\n extension: string;\r\n contentTypeHeader: string;\r\n\r\n constructor(extension: string, contentTypeHeader: string) {\r\n this.extension = extension;\r\n this.contentTypeHeader = contentTypeHeader;\r\n }\r\n}\r\n","import { Mime } from './mime';\r\nimport { ExportType } from './options';\r\n\r\nexport const TYPE_ARRAY = 'array';\r\nexport const CHAR_SET_UTF = ';charset=utf-';\r\nexport const CHAR_SET_UTF_8 = CHAR_SET_UTF + '8';\r\nexport const CONTENT_TYPE_TEXT = ExportType.TXT + '/';\r\nexport const CONTENT_TYPE_APPLICATION = 'application/';\r\nexport const CONTENT_TYPE_EXCEL = CONTENT_TYPE_APPLICATION + 'octet-stream';\r\nexport const CONTENT_TYPE_JSON = CONTENT_TYPE_APPLICATION + 'json';\r\nexport const DOT = '.';\r\nexport const COMMA = ',';\r\nexport const EXTENSION_XLS = DOT + ExportType.XLS;\r\nexport const EXTENSION_XLSX = DOT + ExportType.XLSX;\r\nexport const EXTENSION_CSV = DOT + ExportType.CSV;\r\nexport const EXTENSION_JSON = DOT + ExportType.JSON;\r\nexport const EXTENSION_TEXT = DOT + ExportType.TXT;\r\nexport const MIME_EXCEL_XLS = new Mime(EXTENSION_XLS, CONTENT_TYPE_EXCEL + CHAR_SET_UTF_8);\r\nexport const MIME_EXCEL_XLSX = new Mime(EXTENSION_XLSX, CONTENT_TYPE_EXCEL + CHAR_SET_UTF_8);\r\nexport const MIME_JSON = new Mime(EXTENSION_JSON, CONTENT_TYPE_JSON + CHAR_SET_UTF_8);\r\nexport const MIME_TXT = new Mime(EXTENSION_TEXT, CONTENT_TYPE_TEXT + ExportType.TXT + CHAR_SET_UTF_8);\r\nexport const MIME_CSV = new Mime(EXTENSION_CSV, CONTENT_TYPE_TEXT + ExportType.CSV + CHAR_SET_UTF_8);\r\nexport const REF = '!ref';\r\nexport const XLS_REGEX = DOT + '*.' + ExportType.XLS + '$';\r\nexport const RETURN = '\\n';\r\nexport const TAB = '\\t';\r\nexport const XLSX_COLS = '!cols';\r\nexport const BOM = '\\uFEFF';\r\n","import * as FileSaver from 'file-saver-es';\r\nimport { DOT, XLS_REGEX } from '../constants';\r\nimport { Mime } from '../mime';\r\nimport { ExportType, Options } from '../options';\r\n\r\nexport class FileUtil {\r\n public static save(content: string | Blob | ArrayBuffer, mime: Mime, options?: Options):void {\r\n const blob = new Blob([content], {type: mime.contentTypeHeader});\r\n let fileName = '附件';\r\n if (options?.fileName) {\r\n fileName = options.fileName;\r\n }\r\n FileSaver.saveAs(blob, fileName + mime.extension);\r\n }\r\n\r\n\r\n public static isXls(fileName: string): boolean {\r\n return fileName.toLowerCase().match(XLS_REGEX) != null;\r\n }\r\n\r\n public static identifyExportType(fileName?: string): ExportType {\r\n if (fileName && FileUtil.isXls(fileName)) {\r\n return ExportType.XLS;\r\n } else {\r\n return ExportType.XLSX;\r\n }\r\n }\r\n\r\n public static removeExtension(options?: Options):void {\r\n if (options)\r\n options.fileName = options.fileName?.split(DOT)[0];\r\n }\r\n}","import { Exporter } from './exporter';\r\nimport { Mime } from '../../mime';\r\nimport { Options } from '../../options';\r\nimport { FileUtil } from '../file-util';\r\n\r\nexport abstract class FileExporter<T extends Options> implements Exporter<T> {\r\n public export(rows: Record<string, unknown>[], options?: T): void {\r\n if (!rows) {\r\n throw new Error('Empty json array is provided, rows parameter is mandatory!');\r\n }\r\n const mimeType = this.getMimeType();\r\n void this.createContent(rows, options).then((content) => {\r\n FileUtil.save(content, mimeType, options);\r\n });\r\n }\r\n\r\n public abstract createContent(rows: Record<string, unknown>[], options?: T): Promise<string | Blob | ArrayBuffer>;\r\n public abstract getMimeType(): Mime;\r\n}\r\n","import { WorkSheet } from 'xlsx';\r\nimport { FileExporter } from './file-exporter';\r\nimport { Mime } from '../../mime';\r\nimport { Options } from '../../options';\r\n\r\nexport abstract class WorksheetExporter<T extends Options> extends FileExporter<T> {\r\n constructor() {\r\n super();\r\n }\r\n\r\n public async createContent(rows: Record<string, unknown>[], options?: T): Promise<string | Blob | ArrayBuffer> {\r\n const workSheet: WorkSheet = (await import('xlsx')).utils.json_to_sheet(rows, {\r\n skipHeader: true\r\n });\r\n return await this.workSheetToContent(workSheet, options);\r\n }\r\n public abstract workSheetToContent(workSheet: WorkSheet, options?: T): Promise<string | Blob | ArrayBuffer>;\r\n public abstract override getMimeType(): Mime;\r\n}","import { Injectable } from '@angular/core';\r\nimport { WorkSheet } from 'xlsx';\r\nimport { WorksheetExporter } from './worksheet-exporter';\r\nimport { BOM, COMMA, MIME_CSV } from '../../constants';\r\nimport { Mime } from '../../mime';\r\nimport { TxtOptions } from '../../options';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CsvExporterService extends WorksheetExporter<TxtOptions> {\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n public async workSheetToContent(worksheet: WorkSheet, options?: TxtOptions): Promise<string> {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n const content = (await import('xlsx')).utils.sheet_to_csv(worksheet, { FS: options?.delimiter ?? COMMA });\r\n return BOM + content;\r\n }\r\n\r\n public getMimeType(): Mime {\r\n return MIME_CSV;\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { FileExporter } from './file-exporter';\r\nimport { MIME_JSON } from '../../constants';\r\nimport { Mime } from '../../mime';\r\nimport { Options } from '../../options';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class JsonExporterService extends FileExporter<Options> {\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n public async createContent(rows: Record<string, unknown>[], options?: Options): Promise<string> {\r\n return await new Promise((resolve) => {\r\n resolve(JSON.stringify(rows));\r\n });;\r\n }\r\n public getMimeType(): Mime {\r\n return MIME_JSON;\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { FileExporter } from './file-exporter';\r\nimport { MIME_TXT, RETURN, TAB } from '../../constants';\r\nimport { Mime } from '../../mime';\r\nimport { TxtOptions } from '../../options';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TxtExporterService extends FileExporter<TxtOptions> {\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n public async createContent(rows: Record<string, unknown>[], options?: TxtOptions): Promise<string> {\r\n return await new Promise((resolve) => {\r\n let content = '';\r\n rows.forEach((element) => {\r\n content += Object.values(element).join(this._getDelimiter(options)) + RETURN;\r\n });\r\n\r\n resolve(JSON.stringify(content));\r\n });\r\n }\r\n\r\n public getMimeType(): Mime {\r\n return MIME_TXT;\r\n }\r\n\r\n private _getDelimiter(options?: TxtOptions): string {\r\n if (options?.delimiter) {\r\n return options.delimiter;\r\n } else {\r\n return TAB;\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { WorkSheet } from 'xlsx';\r\nimport { WorksheetExporter } from './worksheet-exporter';\r\nimport { MIME_EXCEL_XLS, TYPE_ARRAY, XLSX_COLS } from '../../constants';\r\nimport { Mime } from '../../mime';\r\nimport { ExcelOptions } from '../../options';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class XlsExporterService extends WorksheetExporter<ExcelOptions> {\r\n constructor() {\r\n super();\r\n }\r\n\r\n public async workSheetToContent(worksheet: WorkSheet, options: ExcelOptions = {} as ExcelOptions): Promise<string> {\r\n const { utils, write } = await import('xlsx');\r\n const workBook = utils.book_new();\r\n\r\n this._correctTypes(options);\r\n utils.book_append_sheet(workBook, worksheet, options.sheet);\r\n\r\n if (options.columnWidths) {\r\n worksheet[XLSX_COLS] = this._convertToWch(options.columnWidths);\r\n } else {\r\n const jsonTable = utils.sheet_to_json<string | number[]>(worksheet, {\r\n header: 1,\r\n raw: true,\r\n rawNumbers: true,\r\n });\r\n const maxRowSize = Math.max(...jsonTable.map(row => row.length));\r\n\r\n const wchArray = Array.from({ length: maxRowSize }).map((_, rowIndex) => {\r\n const row = Array.from({ length: jsonTable.length }).map(\r\n (_, i) => String(jsonTable[i][rowIndex] ?? '').length\r\n );\r\n\r\n return { wch: Math.max(...row)*3 > 40 ? 40 : Math.max(...row)*3 };\r\n });\r\n worksheet[XLSX_COLS] = wchArray;\r\n }\r\n\r\n return write(workBook, options) as string;\r\n }\r\n\r\n public getMimeType(): Mime {\r\n return MIME_EXCEL_XLS;\r\n }\r\n\r\n private _correctTypes(options: ExcelOptions): void {\r\n options.type ??= TYPE_ARRAY;\r\n (options as ExcelOptions & { bookType?: string }).bookType = this.getMimeType().extension.replace('.', ''); // sheetjs requires bookingType for excel format\r\n }\r\n\r\n private _convertToWch(columnWidths: number[]): { wch: number }[] {\r\n return columnWidths.map(width => ({ wch: width }));\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { XlsExporterService } from './xls-exporter.service';\r\nimport { MIME_EXCEL_XLSX } from '../../constants';\r\nimport { Mime } from '../../mime';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class XlsxExporterService extends XlsExporterService {\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n public override getMimeType(): Mime {\r\n return MIME_EXCEL_XLSX;\r\n }\r\n}\r\n","import { Injectable, Injector, inject } from '@angular/core';\r\nimport { ExportType, Options } from '../options';\r\nimport { CsvExporterService } from './exporters/csv-exporter.service';\r\nimport { Exporter } from './exporters/exporter';\r\nimport { JsonExporterService } from './exporters/json-exporter.service';\r\nimport { TxtExporterService } from './exporters/txt-exporter.service';\r\nimport { XlsExporterService } from './exporters/xls-exporter.service';\r\nimport { XlsxExporterService } from './exporters/xlsx-exporter.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ServiceLocatorService {\r\n private _injector = inject(Injector);\r\n\r\n public getService(exportType: ExportType | 'xls' | 'xlsx' | 'csv' | 'txt' | 'json'): Exporter<Options> {\r\n switch (exportType) {\r\n case 'xls':\r\n case ExportType.XLS:\r\n return this._injector.get<XlsExporterService>(XlsExporterService);\r\n case 'xlsx':\r\n case ExportType.XLSX:\r\n return this._injector.get<XlsxExporterService>(XlsxExporterService);\r\n case 'json':\r\n case ExportType.JSON:\r\n return this._injector.get<JsonExporterService>(JsonExporterService);\r\n case 'txt':\r\n case ExportType.TXT:\r\n return this._injector.get<TxtExporterService>(TxtExporterService);\r\n case 'csv':\r\n case ExportType.CSV:\r\n return this._injector.get<CsvExporterService>(CsvExporterService);\r\n default:\r\n return this._injector.get<XlsxExporterService>(XlsxExporterService);\r\n }\r\n }\r\n}\r\n","import { Directive, Input, OnChanges, SimpleChanges, inject } from '@angular/core';\r\nimport dayjs from 'dayjs';\r\nimport { ExcelOptions, ExporterListInfo, ExportType, Options, TxtOptions } from './options';\r\nimport { Exporter } from './services/exporters/exporter';\r\nimport { ServiceLocatorService } from './services/service-locator.service';\r\n\r\nexport type DataExporterItem = Record<string, unknown>;\r\n\r\n@Directive({\r\n selector: 'button[cmatDataExporter]'\r\n})\r\nexport class CmatDataExporterDirective implements OnChanges {\r\n @Input() dataSource: DataExporterItem[];\r\n @Input() exportColumns: ExporterListInfo[];\r\n @Input() options?: Options | ExcelOptions | TxtOptions;\r\n @Input() exportType: ExportType | 'xls' | 'xlsx' | 'csv' | 'txt' | 'json';\r\n @Input() transformBoolean: boolean = true;\r\n @Input() transformDate: boolean = true;\r\n @Input() dateFormat: string = 'YYYY-MM-DD';\r\n\r\n private _serviceLocator = inject(ServiceLocatorService);\r\n private _data: DataExporterItem[];\r\n private _exporterService: Exporter<Options>;\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes.dataSource) {\r\n if (this.dataSource?.length > 0) {\r\n this._data = [];\r\n this._loadExporter(this.exportType);\r\n this._data = [\r\n this.exportColumns.map(column => ({ [column.code]: column.label }))\r\n .reduce((acc, curr) => ({ ...acc, ...curr }), {}),\r\n ...this.dataSource.map(user =>\r\n this.exportColumns.reduce((acc, column) => {\r\n let value = user[column.code];\r\n if (this.transformBoolean && typeof value === 'boolean') {\r\n value = value ? '是' : '否';\r\n }\r\n else if (this.transformDate && (value instanceof Date || typeof value === 'string')) {\r\n const datePattern = /^\\d{4}[-/]\\d{1,2}[-/]\\d{1,2}/;\r\n\r\n if (typeof value === 'string' && !datePattern.test(value)) {\r\n return { ...acc, [column.code]: value };\r\n }\r\n\r\n const dateValue = dayjs(value);\r\n\r\n if (dateValue.isValid()) {\r\n value = dateValue.format(this.dateFormat);\r\n }\r\n }\r\n\r\n return { ...acc, [column.code]: value };\r\n }, {} as DataExporterItem)\r\n )\r\n ] as (Record<string, string>)[];\r\n\r\n this._exporterService.export(this._data, this.options);\r\n }\r\n }\r\n }\r\n\r\n private _loadExporter(exportType: ExportType | 'xls' | 'xlsx' | 'csv' | 'txt' | 'json'): void {\r\n this._exporterService = this._serviceLocator.getService(exportType);\r\n }\r\n\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cmat-directives-debounce.mjs","sources":["../../../projects/cmat/directives/debounce/abstract-debounce.directive.ts","../../../projects/cmat/directives/debounce/debounce-click.directive.ts","../../../projects/cmat/directives/debounce/debounce-keyup.directive.ts","../../../projects/cmat/directives/debounce/cmat-directives-debounce.ts"],"sourcesContent":["import { DestroyRef, Directive, EventEmitter, Input, OnInit, Output, inject } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { Subject } from 'rxjs';\r\nimport { debounceTime, distinctUntilChanged, tap } from 'rxjs/operators';\r\n\r\n@Directive()\r\nexport abstract class AbstractDebounceDirective implements OnInit {\r\n @Input()\r\n public debounceTime: number;\r\n\r\n @Output()\r\n public emitChanged: EventEmitter<
|
|
1
|
+
{"version":3,"file":"cmat-directives-debounce.mjs","sources":["../../../projects/cmat/directives/debounce/abstract-debounce.directive.ts","../../../projects/cmat/directives/debounce/debounce-click.directive.ts","../../../projects/cmat/directives/debounce/debounce-keyup.directive.ts","../../../projects/cmat/directives/debounce/cmat-directives-debounce.ts"],"sourcesContent":["import { DestroyRef, Directive, EventEmitter, Input, OnInit, Output, inject } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { Subject } from 'rxjs';\r\nimport { debounceTime, distinctUntilChanged, tap } from 'rxjs/operators';\r\n\r\n@Directive()\r\nexport abstract class AbstractDebounceDirective implements OnInit {\r\n @Input()\r\n public debounceTime: number;\r\n\r\n @Output()\r\n public emitChanged: EventEmitter<unknown>;\r\n\r\n emitEvent$: Subject<unknown>;\r\n private readonly _destroyRef = inject(DestroyRef);\r\n\r\n constructor() {\r\n this.debounceTime = 500;\r\n this.emitChanged = new EventEmitter<unknown>();\r\n this.emitEvent$ = new Subject<unknown>();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.emitEvent$\r\n .pipe(\r\n takeUntilDestroyed(this._destroyRef),\r\n debounceTime(this.debounceTime),\r\n distinctUntilChanged(),\r\n tap(value => this.emitChange(value))\r\n )\r\n .subscribe();\r\n }\r\n\r\n public emitChange(value: unknown): void {\r\n this.emitChanged.emit(value);\r\n }\r\n\r\n}","import { Directive, HostListener } from '@angular/core';\r\nimport { AbstractDebounceDirective } from './abstract-debounce.directive';\r\n\r\n@Directive({\r\n selector: '[cmatDebounceClick]'\r\n})\r\nexport class CmatDebounceClickDirective extends AbstractDebounceDirective {\r\n constructor() {\r\n super();\r\n }\r\n\r\n @HostListener('click', ['$event'])\r\n public onKeyUp(event: MouseEvent): void {\r\n event.preventDefault();\r\n this.emitEvent$.next(event);\r\n }\r\n}\r\n","import { Directive, HostListener } from '@angular/core';\r\nimport { AbstractDebounceDirective } from './abstract-debounce.directive';\r\n\r\n@Directive({\r\n selector: 'input[cmatDebounceKeyup]'\r\n})\r\nexport class CmatDebounceKeyupDirective extends AbstractDebounceDirective {\r\n constructor() {\r\n super();\r\n }\r\n\r\n @HostListener('keyup', ['$event'])\r\n public onKeyUp(event: KeyboardEvent): void {\r\n event.preventDefault();\r\n this.emitEvent$.next(event);\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;MAMsB,yBAAyB,CAAA;AAU3C,IAAA,WAAA,GAAA;AAFiB,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;AAG7C,QAAA,IAAI,CAAC,YAAY,GAAG,GAAG;AACvB,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,YAAY,EAAW;AAC9C,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,OAAO,EAAW;IAC5C;IAEA,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC;AACA,aAAA,IAAI,CACD,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,EACpC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,EAC/B,oBAAoB,EAAE,EACtB,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAEvC,aAAA,SAAS,EAAE;IACpB;AAEO,IAAA,UAAU,CAAC,KAAc,EAAA;AAC5B,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;IAChC;8GA7BkB,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAD9C;;sBAEI;;sBAGA;;;ACJC,MAAO,0BAA2B,SAAQ,yBAAyB,CAAA;AACrE,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE;IACX;AAGO,IAAA,OAAO,CAAC,KAAiB,EAAA;QAC5B,KAAK,CAAC,cAAc,EAAE;AACtB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;IAC/B;8GATS,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA1B,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAA1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAHtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE;AACb,iBAAA;;sBAMI,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;;;ACL/B,MAAO,0BAA2B,SAAQ,yBAAyB,CAAA;AACrE,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE;IACX;AAGO,IAAA,OAAO,CAAC,KAAoB,EAAA;QAC/B,KAAK,CAAC,cAAc,EAAE;AACtB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;IAC/B;8GATS,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA1B,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAA1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAHtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE;AACb,iBAAA;;sBAMI,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;;;ACXrC;;AAEG;;;;"}
|
|
@@ -44,7 +44,7 @@ class CmatDigitOnlyDirective {
|
|
|
44
44
|
}
|
|
45
45
|
onInputChange(event) {
|
|
46
46
|
const reg = /^-?(0|[1-9][0-9]*)(\.[0-9]*)?$/;
|
|
47
|
-
const value = event.target
|
|
47
|
+
const value = event.target?.value ?? '';
|
|
48
48
|
if ((!isNaN(+value) && reg.test(value)) || value === '' || value === '-') {
|
|
49
49
|
this.value = value;
|
|
50
50
|
}
|
|
@@ -110,8 +110,9 @@ class CmatDigitOnlyDirective {
|
|
|
110
110
|
onPaste(event) {
|
|
111
111
|
if (this.allowPaste === true) {
|
|
112
112
|
let pastedInput = '';
|
|
113
|
-
|
|
114
|
-
|
|
113
|
+
const legacyWindow = window;
|
|
114
|
+
if (legacyWindow.clipboardData) {
|
|
115
|
+
pastedInput = legacyWindow.clipboardData.getData('text');
|
|
115
116
|
}
|
|
116
117
|
else if (event.clipboardData?.getData) {
|
|
117
118
|
pastedInput = event.clipboardData.getData('text/plain');
|
|
@@ -150,20 +151,13 @@ class CmatDigitOnlyDirective {
|
|
|
150
151
|
!this._getSelection().includes(this.negativeSign)) {
|
|
151
152
|
return;
|
|
152
153
|
}
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
'undefined') {
|
|
161
|
-
this.inputElement.dispatchEvent(new Event('input', { cancelable: true }));
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
else {
|
|
165
|
-
this._insertAtCursor(this.inputElement, sanitizedContent);
|
|
166
|
-
}
|
|
154
|
+
if (this.inputElement.setRangeText) {
|
|
155
|
+
const { selectionStart: start, selectionEnd: end } = this.inputElement;
|
|
156
|
+
this.inputElement.setRangeText(sanitizedContent, start ?? 0, end ?? 0, 'end');
|
|
157
|
+
this.inputElement.dispatchEvent(new Event('input', { cancelable: true }));
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
this._insertAtCursor(this.inputElement, sanitizedContent);
|
|
167
161
|
}
|
|
168
162
|
if (this.decimal) {
|
|
169
163
|
this._hasDecimalPoint =
|
|
@@ -306,7 +300,7 @@ class CmatMaskDirective {
|
|
|
306
300
|
this.inputElement = el.nativeElement;
|
|
307
301
|
}
|
|
308
302
|
onInputChange(event) {
|
|
309
|
-
const value = event.target
|
|
303
|
+
const value = event.target?.value ?? '';
|
|
310
304
|
if (this.regex.test(value)) {
|
|
311
305
|
this.value = value;
|
|
312
306
|
}
|