ng-tailwind 2.24.310 → 2.24.314

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 (193) hide show
  1. package/README.md +24 -24
  2. package/animations/ngt-angular-animations.d.ts +5 -5
  3. package/base/ngt-base-ng-model.d.ts +32 -32
  4. package/bundles/ng-tailwind.umd.js +7318 -7271
  5. package/bundles/ng-tailwind.umd.js.map +1 -1
  6. package/components/ngt-action/ngt-action.component.d.ts +13 -13
  7. package/components/ngt-action/ngt-action.module.d.ts +2 -2
  8. package/components/ngt-button/ngt-button.component.d.ts +22 -22
  9. package/components/ngt-button/ngt-button.module.d.ts +2 -2
  10. package/components/ngt-checkbox/ngt-checkbox.component.d.ts +41 -41
  11. package/components/ngt-checkbox/ngt-checkbox.module.d.ts +2 -2
  12. package/components/ngt-content/ngt-content.component.d.ts +9 -9
  13. package/components/ngt-content/ngt-content.module.d.ts +2 -2
  14. package/components/ngt-datatable/ngt-datatable.component.d.ts +112 -112
  15. package/components/ngt-datatable/ngt-datatable.module.d.ts +2 -2
  16. package/components/ngt-datatable/ngt-tbody/ngt-tbody.component.d.ts +11 -11
  17. package/components/ngt-datatable/ngt-td/ngt-td.component.d.ts +11 -11
  18. package/components/ngt-datatable/ngt-td-check/ngt-td-check.component.d.ts +24 -24
  19. package/components/ngt-datatable/ngt-th/ngt-th.component.d.ts +47 -47
  20. package/components/ngt-datatable/ngt-th-check/ngt-th-check.component.d.ts +19 -19
  21. package/components/ngt-datatable/ngt-thead/ngt-thead.component.d.ts +10 -10
  22. package/components/ngt-datatable/ngt-tr/ngt-tr.component.d.ts +17 -17
  23. package/components/ngt-date/ngt-date.component.d.ts +71 -71
  24. package/components/ngt-date/ngt-date.module.d.ts +2 -2
  25. package/components/ngt-dropdown/ngt-dropdown-container/ngt-dropdown-container.component.d.ts +5 -5
  26. package/components/ngt-dropdown/ngt-dropdown.component.d.ts +42 -42
  27. package/components/ngt-dropdown/ngt-dropdown.module.d.ts +2 -2
  28. package/components/ngt-dropzone/custom-dropzone-preview/custom-dropzone-preview.component.d.ts +11 -11
  29. package/components/ngt-dropzone/ngt-dropzone-file-viewer/ngt-dropzone-file-viewer.component.d.ts +12 -12
  30. package/components/ngt-dropzone/ngt-dropzone-view/ngt-dropzone-view.component.d.ts +21 -21
  31. package/components/ngt-dropzone/ngt-dropzone.component.d.ts +103 -103
  32. package/components/ngt-dropzone/ngt-dropzone.module.d.ts +2 -2
  33. package/components/ngt-floating-button/ngt-floating-button.component.d.ts +32 -32
  34. package/components/ngt-floating-button/ngt-floating-button.module.d.ts +2 -2
  35. package/components/ngt-form/ngt-form-validation-message/ngt-form-validation-message.component.d.ts +7 -7
  36. package/components/ngt-form/ngt-form-validation-message/ngt-form-validation-message.module.d.ts +2 -2
  37. package/components/ngt-form/ngt-form.component.d.ts +52 -52
  38. package/components/ngt-form/ngt-form.module.d.ts +2 -2
  39. package/components/ngt-header-nav/ngt-header-nav.component.d.ts +11 -11
  40. package/components/ngt-header-nav/ngt-header-nav.module.d.ts +2 -2
  41. package/components/ngt-helper/ngt-helper.component.d.ts +15 -10
  42. package/components/ngt-helper/ngt-helper.module.d.ts +2 -2
  43. package/components/ngt-input/ngt-input.component.d.ts +92 -92
  44. package/components/ngt-input/ngt-input.module.d.ts +2 -2
  45. package/components/ngt-modal/ngt-modal-body/ngt-modal-body.component.d.ts +2 -2
  46. package/components/ngt-modal/ngt-modal-footer/ngt-modal-footer.component.d.ts +2 -2
  47. package/components/ngt-modal/ngt-modal-header/ngt-modal-header.component.d.ts +12 -12
  48. package/components/ngt-modal/ngt-modal.component.d.ts +19 -19
  49. package/components/ngt-modal/ngt-modal.module.d.ts +2 -2
  50. package/components/ngt-multi-select/ngt-multi-select.component.d.ts +97 -97
  51. package/components/ngt-multi-select/ngt-multi-select.module.d.ts +2 -2
  52. package/components/ngt-pagination/ngt-pagination.component.d.ts +40 -40
  53. package/components/ngt-pagination/ngt-pagination.module.d.ts +2 -2
  54. package/components/ngt-portlet/ngt-portlet-body/ngt-portlet-body.component.d.ts +9 -9
  55. package/components/ngt-portlet/ngt-portlet-footer/ngt-portlet-footer.component.d.ts +9 -9
  56. package/components/ngt-portlet/ngt-portlet-header/ngt-portlet-header.component.d.ts +14 -14
  57. package/components/ngt-portlet/ngt-portlet.component.d.ts +17 -17
  58. package/components/ngt-portlet/ngt-portlet.module.d.ts +2 -2
  59. package/components/ngt-radio-button/ngt-radio-button-container/ngt-radio-button-container.component.d.ts +6 -6
  60. package/components/ngt-radio-button/ngt-radio-button.component.d.ts +27 -27
  61. package/components/ngt-radio-button/ngt-radio-button.module.d.ts +2 -2
  62. package/components/ngt-section/ngt-section.component.d.ts +23 -23
  63. package/components/ngt-section/ngt-section.module.d.ts +2 -2
  64. package/components/ngt-select/ngt-select.component.d.ts +122 -122
  65. package/components/ngt-select/ngt-select.directive.d.ts +13 -13
  66. package/components/ngt-select/ngt-select.module.d.ts +2 -2
  67. package/components/ngt-shining/ngt-shining.component.d.ts +16 -16
  68. package/components/ngt-shining/ngt-shining.module.d.ts +2 -2
  69. package/components/ngt-sidenav/ngt-sidenav.component.d.ts +29 -29
  70. package/components/ngt-sidenav/ngt-sidenav.module.d.ts +2 -2
  71. package/components/ngt-slider/ngt-slider.component.d.ts +31 -31
  72. package/components/ngt-slider/ngt-slider.module.d.ts +2 -2
  73. package/components/ngt-svg/ngt-svg.component.d.ts +10 -10
  74. package/components/ngt-svg/ngt-svg.module.d.ts +2 -2
  75. package/components/ngt-tag/ngt-tag.component.d.ts +10 -10
  76. package/components/ngt-tag/ngt-tag.module.d.ts +2 -2
  77. package/components/ngt-textarea/ngt-textarea.component.d.ts +46 -46
  78. package/components/ngt-textarea/ngt-textarea.module.d.ts +2 -2
  79. package/components/ngt-validation/ngt-validation.component.d.ts +10 -10
  80. package/components/ngt-validation/ngt-validation.module.d.ts +2 -2
  81. package/directives/ngt-stylizable/ngt-stylizable.directive.d.ts +65 -63
  82. package/directives/ngt-stylizable/ngt-stylizable.module.d.ts +2 -2
  83. package/enums/size.enum.d.ts +8 -8
  84. package/esm2015/animations/ngt-angular-animations.js +34 -34
  85. package/esm2015/base/ngt-base-ng-model.js +90 -90
  86. package/esm2015/components/ngt-action/ngt-action.component.js +49 -49
  87. package/esm2015/components/ngt-action/ngt-action.module.js +19 -19
  88. package/esm2015/components/ngt-button/ngt-button.component.js +106 -106
  89. package/esm2015/components/ngt-button/ngt-button.module.js +19 -19
  90. package/esm2015/components/ngt-checkbox/ngt-checkbox.component.js +137 -137
  91. package/esm2015/components/ngt-checkbox/ngt-checkbox.module.js +19 -19
  92. package/esm2015/components/ngt-content/ngt-content.component.js +33 -33
  93. package/esm2015/components/ngt-content/ngt-content.module.js +15 -15
  94. package/esm2015/components/ngt-datatable/ngt-datatable.component.js +400 -400
  95. package/esm2015/components/ngt-datatable/ngt-datatable.module.js +58 -58
  96. package/esm2015/components/ngt-datatable/ngt-tbody/ngt-tbody.component.js +58 -60
  97. package/esm2015/components/ngt-datatable/ngt-td/ngt-td.component.js +63 -63
  98. package/esm2015/components/ngt-datatable/ngt-td-check/ngt-td-check.component.js +102 -102
  99. package/esm2015/components/ngt-datatable/ngt-th/ngt-th.component.js +192 -192
  100. package/esm2015/components/ngt-datatable/ngt-th-check/ngt-th-check.component.js +87 -87
  101. package/esm2015/components/ngt-datatable/ngt-thead/ngt-thead.component.js +56 -58
  102. package/esm2015/components/ngt-datatable/ngt-tr/ngt-tr.component.js +76 -76
  103. package/esm2015/components/ngt-date/ngt-date.component.js +354 -352
  104. package/esm2015/components/ngt-date/ngt-date.module.js +25 -25
  105. package/esm2015/components/ngt-dropdown/ngt-dropdown-container/ngt-dropdown-container.component.js +20 -20
  106. package/esm2015/components/ngt-dropdown/ngt-dropdown.component.js +165 -165
  107. package/esm2015/components/ngt-dropdown/ngt-dropdown.module.js +16 -16
  108. package/esm2015/components/ngt-dropzone/custom-dropzone-preview/custom-dropzone-preview.component.js +47 -47
  109. package/esm2015/components/ngt-dropzone/ngt-dropzone-file-viewer/ngt-dropzone-file-viewer.component.js +46 -45
  110. package/esm2015/components/ngt-dropzone/ngt-dropzone-view/ngt-dropzone-view.component.js +67 -67
  111. package/esm2015/components/ngt-dropzone/ngt-dropzone.component.js +411 -411
  112. package/esm2015/components/ngt-dropzone/ngt-dropzone.module.js +37 -37
  113. package/esm2015/components/ngt-floating-button/ngt-floating-button.component.js +94 -94
  114. package/esm2015/components/ngt-floating-button/ngt-floating-button.module.js +19 -19
  115. package/esm2015/components/ngt-form/ngt-form-validation-message/ngt-form-validation-message.component.js +23 -23
  116. package/esm2015/components/ngt-form/ngt-form-validation-message/ngt-form-validation-message.module.js +15 -15
  117. package/esm2015/components/ngt-form/ngt-form.component.js +181 -181
  118. package/esm2015/components/ngt-form/ngt-form.module.js +17 -17
  119. package/esm2015/components/ngt-header-nav/ngt-header-nav.component.js +38 -38
  120. package/esm2015/components/ngt-header-nav/ngt-header-nav.module.js +15 -15
  121. package/esm2015/components/ngt-helper/ngt-helper.component.js +44 -24
  122. package/esm2015/components/ngt-helper/ngt-helper.module.js +19 -19
  123. package/esm2015/components/ngt-input/ngt-input.component.js +610 -608
  124. package/esm2015/components/ngt-input/ngt-input.module.js +28 -28
  125. package/esm2015/components/ngt-modal/ngt-modal-body/ngt-modal-body.component.js +11 -11
  126. package/esm2015/components/ngt-modal/ngt-modal-footer/ngt-modal-footer.component.js +11 -11
  127. package/esm2015/components/ngt-modal/ngt-modal-header/ngt-modal-header.component.js +40 -40
  128. package/esm2015/components/ngt-modal/ngt-modal.component.js +79 -79
  129. package/esm2015/components/ngt-modal/ngt-modal.module.js +28 -28
  130. package/esm2015/components/ngt-multi-select/ngt-multi-select.component.js +392 -392
  131. package/esm2015/components/ngt-multi-select/ngt-multi-select.module.js +33 -33
  132. package/esm2015/components/ngt-pagination/ngt-pagination.component.js +172 -172
  133. package/esm2015/components/ngt-pagination/ngt-pagination.module.js +23 -23
  134. package/esm2015/components/ngt-portlet/ngt-portlet-body/ngt-portlet-body.component.js +32 -32
  135. package/esm2015/components/ngt-portlet/ngt-portlet-footer/ngt-portlet-footer.component.js +33 -33
  136. package/esm2015/components/ngt-portlet/ngt-portlet-header/ngt-portlet-header.component.js +47 -45
  137. package/esm2015/components/ngt-portlet/ngt-portlet.component.js +58 -58
  138. package/esm2015/components/ngt-portlet/ngt-portlet.module.js +32 -32
  139. package/esm2015/components/ngt-radio-button/ngt-radio-button-container/ngt-radio-button-container.component.js +19 -19
  140. package/esm2015/components/ngt-radio-button/ngt-radio-button.component.js +97 -97
  141. package/esm2015/components/ngt-radio-button/ngt-radio-button.module.js +18 -18
  142. package/esm2015/components/ngt-section/ngt-section.component.js +98 -98
  143. package/esm2015/components/ngt-section/ngt-section.module.js +21 -21
  144. package/esm2015/components/ngt-select/ngt-select.component.js +467 -465
  145. package/esm2015/components/ngt-select/ngt-select.directive.js +35 -35
  146. package/esm2015/components/ngt-select/ngt-select.module.js +40 -40
  147. package/esm2015/components/ngt-shining/ngt-shining.component.js +41 -41
  148. package/esm2015/components/ngt-shining/ngt-shining.module.js +15 -15
  149. package/esm2015/components/ngt-sidenav/ngt-sidenav.component.js +123 -123
  150. package/esm2015/components/ngt-sidenav/ngt-sidenav.module.js +15 -15
  151. package/esm2015/components/ngt-slider/ngt-slider.component.js +82 -82
  152. package/esm2015/components/ngt-slider/ngt-slider.module.js +17 -17
  153. package/esm2015/components/ngt-svg/ngt-svg.component.js +52 -52
  154. package/esm2015/components/ngt-svg/ngt-svg.module.js +19 -19
  155. package/esm2015/components/ngt-tag/ngt-tag.component.js +36 -36
  156. package/esm2015/components/ngt-tag/ngt-tag.module.js +17 -17
  157. package/esm2015/components/ngt-textarea/ngt-textarea.component.js +211 -209
  158. package/esm2015/components/ngt-textarea/ngt-textarea.module.js +24 -24
  159. package/esm2015/components/ngt-validation/ngt-validation.component.js +24 -24
  160. package/esm2015/components/ngt-validation/ngt-validation.module.js +15 -15
  161. package/esm2015/directives/ngt-stylizable/ngt-stylizable.directive.js +227 -220
  162. package/esm2015/directives/ngt-stylizable/ngt-stylizable.module.js +15 -15
  163. package/esm2015/enums/size.enum.js +11 -11
  164. package/esm2015/helpers/enum/enum.js +7 -7
  165. package/esm2015/helpers/form/form.js +14 -14
  166. package/esm2015/helpers/routing/route.js +11 -11
  167. package/esm2015/helpers/uuid.js +10 -10
  168. package/esm2015/ng-tailwind.js +10 -10
  169. package/esm2015/public-api.js +117 -117
  170. package/esm2015/services/http/ngt-attachment-http.service.js +3 -3
  171. package/esm2015/services/http/ngt-http-form.service.js +3 -3
  172. package/esm2015/services/http/ngt-http-resource.service.js +3 -3
  173. package/esm2015/services/http/ngt-http-validation.service.js +4 -4
  174. package/esm2015/services/http/ngt-http.service.js +3 -3
  175. package/esm2015/services/http/ngt-translate.service.js +3 -3
  176. package/esm2015/services/ngt-stylizable/ngt-stylizable.service.js +273 -266
  177. package/fesm2015/ng-tailwind.js +6404 -6365
  178. package/fesm2015/ng-tailwind.js.map +1 -1
  179. package/helpers/enum/enum.d.ts +1 -1
  180. package/helpers/form/form.d.ts +4 -4
  181. package/helpers/routing/route.d.ts +2 -2
  182. package/helpers/uuid.d.ts +1 -1
  183. package/ng-tailwind.d.ts +10 -10
  184. package/ng-tailwind.metadata.json +1 -1
  185. package/package.json +1 -1
  186. package/public-api.d.ts +80 -80
  187. package/services/http/ngt-attachment-http.service.d.ts +10 -10
  188. package/services/http/ngt-http-form.service.d.ts +5 -5
  189. package/services/http/ngt-http-resource.service.d.ts +12 -12
  190. package/services/http/ngt-http-validation.service.d.ts +10 -10
  191. package/services/http/ngt-http.service.d.ts +27 -27
  192. package/services/http/ngt-translate.service.d.ts +27 -27
  193. package/services/ngt-stylizable/ngt-stylizable.service.d.ts +96 -93
