cmat 0.0.86 → 0.0.88

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.
Files changed (228) hide show
  1. package/fesm2022/cmat-components-adapter.mjs +9 -9
  2. package/fesm2022/cmat-components-adapter.mjs.map +1 -1
  3. package/fesm2022/cmat-components-breadcrumb.mjs +98 -80
  4. package/fesm2022/cmat-components-breadcrumb.mjs.map +1 -1
  5. package/fesm2022/cmat-components-card.mjs +26 -34
  6. package/fesm2022/cmat-components-card.mjs.map +1 -1
  7. package/fesm2022/cmat-components-carousel.mjs +467 -556
  8. package/fesm2022/cmat-components-carousel.mjs.map +1 -1
  9. package/fesm2022/cmat-components-cascade.mjs +270 -259
  10. package/fesm2022/cmat-components-cascade.mjs.map +1 -1
  11. package/fesm2022/cmat-components-chip-input.mjs +200 -116
  12. package/fesm2022/cmat-components-chip-input.mjs.map +1 -1
  13. package/fesm2022/cmat-components-code-editor.mjs +85 -38
  14. package/fesm2022/cmat-components-code-editor.mjs.map +1 -1
  15. package/fesm2022/cmat-components-color-picker.mjs +841 -0
  16. package/fesm2022/cmat-components-color-picker.mjs.map +1 -0
  17. package/fesm2022/cmat-components-custom-formly.mjs +1395 -838
  18. package/fesm2022/cmat-components-custom-formly.mjs.map +1 -1
  19. package/fesm2022/cmat-components-data-picker.mjs +996 -0
  20. package/fesm2022/cmat-components-data-picker.mjs.map +1 -0
  21. package/fesm2022/cmat-components-date-range.mjs +310 -264
  22. package/fesm2022/cmat-components-date-range.mjs.map +1 -1
  23. package/fesm2022/cmat-components-date-time-display.mjs +16 -20
  24. package/fesm2022/cmat-components-date-time-display.mjs.map +1 -1
  25. package/fesm2022/cmat-components-drawer.mjs +120 -137
  26. package/fesm2022/cmat-components-drawer.mjs.map +1 -1
  27. package/fesm2022/cmat-components-empty-state.mjs +17 -24
  28. package/fesm2022/cmat-components-empty-state.mjs.map +1 -1
  29. package/fesm2022/cmat-components-file-preview.mjs +18 -24
  30. package/fesm2022/cmat-components-file-preview.mjs.map +1 -1
  31. package/fesm2022/cmat-components-filter-toolbar.mjs +30 -39
  32. package/fesm2022/cmat-components-filter-toolbar.mjs.map +1 -1
  33. package/fesm2022/cmat-components-form-actions.mjs +12 -12
  34. package/fesm2022/cmat-components-form-actions.mjs.map +1 -1
  35. package/fesm2022/cmat-components-fullscreen.mjs +10 -10
  36. package/fesm2022/cmat-components-fullscreen.mjs.map +1 -1
  37. package/fesm2022/cmat-components-highlight.mjs +48 -41
  38. package/fesm2022/cmat-components-highlight.mjs.map +1 -1
  39. package/fesm2022/cmat-components-image-viewer.mjs +104 -107
  40. package/fesm2022/cmat-components-image-viewer.mjs.map +1 -1
  41. package/fesm2022/cmat-components-inline-loading.mjs +12 -15
  42. package/fesm2022/cmat-components-inline-loading.mjs.map +1 -1
  43. package/fesm2022/cmat-components-json-editor.mjs +118 -75
  44. package/fesm2022/cmat-components-json-editor.mjs.map +1 -1
  45. package/fesm2022/cmat-components-knob-input.mjs +196 -178
  46. package/fesm2022/cmat-components-knob-input.mjs.map +1 -1
  47. package/fesm2022/cmat-components-masonry.mjs +26 -41
  48. package/fesm2022/cmat-components-masonry.mjs.map +1 -1
  49. package/fesm2022/cmat-components-material-color-picker.mjs +81 -80
  50. package/fesm2022/cmat-components-material-color-picker.mjs.map +1 -1
  51. package/fesm2022/cmat-components-material-datetimepicker.mjs +1212 -1287
  52. package/fesm2022/cmat-components-material-datetimepicker.mjs.map +1 -1
  53. package/fesm2022/cmat-components-navigation.mjs +467 -450
  54. package/fesm2022/cmat-components-navigation.mjs.map +1 -1
  55. package/fesm2022/cmat-components-opt-input.mjs +143 -132
  56. package/fesm2022/cmat-components-opt-input.mjs.map +1 -1
  57. package/fesm2022/cmat-components-org-chart.mjs +68 -83
  58. package/fesm2022/cmat-components-org-chart.mjs.map +1 -1
  59. package/fesm2022/cmat-components-page-header.mjs +18 -24
  60. package/fesm2022/cmat-components-page-header.mjs.map +1 -1
  61. package/fesm2022/cmat-components-pagination.mjs +220 -136
  62. package/fesm2022/cmat-components-pagination.mjs.map +1 -1
  63. package/fesm2022/cmat-components-password-strength.mjs +262 -215
  64. package/fesm2022/cmat-components-password-strength.mjs.map +1 -1
  65. package/fesm2022/cmat-components-popover.mjs +227 -195
  66. package/fesm2022/cmat-components-popover.mjs.map +1 -1
  67. package/fesm2022/cmat-components-progress-bar.mjs +15 -34
  68. package/fesm2022/cmat-components-progress-bar.mjs.map +1 -1
  69. package/fesm2022/cmat-components-qrcode.mjs +95 -88
  70. package/fesm2022/cmat-components-qrcode.mjs.map +1 -1
  71. package/fesm2022/cmat-components-rating.mjs +70 -67
  72. package/fesm2022/cmat-components-rating.mjs.map +1 -1
  73. package/fesm2022/cmat-components-rich-text-editor.mjs +23 -26
  74. package/fesm2022/cmat-components-rich-text-editor.mjs.map +1 -1
  75. package/fesm2022/cmat-components-select-search.mjs +190 -159
  76. package/fesm2022/cmat-components-select-search.mjs.map +1 -1
  77. package/fesm2022/cmat-components-select-table.mjs +276 -213
  78. package/fesm2022/cmat-components-select-table.mjs.map +1 -1
  79. package/fesm2022/cmat-components-select-tree.mjs +178 -128
  80. package/fesm2022/cmat-components-select-tree.mjs.map +1 -1
  81. package/fesm2022/cmat-components-skeleton.mjs +44 -28
  82. package/fesm2022/cmat-components-skeleton.mjs.map +1 -1
  83. package/fesm2022/cmat-components-speed-dial.mjs +107 -163
  84. package/fesm2022/cmat-components-speed-dial.mjs.map +1 -1
  85. package/fesm2022/cmat-components-status-tag.mjs +29 -36
  86. package/fesm2022/cmat-components-status-tag.mjs.map +1 -1
  87. package/fesm2022/cmat-components-table-toolbar.mjs +14 -18
  88. package/fesm2022/cmat-components-table-toolbar.mjs.map +1 -1
  89. package/fesm2022/cmat-components-timeline.mjs +111 -118
  90. package/fesm2022/cmat-components-timeline.mjs.map +1 -1
  91. package/fesm2022/cmat-components-toast.mjs +65 -66
  92. package/fesm2022/cmat-components-toast.mjs.map +1 -1
  93. package/fesm2022/cmat-components-transfer-picker.mjs +130 -160
  94. package/fesm2022/cmat-components-transfer-picker.mjs.map +1 -1
  95. package/fesm2022/cmat-components-treetable.mjs +32 -39
  96. package/fesm2022/cmat-components-treetable.mjs.map +1 -1
  97. package/fesm2022/cmat-components-upload.mjs +186 -176
  98. package/fesm2022/cmat-components-upload.mjs.map +1 -1
  99. package/fesm2022/cmat-directives-animate-on-scroll.mjs +25 -28
  100. package/fesm2022/cmat-directives-animate-on-scroll.mjs.map +1 -1
  101. package/fesm2022/cmat-directives-arrow-cursor.mjs +85 -92
  102. package/fesm2022/cmat-directives-arrow-cursor.mjs.map +1 -1
  103. package/fesm2022/cmat-directives-autofocus.mjs +3 -3
  104. package/fesm2022/cmat-directives-autofocus.mjs.map +1 -1
  105. package/fesm2022/cmat-directives-data-exporter.mjs +49 -50
  106. package/fesm2022/cmat-directives-data-exporter.mjs.map +1 -1
  107. package/fesm2022/cmat-directives-debounce.mjs +16 -19
  108. package/fesm2022/cmat-directives-debounce.mjs.map +1 -1
  109. package/fesm2022/cmat-directives-digit-only.mjs +60 -69
  110. package/fesm2022/cmat-directives-digit-only.mjs.map +1 -1
  111. package/fesm2022/cmat-directives-equal-validator.mjs +3 -3
  112. package/fesm2022/cmat-directives-equal-validator.mjs.map +1 -1
  113. package/fesm2022/cmat-directives-seamless-auto-scroll.mjs +31 -30
  114. package/fesm2022/cmat-directives-seamless-auto-scroll.mjs.map +1 -1
  115. package/fesm2022/cmat-lib-mock-api.mjs +6 -6
  116. package/fesm2022/cmat-lib-mock-api.mjs.map +1 -1
  117. package/fesm2022/cmat-pipes-bytes.mjs +3 -3
  118. package/fesm2022/cmat-pipes-bytes.mjs.map +1 -1
  119. package/fesm2022/cmat-pipes-date-format.mjs +3 -3
  120. package/fesm2022/cmat-pipes-date-format.mjs.map +1 -1
  121. package/fesm2022/cmat-pipes-find-by-key.mjs +3 -3
  122. package/fesm2022/cmat-pipes-find-by-key.mjs.map +1 -1
  123. package/fesm2022/cmat-pipes-group-by.mjs +3 -3
  124. package/fesm2022/cmat-pipes-group-by.mjs.map +1 -1
  125. package/fesm2022/cmat-pipes-keys.mjs +3 -3
  126. package/fesm2022/cmat-pipes-keys.mjs.map +1 -1
  127. package/fesm2022/cmat-pipes-secure.mjs +7 -13
  128. package/fesm2022/cmat-pipes-secure.mjs.map +1 -1
  129. package/fesm2022/cmat-pipes-uppercase.mjs +3 -3
  130. package/fesm2022/cmat-pipes-uppercase.mjs.map +1 -1
  131. package/fesm2022/cmat-services-alert.mjs +26 -27
  132. package/fesm2022/cmat-services-alert.mjs.map +1 -1
  133. package/fesm2022/cmat-services-config.mjs +14 -23
  134. package/fesm2022/cmat-services-config.mjs.map +1 -1
  135. package/fesm2022/cmat-services-confirmation.mjs +8 -8
  136. package/fesm2022/cmat-services-confirmation.mjs.map +1 -1
  137. package/fesm2022/cmat-services-data.mjs +6 -10
  138. package/fesm2022/cmat-services-data.mjs.map +1 -1
  139. package/fesm2022/cmat-services-export-as.mjs +3 -3
  140. package/fesm2022/cmat-services-export-as.mjs.map +1 -1
  141. package/fesm2022/cmat-services-loading.mjs +30 -47
  142. package/fesm2022/cmat-services-loading.mjs.map +1 -1
  143. package/fesm2022/cmat-services-local-storage.mjs +3 -3
  144. package/fesm2022/cmat-services-local-storage.mjs.map +1 -1
  145. package/fesm2022/cmat-services-media-watcher.mjs +43 -34
  146. package/fesm2022/cmat-services-media-watcher.mjs.map +1 -1
  147. package/fesm2022/cmat-services-platform.mjs +3 -3
  148. package/fesm2022/cmat-services-platform.mjs.map +1 -1
  149. package/fesm2022/cmat-services-splash-screen.mjs +3 -3
  150. package/fesm2022/cmat-services-splash-screen.mjs.map +1 -1
  151. package/fesm2022/cmat-services-title.mjs +3 -3
  152. package/fesm2022/cmat-services-title.mjs.map +1 -1
  153. package/fesm2022/cmat-services-translation.mjs +11 -11
  154. package/fesm2022/cmat-services-translation.mjs.map +1 -1
  155. package/fesm2022/cmat-services-utils.mjs +4 -4
  156. package/fesm2022/cmat-services-utils.mjs.map +1 -1
  157. package/fesm2022/cmat.mjs +9229 -7508
  158. package/fesm2022/cmat.mjs.map +1 -1
  159. package/icons/material-icons/heroicons-outline.svg +3 -0
  160. package/icons/material-icons/heroicons-solid.svg +3 -0
  161. package/package.json +10 -1
  162. package/styles/components/bundle.scss +21 -0
  163. package/styles/overrides/angular-material.scss +22 -1
  164. package/tailwind/plugins/theming.js +183 -183
  165. package/types/cmat-components-breadcrumb.d.ts +40 -37
  166. package/types/cmat-components-card.d.ts +11 -13
  167. package/types/cmat-components-carousel.d.ts +87 -113
  168. package/types/cmat-components-cascade.d.ts +84 -65
  169. package/types/cmat-components-chip-input.d.ts +29 -24
  170. package/types/cmat-components-code-editor.d.ts +28 -12
  171. package/types/cmat-components-color-picker.d.ts +236 -0
  172. package/types/cmat-components-custom-formly.d.ts +316 -184
  173. package/types/cmat-components-data-picker.d.ts +372 -0
  174. package/types/cmat-components-date-range.d.ts +31 -36
  175. package/types/cmat-components-date-time-display.d.ts +8 -8
  176. package/types/cmat-components-drawer.d.ts +30 -32
  177. package/types/cmat-components-empty-state.d.ts +9 -10
  178. package/types/cmat-components-file-preview.d.ts +9 -9
  179. package/types/cmat-components-filter-toolbar.d.ts +15 -15
  180. package/types/cmat-components-form-actions.d.ts +5 -5
  181. package/types/cmat-components-fullscreen.d.ts +5 -5
  182. package/types/cmat-components-highlight.d.ts +13 -14
  183. package/types/cmat-components-image-viewer.d.ts +29 -33
  184. package/types/cmat-components-inline-loading.d.ts +6 -6
  185. package/types/cmat-components-json-editor.d.ts +15 -17
  186. package/types/cmat-components-knob-input.d.ts +58 -55
  187. package/types/cmat-components-masonry.d.ts +9 -12
  188. package/types/cmat-components-material-color-picker.d.ts +16 -21
  189. package/types/cmat-components-material-datetimepicker.d.ts +174 -216
  190. package/types/cmat-components-navigation.d.ts +34 -39
  191. package/types/cmat-components-opt-input.d.ts +35 -33
  192. package/types/cmat-components-org-chart.d.ts +8 -9
  193. package/types/cmat-components-page-header.d.ts +9 -9
  194. package/types/cmat-components-pagination.d.ts +36 -40
  195. package/types/cmat-components-password-strength.d.ts +58 -64
  196. package/types/cmat-components-popover.d.ts +22 -32
  197. package/types/cmat-components-progress-bar.d.ts +7 -10
  198. package/types/cmat-components-qrcode.d.ts +22 -22
  199. package/types/cmat-components-rating.d.ts +17 -19
  200. package/types/cmat-components-rich-text-editor.d.ts +11 -12
  201. package/types/cmat-components-select-search.d.ts +48 -36
  202. package/types/cmat-components-select-table.d.ts +38 -34
  203. package/types/cmat-components-select-tree.d.ts +17 -15
  204. package/types/cmat-components-skeleton.d.ts +27 -10
  205. package/types/cmat-components-speed-dial.d.ts +24 -33
  206. package/types/cmat-components-status-tag.d.ts +19 -9
  207. package/types/cmat-components-table-toolbar.d.ts +7 -7
  208. package/types/cmat-components-timeline.d.ts +33 -34
  209. package/types/cmat-components-toast.d.ts +26 -30
  210. package/types/cmat-components-transfer-picker.d.ts +51 -56
  211. package/types/cmat-components-treetable.d.ts +12 -13
  212. package/types/cmat-components-upload.d.ts +33 -38
  213. package/types/cmat-components-x6-angular-shape.d.ts +1 -1
  214. package/types/cmat-directives-animate-on-scroll.d.ts +7 -7
  215. package/types/cmat-directives-arrow-cursor.d.ts +18 -20
  216. package/types/cmat-directives-data-exporter.d.ts +10 -10
  217. package/types/cmat-directives-debounce.d.ts +5 -5
  218. package/types/cmat-directives-digit-only.d.ts +13 -13
  219. package/types/cmat-directives-seamless-auto-scroll.d.ts +7 -7
  220. package/types/cmat-pipes-secure.d.ts +1 -3
  221. package/types/cmat-services-alert.d.ts +11 -12
  222. package/types/cmat-services-config.d.ts +2 -7
  223. package/types/cmat-services-confirmation.d.ts +2 -2
  224. package/types/cmat-services-data.d.ts +0 -1
  225. package/types/cmat-services-loading.d.ts +14 -22
  226. package/types/cmat-services-media-watcher.d.ts +5 -5
  227. package/types/cmat-services-translation.d.ts +4 -5
  228. package/types/cmat.d.ts +2167 -1746
@@ -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, 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\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<FileModel>();\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: FileModel;\r\n\r\n @Input()\r\n get file(): FileModel {\r\n return this._file;\r\n }\r\n\r\n set file(file: FileModel) {\r\n this._file = file;\r\n this.total.set(this._file.size as number);\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 as string);\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n get fileSize(): number {\r\n return Number(this.file.size);\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: this.fileType,\r\n data: this._file\r\n } as FileModel;\r\n\r\n\r\n const formData = new FormData();\r\n\r\n if (this._file.data) {\r\n formData.set(this.fileAlias, this._file.data as Blob, this._file.fileName);\r\n }\r\n\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 as string);\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\" [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}}({{fileSize |\r\n 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>","import { AfterViewInit, ChangeDetectionStrategy, Component, DestroyRef, ElementRef, EventEmitter, HostListener, Input, OnChanges, Output, QueryList, SimpleChanges, 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 { FileModel } from '../files.type';\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, OnChanges {\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: FileModel[] = [];\r\n\r\n @Output() outputRemoveIdEvent = new EventEmitter<string>();\r\n @Output() outputUploadIdEvent = new EventEmitter<string>();\r\n @Output() outputFilesDataEvent = new EventEmitter<FileModel[]>();\r\n\r\n public id = 'cmatupload-' + crypto.randomUUID().slice(0, 8);\r\n\r\n readonly isHandSet = signal(false);\r\n readonly fileDataSource = signal<FileModel[]>([]);\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 ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['filesData']) {\r\n this.fileDataSource.set(this.filesData);\r\n }\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: File): 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] as FileModel[];\r\n } else if (this.fileUploads.first.id === null) {\r\n this.filesData = [...this.filesData, file] as FileModel[];\r\n this.fileUploads.first.remove();\r\n }\r\n\r\n this.fileDataSource.set(this.filesData);\r\n }\r\n\r\n upload(event: FileModel): void {\r\n this.outputUploadIdEvent.emit(event.id ?? '');\r\n\r\n this.outputFilesDataEvent.emit(this.filesData);\r\n\r\n this.fileDataSource.set(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 this.fileDataSource.set(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(fileDataSource()&&multiple&&fileDataSource().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(fileDataSource()&&multiple&&fileDataSource().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 fileDataSource(); 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 { 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 readonly _config= this._urlStateConfigService.config;\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 OnInit,\r\n ViewEncapsulation,\r\n inject,\r\n signal,\r\n input,\r\n output,\r\n effect,\r\n model,\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: [\r\n MatButtonModule,\r\n MatIconModule,\r\n MatProgressBarModule,\r\n MatTooltipModule,\r\n CmatBytesPipe,\r\n NgClass,\r\n ],\r\n})\r\nexport class CmatUploadComponent implements OnInit {\r\n readonly removeEvent = output<CmatUploadComponent>();\r\n readonly uploadEvent = output<FileModel>();\r\n\r\n readonly fileAlias = input<string>('fileData');\r\n\r\n readonly filePath = input<string>('');\r\n\r\n readonly fileCategory = input<string>('');\r\n\r\n readonly isPublic = input<boolean>(false);\r\n\r\n readonly editMode = input<boolean>(false);\r\n\r\n readonly autoUpload = input(true);\r\n\r\n readonly file = model.required<FileModel>();\r\n\r\n readonly id = input<string | null>(null);\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 readonly uploadedId = signal<string | null>(null);\r\n\r\n private _fileService = inject(CmatFilesUtilService);\r\n private readonly _destroyRef = inject(DestroyRef);\r\n\r\n constructor() {\r\n effect(() => {\r\n const file = this.file();\r\n this.total.set(file.size as number);\r\n });\r\n }\r\n\r\n get fileType():\r\n | 'csv'\r\n | 'gif'\r\n | 'word'\r\n | 'excel'\r\n | 'jpg'\r\n | 'outlook'\r\n | 'pdf'\r\n | 'png'\r\n | 'ppt'\r\n | 'file'\r\n | 'text'\r\n | 'video'\r\n | 'zip' {\r\n return CmatUtilsService.getFileType(this.file().type as string);\r\n }\r\n\r\n\r\n get fileSize(): number {\r\n return Number(this.file().size);\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 upload(): void {\r\n this.isUploading.set(true);\r\n const file = this.file();\r\n\r\n\r\n\r\n const fileModel = {\r\n id: null,\r\n fileName: file.name,\r\n length: file.size,\r\n fileCategory: this.fileCategory(),\r\n isPublic: this.isPublic(),\r\n filePath: this.filePath(),\r\n fileType: this.fileType,\r\n data: file.data,\r\n } as FileModel;\r\n\r\n const formData = new FormData();\r\n\r\n if (file.data) {\r\n formData.set(\r\n this.fileAlias(),\r\n file.data as Blob,\r\n file.fileName,\r\n );\r\n }\r\n\r\n formData.append('fileInfo', JSON.stringify(fileModel));\r\n\r\n this._fileService\r\n .uploadFile(formData)\r\n .pipe(takeUntilDestroyed(this._destroyRef))\r\n .subscribe((event: HttpEvent<Record<string, unknown>>) => {\r\n if (\r\n event.type === HttpEventType.UploadProgress &&\r\n typeof event.total === 'number'\r\n ) {\r\n this.progressPercentage.set(\r\n Math.floor((event.loaded * 100) / event.total),\r\n );\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 =\r\n 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.uploadedId.set(fileId);\r\n\r\n file.id = fileId;\r\n\r\n this.file.set(file);\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 const id = this.uploadedId() ?? this.id();\r\n if (!id) return;\r\n this._fileService\r\n .downloadFile(id)\r\n .pipe(takeUntilDestroyed(this._destroyRef))\r\n .subscribe((file: HttpResponse<Blob>) => {\r\n saveAs(\r\n new Blob([file.body ?? new Blob()], {\r\n type: 'text/plain;charset=utf-8',\r\n }),\r\n this.file().name as string,\r\n );\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\" [svgIcon]=\"fileType\"></mat-icon>\r\n </span>\r\n <span\r\n matTooltip=\"{{ file().name }}\"\r\n class=\"text-sm flex flex-auto whitespace-nowrap overflow-x-hidden text-ellipsis\"\r\n >{{ file().name }}({{ fileSize | cmatBytes }})</span\r\n >\r\n <span class=\"flex flex-row gap-1 print:hidden\">\r\n @if (id() === null) {\r\n <button\r\n matIconButton\r\n color=\"primary\"\r\n class=\"w-8 min-h-8 h-8 max-w-8\"\r\n [ngClass]=\"{ disabled: isUploading() }\"\r\n (click)=\"upload()\"\r\n >\r\n <mat-icon\r\n class=\"icon-size-5\"\r\n [svgIcon]=\"'mat_outline:file_upload'\"\r\n ></mat-icon>\r\n </button>\r\n }\r\n\r\n @if (id() !== null) {\r\n <button\r\n matIconButton\r\n color=\"primary\"\r\n class=\"w-8 min-h-8 h-8 max-w-8\"\r\n (click)=\"download()\"\r\n >\r\n <mat-icon\r\n class=\"icon-size-5\"\r\n [svgIcon]=\"'mat_outline:file_download'\"\r\n ></mat-icon>\r\n </button>\r\n }\r\n\r\n @if (editMode()) {\r\n <button\r\n matIconButton\r\n color=\"warn\"\r\n class=\"w-8 min-h-8 h-8 max-w-8\"\r\n (click)=\"remove()\"\r\n >\r\n <mat-icon\r\n class=\"icon-size-5\"\r\n [svgIcon]=\"'heroicons_solid:trash'\"\r\n ></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\r\n class=\"text-sm block whitespace-nowrap overflow-x-hidden text-ellipsis\"\r\n >\r\n <span>{{ progressPercentage() }}%</span\r\n ><span> {{ loaded() | cmatBytes }} of {{ total() | cmatBytes }}</span>\r\n </div>\r\n }\r\n</div>\r\n","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n HostListener,\r\n ViewEncapsulation,\r\n inject,\r\n input,\r\n output,\r\n viewChildren,\r\n model,\r\n computed,\r\n} from '@angular/core';\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 { FileModel } from '../files.type';\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: [\r\n MatCardModule,\r\n MatListModule,\r\n MatButtonModule,\r\n MatIconModule,\r\n CmatUploadComponent,\r\n ],\r\n})\r\nexport class CmatUploadQueueComponent implements AfterViewInit {\r\n readonly outputRemoveIdEvent = output<string>();\r\n readonly outputUploadIdEvent = output<string>();\r\n readonly outputFilesDataEvent = output<FileModel[]>();\r\n\r\n readonly fileAlias = input<string>('fileData');\r\n\r\n readonly filePath = input<string>('');\r\n readonly fileCategory = input<string>('');\r\n\r\n readonly isPublic = input<boolean>(false);\r\n\r\n readonly required = input<boolean>(false);\r\n\r\n readonly autoUpload = input<boolean>(true);\r\n\r\n readonly multiple = input<boolean>(true);\r\n readonly accept = input<string>('');\r\n readonly title = input<string>('附件');\r\n readonly editMode = input<boolean>(false);\r\n readonly filesData = model<FileModel[]>([]);\r\n\r\n public id = 'cmatupload-' + crypto.randomUUID().slice(0, 8);\r\n\r\n private readonly fileUploads = viewChildren(CmatUploadComponent);\r\n\r\n private _cmatMediaWatcherService = inject(CmatMediaWatcherService);\r\n private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n readonly isHandSet = computed(() => {\r\n return !this._cmatMediaWatcherService.mediaChange().matchingAliases.includes('lg')\r\n });\r\n\r\n\r\n @HostListener('drop', ['$event'])\r\n onDrop(event: DragEvent): void {\r\n // 检查是否是文件拖拽(来自操作系统),而不是 Angular DnD 的内部拖拽\r\n const hasFiles = event.dataTransfer?.files && event.dataTransfer.files.length > 0;\r\n const hasAngularDndData = event.dataTransfer?.types.includes('application/x-ng-dnd');\r\n\r\n // 如果是 Angular DnD 的内部拖拽,不要拦截,让 DnD 库处理\r\n if (hasAngularDndData) {\r\n return;\r\n }\r\n\r\n // 只有真正的文件拖拽才处理\r\n if (!hasFiles) return;\r\n\r\n for (const file of event.dataTransfer.files) {\r\n if (this.accept()?.includes(file.type)) 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 // 同样检查是否是 Angular DnD 的内部拖拽\r\n const hasAngularDndData = event.dataTransfer?.types.includes('application/x-ng-dnd');\r\n\r\n if (hasAngularDndData) {\r\n return; // 不拦截,让 DnD 库处理\r\n }\r\n\r\n event.preventDefault();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n const fileUpload = this._elementRef.nativeElement.querySelector(\r\n `#${this.id}`,\r\n );\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: File): void {\r\n if (!this.isFileTypeAccepted(file.type)) {\r\n return;\r\n }\r\n\r\n const filesData = this.filesData();\r\n if (!Array.isArray(filesData)) {\r\n return;\r\n }\r\n\r\n let newFilesData: FileModel[];\r\n if (!(!this.multiple() && filesData.length > 0)) {\r\n newFilesData = [...filesData, file] as FileModel[];\r\n } else {\r\n const firstUpload = this.fileUploads()[0];\r\n if (firstUpload?.id() === null) {\r\n newFilesData = [...filesData, file] as FileModel[];\r\n firstUpload.remove();\r\n } else {\r\n return;\r\n }\r\n }\r\n\r\n this.filesData.set(newFilesData);\r\n }\r\n\r\n upload(event: FileModel): 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 const filesData = this.filesData();\r\n if (filesData) {\r\n const index = filesData.findIndex((j): boolean => j === event.file());\r\n if (index > -1) {\r\n 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(filesData);\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 removeAll(): void {\r\n this.fileUploads().forEach((fileUpload): void => {\r\n fileUpload.remove();\r\n });\r\n }\r\n\r\n choose(): void {\r\n this._elementRef.nativeElement\r\n .querySelector(`#${this.id}`)\r\n ?.dispatchEvent(new MouseEvent('click'));\r\n }\r\n\r\n private isFileTypeAccepted(fileType: string): boolean {\r\n const accept = this.accept();\r\n if (!accept || accept === '') {\r\n return true;\r\n }\r\n\r\n const acceptedTypes = 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}\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\r\n type=\"file\"\r\n class=\"hidden\"\r\n [id]=\"id\"\r\n [multiple]=\"multiple()\"\r\n [accept]=\"accept()\"\r\n />\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()\">\r\n <mat-icon [svgIcon]=\"'mat_outline:file_upload'\"></mat-icon\r\n ><span class=\"ml-2\">上传全部</span>\r\n </button>\r\n }\r\n\r\n <button matButton=\"filled\" color=\"warn\" (click)=\"removeAll()\">\r\n <mat-icon [svgIcon]=\"'heroicons_solid:trash'\"></mat-icon\r\n ><span class=\"ml-2\">删除全部</span>\r\n </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()\">\r\n <mat-icon [svgIcon]=\"'mat_outline:file_upload'\"></mat-icon>\r\n </button>\r\n }\r\n\r\n <button matIconButton color=\"warn\" (click)=\"removeAll()\">\r\n <mat-icon [svgIcon]=\"'heroicons_solid:trash'\"></mat-icon>\r\n </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\r\n class=\"my-2\"\r\n [fileAlias]=\"fileAlias()\"\r\n [filePath]=\"filePath()\"\r\n [fileCategory]=\"fileCategory()\"\r\n [autoUpload]=\"autoUpload()\"\r\n [editMode]=\"editMode()\"\r\n [file]=\"file\"\r\n [id]=\"file.id || null\"\r\n [isPublic]=\"isPublic()\"\r\n (removeEvent)=\"remove($event)\"\r\n (uploadEvent)=\"upload($event)\"\r\n ></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,6 +1,6 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Injectable, inject, ElementRef, Renderer2, Input, Directive } from '@angular/core';
3
- import { Subscription, fromEvent, EMPTY } from 'rxjs';
2
+ import { Injectable, input, inject, ElementRef, Renderer2, Directive } from '@angular/core';
3
+ import { Subscription, EMPTY, fromEvent } from 'rxjs';
4
4
 