@@ -1,47 +1,47 @@
1
- import { Component } from '@angular/core';
2
- import { DomSanitizer } from '@angular/platform-browser';
3
- import { NgxDropzonePreviewComponent } from 'ngx-dropzone';
4
- import { NgtDropzoneFileTypeEnum } from '../ngt-dropzone.component';
5
- export class CustomDropzonePreviewComponent extends NgxDropzonePreviewComponent {
6
- constructor(sanitizer) {
7
- super(sanitizer);
8
- this.sanitizer = sanitizer;
9
- }
10
- ngOnInit() {
11
- if (!this.file) {
12
- console.error('No file to read. Please provide a file using the [file] Input property.');
13
- return;
14
- }
15
- this.bindFileType();
16
- }
17
- bindFileType() {
18
- if (this.file.type.includes('.sheet')) {
19
- this.fileType = NgtDropzoneFileTypeEnum.XLS;
20
- }
21
- else if (this.file.type.includes('pdf')) {
22
- this.fileType = NgtDropzoneFileTypeEnum.PDF;
23
- }
24
- else if (this.file.type.includes('.document')) {
25
- this.fileType = NgtDropzoneFileTypeEnum.DOC;
26
- }
27
- else {
28
- this.fileType = NgtDropzoneFileTypeEnum.OTHER;
29
- }
30
- }
31
- }
32
- CustomDropzonePreviewComponent.decorators = [
33
- { type: Component, args: [{
34
- selector: 'custom-dropzone-preview',
35
- template: "<div class=\"flex flex-col items-center w-48 cursor-pointer hover:opacity-75\">\n <div class=\"w-full flex justify-center border-2 rounded py-4 text-6xl\">\n <svg *ngIf=\"fileType == 'OTHER'\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n <path class=\"heroicon-ui\" fill=\"#4a5568\"\n d=\"M6 2h9a1 1 0 0 1 .7.3l4 4a1 1 0 0 1 .3.7v13a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4c0-1.1.9-2 2-2zm9 2.41V7h2.59L15 4.41zM18 9h-3a2 2 0 0 1-2-2V4H6v16h12V9zm-2 7a1 1 0 0 1-1 1H9a1 1 0 0 1 0-2h6a1 1 0 0 1 1 1zm0-4a1 1 0 0 1-1 1H9a1 1 0 0 1 0-2h6a1 1 0 0 1 1 1zm-5-4a1 1 0 0 1-1 1H9a1 1 0 1 1 0-2h1a1 1 0 0 1 1 1z\" />\n </svg>\n\n <svg *ngIf=\"fileType == 'DOC'\" fill=\"#4a5568\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n <path\n d=\"M14.4 0l-9.6 0c-1.33,0 -2.4,1.08 -2.4,2.4l0 19.2c0,1.33 1.07,2.4 2.4,2.4l14.4 0c1.33,0 2.4,-1.07 2.4,-2.4l0 -14.4 -7.2 -7.2 0 0zm4.8 21.6l-14.4 0 0 -19.2 8.4 0 0 6 6 0 0 13.2 0 0zm-0.78 -12l-2.52 10.8 -1.68 0 -2.16 -8.15 -2.16 8.15 -1.68 0 -2.64 -10.8 1.8 0 1.68 8.17 2.16 -8.17 1.56 0 2.16 8.17 1.68 -8.17 1.8 0z\" />\n </svg>\n\n <svg *ngIf=\"fileType == 'XLS'\" fill=\"#4a5568\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n <path\n d=\"M14.4 0l-9.6 0c-1.33,0 -2.4,1.08 -2.4,2.4l0 19.2c0,1.33 1.07,2.4 2.4,2.4l14.4 0c1.33,0 2.4,-1.07 2.4,-2.4l0 -14.4 -7.2 -7.2 0 0zm4.8 21.6l-14.4 0 0 -19.2 8.4 0 0 6 6 0 0 13.2 0 0zm-6.12 -6.6l3.48 5.4 -2.16 0 -2.4 -4.08 -2.4 4.08 -2.16 0 3.48 -5.4 -3.48 -5.4 2.16 0 2.4 4.08 2.4 -4.08 2.16 0 -3.48 5.4z\" />\n </svg>\n\n <svg *ngIf=\"fileType == 'PDF'\" fill=\"#4a5568\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n <path\n d=\"M14.4 0l7.2 7.2 0 14.4c0,1.32 -1.08,2.4 -2.4,2.4l-14.4 0c-1.32,0 -2.4,-1.08 -2.4,-2.4l0 -19.2c0,-1.32 1.08,-2.4 2.4,-2.4l9.6 0 0 0zm4.8 21.6l0 -13.2 -6 0 0 -6 -8.4 0 0 19.2 14.4 0 0 0zm-8.5 -9.23c-0.28,-0.92 -0.92,-3.87 0.76,-3.92 1.68,-0.05 0.58,3.74 0.58,3.74 0.46,1.79 2.42,3.07 2.42,3.07 0.6,-0.18 4.02,-0.57 3.54,1.21 -0.52,1.77 -4.2,0.1 -4.2,0.1 -2.34,0.17 -4.09,0.8 -4.09,0.8 -1.36,2.53 -2.94,3.63 -3.59,2.56 -0.8,-1.33 2.56,-3.04 2.56,-3.04 1.74,-2.83 2,-4.47 2.02,-4.52l0 0zm0.78 1.01c-0.48,1.56 -1.44,3.23 -1.44,3.23 1.02,-0.41 3.26,-0.88 3.26,-0.88 -1.37,-1.2 -1.79,-2.34 -1.82,-2.35l0 0zm3.77 2.6c0,0 2.1,0.79 2.15,0.47 0.08,-0.32 -1.6,-0.61 -2.15,-0.47l0 0zm-6.79 1.79c-0.93,0.36 -1.81,1.9 -1.6,1.9 0.22,0.01 1.1,-0.72 1.6,-1.9l0 0zm3.02 -6.66c0,-0.06 0.52,-2.01 0,-2.07 -0.36,-0.04 -0.01,2.02 0,2.07z\" />\n </svg>\n </div>\n</div>\n\n<ngx-dropzone-remove-badge *ngIf=\"removable\" (click)=\"_remove($event)\" style=\"top: -15px !important;\">\n</ngx-dropzone-remove-badge>",
36
- providers: [
37
- {
38
- provide: NgxDropzonePreviewComponent,
39
- useExisting: CustomDropzonePreviewComponent
40
- }
41
- ]
42
- },] }
43
- ];
44
- CustomDropzonePreviewComponent.ctorParameters = () => [
45
- { type: DomSanitizer }
46
- ];
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLWRyb3B6b25lLXByZXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctdGFpbHdpbmQvc3JjL2NvbXBvbmVudHMvbmd0LWRyb3B6b25lL2N1c3RvbS1kcm9wem9uZS1wcmV2aWV3L2N1c3RvbS1kcm9wem9uZS1wcmV2aWV3LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFM0QsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFZcEUsTUFBTSxPQUFPLDhCQUErQixTQUFRLDJCQUEyQjtJQUczRSxZQUEwQixTQUF1QjtRQUM3QyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7UUFESyxjQUFTLEdBQVQsU0FBUyxDQUFjO0lBRWpELENBQUM7SUFFTSxRQUFRO1FBQ1gsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDWixPQUFPLENBQUMsS0FBSyxDQUFDLHlFQUF5RSxDQUFDLENBQUM7WUFFekYsT0FBTztTQUNWO1FBRUQsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFTyxZQUFZO1FBQ2hCLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ25DLElBQUksQ0FBQyxRQUFRLEdBQUcsdUJBQXVCLENBQUMsR0FBRyxDQUFDO1NBQy9DO2FBQU0sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDdkMsSUFBSSxDQUFDLFFBQVEsR0FBRyx1QkFBdUIsQ0FBQyxHQUFHLENBQUM7U0FDL0M7YUFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUM3QyxJQUFJLENBQUMsUUFBUSxHQUFHLHVCQUF1QixDQUFDLEdBQUcsQ0FBQztTQUMvQzthQUFNO1lBQ0gsSUFBSSxDQUFDLFFBQVEsR0FBRyx1QkFBdUIsQ0FBQyxLQUFLLENBQUM7U0FDakQ7SUFDTCxDQUFDOzs7WUFyQ0osU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSx5QkFBeUI7Z0JBQ25DLGl3RkFBdUQ7Z0JBQ3ZELFNBQVMsRUFBRTtvQkFDUDt3QkFDSSxPQUFPLEVBQUUsMkJBQTJCO3dCQUNwQyxXQUFXLEVBQUUsOEJBQThCO3FCQUM5QztpQkFDSjthQUNKOzs7WUFkUSxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgTmd4RHJvcHpvbmVQcmV2aWV3Q29tcG9uZW50IH0gZnJvbSAnbmd4LWRyb3B6b25lJztcblxuaW1wb3J0IHsgTmd0RHJvcHpvbmVGaWxlVHlwZUVudW0gfSBmcm9tICcuLi9uZ3QtZHJvcHpvbmUuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdjdXN0b20tZHJvcHpvbmUtcHJldmlldycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2N1c3RvbS1kcm9wem9uZS1wcmV2aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTmd4RHJvcHpvbmVQcmV2aWV3Q29tcG9uZW50LFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IEN1c3RvbURyb3B6b25lUHJldmlld0NvbXBvbmVudFxuICAgICAgICB9XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBDdXN0b21Ecm9wem9uZVByZXZpZXdDb21wb25lbnQgZXh0ZW5kcyBOZ3hEcm9wem9uZVByZXZpZXdDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIHB1YmxpYyBmaWxlVHlwZTogTmd0RHJvcHpvbmVGaWxlVHlwZUVudW07XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IocHVibGljIHNhbml0aXplcjogRG9tU2FuaXRpemVyKSB7XG4gICAgICAgIHN1cGVyKHNhbml0aXplcik7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuZmlsZSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignTm8gZmlsZSB0byByZWFkLiBQbGVhc2UgcHJvdmlkZSBhIGZpbGUgdXNpbmcgdGhlIFtmaWxlXSBJbnB1dCBwcm9wZXJ0eS4nKTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5iaW5kRmlsZVR5cGUoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGJpbmRGaWxlVHlwZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZmlsZS50eXBlLmluY2x1ZGVzKCcuc2hlZXQnKSkge1xuICAgICAgICAgICAgdGhpcy5maWxlVHlwZSA9IE5ndERyb3B6b25lRmlsZVR5cGVFbnVtLlhMUztcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmZpbGUudHlwZS5pbmNsdWRlcygncGRmJykpIHtcbiAgICAgICAgICAgIHRoaXMuZmlsZVR5cGUgPSBOZ3REcm9wem9uZUZpbGVUeXBlRW51bS5QREY7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5maWxlLnR5cGUuaW5jbHVkZXMoJy5kb2N1bWVudCcpKSB7XG4gICAgICAgICAgICB0aGlzLmZpbGVUeXBlID0gTmd0RHJvcHpvbmVGaWxlVHlwZUVudW0uRE9DO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5maWxlVHlwZSA9IE5ndERyb3B6b25lRmlsZVR5cGVFbnVtLk9USEVSO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
1
+ import { Component } from '@angular/core';
2
+ import { DomSanitizer } from '@angular/platform-browser';
3
+ import { NgxDropzonePreviewComponent } from 'ngx-dropzone';
4
+ import { NgtDropzoneFileTypeEnum } from '../ngt-dropzone.component';
5
+ export class CustomDropzonePreviewComponent extends NgxDropzonePreviewComponent {
6
+ constructor(sanitizer) {
7
+ super(sanitizer);
8
+ this.sanitizer = sanitizer;
9
+ }
10
+ ngOnInit() {
11
+ if (!this.file) {
12
+ console.error('No file to read. Please provide a file using the [file] Input property.');
13
+ return;
14
+ }
15
+ this.bindFileType();
16
+ }
17
+ bindFileType() {
18
+ if (this.file.type.includes('.sheet')) {
19
+ this.fileType = NgtDropzoneFileTypeEnum.XLS;
20
+ }
21
+ else if (this.file.type.includes('pdf')) {
22
+ this.fileType = NgtDropzoneFileTypeEnum.PDF;
23
+ }
24
+ else if (this.file.type.includes('.document')) {
25
+ this.fileType = NgtDropzoneFileTypeEnum.DOC;
26
+ }
27
+ else {
28
+ this.fileType = NgtDropzoneFileTypeEnum.OTHER;
29
+ }
30
+ }
31
+ }
32
+ CustomDropzonePreviewComponent.decorators = [
33
+ { type: Component, args: [{
34
+ selector: 'custom-dropzone-preview',
35
+ template: "<div class=\"flex flex-col items-center w-48 cursor-pointer hover:opacity-75\">\r\n <div class=\"w-full flex justify-center border-2 rounded py-4 text-6xl\">\r\n <svg *ngIf=\"fileType == 'OTHER'\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\r\n <path class=\"heroicon-ui\" fill=\"#4a5568\"\r\n d=\"M6 2h9a1 1 0 0 1 .7.3l4 4a1 1 0 0 1 .3.7v13a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4c0-1.1.9-2 2-2zm9 2.41V7h2.59L15 4.41zM18 9h-3a2 2 0 0 1-2-2V4H6v16h12V9zm-2 7a1 1 0 0 1-1 1H9a1 1 0 0 1 0-2h6a1 1 0 0 1 1 1zm0-4a1 1 0 0 1-1 1H9a1 1 0 0 1 0-2h6a1 1 0 0 1 1 1zm-5-4a1 1 0 0 1-1 1H9a1 1 0 1 1 0-2h1a1 1 0 0 1 1 1z\" />\r\n </svg>\r\n\r\n <svg *ngIf=\"fileType == 'DOC'\" fill=\"#4a5568\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\r\n <path\r\n d=\"M14.4 0l-9.6 0c-1.33,0 -2.4,1.08 -2.4,2.4l0 19.2c0,1.33 1.07,2.4 2.4,2.4l14.4 0c1.33,0 2.4,-1.07 2.4,-2.4l0 -14.4 -7.2 -7.2 0 0zm4.8 21.6l-14.4 0 0 -19.2 8.4 0 0 6 6 0 0 13.2 0 0zm-0.78 -12l-2.52 10.8 -1.68 0 -2.16 -8.15 -2.16 8.15 -1.68 0 -2.64 -10.8 1.8 0 1.68 8.17 2.16 -8.17 1.56 0 2.16 8.17 1.68 -8.17 1.8 0z\" />\r\n </svg>\r\n\r\n <svg *ngIf=\"fileType == 'XLS'\" fill=\"#4a5568\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\r\n <path\r\n d=\"M14.4 0l-9.6 0c-1.33,0 -2.4,1.08 -2.4,2.4l0 19.2c0,1.33 1.07,2.4 2.4,2.4l14.4 0c1.33,0 2.4,-1.07 2.4,-2.4l0 -14.4 -7.2 -7.2 0 0zm4.8 21.6l-14.4 0 0 -19.2 8.4 0 0 6 6 0 0 13.2 0 0zm-6.12 -6.6l3.48 5.4 -2.16 0 -2.4 -4.08 -2.4 4.08 -2.16 0 3.48 -5.4 -3.48 -5.4 2.16 0 2.4 4.08 2.4 -4.08 2.16 0 -3.48 5.4z\" />\r\n </svg>\r\n\r\n <svg *ngIf=\"fileType == 'PDF'\" fill=\"#4a5568\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\r\n <path\r\n d=\"M14.4 0l7.2 7.2 0 14.4c0,1.32 -1.08,2.4 -2.4,2.4l-14.4 0c-1.32,0 -2.4,-1.08 -2.4,-2.4l0 -19.2c0,-1.32 1.08,-2.4 2.4,-2.4l9.6 0 0 0zm4.8 21.6l0 -13.2 -6 0 0 -6 -8.4 0 0 19.2 14.4 0 0 0zm-8.5 -9.23c-0.28,-0.92 -0.92,-3.87 0.76,-3.92 1.68,-0.05 0.58,3.74 0.58,3.74 0.46,1.79 2.42,3.07 2.42,3.07 0.6,-0.18 4.02,-0.57 3.54,1.21 -0.52,1.77 -4.2,0.1 -4.2,0.1 -2.34,0.17 -4.09,0.8 -4.09,0.8 -1.36,2.53 -2.94,3.63 -3.59,2.56 -0.8,-1.33 2.56,-3.04 2.56,-3.04 1.74,-2.83 2,-4.47 2.02,-4.52l0 0zm0.78 1.01c-0.48,1.56 -1.44,3.23 -1.44,3.23 1.02,-0.41 3.26,-0.88 3.26,-0.88 -1.37,-1.2 -1.79,-2.34 -1.82,-2.35l0 0zm3.77 2.6c0,0 2.1,0.79 2.15,0.47 0.08,-0.32 -1.6,-0.61 -2.15,-0.47l0 0zm-6.79 1.79c-0.93,0.36 -1.81,1.9 -1.6,1.9 0.22,0.01 1.1,-0.72 1.6,-1.9l0 0zm3.02 -6.66c0,-0.06 0.52,-2.01 0,-2.07 -0.36,-0.04 -0.01,2.02 0,2.07z\" />\r\n </svg>\r\n </div>\r\n</div>\r\n\r\n<ngx-dropzone-remove-badge *ngIf=\"removable\" (click)=\"_remove($event)\" style=\"top: -15px !important;\">\r\n</ngx-dropzone-remove-badge>",
36
+ providers: [
37
+ {
38
+ provide: NgxDropzonePreviewComponent,
39
+ useExisting: CustomDropzonePreviewComponent
40
+ }
41
+ ]
42
+ },] }
43
+ ];
44
+ CustomDropzonePreviewComponent.ctorParameters = () => [
45
+ { type: DomSanitizer }
46
+ ];
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLWRyb3B6b25lLXByZXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctdGFpbHdpbmQvc3JjL2NvbXBvbmVudHMvbmd0LWRyb3B6b25lL2N1c3RvbS1kcm9wem9uZS1wcmV2aWV3L2N1c3RvbS1kcm9wem9uZS1wcmV2aWV3LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFM0QsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFZcEUsTUFBTSxPQUFPLDhCQUErQixTQUFRLDJCQUEyQjtJQUczRSxZQUEwQixTQUF1QjtRQUM3QyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7UUFESyxjQUFTLEdBQVQsU0FBUyxDQUFjO0lBRWpELENBQUM7SUFFTSxRQUFRO1FBQ1gsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDWixPQUFPLENBQUMsS0FBSyxDQUFDLHlFQUF5RSxDQUFDLENBQUM7WUFFekYsT0FBTztTQUNWO1FBRUQsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFTyxZQUFZO1FBQ2hCLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ25DLElBQUksQ0FBQyxRQUFRLEdBQUcsdUJBQXVCLENBQUMsR0FBRyxDQUFDO1NBQy9DO2FBQU0sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDdkMsSUFBSSxDQUFDLFFBQVEsR0FBRyx1QkFBdUIsQ0FBQyxHQUFHLENBQUM7U0FDL0M7YUFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUM3QyxJQUFJLENBQUMsUUFBUSxHQUFHLHVCQUF1QixDQUFDLEdBQUcsQ0FBQztTQUMvQzthQUFNO1lBQ0gsSUFBSSxDQUFDLFFBQVEsR0FBRyx1QkFBdUIsQ0FBQyxLQUFLLENBQUM7U0FDakQ7SUFDTCxDQUFDOzs7WUFyQ0osU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSx5QkFBeUI7Z0JBQ25DLG16RkFBdUQ7Z0JBQ3ZELFNBQVMsRUFBRTtvQkFDUDt3QkFDSSxPQUFPLEVBQUUsMkJBQTJCO3dCQUNwQyxXQUFXLEVBQUUsOEJBQThCO3FCQUM5QztpQkFDSjthQUNKOzs7WUFkUSxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7IE5neERyb3B6b25lUHJldmlld0NvbXBvbmVudCB9IGZyb20gJ25neC1kcm9wem9uZSc7XHJcblxyXG5pbXBvcnQgeyBOZ3REcm9wem9uZUZpbGVUeXBlRW51bSB9IGZyb20gJy4uL25ndC1kcm9wem9uZS5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2N1c3RvbS1kcm9wem9uZS1wcmV2aWV3JyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9jdXN0b20tZHJvcHpvbmUtcHJldmlldy5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHByb3ZpZGU6IE5neERyb3B6b25lUHJldmlld0NvbXBvbmVudCxcclxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IEN1c3RvbURyb3B6b25lUHJldmlld0NvbXBvbmVudFxyXG4gICAgICAgIH1cclxuICAgIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIEN1c3RvbURyb3B6b25lUHJldmlld0NvbXBvbmVudCBleHRlbmRzIE5neERyb3B6b25lUHJldmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgICBwdWJsaWMgZmlsZVR5cGU6IE5ndERyb3B6b25lRmlsZVR5cGVFbnVtO1xyXG5cclxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihwdWJsaWMgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIpIHtcclxuICAgICAgICBzdXBlcihzYW5pdGl6ZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIXRoaXMuZmlsZSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdObyBmaWxlIHRvIHJlYWQuIFBsZWFzZSBwcm92aWRlIGEgZmlsZSB1c2luZyB0aGUgW2ZpbGVdIElucHV0IHByb3BlcnR5LicpO1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5iaW5kRmlsZVR5cGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGJpbmRGaWxlVHlwZSgpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5maWxlLnR5cGUuaW5jbHVkZXMoJy5zaGVldCcpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZmlsZVR5cGUgPSBOZ3REcm9wem9uZUZpbGVUeXBlRW51bS5YTFM7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmZpbGUudHlwZS5pbmNsdWRlcygncGRmJykpIHtcclxuICAgICAgICAgICAgdGhpcy5maWxlVHlwZSA9IE5ndERyb3B6b25lRmlsZVR5cGVFbnVtLlBERjtcclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZmlsZS50eXBlLmluY2x1ZGVzKCcuZG9jdW1lbnQnKSkge1xyXG4gICAgICAgICAgICB0aGlzLmZpbGVUeXBlID0gTmd0RHJvcHpvbmVGaWxlVHlwZUVudW0uRE9DO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZmlsZVR5cGUgPSBOZ3REcm9wem9uZUZpbGVUeXBlRW51bS5PVEhFUjtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -1,45 +1,46 @@
1
- import { Component, EventEmitter, HostListener, Input, Output } from "@angular/core";
2
- export class NgtDropzoneFileViewerComponent {
3
- constructor() {
4
- this.url = '';
5
- this.fileName = '';
6
- this.onClose = new EventEmitter();
7
- this.canShowViewer = false;
8
- }
9
- keyEvent(event) {
10
- if (event.code == 'Escape') {
11
- this.canShowViewer = false;
12
- setTimeout(() => {
13
- this.onClose.emit();
14
- }, 500);
15
- }
16
- }
17
- init() {
18
- this.canShowViewer = true;
19
- }
20
- close() {
21
- this.canShowViewer = false;
22
- this.onClose.emit();
23
- }
24
- downloadFile() {
25
- let file = document.createElement("a");
26
- file.href = this.url;
27
- file.setAttribute("download", this.fileName);
28
- file.click();
29
- }
30
- }
31
- NgtDropzoneFileViewerComponent.decorators = [
32
- { type: Component, args: [{
33
- selector: 'ngt-dropzone-file-viewer',
34
- template: "<div style=\"width:100%; height: 100%;\">\n <div style=\"width:100%; height: 100%;\">\n <div class=\"w-full py-5 pr-10\">\n <div class=\"w-full flex justify-end text-2xl\">\n <div class=\"cursor-pointer\" (click)=\"downloadFile()\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\">\n <path fill=\"#fff\" d=\"M13 8V2H7v6H2l8 8 8-8h-5zM0 18h20v2H0v-2z\" />\n </svg>\n </div>\n &nbsp;&nbsp;&nbsp;\n <div class=\"cursor-pointer\" (click)=\"close()\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n <path fill=\"#fff\"\n d=\"M24 2.42l-2.42 -2.42 -9.58 9.58 -9.58 -9.58 -2.42 2.42 9.58 9.58 -9.58 9.58 2.42 2.42 9.58 -9.58 9.58 9.58 2.42 -2.42 -9.58 -9.58 9.58 -9.58z\" />\n </svg>\n </div>\n\n </div>\n <div class=\"w-full justify-center text-center text-2xl font-mono text-white\">\n {{ fileName }}\n </div>\n </div>\n <div class=\"px-10\" style=\"width:100%; height: 83%;\" *ngIf=\"canShowViewer\">\n <ngx-doc-viewer class=\"h-full w-full\" [url]=\"url\">\n </ngx-doc-viewer>\n </div>\n </div>\n</div>",
35
- styles: [":host{background:rgba(0,0,0,.5);color:#fff;position:fixed;top:0;left:0;width:100vw;height:100vh;z-index:10000000}"]
36
- },] }
37
- ];
38
- NgtDropzoneFileViewerComponent.ctorParameters = () => [];
39
- NgtDropzoneFileViewerComponent.propDecorators = {
40
- url: [{ type: Input }],
41
- fileName: [{ type: Input }],
42
- onClose: [{ type: Output }],
43
- keyEvent: [{ type: HostListener, args: ['window:keydown', ['$event'],] }]
44
- };
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd0LWRyb3B6b25lLWZpbGUtdmlld2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXRhaWx3aW5kL3NyYy9jb21wb25lbnRzL25ndC1kcm9wem9uZS9uZ3QtZHJvcHpvbmUtZmlsZS12aWV3ZXIvbmd0LWRyb3B6b25lLWZpbGUtdmlld2VyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQU9yRixNQUFNLE9BQU8sOEJBQThCO0lBT3ZDO1FBTmdCLFFBQUcsR0FBVyxFQUFFLENBQUM7UUFDakIsYUFBUSxHQUFXLEVBQUUsQ0FBQztRQUNyQixZQUFPLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFFMUQsa0JBQWEsR0FBWSxLQUFLLENBQUM7SUFFZixDQUFDO0lBR2pCLFFBQVEsQ0FBQyxLQUFvQjtRQUNoQyxJQUFJLEtBQUssQ0FBQyxJQUFJLElBQUksUUFBUSxFQUFFO1lBQ3hCLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1lBQzNCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ1osSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN4QixDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7U0FDWDtJQUNMLENBQUM7SUFFTSxJQUFJO1FBQ1AsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7SUFDOUIsQ0FBQztJQUVNLEtBQUs7UUFDUixJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztRQUMzQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFTSxZQUFZO1FBQ2YsSUFBSSxJQUFJLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUV2QyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7UUFDckIsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzdDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNqQixDQUFDOzs7WUF2Q0osU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSwwQkFBMEI7Z0JBRXBDLDYyQ0FBd0Q7O2FBQzNEOzs7O2tCQUVJLEtBQUs7dUJBQ0wsS0FBSztzQkFDTCxNQUFNO3VCQU1OLFlBQVksU0FBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25ndC1kcm9wem9uZS1maWxlLXZpZXdlcicsXG4gICAgc3R5bGVVcmxzOiBbJy4vbmd0LWRyb3B6b25lLWZpbGUtdmlld2VyLmNvbXBvbmVudC5jc3MnXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vbmd0LWRyb3B6b25lLWZpbGUtdmlld2VyLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBOZ3REcm9wem9uZUZpbGVWaWV3ZXJDb21wb25lbnQge1xuICAgIEBJbnB1dCgpIHB1YmxpYyB1cmw6IHN0cmluZyA9ICcnO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBmaWxlTmFtZTogc3RyaW5nID0gJyc7XG4gICAgQE91dHB1dCgpIHB1YmxpYyBvbkNsb3NlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIHB1YmxpYyBjYW5TaG93Vmlld2VyOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoKSB7IH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzprZXlkb3duJywgWyckZXZlbnQnXSlcbiAgICBwdWJsaWMga2V5RXZlbnQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50LmNvZGUgPT0gJ0VzY2FwZScpIHtcbiAgICAgICAgICAgIHRoaXMuY2FuU2hvd1ZpZXdlciA9IGZhbHNlO1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkNsb3NlLmVtaXQoKTtcbiAgICAgICAgICAgIH0sIDUwMCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgaW5pdCgpIHtcbiAgICAgICAgdGhpcy5jYW5TaG93Vmlld2VyID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2xvc2UoKSB7XG4gICAgICAgIHRoaXMuY2FuU2hvd1ZpZXdlciA9IGZhbHNlO1xuICAgICAgICB0aGlzLm9uQ2xvc2UuZW1pdCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBkb3dubG9hZEZpbGUoKSB7XG4gICAgICAgIGxldCBmaWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImFcIik7XG5cbiAgICAgICAgZmlsZS5ocmVmID0gdGhpcy51cmw7XG4gICAgICAgIGZpbGUuc2V0QXR0cmlidXRlKFwiZG93bmxvYWRcIiwgdGhpcy5maWxlTmFtZSk7XG4gICAgICAgIGZpbGUuY2xpY2soKTtcbiAgICB9XG59XG4iXX0=
1
+ import { Component, EventEmitter, HostListener, Input, Output } from '@angular/core';
2
+ export class NgtDropzoneFileViewerComponent {
3
+ constructor() {
4
+ this.url = '';
5
+ this.fileName = '';
6
+ this.onClose = new EventEmitter();
7
+ this.canShowViewer = false;
8
+ }
9
+ keyEvent(event) {
10
+ if (event.code == 'Escape') {
11
+ this.canShowViewer = false;
12
+ setTimeout(() => {
13
+ this.onClose.emit();
14
+ }, 500);
15
+ }
16
+ }
17
+ init() {
18
+ this.canShowViewer = true;
19
+ }
20
+ close() {
21
+ this.canShowViewer = false;
22
+ this.onClose.emit();
23
+ }
24
+ downloadFile() {
25
+ let file = document.createElement("a");
26
+ file.target = '_blank';
27
+ file.href = this.url;
28
+ file.setAttribute("download", this.fileName);
29
+ file.click();
30
+ }
31
+ }
32
+ NgtDropzoneFileViewerComponent.decorators = [
33
+ { type: Component, args: [{
34
+ selector: 'ngt-dropzone-file-viewer',
35
+ template: "<div style=\"width:100%; height: 100%;\">\r\n <div style=\"width:100%; height: 100%;\">\r\n <div class=\"w-full py-5 pr-10\">\r\n <div class=\"w-full flex justify-end text-2xl\">\r\n <div class=\"cursor-pointer\" (click)=\"downloadFile()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\">\r\n <path fill=\"#fff\" d=\"M13 8V2H7v6H2l8 8 8-8h-5zM0 18h20v2H0v-2z\" />\r\n </svg>\r\n </div>\r\n &nbsp;&nbsp;&nbsp;\r\n <div class=\"cursor-pointer\" (click)=\"close()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\r\n <path fill=\"#fff\"\r\n d=\"M24 2.42l-2.42 -2.42 -9.58 9.58 -9.58 -9.58 -2.42 2.42 9.58 9.58 -9.58 9.58 2.42 2.42 9.58 -9.58 9.58 9.58 2.42 -2.42 -9.58 -9.58 9.58 -9.58z\" />\r\n </svg>\r\n </div>\r\n\r\n </div>\r\n <div class=\"w-full justify-center text-center text-2xl font-mono text-white\">\r\n {{ fileName }}\r\n </div>\r\n </div>\r\n <div class=\"px-10\" style=\"width:100%; height: 83%;\" *ngIf=\"canShowViewer\">\r\n <ngx-doc-viewer class=\"h-full w-full\" [url]=\"url\">\r\n </ngx-doc-viewer>\r\n </div>\r\n </div>\r\n</div>",
36
+ styles: [":host{background:rgba(0,0,0,.5);color:#fff;position:fixed;top:0;left:0;width:100vw;height:100vh;z-index:10000000}"]
37
+ },] }
38
+ ];
39
+ NgtDropzoneFileViewerComponent.ctorParameters = () => [];
40
+ NgtDropzoneFileViewerComponent.propDecorators = {
41
+ url: [{ type: Input }],
42
+ fileName: [{ type: Input }],
43
+ onClose: [{ type: Output }],
44
+ keyEvent: [{ type: HostListener, args: ['window:keydown', ['$event'],] }]
45
+ };
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd0LWRyb3B6b25lLWZpbGUtdmlld2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXRhaWx3aW5kL3NyYy9jb21wb25lbnRzL25ndC1kcm9wem9uZS9uZ3QtZHJvcHpvbmUtZmlsZS12aWV3ZXIvbmd0LWRyb3B6b25lLWZpbGUtdmlld2VyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQU9yRixNQUFNLE9BQU8sOEJBQThCO0lBT3ZDO1FBTmdCLFFBQUcsR0FBVyxFQUFFLENBQUM7UUFDakIsYUFBUSxHQUFXLEVBQUUsQ0FBQztRQUNyQixZQUFPLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFFMUQsa0JBQWEsR0FBWSxLQUFLLENBQUM7SUFFZixDQUFDO0lBR2pCLFFBQVEsQ0FBQyxLQUFvQjtRQUNoQyxJQUFJLEtBQUssQ0FBQyxJQUFJLElBQUksUUFBUSxFQUFFO1lBQ3hCLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1lBQzNCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ1osSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN4QixDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7U0FDWDtJQUNMLENBQUM7SUFFTSxJQUFJO1FBQ1AsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7SUFDOUIsQ0FBQztJQUVNLEtBQUs7UUFDUixJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztRQUMzQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFTSxZQUFZO1FBQ2YsSUFBSSxJQUFJLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUV2QyxJQUFJLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQztRQUN2QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7UUFDckIsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzdDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNqQixDQUFDOzs7WUF4Q0osU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSwwQkFBMEI7Z0JBRXBDLG02Q0FBd0Q7O2FBQzNEOzs7O2tCQUVJLEtBQUs7dUJBQ0wsS0FBSztzQkFDTCxNQUFNO3VCQU1OLFlBQVksU0FBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICduZ3QtZHJvcHpvbmUtZmlsZS12aWV3ZXInLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vbmd0LWRyb3B6b25lLWZpbGUtdmlld2VyLmNvbXBvbmVudC5jc3MnXSxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9uZ3QtZHJvcHpvbmUtZmlsZS12aWV3ZXIuY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZ3REcm9wem9uZUZpbGVWaWV3ZXJDb21wb25lbnQge1xyXG4gICAgQElucHV0KCkgcHVibGljIHVybDogc3RyaW5nID0gJyc7XHJcbiAgICBASW5wdXQoKSBwdWJsaWMgZmlsZU5hbWU6IHN0cmluZyA9ICcnO1xyXG4gICAgQE91dHB1dCgpIHB1YmxpYyBvbkNsb3NlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgICBwdWJsaWMgY2FuU2hvd1ZpZXdlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuICAgIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzprZXlkb3duJywgWyckZXZlbnQnXSlcclxuICAgIHB1YmxpYyBrZXlFdmVudChldmVudDogS2V5Ym9hcmRFdmVudCkge1xyXG4gICAgICAgIGlmIChldmVudC5jb2RlID09ICdFc2NhcGUnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2FuU2hvd1ZpZXdlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMub25DbG9zZS5lbWl0KCk7XHJcbiAgICAgICAgICAgIH0sIDUwMCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBpbml0KCkge1xyXG4gICAgICAgIHRoaXMuY2FuU2hvd1ZpZXdlciA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGNsb3NlKCkge1xyXG4gICAgICAgIHRoaXMuY2FuU2hvd1ZpZXdlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMub25DbG9zZS5lbWl0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGRvd25sb2FkRmlsZSgpIHtcclxuICAgICAgICBsZXQgZmlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJhXCIpO1xyXG5cclxuICAgICAgICBmaWxlLnRhcmdldCA9ICdfYmxhbmsnO1xyXG4gICAgICAgIGZpbGUuaHJlZiA9IHRoaXMudXJsO1xyXG4gICAgICAgIGZpbGUuc2V0QXR0cmlidXRlKFwiZG93bmxvYWRcIiwgdGhpcy5maWxlTmFtZSk7XHJcbiAgICAgICAgZmlsZS5jbGljaygpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -1,67 +1,67 @@
1
- import { Component, Input, SkipSelf, ViewEncapsulation } from '@angular/core';
2
- import { NgtDropzoneComponent, NgtDropzoneFileTypeEnum } from '../ngt-dropzone.component';
3
- export class NgtDropzoneViewComponent {
4
- constructor(ngtDropzoneComponent) {
5
- this.ngtDropzoneComponent = ngtDropzoneComponent;
6
- this.ngtDropzoneViewFileTypeEnum = NgtDropzoneFileTypeEnum;
7
- }
8
- ngAfterViewInit() { }
9
- ngOnChanges(changes) {
10
- if (changes.resources) {
11
- this.loadFiles();
12
- }
13
- }
14
- loadFiles() {
15
- this.images = this.resources.filter((resource) => this.isImage(resource));
16
- this.audios = this.resources.filter((resource) => this.isAudio(resource));
17
- this.videos = this.resources.filter((resource) => this.isVideo(resource));
18
- this.files = this.resources.filter((resource) => this.isFile(resource));
19
- }
20
- onImageClick(index) {
21
- const imagesDiv = document.createElement("div");
22
- this.images.forEach((image) => {
23
- let imageElement = document.createElement("img");
24
- imageElement.src = image.previewUrl;
25
- imagesDiv.appendChild(imageElement);
26
- });
27
- this.ngtDropzoneComponent.onImageClick(imagesDiv, index);
28
- }
29
- getFileType(resource) {
30
- if (resource.mimeType.includes('.sheet')) {
31
- return NgtDropzoneFileTypeEnum.XLS;
32
- }
33
- if (resource.mimeType.includes('pdf')) {
34
- return NgtDropzoneFileTypeEnum.PDF;
35
- }
36
- if (resource.mimeType.includes('.document')) {
37
- return NgtDropzoneFileTypeEnum.DOC;
38
- }
39
- return NgtDropzoneFileTypeEnum.OTHER;
40
- }
41
- isImage(resource) {
42
- return resource.mimeType.includes('image');
43
- }
44
- isAudio(resource) {
45
- return resource.mimeType.includes('audio');
46
- }
47
- isVideo(resource) {
48
- return resource.mimeType.includes('video');
49
- }
50
- isFile(resource) {
51
- return !this.isImage(resource) && !this.isAudio(resource) && !this.isVideo(resource);
52
- }
53
- }
54
- NgtDropzoneViewComponent.decorators = [
55
- { type: Component, args: [{
56
- selector: 'ngt-dropzone-view',
57
- template: "<div class=\"border-2 border-dotted border-gray-400 rounded p-2 flex items-center overflow-x-auto\"\n [ngStyle]=\"{ 'height': ngtDropzoneComponent.dropzoneHeight }\">\n <div *ngIf=\"ngtDropzoneComponent.loading\"\n class=\"flex absolute justify-center items-center w-full h-full cursor-wait z-10\">\n <div class=\"div-loader\"></div>\n </div>\n\n <div [class]=\"ngtDropzoneComponent.loading ? 'hidden' : 'flex items-center'\">\n <ng-container *ngIf=\"images?.length\">\n <div class=\"flex py-5\">\n <div *ngFor=\"let image of images; let index = index\" class=\"w-48 mr-8\">\n <div class=\"flex flex-col w-48 mx-4 cursor-pointer\"\n title=\"{{ image.name || '' }} ({{ ngtDropzoneComponent.getFormattedFileSize(image) }})\"\n (click)=\"onImageClick(index)\">\n <img [src]=\"image.thumbnailUrl\" [alt]=\"image.name\" class=\"w-full h-32\">\n\n <p class=\"w-full truncate text-gray-500 text-center text-sm font-mono\">\n {{ image.name || '' }}\n </p>\n </div>\n </div>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"audios?.length\">\n <ng-container *ngFor=\"let audio of audios\">\n <div class=\"flex flex-col w-48 mx-4 py-5\">\n <audio controls>\n <source [src]=\"audio.previewUrl\">\n </audio>\n\n <p class=\"w-full truncate text-gray-500 text-center text-sm font-mono\">\n {{ audio.name || '' }}\n </p>\n </div>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"videos?.length\">\n <ng-container *ngFor=\"let video of videos\">\n <div class=\"flex flex-col w-48 mx-4 py-5\">\n <video width=\"240\" controls>\n <source [src]=\"video.previewUrl\">\n </video>\n\n <p class=\"w-full truncate text-gray-500 text-center text-sm font-mono\">\n {{ video.name || '' }}\n </p>\n </div>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"files?.length\">\n <ng-container *ngFor=\"let file of files\">\n <div class=\"flex flex-col w-48 mr-6 cursor-pointer\"\n (click)=\"ngtDropzoneComponent.onFileClick(file.previewUrl, file.name)\">\n <div class=\"w-full flex justify-center border-2 rounded py-4 text-6xl\">\n <svg *ngIf=\"getFileType(file) == ngtDropzoneViewFileTypeEnum.OTHER\"\n xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n <path class=\"heroicon-ui\" fill=\"#4a5568\"\n d=\"M6 2h9a1 1 0 0 1 .7.3l4 4a1 1 0 0 1 .3.7v13a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4c0-1.1.9-2 2-2zm9 2.41V7h2.59L15 4.41zM18 9h-3a2 2 0 0 1-2-2V4H6v16h12V9zm-2 7a1 1 0 0 1-1 1H9a1 1 0 0 1 0-2h6a1 1 0 0 1 1 1zm0-4a1 1 0 0 1-1 1H9a1 1 0 0 1 0-2h6a1 1 0 0 1 1 1zm-5-4a1 1 0 0 1-1 1H9a1 1 0 1 1 0-2h1a1 1 0 0 1 1 1z\" />\n </svg>\n\n <svg *ngIf=\"getFileType(file) == ngtDropzoneViewFileTypeEnum.DOC\" fill=\"#4a5568\"\n xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n <path\n d=\"M14.4 0l-9.6 0c-1.33,0 -2.4,1.08 -2.4,2.4l0 19.2c0,1.33 1.07,2.4 2.4,2.4l14.4 0c1.33,0 2.4,-1.07 2.4,-2.4l0 -14.4 -7.2 -7.2 0 0zm4.8 21.6l-14.4 0 0 -19.2 8.4 0 0 6 6 0 0 13.2 0 0zm-0.78 -12l-2.52 10.8 -1.68 0 -2.16 -8.15 -2.16 8.15 -1.68 0 -2.64 -10.8 1.8 0 1.68 8.17 2.16 -8.17 1.56 0 2.16 8.17 1.68 -8.17 1.8 0z\" />\n </svg>\n\n <svg *ngIf=\"getFileType(file) == ngtDropzoneViewFileTypeEnum.XLS\" fill=\"#4a5568\"\n xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n <path\n d=\"M14.4 0l-9.6 0c-1.33,0 -2.4,1.08 -2.4,2.4l0 19.2c0,1.33 1.07,2.4 2.4,2.4l14.4 0c1.33,0 2.4,-1.07 2.4,-2.4l0 -14.4 -7.2 -7.2 0 0zm4.8 21.6l-14.4 0 0 -19.2 8.4 0 0 6 6 0 0 13.2 0 0zm-6.12 -6.6l3.48 5.4 -2.16 0 -2.4 -4.08 -2.4 4.08 -2.16 0 3.48 -5.4 -3.48 -5.4 2.16 0 2.4 4.08 2.4 -4.08 2.16 0 -3.48 5.4z\" />\n </svg>\n\n <svg *ngIf=\"getFileType(file) == ngtDropzoneViewFileTypeEnum.PDF\" fill=\"#4a5568\"\n xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n <path\n d=\"M14.4 0l7.2 7.2 0 14.4c0,1.32 -1.08,2.4 -2.4,2.4l-14.4 0c-1.32,0 -2.4,-1.08 -2.4,-2.4l0 -19.2c0,-1.32 1.08,-2.4 2.4,-2.4l9.6 0 0 0zm4.8 21.6l0 -13.2 -6 0 0 -6 -8.4 0 0 19.2 14.4 0 0 0zm-8.5 -9.23c-0.28,-0.92 -0.92,-3.87 0.76,-3.92 1.68,-0.05 0.58,3.74 0.58,3.74 0.46,1.79 2.42,3.07 2.42,3.07 0.6,-0.18 4.02,-0.57 3.54,1.21 -0.52,1.77 -4.2,0.1 -4.2,0.1 -2.34,0.17 -4.09,0.8 -4.09,0.8 -1.36,2.53 -2.94,3.63 -3.59,2.56 -0.8,-1.33 2.56,-3.04 2.56,-3.04 1.74,-2.83 2,-4.47 2.02,-4.52l0 0zm0.78 1.01c-0.48,1.56 -1.44,3.23 -1.44,3.23 1.02,-0.41 3.26,-0.88 3.26,-0.88 -1.37,-1.2 -1.79,-2.34 -1.82,-2.35l0 0zm3.77 2.6c0,0 2.1,0.79 2.15,0.47 0.08,-0.32 -1.6,-0.61 -2.15,-0.47l0 0zm-6.79 1.79c-0.93,0.36 -1.81,1.9 -1.6,1.9 0.22,0.01 1.1,-0.72 1.6,-1.9l0 0zm3.02 -6.66c0,-0.06 0.52,-2.01 0,-2.07 -0.36,-0.04 -0.01,2.02 0,2.07z\" />\n </svg>\n </div>\n\n <p class=\"w-full truncate text-gray-500 text-center text-sm font-mono\">\n {{ file.name || '' }}\n </p>\n </div>\n </ng-container>\n </ng-container>\n </div>\n\n <div *ngIf=\"!ngtDropzoneComponent.loading && !ngtDropzoneComponent.resources?.length\"\n class=\"px-2 text-center w-full\">\n {{ ngtDropzoneComponent.placeholder }}\n </div>\n</div>",
58
- encapsulation: ViewEncapsulation.None
59
- },] }
60
- ];
61
- NgtDropzoneViewComponent.ctorParameters = () => [
62
- { type: NgtDropzoneComponent, decorators: [{ type: SkipSelf }] }
63
- ];
64
- NgtDropzoneViewComponent.propDecorators = {
65
- resources: [{ type: Input }]
66
- };
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd0LWRyb3B6b25lLXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctdGFpbHdpbmQvc3JjL2NvbXBvbmVudHMvbmd0LWRyb3B6b25lL25ndC1kcm9wem9uZS12aWV3L25ndC1kcm9wem9uZS12aWV3LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxLQUFLLEVBQWlCLFFBQVEsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU1RyxPQUFPLEVBQUUsb0JBQW9CLEVBQW1CLHVCQUF1QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFPM0csTUFBTSxPQUFPLHdCQUF3QjtJQVVqQyxZQUVXLG9CQUEwQztRQUExQyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBSjlDLGdDQUEyQixHQUFHLHVCQUF1QixDQUFDO0lBS3pELENBQUM7SUFFRSxlQUFlLEtBQUssQ0FBQztJQUVyQixXQUFXLENBQUMsT0FBc0I7UUFDckMsSUFBSSxPQUFPLENBQUMsU0FBUyxFQUFFO1lBQ25CLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztTQUNwQjtJQUNMLENBQUM7SUFFTSxTQUFTO1FBQ1osSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQzFFLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUMxRSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDMUUsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFFTSxZQUFZLENBQUMsS0FBSztRQUNyQixNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWhELElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBc0IsRUFBRSxFQUFFO1lBQzNDLElBQUksWUFBWSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFakQsWUFBWSxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDO1lBRXBDLFNBQVMsQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDeEMsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsb0JBQW9CLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRU0sV0FBVyxDQUFDLFFBQXlCO1FBQ3hDLElBQUksUUFBUSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDdEMsT0FBTyx1QkFBdUIsQ0FBQyxHQUFHLENBQUM7U0FDdEM7UUFFRCxJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ25DLE9BQU8sdUJBQXVCLENBQUMsR0FBRyxDQUFDO1NBQ3RDO1FBRUQsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUN6QyxPQUFPLHVCQUF1QixDQUFDLEdBQUcsQ0FBQztTQUN0QztRQUVELE9BQU8sdUJBQXVCLENBQUMsS0FBSyxDQUFDO0lBQ3pDLENBQUM7SUFFTyxPQUFPLENBQUMsUUFBeUI7UUFDckMsT0FBTyxRQUFRLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRU8sT0FBTyxDQUFDLFFBQXlCO1FBQ3JDLE9BQU8sUUFBUSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVPLE9BQU8sQ0FBQyxRQUF5QjtRQUNyQyxPQUFPLFFBQVEsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFTyxNQUFNLENBQUMsUUFBeUI7UUFDcEMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN6RixDQUFDOzs7WUEvRUosU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSxtQkFBbUI7Z0JBQzdCLDBtTUFBaUQ7Z0JBQ2pELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2FBQ3hDOzs7WUFOUSxvQkFBb0IsdUJBa0JwQixRQUFROzs7d0JBVlosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgSW5wdXQsIFNpbXBsZUNoYW5nZXMsIFNraXBTZWxmLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBOZ3REcm9wem9uZUNvbXBvbmVudCwgTmd0RHJvcHpvbmVGaWxlLCBOZ3REcm9wem9uZUZpbGVUeXBlRW51bSB9IGZyb20gJy4uL25ndC1kcm9wem9uZS5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25ndC1kcm9wem9uZS12aWV3JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vbmd0LWRyb3B6b25lLXZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgTmd0RHJvcHpvbmVWaWV3Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgQElucHV0KCkgcHVibGljIHJlc291cmNlczogQXJyYXk8YW55PjtcblxuICAgIHB1YmxpYyBpbWFnZXM6IEFycmF5PE5ndERyb3B6b25lRmlsZT47XG4gICAgcHVibGljIGF1ZGlvczogQXJyYXk8Tmd0RHJvcHpvbmVGaWxlPjtcbiAgICBwdWJsaWMgdmlkZW9zOiBBcnJheTxOZ3REcm9wem9uZUZpbGU+O1xuICAgIHB1YmxpYyBmaWxlczogQXJyYXk8Tmd0RHJvcHpvbmVGaWxlPjtcblxuICAgIHB1YmxpYyBuZ3REcm9wem9uZVZpZXdGaWxlVHlwZUVudW0gPSBOZ3REcm9wem9uZUZpbGVUeXBlRW51bTtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgICAgQFNraXBTZWxmKClcbiAgICAgICAgcHVibGljIG5ndERyb3B6b25lQ29tcG9uZW50OiBOZ3REcm9wem9uZUNvbXBvbmVudFxuICAgICkgeyB9XG5cbiAgICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCkgeyB9XG5cbiAgICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgICAgICBpZiAoY2hhbmdlcy5yZXNvdXJjZXMpIHtcbiAgICAgICAgICAgIHRoaXMubG9hZEZpbGVzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgbG9hZEZpbGVzKCkge1xuICAgICAgICB0aGlzLmltYWdlcyA9IHRoaXMucmVzb3VyY2VzLmZpbHRlcigocmVzb3VyY2UpID0+IHRoaXMuaXNJbWFnZShyZXNvdXJjZSkpO1xuICAgICAgICB0aGlzLmF1ZGlvcyA9IHRoaXMucmVzb3VyY2VzLmZpbHRlcigocmVzb3VyY2UpID0+IHRoaXMuaXNBdWRpbyhyZXNvdXJjZSkpO1xuICAgICAgICB0aGlzLnZpZGVvcyA9IHRoaXMucmVzb3VyY2VzLmZpbHRlcigocmVzb3VyY2UpID0+IHRoaXMuaXNWaWRlbyhyZXNvdXJjZSkpO1xuICAgICAgICB0aGlzLmZpbGVzID0gdGhpcy5yZXNvdXJjZXMuZmlsdGVyKChyZXNvdXJjZSkgPT4gdGhpcy5pc0ZpbGUocmVzb3VyY2UpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25JbWFnZUNsaWNrKGluZGV4KSB7XG4gICAgICAgIGNvbnN0IGltYWdlc0RpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG5cbiAgICAgICAgdGhpcy5pbWFnZXMuZm9yRWFjaCgoaW1hZ2U6IE5ndERyb3B6b25lRmlsZSkgPT4ge1xuICAgICAgICAgICAgbGV0IGltYWdlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJpbWdcIik7XG5cbiAgICAgICAgICAgIGltYWdlRWxlbWVudC5zcmMgPSBpbWFnZS5wcmV2aWV3VXJsO1xuXG4gICAgICAgICAgICBpbWFnZXNEaXYuYXBwZW5kQ2hpbGQoaW1hZ2VFbGVtZW50KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5uZ3REcm9wem9uZUNvbXBvbmVudC5vbkltYWdlQ2xpY2soaW1hZ2VzRGl2LCBpbmRleCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEZpbGVUeXBlKHJlc291cmNlOiBOZ3REcm9wem9uZUZpbGUpOiBOZ3REcm9wem9uZUZpbGVUeXBlRW51bSB7XG4gICAgICAgIGlmIChyZXNvdXJjZS5taW1lVHlwZS5pbmNsdWRlcygnLnNoZWV0JykpIHtcbiAgICAgICAgICAgIHJldHVybiBOZ3REcm9wem9uZUZpbGVUeXBlRW51bS5YTFM7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocmVzb3VyY2UubWltZVR5cGUuaW5jbHVkZXMoJ3BkZicpKSB7XG4gICAgICAgICAgICByZXR1cm4gTmd0RHJvcHpvbmVGaWxlVHlwZUVudW0uUERGO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJlc291cmNlLm1pbWVUeXBlLmluY2x1ZGVzKCcuZG9jdW1lbnQnKSkge1xuICAgICAgICAgICAgcmV0dXJuIE5ndERyb3B6b25lRmlsZVR5cGVFbnVtLkRPQztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBOZ3REcm9wem9uZUZpbGVUeXBlRW51bS5PVEhFUjtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzSW1hZ2UocmVzb3VyY2U6IE5ndERyb3B6b25lRmlsZSkge1xuICAgICAgICByZXR1cm4gcmVzb3VyY2UubWltZVR5cGUuaW5jbHVkZXMoJ2ltYWdlJyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0F1ZGlvKHJlc291cmNlOiBOZ3REcm9wem9uZUZpbGUpIHtcbiAgICAgICAgcmV0dXJuIHJlc291cmNlLm1pbWVUeXBlLmluY2x1ZGVzKCdhdWRpbycpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNWaWRlbyhyZXNvdXJjZTogTmd0RHJvcHpvbmVGaWxlKSB7XG4gICAgICAgIHJldHVybiByZXNvdXJjZS5taW1lVHlwZS5pbmNsdWRlcygndmlkZW8nKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzRmlsZShyZXNvdXJjZTogTmd0RHJvcHpvbmVGaWxlKSB7XG4gICAgICAgIHJldHVybiAhdGhpcy5pc0ltYWdlKHJlc291cmNlKSAmJiAhdGhpcy5pc0F1ZGlvKHJlc291cmNlKSAmJiAhdGhpcy5pc1ZpZGVvKHJlc291cmNlKTtcbiAgICB9XG59XG4iXX0=
1
+ import { Component, Input, SkipSelf, ViewEncapsulation } from '@angular/core';
2
+ import { NgtDropzoneComponent, NgtDropzoneFileTypeEnum } from '../ngt-dropzone.component';
3
+ export class NgtDropzoneViewComponent {
4
+ constructor(ngtDropzoneComponent) {
5
+ this.ngtDropzoneComponent = ngtDropzoneComponent;
6
+ this.ngtDropzoneViewFileTypeEnum = NgtDropzoneFileTypeEnum;
7
+ }
8
+ ngAfterViewInit() { }
9
+ ngOnChanges(changes) {
10
+ if (changes.resources) {
11
+ this.loadFiles();
12
+ }
13
+ }
14
+ loadFiles() {
15
+ this.images = this.resources.filter((resource) => this.isImage(resource));
16
+ this.audios = this.resources.filter((resource) => this.isAudio(resource));
17
+ this.videos = this.resources.filter((resource) => this.isVideo(resource));
18
+ this.files = this.resources.filter((resource) => this.isFile(resource));
19
+ }
20
+ onImageClick(index) {
21
+ const imagesDiv = document.createElement("div");
22
+ this.images.forEach((image) => {
23
+ let imageElement = document.createElement("img");
24
+ imageElement.src = image.previewUrl;
25
+ imagesDiv.appendChild(imageElement);
26
+ });
27
+ this.ngtDropzoneComponent.onImageClick(imagesDiv, index);
28
+ }
29
+ getFileType(resource) {
30
+ if (resource.mimeType.includes('.sheet')) {
31
+ return NgtDropzoneFileTypeEnum.XLS;
32
+ }
33
+ if (resource.mimeType.includes('pdf')) {
34
+ return NgtDropzoneFileTypeEnum.PDF;
35
+ }
36
+ if (resource.mimeType.includes('.document')) {
37
+ return NgtDropzoneFileTypeEnum.DOC;
38
+ }
39
+ return NgtDropzoneFileTypeEnum.OTHER;
40
+ }
41
+ isImage(resource) {
42
+ return resource.mimeType.includes('image');
43
+ }
44
+ isAudio(resource) {
45
+ return resource.mimeType.includes('audio');
46
+ }
47
+ isVideo(resource) {
48
+ return resource.mimeType.includes('video');
49
+ }
50
+ isFile(resource) {
51
+ return !this.isImage(resource) && !this.isAudio(resource) && !this.isVideo(resource);
52
+ }
53
+ }
54
+ NgtDropzoneViewComponent.decorators = [
55
+ { type: Component, args: [{
56
+ selector: 'ngt-dropzone-view',
57
+ template: "<div class=\"border-2 border-dotted border-gray-400 rounded p-2 flex items-center overflow-x-auto\"\r\n [ngStyle]=\"{ 'height': ngtDropzoneComponent.dropzoneHeight }\">\r\n <div *ngIf=\"ngtDropzoneComponent.loading\"\r\n class=\"flex absolute justify-center items-center w-full h-full cursor-wait z-10\">\r\n <div class=\"div-loader\"></div>\r\n </div>\r\n\r\n <div [class]=\"ngtDropzoneComponent.loading ? 'hidden' : 'flex items-center'\">\r\n <ng-container *ngIf=\"images?.length\">\r\n <div class=\"flex py-5\">\r\n <div *ngFor=\"let image of images; let index = index\" class=\"w-48 mr-8\">\r\n <div class=\"flex flex-col w-48 mx-4 cursor-pointer\"\r\n title=\"{{ image.name || '' }} ({{ ngtDropzoneComponent.getFormattedFileSize(image) }})\"\r\n (click)=\"onImageClick(index)\">\r\n <img [src]=\"image.thumbnailUrl\" [alt]=\"image.name\" class=\"w-full h-32\">\r\n\r\n <p class=\"w-full truncate text-gray-500 text-center text-sm font-mono\">\r\n {{ image.name || '' }}\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"audios?.length\">\r\n <ng-container *ngFor=\"let audio of audios\">\r\n <div class=\"flex flex-col w-48 mx-4 py-5\">\r\n <audio controls>\r\n <source [src]=\"audio.previewUrl\">\r\n </audio>\r\n\r\n <p class=\"w-full truncate text-gray-500 text-center text-sm font-mono\">\r\n {{ audio.name || '' }}\r\n </p>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"videos?.length\">\r\n <ng-container *ngFor=\"let video of videos\">\r\n <div class=\"flex flex-col w-48 mx-4 py-5\">\r\n <video width=\"240\" controls>\r\n <source [src]=\"video.previewUrl\">\r\n </video>\r\n\r\n <p class=\"w-full truncate text-gray-500 text-center text-sm font-mono\">\r\n {{ video.name || '' }}\r\n </p>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"files?.length\">\r\n <ng-container *ngFor=\"let file of files\">\r\n <div class=\"flex flex-col w-48 mr-6 cursor-pointer\"\r\n (click)=\"ngtDropzoneComponent.onFileClick(file.previewUrl, file.name)\">\r\n <div class=\"w-full flex justify-center border-2 rounded py-4 text-6xl\">\r\n <svg *ngIf=\"getFileType(file) == ngtDropzoneViewFileTypeEnum.OTHER\"\r\n xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\r\n <path class=\"heroicon-ui\" fill=\"#4a5568\"\r\n d=\"M6 2h9a1 1 0 0 1 .7.3l4 4a1 1 0 0 1 .3.7v13a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4c0-1.1.9-2 2-2zm9 2.41V7h2.59L15 4.41zM18 9h-3a2 2 0 0 1-2-2V4H6v16h12V9zm-2 7a1 1 0 0 1-1 1H9a1 1 0 0 1 0-2h6a1 1 0 0 1 1 1zm0-4a1 1 0 0 1-1 1H9a1 1 0 0 1 0-2h6a1 1 0 0 1 1 1zm-5-4a1 1 0 0 1-1 1H9a1 1 0 1 1 0-2h1a1 1 0 0 1 1 1z\" />\r\n </svg>\r\n\r\n <svg *ngIf=\"getFileType(file) == ngtDropzoneViewFileTypeEnum.DOC\" fill=\"#4a5568\"\r\n xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\r\n <path\r\n d=\"M14.4 0l-9.6 0c-1.33,0 -2.4,1.08 -2.4,2.4l0 19.2c0,1.33 1.07,2.4 2.4,2.4l14.4 0c1.33,0 2.4,-1.07 2.4,-2.4l0 -14.4 -7.2 -7.2 0 0zm4.8 21.6l-14.4 0 0 -19.2 8.4 0 0 6 6 0 0 13.2 0 0zm-0.78 -12l-2.52 10.8 -1.68 0 -2.16 -8.15 -2.16 8.15 -1.68 0 -2.64 -10.8 1.8 0 1.68 8.17 2.16 -8.17 1.56 0 2.16 8.17 1.68 -8.17 1.8 0z\" />\r\n </svg>\r\n\r\n <svg *ngIf=\"getFileType(file) == ngtDropzoneViewFileTypeEnum.XLS\" fill=\"#4a5568\"\r\n xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\r\n <path\r\n d=\"M14.4 0l-9.6 0c-1.33,0 -2.4,1.08 -2.4,2.4l0 19.2c0,1.33 1.07,2.4 2.4,2.4l14.4 0c1.33,0 2.4,-1.07 2.4,-2.4l0 -14.4 -7.2 -7.2 0 0zm4.8 21.6l-14.4 0 0 -19.2 8.4 0 0 6 6 0 0 13.2 0 0zm-6.12 -6.6l3.48 5.4 -2.16 0 -2.4 -4.08 -2.4 4.08 -2.16 0 3.48 -5.4 -3.48 -5.4 2.16 0 2.4 4.08 2.4 -4.08 2.16 0 -3.48 5.4z\" />\r\n </svg>\r\n\r\n <svg *ngIf=\"getFileType(file) == ngtDropzoneViewFileTypeEnum.PDF\" fill=\"#4a5568\"\r\n xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\r\n <path\r\n d=\"M14.4 0l7.2 7.2 0 14.4c0,1.32 -1.08,2.4 -2.4,2.4l-14.4 0c-1.32,0 -2.4,-1.08 -2.4,-2.4l0 -19.2c0,-1.32 1.08,-2.4 2.4,-2.4l9.6 0 0 0zm4.8 21.6l0 -13.2 -6 0 0 -6 -8.4 0 0 19.2 14.4 0 0 0zm-8.5 -9.23c-0.28,-0.92 -0.92,-3.87 0.76,-3.92 1.68,-0.05 0.58,3.74 0.58,3.74 0.46,1.79 2.42,3.07 2.42,3.07 0.6,-0.18 4.02,-0.57 3.54,1.21 -0.52,1.77 -4.2,0.1 -4.2,0.1 -2.34,0.17 -4.09,0.8 -4.09,0.8 -1.36,2.53 -2.94,3.63 -3.59,2.56 -0.8,-1.33 2.56,-3.04 2.56,-3.04 1.74,-2.83 2,-4.47 2.02,-4.52l0 0zm0.78 1.01c-0.48,1.56 -1.44,3.23 -1.44,3.23 1.02,-0.41 3.26,-0.88 3.26,-0.88 -1.37,-1.2 -1.79,-2.34 -1.82,-2.35l0 0zm3.77 2.6c0,0 2.1,0.79 2.15,0.47 0.08,-0.32 -1.6,-0.61 -2.15,-0.47l0 0zm-6.79 1.79c-0.93,0.36 -1.81,1.9 -1.6,1.9 0.22,0.01 1.1,-0.72 1.6,-1.9l0 0zm3.02 -6.66c0,-0.06 0.52,-2.01 0,-2.07 -0.36,-0.04 -0.01,2.02 0,2.07z\" />\r\n </svg>\r\n </div>\r\n\r\n <p class=\"w-full truncate text-gray-500 text-center text-sm font-mono\">\r\n {{ file.name || '' }}\r\n </p>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n\r\n <div *ngIf=\"!ngtDropzoneComponent.loading && !ngtDropzoneComponent.resources?.length\"\r\n class=\"px-2 text-center w-full\">\r\n {{ ngtDropzoneComponent.placeholder }}\r\n </div>\r\n</div>",
58
+ encapsulation: ViewEncapsulation.None
59
+ },] }
60
+ ];
61
+ NgtDropzoneViewComponent.ctorParameters = () => [
62
+ { type: NgtDropzoneComponent, decorators: [{ type: SkipSelf }] }
63
+ ];
64
+ NgtDropzoneViewComponent.propDecorators = {
65
+ resources: [{ type: Input }]
66
+ };
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd0LWRyb3B6b25lLXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctdGFpbHdpbmQvc3JjL2NvbXBvbmVudHMvbmd0LWRyb3B6b25lL25ndC1kcm9wem9uZS12aWV3L25ndC1kcm9wem9uZS12aWV3LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxLQUFLLEVBQWlCLFFBQVEsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU1RyxPQUFPLEVBQUUsb0JBQW9CLEVBQW1CLHVCQUF1QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFPM0csTUFBTSxPQUFPLHdCQUF3QjtJQVVqQyxZQUVXLG9CQUEwQztRQUExQyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBSjlDLGdDQUEyQixHQUFHLHVCQUF1QixDQUFDO0lBS3pELENBQUM7SUFFRSxlQUFlLEtBQUssQ0FBQztJQUVyQixXQUFXLENBQUMsT0FBc0I7UUFDckMsSUFBSSxPQUFPLENBQUMsU0FBUyxFQUFFO1lBQ25CLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztTQUNwQjtJQUNMLENBQUM7SUFFTSxTQUFTO1FBQ1osSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQzFFLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUMxRSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDMUUsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFFTSxZQUFZLENBQUMsS0FBSztRQUNyQixNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWhELElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBc0IsRUFBRSxFQUFFO1lBQzNDLElBQUksWUFBWSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFakQsWUFBWSxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDO1lBRXBDLFNBQVMsQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDeEMsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsb0JBQW9CLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRU0sV0FBVyxDQUFDLFFBQXlCO1FBQ3hDLElBQUksUUFBUSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDdEMsT0FBTyx1QkFBdUIsQ0FBQyxHQUFHLENBQUM7U0FDdEM7UUFFRCxJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ25DLE9BQU8sdUJBQXVCLENBQUMsR0FBRyxDQUFDO1NBQ3RDO1FBRUQsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUN6QyxPQUFPLHVCQUF1QixDQUFDLEdBQUcsQ0FBQztTQUN0QztRQUVELE9BQU8sdUJBQXVCLENBQUMsS0FBSyxDQUFDO0lBQ3pDLENBQUM7SUFFTyxPQUFPLENBQUMsUUFBeUI7UUFDckMsT0FBTyxRQUFRLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRU8sT0FBTyxDQUFDLFFBQXlCO1FBQ3JDLE9BQU8sUUFBUSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVPLE9BQU8sQ0FBQyxRQUF5QjtRQUNyQyxPQUFPLFFBQVEsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFTyxNQUFNLENBQUMsUUFBeUI7UUFDcEMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN6RixDQUFDOzs7WUEvRUosU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSxtQkFBbUI7Z0JBQzdCLHN5TUFBaUQ7Z0JBQ2pELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2FBQ3hDOzs7WUFOUSxvQkFBb0IsdUJBa0JwQixRQUFROzs7d0JBVlosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgSW5wdXQsIFNpbXBsZUNoYW5nZXMsIFNraXBTZWxmLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgTmd0RHJvcHpvbmVDb21wb25lbnQsIE5ndERyb3B6b25lRmlsZSwgTmd0RHJvcHpvbmVGaWxlVHlwZUVudW0gfSBmcm9tICcuLi9uZ3QtZHJvcHpvbmUuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICduZ3QtZHJvcHpvbmUtdmlldycsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vbmd0LWRyb3B6b25lLXZpZXcuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTmd0RHJvcHpvbmVWaWV3Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgICBASW5wdXQoKSBwdWJsaWMgcmVzb3VyY2VzOiBBcnJheTxhbnk+O1xyXG5cclxuICAgIHB1YmxpYyBpbWFnZXM6IEFycmF5PE5ndERyb3B6b25lRmlsZT47XHJcbiAgICBwdWJsaWMgYXVkaW9zOiBBcnJheTxOZ3REcm9wem9uZUZpbGU+O1xyXG4gICAgcHVibGljIHZpZGVvczogQXJyYXk8Tmd0RHJvcHpvbmVGaWxlPjtcclxuICAgIHB1YmxpYyBmaWxlczogQXJyYXk8Tmd0RHJvcHpvbmVGaWxlPjtcclxuXHJcbiAgICBwdWJsaWMgbmd0RHJvcHpvbmVWaWV3RmlsZVR5cGVFbnVtID0gTmd0RHJvcHpvbmVGaWxlVHlwZUVudW07XHJcblxyXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIEBTa2lwU2VsZigpXHJcbiAgICAgICAgcHVibGljIG5ndERyb3B6b25lQ29tcG9uZW50OiBOZ3REcm9wem9uZUNvbXBvbmVudFxyXG4gICAgKSB7IH1cclxuXHJcbiAgICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCkgeyB9XHJcblxyXG4gICAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgICAgICBpZiAoY2hhbmdlcy5yZXNvdXJjZXMpIHtcclxuICAgICAgICAgICAgdGhpcy5sb2FkRmlsZXMoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGxvYWRGaWxlcygpIHtcclxuICAgICAgICB0aGlzLmltYWdlcyA9IHRoaXMucmVzb3VyY2VzLmZpbHRlcigocmVzb3VyY2UpID0+IHRoaXMuaXNJbWFnZShyZXNvdXJjZSkpO1xyXG4gICAgICAgIHRoaXMuYXVkaW9zID0gdGhpcy5yZXNvdXJjZXMuZmlsdGVyKChyZXNvdXJjZSkgPT4gdGhpcy5pc0F1ZGlvKHJlc291cmNlKSk7XHJcbiAgICAgICAgdGhpcy52aWRlb3MgPSB0aGlzLnJlc291cmNlcy5maWx0ZXIoKHJlc291cmNlKSA9PiB0aGlzLmlzVmlkZW8ocmVzb3VyY2UpKTtcclxuICAgICAgICB0aGlzLmZpbGVzID0gdGhpcy5yZXNvdXJjZXMuZmlsdGVyKChyZXNvdXJjZSkgPT4gdGhpcy5pc0ZpbGUocmVzb3VyY2UpKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgb25JbWFnZUNsaWNrKGluZGV4KSB7XHJcbiAgICAgICAgY29uc3QgaW1hZ2VzRGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcclxuXHJcbiAgICAgICAgdGhpcy5pbWFnZXMuZm9yRWFjaCgoaW1hZ2U6IE5ndERyb3B6b25lRmlsZSkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgaW1hZ2VFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImltZ1wiKTtcclxuXHJcbiAgICAgICAgICAgIGltYWdlRWxlbWVudC5zcmMgPSBpbWFnZS5wcmV2aWV3VXJsO1xyXG5cclxuICAgICAgICAgICAgaW1hZ2VzRGl2LmFwcGVuZENoaWxkKGltYWdlRWxlbWVudCk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMubmd0RHJvcHpvbmVDb21wb25lbnQub25JbWFnZUNsaWNrKGltYWdlc0RpdiwgaW5kZXgpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRGaWxlVHlwZShyZXNvdXJjZTogTmd0RHJvcHpvbmVGaWxlKTogTmd0RHJvcHpvbmVGaWxlVHlwZUVudW0ge1xyXG4gICAgICAgIGlmIChyZXNvdXJjZS5taW1lVHlwZS5pbmNsdWRlcygnLnNoZWV0JykpIHtcclxuICAgICAgICAgICAgcmV0dXJuIE5ndERyb3B6b25lRmlsZVR5cGVFbnVtLlhMUztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChyZXNvdXJjZS5taW1lVHlwZS5pbmNsdWRlcygncGRmJykpIHtcclxuICAgICAgICAgICAgcmV0dXJuIE5ndERyb3B6b25lRmlsZVR5cGVFbnVtLlBERjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChyZXNvdXJjZS5taW1lVHlwZS5pbmNsdWRlcygnLmRvY3VtZW50JykpIHtcclxuICAgICAgICAgICAgcmV0dXJuIE5ndERyb3B6b25lRmlsZVR5cGVFbnVtLkRPQztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBOZ3REcm9wem9uZUZpbGVUeXBlRW51bS5PVEhFUjtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGlzSW1hZ2UocmVzb3VyY2U6IE5ndERyb3B6b25lRmlsZSkge1xyXG4gICAgICAgIHJldHVybiByZXNvdXJjZS5taW1lVHlwZS5pbmNsdWRlcygnaW1hZ2UnKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGlzQXVkaW8ocmVzb3VyY2U6IE5ndERyb3B6b25lRmlsZSkge1xyXG4gICAgICAgIHJldHVybiByZXNvdXJjZS5taW1lVHlwZS5pbmNsdWRlcygnYXVkaW8nKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGlzVmlkZW8ocmVzb3VyY2U6IE5ndERyb3B6b25lRmlsZSkge1xyXG4gICAgICAgIHJldHVybiByZXNvdXJjZS5taW1lVHlwZS5pbmNsdWRlcygndmlkZW8nKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGlzRmlsZShyZXNvdXJjZTogTmd0RHJvcHpvbmVGaWxlKSB7XHJcbiAgICAgICAgcmV0dXJuICF0aGlzLmlzSW1hZ2UocmVzb3VyY2UpICYmICF0aGlzLmlzQXVkaW8ocmVzb3VyY2UpICYmICF0aGlzLmlzVmlkZW8ocmVzb3VyY2UpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==