5
5
  class ScrollService {
6
6
  constructor() {
@@ -21,10 +21,10 @@ class ScrollService {
21
21
  manageScrollPos() {
22
22
  this.pos = typeof window !== 'undefined' ? window.scrollY : 0;
23
23
  }
24
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: ScrollService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
25
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: ScrollService, providedIn: 'root' }); }
24
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: ScrollService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
25
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: ScrollService, providedIn: 'root' }); }
26
26
  }
27
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: ScrollService, decorators: [{
27
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: ScrollService, decorators: [{
28
28
  type: Injectable,
29
29
  args: [{
30
30
  providedIn: 'root'
@@ -33,7 +33,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImpo
33
33
 
34
34
  class CmatAnimationOnScrollDirective {
35
35
  constructor() {
36
- this.offset = 80; // for scroll Listener
36
+ this.animationName = input(null, /* @ts-ignore */
37
+ ...(ngDevMode ? [{ debugName: "animationName" }] : /* istanbul ignore next */ [])); // use fadeIn as default if not specified, specify null for no animation
38
+ this.offset = input(80, /* @ts-ignore */
39
+ ...(ngDevMode ? [{ debugName: "offset" }] : /* istanbul ignore next */ [])); // for scroll Listener
40
+ this.useScroll = input(/* @ts-ignore */
41
+ ...(ngDevMode ? [undefined, { debugName: "useScroll" }] : /* istanbul ignore next */ []));
42
+ this.threshold = input(/* @ts-ignore */
43
+ ...(ngDevMode ? [undefined, { debugName: "threshold" }] : /* istanbul ignore next */ [])); // for intersection observer only for the time being
37
44
  this._scrollSub = new Subscription();
38
45
  this._resizeSub = new Subscription();
39
46
  this._elementRef = inject(ElementRef);
@@ -44,18 +51,16 @@ class CmatAnimationOnScrollDirective {
44
51
  return this._elementRef.nativeElement.id;
45
52
  }
46
53
  ngOnInit() {
47
- if (!this.animationName) {
54
+ if (!this.animationName()) {
48
55
  return;
49
56
  }
50
57
  this._isVisible = false;
51
- this.useScroll = this.useScroll ?? this.useScroll === false
52
- ? false
53
- : true;
54
- this.threshold = this.threshold ? this.threshold || 0.5 : 0.5;
55
- if ('IntersectionObserver' in window && this.useScroll) {
58
+ const shouldUseScroll = this.useScroll() ?? (this.useScroll() === false ? false : true);
59
+ const thresholdValue = this.threshold() ?? 0.5;
60
+ if ('IntersectionObserver' in window && shouldUseScroll) {
56
61
  const options = {
57
62
  root: null,
58
- threshold: this.threshold,
63
+ threshold: thresholdValue,
59
64
  rootMargin: '0px',
60
65
  };
61
66
  const observer = new IntersectionObserver((entries) => {
@@ -85,17 +90,17 @@ class CmatAnimationOnScrollDirective {
85
90
  }
86
91
  this.getWinHeight();
87
92
  this.getOffsetTop();
88
- const scrollTrigger = this._offsetTop + this.offset - this._winHeight;
93
+ const scrollTrigger = this._offsetTop + this.offset() - this._winHeight;
89
94
  if (this._scroll.pos >= scrollTrigger) {
90
95
  this.addAnimationClass();
91
96
  }
92
97
  }
93
98
  addAnimationClass() {
94
- if (!this.animationName) {
99
+ if (!this.animationName()) {
95
100
  return;
96
101
  }
97
102
  this._isVisible = true;
98
- this.setClass(this.animationName);
103
+ this.setClass(this.animationName());
99
104
  }
100
105
  setClass(classes) {
101
106
  for (const c of classes.split(' ')) {
@@ -115,24 +120,16 @@ class CmatAnimationOnScrollDirective {
115
120
  this._offsetTop = 0;
116
121
  }
117
122
  }
118
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: CmatAnimationOnScrollDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
119
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.10", type: CmatAnimationOnScrollDirective, isStandalone: true, selector: "[cmatAnimateOnScroll]", inputs: { animationName: "animationName", offset: "offset", useScroll: "useScroll", threshold: "threshold" }, providers: [ScrollService], ngImport: i0 }); }
123
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: CmatAnimationOnScrollDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
124
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.2", type: CmatAnimationOnScrollDirective, isStandalone: true, selector: "[cmatAnimateOnScroll]", inputs: { animationName: { classPropertyName: "animationName", publicName: "animationName", isSignal: true, isRequired: false, transformFunction: null }, offset: { classPropertyName: "offset", publicName: "offset", isSignal: true, isRequired: false, transformFunction: null }, useScroll: { classPropertyName: "useScroll", publicName: "useScroll", isSignal: true, isRequired: false, transformFunction: null }, threshold: { classPropertyName: "threshold", publicName: "threshold", isSignal: true, isRequired: false, transformFunction: null } }, providers: [ScrollService], ngImport: i0 }); }
120
125
  }
121
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: CmatAnimationOnScrollDirective, decorators: [{
126
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: CmatAnimationOnScrollDirective, decorators: [{
122
127
  type: Directive,
123
128
  args: [{
124
129
  selector: '[cmatAnimateOnScroll]',
125
130
  providers: [ScrollService]
126
131
  }]
127
- }], propDecorators: { animationName: [{
128
- type: Input
129
- }], offset: [{
130
- type: Input
131
- }], useScroll: [{
132
- type: Input
133
- }], threshold: [{
134
- type: Input
135
- }] } });
132
+ }], propDecorators: { animationName: [{ type: i0.Input, args: [{ isSignal: true, alias: "animationName", required: false }] }], offset: [{ type: i0.Input, args: [{ isSignal: true, alias: "offset", required: false }] }], useScroll: [{ type: i0.Input, args: [{ isSignal: true, alias: "useScroll", required: false }] }], threshold: [{ type: i0.Input, args: [{ isSignal: true, alias: "threshold", required: false }] }] } });
136
133
 
137
134
  /**
138
135
  * Generated bundle index. Do not edit.
@@ -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<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":"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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, OnDestroy, OnInit, Renderer2, inject, input } 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 readonly animationName = input<string | null>(null); // use fadeIn as default if not specified, specify null for no animation\r\n readonly offset = input<number>(80); // for scroll Listener\r\n readonly useScroll = input<boolean>();\r\n readonly threshold = input<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 const shouldUseScroll = this.useScroll() ?? (this.useScroll() === false ? false : true);\r\n const thresholdValue = this.threshold() ?? 0.5;\r\n \r\n if ('IntersectionObserver' in window && shouldUseScroll) {\r\n const options: IntersectionObserverInit = {\r\n root: null,\r\n threshold: thresholdValue,\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}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}