@sebgroup/green-angular 6.8.0 → 7.0.0-rc.20251125130141487

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 (516) hide show
  1. package/fesm2022/sebgroup-green-angular-src-lib-accordion.mjs +13 -13
  2. package/fesm2022/sebgroup-green-angular-src-lib-accordion.mjs.map +1 -1
  3. package/fesm2022/sebgroup-green-angular-src-lib-badge.mjs +9 -8
  4. package/fesm2022/sebgroup-green-angular-src-lib-badge.mjs.map +1 -1
  5. package/fesm2022/sebgroup-green-angular-src-lib-button.mjs +9 -8
  6. package/fesm2022/sebgroup-green-angular-src-lib-button.mjs.map +1 -1
  7. package/fesm2022/sebgroup-green-angular-src-lib-cell-table.mjs +17 -15
  8. package/fesm2022/sebgroup-green-angular-src-lib-cell-table.mjs.map +1 -1
  9. package/fesm2022/sebgroup-green-angular-src-lib-context-menu.mjs +9 -9
  10. package/fesm2022/sebgroup-green-angular-src-lib-context-menu.mjs.map +1 -1
  11. package/fesm2022/sebgroup-green-angular-src-lib-datepicker.mjs +9 -9
  12. package/fesm2022/sebgroup-green-angular-src-lib-datepicker.mjs.map +1 -1
  13. package/fesm2022/sebgroup-green-angular-src-lib-dropdown.mjs +17 -15
  14. package/fesm2022/sebgroup-green-angular-src-lib-dropdown.mjs.map +1 -1
  15. package/fesm2022/sebgroup-green-angular-src-lib-in-page-wizard.mjs +9 -9
  16. package/fesm2022/sebgroup-green-angular-src-lib-in-page-wizard.mjs.map +1 -1
  17. package/fesm2022/sebgroup-green-angular-src-lib-modal.mjs +30 -28
  18. package/fesm2022/sebgroup-green-angular-src-lib-modal.mjs.map +1 -1
  19. package/fesm2022/sebgroup-green-angular-src-lib-pagination.mjs +9 -9
  20. package/fesm2022/sebgroup-green-angular-src-lib-pagination.mjs.map +1 -1
  21. package/fesm2022/sebgroup-green-angular-src-lib-progress-circle.mjs +9 -9
  22. package/fesm2022/sebgroup-green-angular-src-lib-progress-circle.mjs.map +1 -1
  23. package/fesm2022/sebgroup-green-angular-src-lib-segmented-control.mjs +9 -9
  24. package/fesm2022/sebgroup-green-angular-src-lib-segmented-control.mjs.map +1 -1
  25. package/fesm2022/sebgroup-green-angular-src-lib-shared.mjs +43 -38
  26. package/fesm2022/sebgroup-green-angular-src-lib-shared.mjs.map +1 -1
  27. package/fesm2022/sebgroup-green-angular-src-lib-slider.mjs +9 -9
  28. package/fesm2022/sebgroup-green-angular-src-lib-slider.mjs.map +1 -1
  29. package/fesm2022/sebgroup-green-angular-src-lib-sortable-list.mjs +9 -9
  30. package/fesm2022/sebgroup-green-angular-src-lib-sortable-list.mjs.map +1 -1
  31. package/fesm2022/sebgroup-green-angular-src-v-angular-account-number.mjs +7 -7
  32. package/fesm2022/sebgroup-green-angular-src-v-angular-account-number.mjs.map +1 -1
  33. package/fesm2022/sebgroup-green-angular-src-v-angular-alert.mjs +9 -9
  34. package/fesm2022/sebgroup-green-angular-src-v-angular-alert.mjs.map +1 -1
  35. package/fesm2022/sebgroup-green-angular-src-v-angular-base-control-value-accessor.mjs +13 -10
  36. package/fesm2022/sebgroup-green-angular-src-v-angular-base-control-value-accessor.mjs.map +1 -1
  37. package/fesm2022/sebgroup-green-angular-src-v-angular-breadcrumbs.mjs +9 -9
  38. package/fesm2022/sebgroup-green-angular-src-v-angular-breadcrumbs.mjs.map +1 -1
  39. package/fesm2022/sebgroup-green-angular-src-v-angular-button.mjs +9 -9
  40. package/fesm2022/sebgroup-green-angular-src-v-angular-button.mjs.map +1 -1
  41. package/fesm2022/sebgroup-green-angular-src-v-angular-card.mjs +8 -8
  42. package/fesm2022/sebgroup-green-angular-src-v-angular-card.mjs.map +1 -1
  43. package/fesm2022/sebgroup-green-angular-src-v-angular-character-countdown.mjs +9 -8
  44. package/fesm2022/sebgroup-green-angular-src-v-angular-character-countdown.mjs.map +1 -1
  45. package/fesm2022/sebgroup-green-angular-src-v-angular-checkbox.mjs +9 -9
  46. package/fesm2022/sebgroup-green-angular-src-v-angular-checkbox.mjs.map +1 -1
  47. package/fesm2022/sebgroup-green-angular-src-v-angular-core.mjs +3 -3
  48. package/fesm2022/sebgroup-green-angular-src-v-angular-core.mjs.map +1 -1
  49. package/fesm2022/sebgroup-green-angular-src-v-angular-datepicker.mjs +52 -43
  50. package/fesm2022/sebgroup-green-angular-src-v-angular-datepicker.mjs.map +1 -1
  51. package/fesm2022/sebgroup-green-angular-src-v-angular-drag-drop.mjs +19 -16
  52. package/fesm2022/sebgroup-green-angular-src-v-angular-drag-drop.mjs.map +1 -1
  53. package/fesm2022/sebgroup-green-angular-src-v-angular-dropdown.mjs +32 -32
  54. package/fesm2022/sebgroup-green-angular-src-v-angular-dropdown.mjs.map +1 -1
  55. package/fesm2022/sebgroup-green-angular-src-v-angular-external-link.mjs +9 -8
  56. package/fesm2022/sebgroup-green-angular-src-v-angular-external-link.mjs.map +1 -1
  57. package/fesm2022/sebgroup-green-angular-src-v-angular-i18n.mjs +19 -16
  58. package/fesm2022/sebgroup-green-angular-src-v-angular-i18n.mjs.map +1 -1
  59. package/fesm2022/sebgroup-green-angular-src-v-angular-info-circle.mjs +9 -9
  60. package/fesm2022/sebgroup-green-angular-src-v-angular-info-circle.mjs.map +1 -1
  61. package/fesm2022/sebgroup-green-angular-src-v-angular-input-mask.mjs +13 -11
  62. package/fesm2022/sebgroup-green-angular-src-v-angular-input-mask.mjs.map +1 -1
  63. package/fesm2022/sebgroup-green-angular-src-v-angular-input.mjs +9 -9
  64. package/fesm2022/sebgroup-green-angular-src-v-angular-input.mjs.map +1 -1
  65. package/fesm2022/sebgroup-green-angular-src-v-angular-modal.mjs +22 -21
  66. package/fesm2022/sebgroup-green-angular-src-v-angular-modal.mjs.map +1 -1
  67. package/fesm2022/sebgroup-green-angular-src-v-angular-pagination.mjs +9 -9
  68. package/fesm2022/sebgroup-green-angular-src-v-angular-pagination.mjs.map +1 -1
  69. package/fesm2022/sebgroup-green-angular-src-v-angular-radio.mjs +16 -16
  70. package/fesm2022/sebgroup-green-angular-src-v-angular-radio.mjs.map +1 -1
  71. package/fesm2022/sebgroup-green-angular-src-v-angular-slug.mjs +8 -7
  72. package/fesm2022/sebgroup-green-angular-src-v-angular-slug.mjs.map +1 -1
  73. package/fesm2022/sebgroup-green-angular-src-v-angular-table.mjs +28 -24
  74. package/fesm2022/sebgroup-green-angular-src-v-angular-table.mjs.map +1 -1
  75. package/fesm2022/sebgroup-green-angular-src-v-angular-tabs.mjs +13 -12
  76. package/fesm2022/sebgroup-green-angular-src-v-angular-tabs.mjs.map +1 -1
  77. package/fesm2022/sebgroup-green-angular-src-v-angular-textarea.mjs +9 -9
  78. package/fesm2022/sebgroup-green-angular-src-v-angular-textarea.mjs.map +1 -1
  79. package/fesm2022/sebgroup-green-angular-src-v-angular-toast.mjs +12 -12
  80. package/fesm2022/sebgroup-green-angular-src-v-angular-toast.mjs.map +1 -1
  81. package/fesm2022/sebgroup-green-angular-src-v-angular-tooltip.mjs +9 -8
  82. package/fesm2022/sebgroup-green-angular-src-v-angular-tooltip.mjs.map +1 -1
  83. package/fesm2022/sebgroup-green-angular-v-angular.mjs +347 -317
  84. package/fesm2022/sebgroup-green-angular-v-angular.mjs.map +1 -1
  85. package/fesm2022/sebgroup-green-angular.mjs +201 -188
  86. package/fesm2022/sebgroup-green-angular.mjs.map +1 -1
  87. package/package.json +8 -94
  88. package/src/v-angular/datepicker/date-control-value-accessor/date-control-value-accessor.component.d.ts +1 -1
  89. package/src/v-angular/drag-drop/drag-drop.component.d.ts +3 -3
  90. package/v-angular/datepicker/date-control-value-accessor/date-control-value-accessor.component.d.ts +1 -1
  91. package/v-angular/drag-drop/drag-drop.component.d.ts +3 -3
  92. package/esm2022/index.mjs +0 -18
  93. package/esm2022/lib/accordion/accordion-list-item.component.mjs +0 -50
  94. package/esm2022/lib/accordion/accordion.component.mjs +0 -77
  95. package/esm2022/lib/accordion/accordion.module.mjs +0 -24
  96. package/esm2022/lib/accordion/index.mjs +0 -4
  97. package/esm2022/lib/badge/badge.component.mjs +0 -85
  98. package/esm2022/lib/badge/badge.module.mjs +0 -23
  99. package/esm2022/lib/badge/index.mjs +0 -3
  100. package/esm2022/lib/button/button.component.mjs +0 -28
  101. package/esm2022/lib/button/button.module.mjs +0 -18
  102. package/esm2022/lib/button/index.mjs +0 -3
  103. package/esm2022/lib/cell-table/cell-table-item.component.mjs +0 -91
  104. package/esm2022/lib/cell-table/cell-table.component.mjs +0 -97
  105. package/esm2022/lib/cell-table/cell-table.module.mjs +0 -26
  106. package/esm2022/lib/cell-table/cell-table.types.mjs +0 -7
  107. package/esm2022/lib/cell-table/cell-underline.directive.mjs +0 -55
  108. package/esm2022/lib/cell-table/index.mjs +0 -4
  109. package/esm2022/lib/context-menu/context-menu.component.mjs +0 -79
  110. package/esm2022/lib/context-menu/context-menu.module.mjs +0 -37
  111. package/esm2022/lib/context-menu/index.mjs +0 -3
  112. package/esm2022/lib/datepicker/datepicker.component.mjs +0 -144
  113. package/esm2022/lib/datepicker/datepicker.module.mjs +0 -37
  114. package/esm2022/lib/datepicker/index.mjs +0 -3
  115. package/esm2022/lib/dropdown/dropdown-button.directive.mjs +0 -16
  116. package/esm2022/lib/dropdown/dropdown-option.directive.mjs +0 -16
  117. package/esm2022/lib/dropdown/dropdown.component.mjs +0 -248
  118. package/esm2022/lib/dropdown/dropdown.module.mjs +0 -51
  119. package/esm2022/lib/dropdown/index.mjs +0 -5
  120. package/esm2022/lib/green-angular.module.mjs +0 -72
  121. package/esm2022/lib/in-page-wizard/in-page-wizard-step-card.component.mjs +0 -61
  122. package/esm2022/lib/in-page-wizard/in-page-wizard.module.mjs +0 -18
  123. package/esm2022/lib/in-page-wizard/index.mjs +0 -3
  124. package/esm2022/lib/modal/index.mjs +0 -5
  125. package/esm2022/lib/modal/modal-footer.directive.mjs +0 -16
  126. package/esm2022/lib/modal/modal-header.directive.mjs +0 -16
  127. package/esm2022/lib/modal/modal.component.mjs +0 -317
  128. package/esm2022/lib/modal/modal.module.mjs +0 -44
  129. package/esm2022/lib/pagination/index.mjs +0 -3
  130. package/esm2022/lib/pagination/pagination.component.mjs +0 -175
  131. package/esm2022/lib/pagination/pagination.module.mjs +0 -18
  132. package/esm2022/lib/progress-circle/index.mjs +0 -3
  133. package/esm2022/lib/progress-circle/progress-circle.component.mjs +0 -41
  134. package/esm2022/lib/progress-circle/progress-circle.module.mjs +0 -18
  135. package/esm2022/lib/segmented-control/index.mjs +0 -3
  136. package/esm2022/lib/segmented-control/segmented-control.component.mjs +0 -38
  137. package/esm2022/lib/segmented-control/segmented-control.module.mjs +0 -22
  138. package/esm2022/lib/shared/core-control/core-checkbox.directive.mjs +0 -39
  139. package/esm2022/lib/shared/core-control/core-control.directive.mjs +0 -94
  140. package/esm2022/lib/shared/core-control/core-control.module.mjs +0 -20
  141. package/esm2022/lib/shared/core-control/index.mjs +0 -4
  142. package/esm2022/lib/shared/core-element/core-element.directive.mjs +0 -34
  143. package/esm2022/lib/shared/core-element/core-element.module.mjs +0 -18
  144. package/esm2022/lib/shared/core-element/index.mjs +0 -3
  145. package/esm2022/lib/shared/core-renderer/core-renderer.mjs +0 -152
  146. package/esm2022/lib/shared/core-renderer/index.mjs +0 -2
  147. package/esm2022/lib/shared/core-router-link/core-router-link.directive.mjs +0 -53
  148. package/esm2022/lib/shared/core-router-link/core-router-link.module.mjs +0 -16
  149. package/esm2022/lib/shared/core-router-link/index.mjs +0 -3
  150. package/esm2022/lib/shared/index.mjs +0 -7
  151. package/esm2022/lib/shared/on-scroll.directive.mjs +0 -47
  152. package/esm2022/lib/shared/scope-resolver.mjs +0 -9
  153. package/esm2022/lib/shared/shared.module.mjs +0 -19
  154. package/esm2022/lib/slider/index.mjs +0 -3
  155. package/esm2022/lib/slider/slider.component.mjs +0 -116
  156. package/esm2022/lib/slider/slider.module.mjs +0 -19
  157. package/esm2022/lib/sortable-list/index.mjs +0 -3
  158. package/esm2022/lib/sortable-list/sortable-list.component.mjs +0 -181
  159. package/esm2022/lib/sortable-list/sortable-list.module.mjs +0 -20
  160. package/esm2022/sebgroup-green-angular.mjs +0 -5
  161. package/esm2022/src/lib/accordion/accordion-list-item.component.mjs +0 -50
  162. package/esm2022/src/lib/accordion/accordion.component.mjs +0 -77
  163. package/esm2022/src/lib/accordion/accordion.module.mjs +0 -24
  164. package/esm2022/src/lib/accordion/index.mjs +0 -4
  165. package/esm2022/src/lib/accordion/sebgroup-green-angular-src-lib-accordion.mjs +0 -5
  166. package/esm2022/src/lib/badge/badge.component.mjs +0 -85
  167. package/esm2022/src/lib/badge/badge.module.mjs +0 -23
  168. package/esm2022/src/lib/badge/index.mjs +0 -3
  169. package/esm2022/src/lib/badge/sebgroup-green-angular-src-lib-badge.mjs +0 -5
  170. package/esm2022/src/lib/button/button.component.mjs +0 -28
  171. package/esm2022/src/lib/button/button.module.mjs +0 -18
  172. package/esm2022/src/lib/button/index.mjs +0 -3
  173. package/esm2022/src/lib/button/sebgroup-green-angular-src-lib-button.mjs +0 -5
  174. package/esm2022/src/lib/cell-table/cell-table-item.component.mjs +0 -91
  175. package/esm2022/src/lib/cell-table/cell-table.component.mjs +0 -97
  176. package/esm2022/src/lib/cell-table/cell-table.module.mjs +0 -26
  177. package/esm2022/src/lib/cell-table/cell-table.types.mjs +0 -7
  178. package/esm2022/src/lib/cell-table/cell-underline.directive.mjs +0 -55
  179. package/esm2022/src/lib/cell-table/index.mjs +0 -4
  180. package/esm2022/src/lib/cell-table/sebgroup-green-angular-src-lib-cell-table.mjs +0 -5
  181. package/esm2022/src/lib/context-menu/context-menu.component.mjs +0 -79
  182. package/esm2022/src/lib/context-menu/context-menu.module.mjs +0 -37
  183. package/esm2022/src/lib/context-menu/index.mjs +0 -3
  184. package/esm2022/src/lib/context-menu/sebgroup-green-angular-src-lib-context-menu.mjs +0 -5
  185. package/esm2022/src/lib/datepicker/datepicker.component.mjs +0 -144
  186. package/esm2022/src/lib/datepicker/datepicker.module.mjs +0 -37
  187. package/esm2022/src/lib/datepicker/index.mjs +0 -3
  188. package/esm2022/src/lib/datepicker/sebgroup-green-angular-src-lib-datepicker.mjs +0 -5
  189. package/esm2022/src/lib/dropdown/dropdown-button.directive.mjs +0 -16
  190. package/esm2022/src/lib/dropdown/dropdown-option.directive.mjs +0 -16
  191. package/esm2022/src/lib/dropdown/dropdown.component.mjs +0 -248
  192. package/esm2022/src/lib/dropdown/dropdown.module.mjs +0 -51
  193. package/esm2022/src/lib/dropdown/index.mjs +0 -5
  194. package/esm2022/src/lib/dropdown/sebgroup-green-angular-src-lib-dropdown.mjs +0 -5
  195. package/esm2022/src/lib/in-page-wizard/in-page-wizard-step-card.component.mjs +0 -61
  196. package/esm2022/src/lib/in-page-wizard/in-page-wizard.module.mjs +0 -18
  197. package/esm2022/src/lib/in-page-wizard/index.mjs +0 -3
  198. package/esm2022/src/lib/in-page-wizard/sebgroup-green-angular-src-lib-in-page-wizard.mjs +0 -5
  199. package/esm2022/src/lib/modal/index.mjs +0 -5
  200. package/esm2022/src/lib/modal/modal-footer.directive.mjs +0 -16
  201. package/esm2022/src/lib/modal/modal-header.directive.mjs +0 -16
  202. package/esm2022/src/lib/modal/modal.component.mjs +0 -317
  203. package/esm2022/src/lib/modal/modal.module.mjs +0 -44
  204. package/esm2022/src/lib/modal/sebgroup-green-angular-src-lib-modal.mjs +0 -5
  205. package/esm2022/src/lib/pagination/index.mjs +0 -3
  206. package/esm2022/src/lib/pagination/pagination.component.mjs +0 -175
  207. package/esm2022/src/lib/pagination/pagination.module.mjs +0 -18
  208. package/esm2022/src/lib/pagination/sebgroup-green-angular-src-lib-pagination.mjs +0 -5
  209. package/esm2022/src/lib/progress-circle/index.mjs +0 -3
  210. package/esm2022/src/lib/progress-circle/progress-circle.component.mjs +0 -41
  211. package/esm2022/src/lib/progress-circle/progress-circle.module.mjs +0 -18
  212. package/esm2022/src/lib/progress-circle/sebgroup-green-angular-src-lib-progress-circle.mjs +0 -5
  213. package/esm2022/src/lib/segmented-control/index.mjs +0 -3
  214. package/esm2022/src/lib/segmented-control/sebgroup-green-angular-src-lib-segmented-control.mjs +0 -5
  215. package/esm2022/src/lib/segmented-control/segmented-control.component.mjs +0 -38
  216. package/esm2022/src/lib/segmented-control/segmented-control.module.mjs +0 -22
  217. package/esm2022/src/lib/shared/core-control/core-checkbox.directive.mjs +0 -39
  218. package/esm2022/src/lib/shared/core-control/core-control.directive.mjs +0 -94
  219. package/esm2022/src/lib/shared/core-control/core-control.module.mjs +0 -20
  220. package/esm2022/src/lib/shared/core-control/index.mjs +0 -4
  221. package/esm2022/src/lib/shared/core-element/core-element.directive.mjs +0 -34
  222. package/esm2022/src/lib/shared/core-element/core-element.module.mjs +0 -18
  223. package/esm2022/src/lib/shared/core-element/index.mjs +0 -3
  224. package/esm2022/src/lib/shared/core-renderer/core-renderer.mjs +0 -152
  225. package/esm2022/src/lib/shared/core-renderer/index.mjs +0 -2
  226. package/esm2022/src/lib/shared/core-router-link/core-router-link.directive.mjs +0 -53
  227. package/esm2022/src/lib/shared/core-router-link/core-router-link.module.mjs +0 -16
  228. package/esm2022/src/lib/shared/core-router-link/index.mjs +0 -3
  229. package/esm2022/src/lib/shared/index.mjs +0 -7
  230. package/esm2022/src/lib/shared/on-scroll.directive.mjs +0 -47
  231. package/esm2022/src/lib/shared/scope-resolver.mjs +0 -9
  232. package/esm2022/src/lib/shared/sebgroup-green-angular-src-lib-shared.mjs +0 -5
  233. package/esm2022/src/lib/shared/shared.module.mjs +0 -19
  234. package/esm2022/src/lib/slider/index.mjs +0 -3
  235. package/esm2022/src/lib/slider/sebgroup-green-angular-src-lib-slider.mjs +0 -5
  236. package/esm2022/src/lib/slider/slider.component.mjs +0 -116
  237. package/esm2022/src/lib/slider/slider.module.mjs +0 -19
  238. package/esm2022/src/lib/sortable-list/index.mjs +0 -3
  239. package/esm2022/src/lib/sortable-list/sebgroup-green-angular-src-lib-sortable-list.mjs +0 -5
  240. package/esm2022/src/lib/sortable-list/sortable-list.component.mjs +0 -181
  241. package/esm2022/src/lib/sortable-list/sortable-list.module.mjs +0 -20
  242. package/esm2022/src/v-angular/account-number/account-number.module.mjs +0 -18
  243. package/esm2022/src/v-angular/account-number/account-number.pipe.mjs +0 -55
  244. package/esm2022/src/v-angular/account-number/index.mjs +0 -3
  245. package/esm2022/src/v-angular/account-number/sebgroup-green-angular-src-v-angular-account-number.mjs +0 -5
  246. package/esm2022/src/v-angular/alert/alert.component.mjs +0 -49
  247. package/esm2022/src/v-angular/alert/alert.models.mjs +0 -8
  248. package/esm2022/src/v-angular/alert/alert.module.mjs +0 -18
  249. package/esm2022/src/v-angular/alert/index.mjs +0 -4
  250. package/esm2022/src/v-angular/alert/sebgroup-green-angular-src-v-angular-alert.mjs +0 -5
  251. package/esm2022/src/v-angular/base-control-value-accessor/base-control-value-accessor.component.mjs +0 -300
  252. package/esm2022/src/v-angular/base-control-value-accessor/base-control-value-accessor.module.mjs +0 -17
  253. package/esm2022/src/v-angular/base-control-value-accessor/index.mjs +0 -3
  254. package/esm2022/src/v-angular/base-control-value-accessor/sebgroup-green-angular-src-v-angular-base-control-value-accessor.mjs +0 -5
  255. package/esm2022/src/v-angular/breadcrumbs/breadcrumbs.component.mjs +0 -25
  256. package/esm2022/src/v-angular/breadcrumbs/breadcrumbs.module.mjs +0 -20
  257. package/esm2022/src/v-angular/breadcrumbs/index.mjs +0 -3
  258. package/esm2022/src/v-angular/breadcrumbs/sebgroup-green-angular-src-v-angular-breadcrumbs.mjs +0 -5
  259. package/esm2022/src/v-angular/button/button.component.mjs +0 -108
  260. package/esm2022/src/v-angular/button/button.module.mjs +0 -20
  261. package/esm2022/src/v-angular/button/index.mjs +0 -3
  262. package/esm2022/src/v-angular/button/sebgroup-green-angular-src-v-angular-button.mjs +0 -5
  263. package/esm2022/src/v-angular/card/card.component.mjs +0 -11
  264. package/esm2022/src/v-angular/card/card.module.mjs +0 -18
  265. package/esm2022/src/v-angular/card/index.mjs +0 -3
  266. package/esm2022/src/v-angular/card/sebgroup-green-angular-src-v-angular-card.mjs +0 -5
  267. package/esm2022/src/v-angular/character-countdown/character-countdown.directive.mjs +0 -51
  268. package/esm2022/src/v-angular/character-countdown/character-countdown.module.mjs +0 -18
  269. package/esm2022/src/v-angular/character-countdown/index.mjs +0 -3
  270. package/esm2022/src/v-angular/character-countdown/sebgroup-green-angular-src-v-angular-character-countdown.mjs +0 -5
  271. package/esm2022/src/v-angular/checkbox/checkbox.component.mjs +0 -94
  272. package/esm2022/src/v-angular/checkbox/checkbox.module.mjs +0 -21
  273. package/esm2022/src/v-angular/checkbox/index.mjs +0 -3
  274. package/esm2022/src/v-angular/checkbox/sebgroup-green-angular-src-v-angular-checkbox.mjs +0 -5
  275. package/esm2022/src/v-angular/core/core.globals.mjs +0 -20
  276. package/esm2022/src/v-angular/core/core.utils.mjs +0 -62
  277. package/esm2022/src/v-angular/core/index.mjs +0 -3
  278. package/esm2022/src/v-angular/core/sebgroup-green-angular-src-v-angular-core.mjs +0 -5
  279. package/esm2022/src/v-angular/datepicker/components/calendar/calendar.component.mjs +0 -200
  280. package/esm2022/src/v-angular/datepicker/components/calendar-control/calendar-control.component.mjs +0 -115
  281. package/esm2022/src/v-angular/datepicker/components/date-input/date-input.component.mjs +0 -238
  282. package/esm2022/src/v-angular/datepicker/components/datepicker/datepicker.component.mjs +0 -192
  283. package/esm2022/src/v-angular/datepicker/date-control-value-accessor/date-control-value-accessor.component.mjs +0 -411
  284. package/esm2022/src/v-angular/datepicker/datepicker.globals.mjs +0 -20
  285. package/esm2022/src/v-angular/datepicker/datepicker.models.mjs +0 -56
  286. package/esm2022/src/v-angular/datepicker/datepicker.module.mjs +0 -63
  287. package/esm2022/src/v-angular/datepicker/datepicker.utils.mjs +0 -196
  288. package/esm2022/src/v-angular/datepicker/directives/calendar-date.directive.mjs +0 -47
  289. package/esm2022/src/v-angular/datepicker/index.mjs +0 -17
  290. package/esm2022/src/v-angular/datepicker/models/dates.mjs +0 -291
  291. package/esm2022/src/v-angular/datepicker/pipes/date-thook.pipe.mjs +0 -30
  292. package/esm2022/src/v-angular/datepicker/pipes/is-disabled.pipe.mjs +0 -37
  293. package/esm2022/src/v-angular/datepicker/pipes/matches.pipe.mjs +0 -17
  294. package/esm2022/src/v-angular/datepicker/sebgroup-green-angular-src-v-angular-datepicker.mjs +0 -5
  295. package/esm2022/src/v-angular/drag-drop/drag-drop.component.mjs +0 -497
  296. package/esm2022/src/v-angular/drag-drop/drag-drop.models.mjs +0 -2
  297. package/esm2022/src/v-angular/drag-drop/drag-drop.module.mjs +0 -49
  298. package/esm2022/src/v-angular/drag-drop/drag-drop.pipes.mjs +0 -70
  299. package/esm2022/src/v-angular/drag-drop/drag-drop.utils.mjs +0 -76
  300. package/esm2022/src/v-angular/drag-drop/index.mjs +0 -5
  301. package/esm2022/src/v-angular/drag-drop/sebgroup-green-angular-src-v-angular-drag-drop.mjs +0 -5
  302. package/esm2022/src/v-angular/dropdown/dropdown-list/dropdown-list.component.mjs +0 -380
  303. package/esm2022/src/v-angular/dropdown/dropdown-list/index.mjs +0 -2
  304. package/esm2022/src/v-angular/dropdown/dropdown.component.mjs +0 -303
  305. package/esm2022/src/v-angular/dropdown/dropdown.module.mjs +0 -38
  306. package/esm2022/src/v-angular/dropdown/index.mjs +0 -6
  307. package/esm2022/src/v-angular/dropdown/sebgroup-green-angular-src-v-angular-dropdown.mjs +0 -5
  308. package/esm2022/src/v-angular/dropdown/typeahead/index.mjs +0 -6
  309. package/esm2022/src/v-angular/dropdown/typeahead/typeahead-dropdown-list/typeahead-dropdown-list.component.mjs +0 -110
  310. package/esm2022/src/v-angular/dropdown/typeahead/typeahead-highlight/typeahead-highlight.component.mjs +0 -85
  311. package/esm2022/src/v-angular/dropdown/typeahead/typeahead-input/typeahead-input.component.mjs +0 -138
  312. package/esm2022/src/v-angular/dropdown/typeahead/typeahead.directive.mjs +0 -186
  313. package/esm2022/src/v-angular/dropdown/typeahead/typeahead.module.mjs +0 -33
  314. package/esm2022/src/v-angular/external-link/external-link.directive.mjs +0 -37
  315. package/esm2022/src/v-angular/external-link/external-link.module.mjs +0 -18
  316. package/esm2022/src/v-angular/external-link/index.mjs +0 -3
  317. package/esm2022/src/v-angular/external-link/sebgroup-green-angular-src-v-angular-external-link.mjs +0 -5
  318. package/esm2022/src/v-angular/i18n/i18n.json +0 -13
  319. package/esm2022/src/v-angular/i18n/i18n.module.mjs +0 -89
  320. package/esm2022/src/v-angular/i18n/i18n.test.module.mjs +0 -89
  321. package/esm2022/src/v-angular/i18n/index.mjs +0 -3
  322. package/esm2022/src/v-angular/i18n/sebgroup-green-angular-src-v-angular-i18n.mjs +0 -5
  323. package/esm2022/src/v-angular/info-circle/index.mjs +0 -3
  324. package/esm2022/src/v-angular/info-circle/info-circle.component.mjs +0 -28
  325. package/esm2022/src/v-angular/info-circle/info-circle.module.mjs +0 -21
  326. package/esm2022/src/v-angular/info-circle/sebgroup-green-angular-src-v-angular-info-circle.mjs +0 -5
  327. package/esm2022/src/v-angular/input/index.mjs +0 -3
  328. package/esm2022/src/v-angular/input/input.component.mjs +0 -248
  329. package/esm2022/src/v-angular/input/input.module.mjs +0 -41
  330. package/esm2022/src/v-angular/input/sebgroup-green-angular-src-v-angular-input.mjs +0 -5
  331. package/esm2022/src/v-angular/input-mask/config.mjs +0 -9
  332. package/esm2022/src/v-angular/input-mask/constants.mjs +0 -2
  333. package/esm2022/src/v-angular/input-mask/index.mjs +0 -6
  334. package/esm2022/src/v-angular/input-mask/input-mask-format.pipe.mjs +0 -21
  335. package/esm2022/src/v-angular/input-mask/input-mask.directive.mjs +0 -165
  336. package/esm2022/src/v-angular/input-mask/input-mask.module.mjs +0 -35
  337. package/esm2022/src/v-angular/input-mask/input-mask.types.mjs +0 -2
  338. package/esm2022/src/v-angular/input-mask/sebgroup-green-angular-src-v-angular-input-mask.mjs +0 -5
  339. package/esm2022/src/v-angular/modal/dialog/dialog.component.mjs +0 -242
  340. package/esm2022/src/v-angular/modal/fold-out/fold-out.component.mjs +0 -167
  341. package/esm2022/src/v-angular/modal/fold-out/fold-out.directive.mjs +0 -19
  342. package/esm2022/src/v-angular/modal/fold-out/keyboard-key.enum.mjs +0 -10
  343. package/esm2022/src/v-angular/modal/index.mjs +0 -6
  344. package/esm2022/src/v-angular/modal/modal.globals.mjs +0 -20
  345. package/esm2022/src/v-angular/modal/modal.module.mjs +0 -53
  346. package/esm2022/src/v-angular/modal/modal.types.mjs +0 -2
  347. package/esm2022/src/v-angular/modal/sebgroup-green-angular-src-v-angular-modal.mjs +0 -5
  348. package/esm2022/src/v-angular/modal/slide-out/slide-out.component.mjs +0 -253
  349. package/esm2022/src/v-angular/pagination/index.mjs +0 -3
  350. package/esm2022/src/v-angular/pagination/pagination.component.mjs +0 -144
  351. package/esm2022/src/v-angular/pagination/pagination.module.mjs +0 -37
  352. package/esm2022/src/v-angular/pagination/sebgroup-green-angular-src-v-angular-pagination.mjs +0 -5
  353. package/esm2022/src/v-angular/radio/index.mjs +0 -4
  354. package/esm2022/src/v-angular/radio/radio-group/radio-group.component.mjs +0 -86
  355. package/esm2022/src/v-angular/radio/radio.component.mjs +0 -153
  356. package/esm2022/src/v-angular/radio/radio.module.mjs +0 -22
  357. package/esm2022/src/v-angular/radio/sebgroup-green-angular-src-v-angular-radio.mjs +0 -5
  358. package/esm2022/src/v-angular/slug/index.mjs +0 -3
  359. package/esm2022/src/v-angular/slug/sebgroup-green-angular-src-v-angular-slug.mjs +0 -5
  360. package/esm2022/src/v-angular/slug/slug.module.mjs +0 -18
  361. package/esm2022/src/v-angular/slug/slug.pipe.mjs +0 -27
  362. package/esm2022/src/v-angular/table/index.mjs +0 -9
  363. package/esm2022/src/v-angular/table/sebgroup-green-angular-src-v-angular-table.mjs +0 -5
  364. package/esm2022/src/v-angular/table/table.component.mjs +0 -426
  365. package/esm2022/src/v-angular/table/table.directive.mjs +0 -110
  366. package/esm2022/src/v-angular/table/table.models.mjs +0 -2
  367. package/esm2022/src/v-angular/table/table.module.mjs +0 -40
  368. package/esm2022/src/v-angular/table/table.tools.mjs +0 -29
  369. package/esm2022/src/v-angular/table/tr-thook.pipe.mjs +0 -22
  370. package/esm2022/src/v-angular/tabs/index.mjs +0 -8
  371. package/esm2022/src/v-angular/tabs/sebgroup-green-angular-src-v-angular-tabs.mjs +0 -5
  372. package/esm2022/src/v-angular/tabs/tab.directive.mjs +0 -81
  373. package/esm2022/src/v-angular/tabs/tabs.component.mjs +0 -262
  374. package/esm2022/src/v-angular/tabs/tabs.models.mjs +0 -2
  375. package/esm2022/src/v-angular/tabs/tabs.module.mjs +0 -21
  376. package/esm2022/src/v-angular/textarea/index.mjs +0 -3
  377. package/esm2022/src/v-angular/textarea/sebgroup-green-angular-src-v-angular-textarea.mjs +0 -5
  378. package/esm2022/src/v-angular/textarea/textarea.component.mjs +0 -129
  379. package/esm2022/src/v-angular/textarea/textarea.module.mjs +0 -34
  380. package/esm2022/src/v-angular/toast/index.mjs +0 -8
  381. package/esm2022/src/v-angular/toast/sebgroup-green-angular-src-v-angular-toast.mjs +0 -5
  382. package/esm2022/src/v-angular/toast/toast-message.service.mjs +0 -82
  383. package/esm2022/src/v-angular/toast/toast.component.mjs +0 -66
  384. package/esm2022/src/v-angular/toast/toast.models.mjs +0 -8
  385. package/esm2022/src/v-angular/toast/toast.module.mjs +0 -21
  386. package/esm2022/src/v-angular/tooltip/index.mjs +0 -3
  387. package/esm2022/src/v-angular/tooltip/sebgroup-green-angular-src-v-angular-tooltip.mjs +0 -5
  388. package/esm2022/src/v-angular/tooltip/tooltip.directive.mjs +0 -293
  389. package/esm2022/src/v-angular/tooltip/tooltip.module.mjs +0 -18
  390. package/esm2022/src/v-angular/tooltip/tooltip.styles.mjs +0 -60
  391. package/esm2022/v-angular/account-number/account-number.module.mjs +0 -18
  392. package/esm2022/v-angular/account-number/account-number.pipe.mjs +0 -55
  393. package/esm2022/v-angular/account-number/index.mjs +0 -3
  394. package/esm2022/v-angular/alert/alert.component.mjs +0 -49
  395. package/esm2022/v-angular/alert/alert.models.mjs +0 -8
  396. package/esm2022/v-angular/alert/alert.module.mjs +0 -18
  397. package/esm2022/v-angular/alert/index.mjs +0 -4
  398. package/esm2022/v-angular/base-control-value-accessor/base-control-value-accessor.component.mjs +0 -300
  399. package/esm2022/v-angular/base-control-value-accessor/base-control-value-accessor.module.mjs +0 -17
  400. package/esm2022/v-angular/base-control-value-accessor/index.mjs +0 -3
  401. package/esm2022/v-angular/breadcrumbs/breadcrumbs.component.mjs +0 -25
  402. package/esm2022/v-angular/breadcrumbs/breadcrumbs.module.mjs +0 -20
  403. package/esm2022/v-angular/breadcrumbs/index.mjs +0 -3
  404. package/esm2022/v-angular/button/button.component.mjs +0 -108
  405. package/esm2022/v-angular/button/button.module.mjs +0 -20
  406. package/esm2022/v-angular/button/index.mjs +0 -3
  407. package/esm2022/v-angular/card/card.component.mjs +0 -11
  408. package/esm2022/v-angular/card/card.module.mjs +0 -18
  409. package/esm2022/v-angular/card/index.mjs +0 -3
  410. package/esm2022/v-angular/character-countdown/character-countdown.directive.mjs +0 -51
  411. package/esm2022/v-angular/character-countdown/character-countdown.module.mjs +0 -18
  412. package/esm2022/v-angular/character-countdown/index.mjs +0 -3
  413. package/esm2022/v-angular/checkbox/checkbox.component.mjs +0 -94
  414. package/esm2022/v-angular/checkbox/checkbox.module.mjs +0 -21
  415. package/esm2022/v-angular/checkbox/index.mjs +0 -3
  416. package/esm2022/v-angular/core/core.globals.mjs +0 -20
  417. package/esm2022/v-angular/core/core.utils.mjs +0 -62
  418. package/esm2022/v-angular/core/index.mjs +0 -3
  419. package/esm2022/v-angular/datepicker/components/calendar/calendar.component.mjs +0 -200
  420. package/esm2022/v-angular/datepicker/components/calendar-control/calendar-control.component.mjs +0 -115
  421. package/esm2022/v-angular/datepicker/components/date-input/date-input.component.mjs +0 -238
  422. package/esm2022/v-angular/datepicker/components/datepicker/datepicker.component.mjs +0 -192
  423. package/esm2022/v-angular/datepicker/date-control-value-accessor/date-control-value-accessor.component.mjs +0 -411
  424. package/esm2022/v-angular/datepicker/datepicker.globals.mjs +0 -20
  425. package/esm2022/v-angular/datepicker/datepicker.models.mjs +0 -56
  426. package/esm2022/v-angular/datepicker/datepicker.module.mjs +0 -63
  427. package/esm2022/v-angular/datepicker/datepicker.utils.mjs +0 -196
  428. package/esm2022/v-angular/datepicker/directives/calendar-date.directive.mjs +0 -47
  429. package/esm2022/v-angular/datepicker/index.mjs +0 -17
  430. package/esm2022/v-angular/datepicker/models/dates.mjs +0 -291
  431. package/esm2022/v-angular/datepicker/pipes/date-thook.pipe.mjs +0 -30
  432. package/esm2022/v-angular/datepicker/pipes/is-disabled.pipe.mjs +0 -37
  433. package/esm2022/v-angular/datepicker/pipes/matches.pipe.mjs +0 -17
  434. package/esm2022/v-angular/drag-drop/drag-drop.component.mjs +0 -497
  435. package/esm2022/v-angular/drag-drop/drag-drop.models.mjs +0 -2
  436. package/esm2022/v-angular/drag-drop/drag-drop.module.mjs +0 -49
  437. package/esm2022/v-angular/drag-drop/drag-drop.pipes.mjs +0 -70
  438. package/esm2022/v-angular/drag-drop/drag-drop.utils.mjs +0 -76
  439. package/esm2022/v-angular/drag-drop/index.mjs +0 -5
  440. package/esm2022/v-angular/dropdown/dropdown-list/dropdown-list.component.mjs +0 -380
  441. package/esm2022/v-angular/dropdown/dropdown-list/index.mjs +0 -2
  442. package/esm2022/v-angular/dropdown/dropdown.component.mjs +0 -303
  443. package/esm2022/v-angular/dropdown/dropdown.module.mjs +0 -38
  444. package/esm2022/v-angular/dropdown/index.mjs +0 -6
  445. package/esm2022/v-angular/dropdown/typeahead/index.mjs +0 -6
  446. package/esm2022/v-angular/dropdown/typeahead/typeahead-dropdown-list/typeahead-dropdown-list.component.mjs +0 -110
  447. package/esm2022/v-angular/dropdown/typeahead/typeahead-highlight/typeahead-highlight.component.mjs +0 -85
  448. package/esm2022/v-angular/dropdown/typeahead/typeahead-input/typeahead-input.component.mjs +0 -138
  449. package/esm2022/v-angular/dropdown/typeahead/typeahead.directive.mjs +0 -186
  450. package/esm2022/v-angular/dropdown/typeahead/typeahead.module.mjs +0 -33
  451. package/esm2022/v-angular/external-link/external-link.directive.mjs +0 -37
  452. package/esm2022/v-angular/external-link/external-link.module.mjs +0 -18
  453. package/esm2022/v-angular/external-link/index.mjs +0 -3
  454. package/esm2022/v-angular/i18n/i18n.json +0 -13
  455. package/esm2022/v-angular/i18n/i18n.module.mjs +0 -89
  456. package/esm2022/v-angular/i18n/i18n.test.module.mjs +0 -89
  457. package/esm2022/v-angular/i18n/index.mjs +0 -3
  458. package/esm2022/v-angular/index.mjs +0 -29
  459. package/esm2022/v-angular/info-circle/index.mjs +0 -3
  460. package/esm2022/v-angular/info-circle/info-circle.component.mjs +0 -28
  461. package/esm2022/v-angular/info-circle/info-circle.module.mjs +0 -21
  462. package/esm2022/v-angular/input/index.mjs +0 -3
  463. package/esm2022/v-angular/input/input.component.mjs +0 -248
  464. package/esm2022/v-angular/input/input.module.mjs +0 -41
  465. package/esm2022/v-angular/input-mask/config.mjs +0 -9
  466. package/esm2022/v-angular/input-mask/constants.mjs +0 -2
  467. package/esm2022/v-angular/input-mask/index.mjs +0 -6
  468. package/esm2022/v-angular/input-mask/input-mask-format.pipe.mjs +0 -21
  469. package/esm2022/v-angular/input-mask/input-mask.directive.mjs +0 -165
  470. package/esm2022/v-angular/input-mask/input-mask.module.mjs +0 -35
  471. package/esm2022/v-angular/input-mask/input-mask.types.mjs +0 -2
  472. package/esm2022/v-angular/modal/dialog/dialog.component.mjs +0 -242
  473. package/esm2022/v-angular/modal/fold-out/fold-out.component.mjs +0 -167
  474. package/esm2022/v-angular/modal/fold-out/fold-out.directive.mjs +0 -19
  475. package/esm2022/v-angular/modal/fold-out/keyboard-key.enum.mjs +0 -10
  476. package/esm2022/v-angular/modal/index.mjs +0 -6
  477. package/esm2022/v-angular/modal/modal.globals.mjs +0 -20
  478. package/esm2022/v-angular/modal/modal.module.mjs +0 -53
  479. package/esm2022/v-angular/modal/modal.types.mjs +0 -2
  480. package/esm2022/v-angular/modal/slide-out/slide-out.component.mjs +0 -253
  481. package/esm2022/v-angular/pagination/index.mjs +0 -3
  482. package/esm2022/v-angular/pagination/pagination.component.mjs +0 -144
  483. package/esm2022/v-angular/pagination/pagination.module.mjs +0 -37
  484. package/esm2022/v-angular/radio/index.mjs +0 -4
  485. package/esm2022/v-angular/radio/radio-group/radio-group.component.mjs +0 -86
  486. package/esm2022/v-angular/radio/radio.component.mjs +0 -153
  487. package/esm2022/v-angular/radio/radio.module.mjs +0 -22
  488. package/esm2022/v-angular/sebgroup-green-angular-v-angular.mjs +0 -5
  489. package/esm2022/v-angular/slug/index.mjs +0 -3
  490. package/esm2022/v-angular/slug/slug.module.mjs +0 -18
  491. package/esm2022/v-angular/slug/slug.pipe.mjs +0 -27
  492. package/esm2022/v-angular/table/index.mjs +0 -9
  493. package/esm2022/v-angular/table/table.component.mjs +0 -426
  494. package/esm2022/v-angular/table/table.directive.mjs +0 -110
  495. package/esm2022/v-angular/table/table.models.mjs +0 -2
  496. package/esm2022/v-angular/table/table.module.mjs +0 -40
  497. package/esm2022/v-angular/table/table.tools.mjs +0 -29
  498. package/esm2022/v-angular/table/tr-thook.pipe.mjs +0 -22
  499. package/esm2022/v-angular/tabs/index.mjs +0 -8
  500. package/esm2022/v-angular/tabs/tab.directive.mjs +0 -81
  501. package/esm2022/v-angular/tabs/tabs.component.mjs +0 -262
  502. package/esm2022/v-angular/tabs/tabs.models.mjs +0 -2
  503. package/esm2022/v-angular/tabs/tabs.module.mjs +0 -21
  504. package/esm2022/v-angular/textarea/index.mjs +0 -3
  505. package/esm2022/v-angular/textarea/textarea.component.mjs +0 -129
  506. package/esm2022/v-angular/textarea/textarea.module.mjs +0 -34
  507. package/esm2022/v-angular/toast/index.mjs +0 -8
  508. package/esm2022/v-angular/toast/toast-message.service.mjs +0 -82
  509. package/esm2022/v-angular/toast/toast.component.mjs +0 -66
  510. package/esm2022/v-angular/toast/toast.models.mjs +0 -8
  511. package/esm2022/v-angular/toast/toast.module.mjs +0 -21
  512. package/esm2022/v-angular/tooltip/index.mjs +0 -3
  513. package/esm2022/v-angular/tooltip/tooltip.directive.mjs +0 -293
  514. package/esm2022/v-angular/tooltip/tooltip.module.mjs +0 -18
  515. package/esm2022/v-angular/tooltip/tooltip.styles.mjs +0 -60
  516. package/esm2022/v-angular/v-angular.module.mjs +0 -132
@@ -1 +1 @@
1
- {"version":3,"file":"sebgroup-green-angular-src-v-angular-drag-drop.mjs","sources":["../../../../libs/angular/src/v-angular/drag-drop/drag-drop.utils.ts","../../../../libs/angular/src/v-angular/drag-drop/drag-drop.pipes.ts","../../../../libs/angular/src/v-angular/drag-drop/drag-drop.component.ts","../../../../libs/angular/src/v-angular/drag-drop/drag-drop.component.html","../../../../libs/angular/src/v-angular/drag-drop/drag-drop.module.ts","../../../../libs/angular/src/v-angular/drag-drop/sebgroup-green-angular-src-v-angular-drag-drop.ts"],"sourcesContent":["/* eslint-disable no-console */\nimport { Observable, throwError, timer } from 'rxjs'\nimport { finalize, mergeMap } from 'rxjs/operators'\n\nimport { APIFile, LocalFile } from './drag-drop.models'\n\n/**\n * Helper to extend the base file with {@link APIFile} defaults\n * @param file file base that will be extended with {@link APIFile} defaults\n * @param data extra data to override defaults\n */\nexport const extendFile = (\n file: File | undefined,\n ...data: Array<Partial<Omit<LocalFile, 'raw'> & APIFile>>\n): LocalFile & APIFile => {\n return Object.assign(\n {\n id: file ? btoa(file.name) : '',\n fileName: file ? file.name : 'na',\n status: '',\n statusReasonInformation: null,\n principal: '',\n uploadDate: (file\n ? new Date(file.lastModified)\n : new Date()\n ).toISOString(),\n registrarId: '',\n registrarName: '',\n progress: 0,\n uploadState: 'local',\n uploadRequests: undefined,\n raw: file,\n } as LocalFile & APIFile,\n ...data,\n )\n}\n\n/**\n * Checks if file matches allowed mime types\n * @param type file mime type\n * @param accept allowed mime types\n */\nexport const verifyAccept = (type: string, accept?: string) => {\n if (!accept) return true\n const regex = new RegExp(accept.replace(/\\*/g, '.*').replace(/\\s*,\\s*/g, '|'))\n return regex.test(type)\n}\n\n/**\n * Determines if browser supports drag and drop\n */\nexport const isDragDropAvailable = () => {\n const div = document.createElement('div')\n return (\n ('draggable' in div || ('ondragstart' in div && 'ondrop' in div)) &&\n 'FormData' in window &&\n 'FileReader' in window\n )\n}\n\n/**\n * Pick only specified keys from a given object\n * @param keys keys to pick from a given object\n * @param object to extract keys from\n */\nexport const pick = <T, K extends keyof T>(\n object: T,\n ...keys: K[]\n): Pick<T, K> => {\n const copy: any = {}\n keys.forEach((key) => {\n copy[key] = object[key]\n })\n return copy\n}\n\n/**\n * Will retry running the observable when an error occurs to a maximum limit, increasing delay between executions.\n * @param options specifies number of retries, scaling duration and statuses to exclude\n */\nexport const retryStrategy =\n ({\n maxRetryAttempts = 3,\n scalingDuration = 1000,\n excludedStatusCodes = [],\n }: {\n maxRetryAttempts?: number\n scalingDuration?: number\n excludedStatusCodes?: number[]\n } = {}) =>\n (attempts: Observable<any>) => {\n return attempts.pipe(\n mergeMap((error, i) => {\n const retryAttempt = i + 1\n // if maximum number of retries have been met\n // or response is a status code we don't wish to retry, throw error\n if (\n retryAttempt > maxRetryAttempts ||\n excludedStatusCodes.find((e) => e === error.status)\n ) {\n return throwError(() => error)\n }\n console.warn(\n `Attempt ${retryAttempt}: retrying in ${retryAttempt * scalingDuration}ms`,\n )\n return timer(retryAttempt * scalingDuration)\n }),\n finalize(() =>\n console.warn(\n `Failed after ${maxRetryAttempts} retry attempts, standing down.`,\n ),\n ),\n )\n }\n","import {\n inject,\n KeyValueChangeRecord,\n KeyValueChanges,\n KeyValueDiffer,\n KeyValueDiffers,\n Pipe,\n PipeTransform,\n} from '@angular/core'\n\n@Pipe({ name: 'value', pure: false })\nexport class ValuePipe implements PipeTransform {\n constructor(private readonly differs: KeyValueDiffers) {}\n\n private differ!: KeyValueDiffer<any, any>\n private values: Array<any> = []\n\n transform<K, V>(input: null): null\n transform<V>(input: { [key: string]: V } | Map<string, V>): Array<V>\n transform<V>(\n input: { [key: string]: V } | Map<string, V> | null,\n ): Array<V> | null\n transform<K, V>(input: Map<K, V>): Array<V>\n transform<K, V>(input: Map<K, V> | null): Array<V> | null\n transform<K, V>(\n input: null | { [key: string]: V; [key: number]: V } | Map<K, V>,\n ): Array<V> | null {\n if (!input || (!(input instanceof Map) && typeof input !== 'object')) {\n return null\n }\n\n if (!this.differ) {\n // make a differ for whatever type we've been passed in\n this.differ = this.differs.find(input).create()\n }\n\n const differChanges: KeyValueChanges<K, V> | null = this.differ.diff(\n input as any,\n )\n\n if (differChanges) {\n this.values = []\n differChanges.forEachItem((r: KeyValueChangeRecord<K, V>) => {\n this.values.push(r.currentValue)\n })\n }\n return this.values\n }\n}\n\n/**\n * Stand-alone version of existing value pipe.\n *\n * Impure flag needed due to keep track of changes in complex values (such as objects or arrays).\n */\n@Pipe({\n name: 'valueImpure',\n pure: false,\n standalone: true,\n})\nexport class ValueImpurePipe implements PipeTransform {\n private readonly differs = inject(KeyValueDiffers)\n\n private differ!: KeyValueDiffer<any, any>\n private values: Array<any> = []\n\n transform<K, V>(input: null): null\n transform<V>(input: { [key: string]: V } | Map<string, V>): Array<V>\n transform<V>(\n input: { [key: string]: V } | Map<string, V> | null,\n ): Array<V> | null\n transform<K, V>(input: Map<K, V>): Array<V>\n transform<K, V>(input: Map<K, V> | null): Array<V> | null\n transform<K, V>(\n input: null | { [key: string]: V; [key: number]: V } | Map<K, V>,\n ): Array<V> | null {\n if (!input || (!(input instanceof Map) && typeof input !== 'object')) {\n return null\n }\n\n if (!this.differ) {\n // make a differ for whatever type we've been passed in\n this.differ = this.differs.find(input).create()\n }\n\n const differChanges: KeyValueChanges<K, V> | null = this.differ.diff(\n input as any,\n )\n\n if (differChanges) {\n this.values = []\n differChanges.forEachItem(\n ({ currentValue }: KeyValueChangeRecord<K, V>) => {\n this.values.push(currentValue)\n },\n )\n }\n return this.values\n }\n}\n","/* eslint-disable no-console */\nimport { HttpEventType } from '@angular/common/http'\nimport {\n Component,\n EventEmitter,\n HostBinding,\n HostListener,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core'\nimport { timer } from 'rxjs'\nimport { filter, retryWhen, switchMap, take, tap } from 'rxjs/operators'\n\nimport {\n DialogEvent,\n NggvDialogComponent,\n} from '@sebgroup/green-angular/src/v-angular/modal'\nimport {\n extendFile,\n isDragDropAvailable,\n pick,\n retryStrategy,\n verifyAccept,\n} from './drag-drop.utils'\n\nimport type {\n APIFile,\n EventStateChange,\n FileService,\n LocalFile,\n StateMap,\n UploadState,\n} from './drag-drop.models'\n\nimport '@sebgroup/green-core/components/icon/icons/cloud-upload.js'\nimport '@sebgroup/green-core/components/icon/icons/cross-small.js'\nimport '@sebgroup/green-core/components/icon/icons/checkmark.js'\n\nexport type DragDropState = 'normal' | 'over' | 'uploading' | 'done'\n\n@Component({\n selector: 'nggv-drag-drop',\n templateUrl: './drag-drop.component.html',\n styleUrls: ['./drag-drop.component.scss'],\n})\nexport class NggvDragDropComponent implements OnInit, OnDestroy {\n /** @internal */\n @ViewChild('deleteModalRef') deleteModalRef!: NggvDialogComponent\n\n /** Special property used for selecting DOM elements during automated UI testing. */\n @HostBinding('attr.data-thook') @Input() thook: string | null | undefined =\n 'drag-drop'\n\n /** Allowing selecting or dropping multiple files. */\n @Input() service: FileService | undefined\n\n /** Mime types allowed. */\n @Input() accept?: string\n\n /** Disables deletion or cancellation during defined states [local | uploading | aborted | uploaded | validating | error | deleted | done]. */\n @Input() disableRemove: UploadState[] = []\n\n /** File size limit in mega bytes. */\n @Input() fileLimit: number = 250 * 1024 * 1024\n\n /** Allowing selecting or dropping multiple files. */\n @Input() multiple = true\n\n /** Determines if list should be shown under upload, disabling list disables multiple upload. */\n @Input() list = true\n\n /** Frequency of requests which to send to the API requesting status updates. */\n @Input() throttle = 5000\n\n /** Maximum number of attempts to request a status update from the API if service is unreachable. */\n @Input() retryAttempts = 5\n\n /** If selection of multiple file should be possible with a checkbox.\n * @experimental work in progress and should not yet be used.\n * @internal\n */\n @Input() selectable = false\n\n /** Allows multiple values from `apiFile.status` to be mapped to a single file upload state. */\n @Input() stateMap: StateMap = {\n local: 'local',\n uploading: 'uploading',\n aborted: 'aborted',\n uploaded: 'uploaded',\n validating: 'validating',\n error: 'error',\n deleted: 'deleted',\n done: 'done',\n }\n\n /** Statuses allowed to be fetch during the initial load. Used to hide \"done\" states from list. */\n @Input() fetchStatuses: string[] = []\n\n /** Statuses allowed be shown when status is \"rejected\". Will fallback to generic message. `null` allows all. */\n @Input() errorCodes: string[] | null = null\n\n /** Event triggered on initialization and every time the \"uploadState\" for a file changes. */\n @Output() stateChange = new EventEmitter<EventStateChange>()\n\n /** Event triggered when view details is clicked. */\n @Output() detailsClick = new EventEmitter<LocalFile & APIFile>()\n\n /** @internal */\n isDragDropAvailable = isDragDropAvailable()\n /** @internal */\n componentState: DragDropState = 'normal'\n /** @internal */\n files: Map<string, LocalFile & APIFile> = new Map()\n /** @internal */\n lastFile: (LocalFile & APIFile) | undefined\n /** @internal */\n selected: string[] = []\n /** @internal */\n loading = false\n /** @internal */\n markedForDeletion: APIFile | undefined\n\n /**\n * Initialize the component and warn if service is not defined. Will also fetch files for the list if enabled.\n */\n ngOnInit() {\n if (!this.service) {\n return console.error(\n 'Drag and drop component will not work without the [service] property defined!',\n )\n }\n\n if (this.list) {\n this.service.fetchFiles(this.fetchStatuses).subscribe((apiFiles) => {\n for (const apiFile of apiFiles) {\n const extendedFile = extendFile(undefined, apiFile, {\n progress: 100,\n uploadState: this.determineUploadState(apiFile.status),\n internalStatusReasonCode: this.fallbackError(\n apiFile.internalStatusReasonCode,\n ),\n })\n this.files.set(extendedFile.id, extendedFile)\n this.stateChange.emit(\n pick(\n extendedFile,\n 'uploadState',\n 'fileName',\n 'id',\n 'status',\n 'internalStatusReasonCode',\n 'statusReasonInformation',\n ),\n )\n\n // Check if validation is required, then start polling\n if (\n extendedFile.uploadState === 'uploaded' ||\n extendedFile.uploadState === 'validating'\n ) {\n this.checkValidity(extendedFile, this.throttle)\n }\n }\n })\n }\n }\n\n /** Destroy all event listeners and polling running */\n ngOnDestroy() {\n this.files.forEach((file) => {\n file.uploadRequests?.unsubscribe()\n if (file.uploadState === 'uploading') {\n file.uploadState = 'aborted'\n file.internalStatusReasonCode = 'MFEFHM004'\n this.stateChange.emit(\n pick(\n file,\n 'uploadState',\n 'fileName',\n 'status',\n 'internalStatusReasonCode',\n ),\n )\n }\n })\n }\n\n /** @internal Warn user trying to leave page before all uploads are done. Custom message only works in older browsers. */\n @HostListener('window:beforeunload', ['$event'])\n onBeforeUnload(event: Event) {\n if (!this.allUploadingDone(this.files)) {\n const confirmationMessage = `You still have files uploading, are you sure you want to leave this page?`\n ;((event as any) || (window.event as any)).returnValue =\n confirmationMessage\n return confirmationMessage\n }\n return\n }\n\n /* Drag & Drop Events */\n\n /** @internal Event handler for when a file is held over the drop area */\n onDragEnter(event: DragEvent): void {\n if (!this.service) return\n event.preventDefault()\n // Update the visual state\n this.componentState = 'over'\n }\n\n /** @internal Event handler for when a file leaves the drop area */\n onDragLeave(event: DragEvent): void {\n if (!this.service) return\n event.preventDefault()\n this.componentState = 'normal'\n }\n\n /** @internal Event handler for when a file is dropped on the drop area or when `input` files are selected */\n onDrop(event: DragEvent | Event): void {\n if (!this.service) return\n event.preventDefault()\n this.componentState = 'normal'\n\n let files: FileList | undefined\n\n // Determine if files are from the drop event or input element\n if (event instanceof DragEvent && event.dataTransfer) {\n files = event.dataTransfer.files\n } else if (\n event.target &&\n event.target instanceof HTMLInputElement &&\n event.target.files\n ) {\n files = event.target.files\n }\n\n if (files) {\n const extendedFiles = Array.from(files, (file) => {\n let abort = false\n let statusCode: string | null = null\n // Check if file size is larger than limit\n if (file.size > this.fileLimit) {\n abort = true\n statusCode = 'MFEFHM003'\n }\n // Check if file type is not acceptable\n if (!verifyAccept(file.type, this.accept)) {\n abort = true\n statusCode = 'MFEFHM002'\n }\n // Add default values expected by the API\n const extendedFile = extendFile(file, {\n internalStatusReasonCode: statusCode,\n uploadState: (abort ? 'aborted' : 'local') as UploadState,\n })\n\n // Emit initial local upload event\n this.stateChange.emit({\n uploadState: 'local',\n fileName: extendedFile.fileName,\n })\n\n if (abort) {\n // Emit aborted upload event\n this.stateChange.emit({\n uploadState: 'aborted',\n fileName: extendedFile.fileName,\n status: 'aborted',\n internalStatusReasonCode: statusCode,\n })\n }\n\n return extendedFile\n })\n\n // Append to previous files\n let i = 0\n for (const file of extendedFiles) {\n // If multiple or list is false append only file then break loop\n if ((!this.multiple || !this.list) && i >= 1) break\n this.lastFile = file\n this.files.set(file.id, file)\n i++\n }\n\n // Clear file input so that same file can be uploaded\n if (\n event.target &&\n event.target instanceof HTMLInputElement &&\n event.target.files\n ) {\n event.target.value = ''\n }\n\n this.onSubmit()\n }\n }\n\n /** @internal Event trigger for when delete button is pressed */\n onRemove(id: string, state: UploadState): void {\n // Only allow removal in certain states\n if (!this.service || this.disableRemove.includes(state)) return\n const file = this.files.get(id)\n if (!file) return\n // Skip confirmation for aborted and deleted files\n if (\n file.uploadState === 'error' ||\n file.uploadState === 'aborted' ||\n file.uploadState === 'deleted'\n ) {\n this.onConfirmRemove({ original: undefined, payload: file })\n } else {\n this.markedForDeletion = file\n this.deleteModalRef.open()\n }\n }\n\n /** @internal */\n onConfirmRemove(event: DialogEvent<LocalFile & APIFile>) {\n const { payload: file } = event\n if (!file || !this.service) return\n\n // Abort upload and set local state to aborted to inform user\n switch (file.uploadState) {\n case 'local':\n case 'uploading':\n file.uploadRequests?.unsubscribe()\n file.uploadState = 'aborted'\n file.internalStatusReasonCode = 'MFEFHM004'\n this.stateChange.emit(\n pick(\n file,\n 'uploadState',\n 'fileName',\n 'status',\n 'internalStatusReasonCode',\n ),\n )\n break\n\n // Remove file from service then set local state to aborted to inform user\n case 'uploaded':\n case 'validating':\n this.service\n .removeFile(file.id)\n .subscribe({\n error: console.warn,\n })\n .add(() => {\n // Abort regardless of response from server\n file.uploadRequests?.unsubscribe()\n file.uploadState = 'aborted'\n file.internalStatusReasonCode = 'MFEFHM005'\n this.stateChange.emit(\n pick(\n file,\n 'uploadState',\n 'fileName',\n 'status',\n 'internalStatusReasonCode',\n ),\n )\n })\n break\n\n // Remove file from service then locally for \"completed\" states\n case 'error':\n case 'done':\n ;(this.service.removeFileFor\n ? this.service.removeFileFor(file)\n : this.service.removeFile(file.id)\n )\n .subscribe({\n error: console.warn,\n })\n .add(() => {\n // Remove regardless of response from server\n this.files.delete(file.id)\n const event = pick(\n file,\n 'uploadState',\n 'fileName',\n 'id',\n 'status',\n 'internalStatusReasonCode',\n 'statusReasonInformation',\n )\n event.uploadState = 'deleted'\n this.stateChange.emit(event)\n })\n break\n\n // Just remove the file locally to clean up\n case 'aborted':\n case 'deleted':\n default:\n this.files.delete(file.id)\n this.stateChange.emit({\n ...pick(\n file,\n 'uploadState',\n 'fileName',\n 'id',\n 'status',\n 'internalStatusReasonCode',\n 'statusReasonInformation',\n ),\n uploadState: 'deleted',\n })\n break\n }\n }\n\n /** @internal Event handler for when the files should be uploaded */\n onSubmit() {\n if (!this.files || !this.service) return\n // If list is not enabled update the component state to show progress\n if (!this.list) this.componentState = 'uploading'\n this.loading = true\n this.files.forEach((file) => {\n // Filter out all files that aren't currently considered local\n if (!file.raw || file.uploadState !== 'local') return\n file.uploadRequests = this.service!.uploadFile(file.raw!).subscribe({\n next: (event) => {\n switch (event.type) {\n case HttpEventType.UploadProgress:\n // Update upload progress\n if (file.uploadState !== 'uploading') {\n file.uploadState = 'uploading'\n this.stateChange.emit(pick(file, 'uploadState', 'fileName'))\n }\n file.progress = Math.round(\n (100 * event.loaded) / (event.total || 100),\n )\n file.uploadState = 'uploading'\n break\n\n case HttpEventType.Response:\n if (event.body?.id) {\n // Remove old file id\n this.files.delete(file.id)\n // Update file with information from the API\n Object.assign(file, event.body)\n file.progress = 100\n file.uploadState = this.determineUploadState(file.status)\n // Update with new file id\n this.files.set(file.id, file)\n }\n\n this.stateChange.emit(\n pick(\n file,\n 'uploadState',\n 'fileName',\n 'id',\n 'status',\n 'statusReasonInformation',\n ),\n )\n\n // Check if validation is required, then start polling\n if (\n file.uploadState === 'uploaded' ||\n file.uploadState === 'validating'\n ) {\n this.checkValidity(file, this.throttle)\n } else this.setComponentStateDone()\n this.loading = false\n break\n }\n },\n error: (error) => {\n console.warn(error)\n file.uploadState = 'aborted'\n file.status = 'aborted'\n // todo: wrong\n file.statusReasonInformation = [\n { originatorId: 'local', reason: 'dragDrop.error.MFEFHM001' },\n ]\n this.stateChange.emit(\n pick(\n file,\n 'uploadState',\n 'fileName',\n 'id',\n 'status',\n 'statusReasonInformation',\n ),\n )\n this.loading = false\n },\n })\n })\n }\n\n /**\n * @internal\n * Using the state map convert `apiFile.state` to one of {@link UploadState}\n * @param apiState the state given by the file to be used for mapping\n */\n determineUploadState(apiState: string): UploadState {\n // Reverse so that later states override earlier\n const stateEntries = Object.entries(this.stateMap).reverse()\n for (const [uploadState, apiStates] of stateEntries) {\n if (this.uploadStateIsArray(apiStates)) {\n if (apiStates.includes(apiState)) return uploadState as any\n } else {\n if (apiStates === apiState) return uploadState as any\n }\n }\n return 'error'\n }\n\n /** @internal */\n uploadStateIsArray(state: string | string[]): state is string[] {\n return Array.isArray(state)\n }\n\n /** @internal used for translation templating parameters */\n translateParams(file: LocalFile & APIFile) {\n return { ...file, fileLimit: (this.fileLimit / 1024 / 1024).toFixed(3) }\n }\n\n /**\n * Poll the status endpoint to determine when file is valid\n * @param file file used to check state and update\n * @param delay how long each interval should wait before sending a request\n */\n private checkValidity(file: LocalFile & APIFile, delay: number) {\n if (!this.service) return\n file.uploadRequests = timer(0, delay)\n .pipe(\n switchMap(() => {\n const asyncFetchStatus =\n this.service && this.service.fetchStatusFor\n ? this.service.fetchStatusFor(file)\n : this.service!.fetchStatus(file.id)\n return asyncFetchStatus\n }),\n retryWhen(\n retryStrategy({\n maxRetryAttempts: this.retryAttempts,\n }),\n ),\n tap((fileStatus) => {\n // Continuously update file state to show step progress\n if (fileStatus) {\n // Emit event when status changes\n if (file.status !== fileStatus.status) {\n file.status = fileStatus.status\n file.internalStatusReasonCode = this.fallbackError(\n fileStatus.internalStatusReasonCode,\n )\n file.statusReasonInformation = fileStatus.statusReasonInformation\n file.uploadState = this.determineUploadState(fileStatus.status)\n this.stateChange.emit(\n pick(\n file,\n 'uploadState',\n 'fileName',\n 'id',\n 'status',\n 'internalStatusReasonCode',\n 'statusReasonInformation',\n ),\n )\n }\n }\n }),\n // Remove validation state\n filter(\n (apiFile) =>\n !!apiFile &&\n this.determineUploadState(apiFile.status) !== 'uploaded' &&\n this.determineUploadState(apiFile.status) !== 'validating',\n ),\n // Take first state after validation\n take(1),\n )\n .subscribe({\n next: () => {\n if (this.allValidationDone(this.files)) {\n this.setComponentStateDone()\n }\n },\n error: (err) => {\n console.warn(err)\n file.uploadState = 'aborted'\n file.status = 'aborted'\n file.internalStatusReasonCode = 'MFEFHM001'\n this.stateChange.emit(\n pick(\n file,\n 'uploadState',\n 'fileName',\n 'id',\n 'status',\n 'internalStatusReasonCode',\n ),\n )\n this.setComponentStateDone()\n },\n })\n }\n\n private fallbackError(code: string | null | undefined): string | null {\n if (this.errorCodes == null || (code && this.errorCodes.includes(code))) {\n return code ?? null\n } else {\n return 'MFEFHM001'\n }\n }\n\n /**\n * Check so that no files are still validating\n */\n private allValidationDone(files: Map<string, LocalFile>) {\n return Array.from(files.values()).every(\n (file) => file.uploadState !== 'validating',\n )\n }\n\n /**\n * Check so that no files are still uploading\n */\n private allUploadingDone(files: Map<string, LocalFile>) {\n return Array.from(files.values()).every(\n (file) => file.uploadState !== 'uploading',\n )\n }\n\n /**\n * Helper to update the component state to done and then back to normal\n */\n private setComponentStateDone() {\n if (!this.list) this.componentState = 'done'\n setTimeout(() => {\n if (this.componentState === 'done') this.componentState = 'normal'\n }, 3000)\n }\n}\n","<ng-container *transloco=\"let t\">\n <form enctype=\"multipart/form-data\" #dragDropForm>\n <div class=\"gds-drag-drop\">\n <input\n class=\"gds-drag-drop__input\"\n id=\"drag-drop\"\n type=\"file\"\n [accept]=\"accept\"\n [multiple]=\"multiple && list\"\n (change)=\"onDrop($event)\"\n />\n <label\n [ngClass]=\"{\n 'gds-drag-drop__label': true,\n 'gds-drag-drop__label--above': componentState === 'over',\n }\"\n for=\"drag-drop\"\n [attr.data-thook]=\"thook + '-picker'\"\n [attr.aria-busy]=\"loading\"\n (dragenter)=\"onDragEnter($event)\"\n (dragover)=\"onDragEnter($event)\"\n (dragleave)=\"onDragLeave($event)\"\n (dragend)=\"onDragLeave($event)\"\n (drop)=\"onDrop($event)\"\n [ngSwitch]=\"componentState\"\n >\n <!-- COMPONENT STATE NORMAL -->\n <ng-template [ngSwitchCase]=\"'normal'\">\n <gds-icon-cloud-upload *nggCoreElement></gds-icon-cloud-upload\n ><em>{{ t('dragDrop.label.fileChoose') }}</em>\n <ng-template [ngIf]=\"isDragDropAvailable\">\n {{ t('dragDrop.label.fileDrag') }}</ng-template\n >\n </ng-template>\n\n <!-- COMPONENT STATE OVER -->\n <ng-template [ngSwitchCase]=\"'over'\">\n <gds-icon-cloud-upload *nggCoreElement></gds-icon-cloud-upload\n >{{ t('dragDrop.label.fileDrop') }}\n </ng-template>\n\n <!-- COMPONENT STATE UPLOADING -->\n <ng-template [ngSwitchCase]=\"'uploading'\">\n <strong class=\"filename\">{{ lastFile?.fileName }}</strong>\n\n <!-- UPLOADING STATE -->\n <ng-template [ngIf]=\"lastFile?.uploadState === 'uploading'\">\n <ng-template\n [ngTemplateOutlet]=\"progressTemplate\"\n [ngTemplateOutletContext]=\"{\n file: lastFile,\n }\"\n ></ng-template>\n </ng-template>\n\n <!-- UPLOADED STATE -->\n <ng-template [ngIf]=\"lastFile?.uploadState === 'uploaded'\">\n <ng-template\n [ngTemplateOutlet]=\"progressTemplate\"\n [ngTemplateOutletContext]=\"{\n file: lastFile,\n text: t('dragDrop.text.fileStateUploaded'),\n }\"\n ></ng-template>\n </ng-template>\n\n <!-- VALIDATING STATE -->\n <ng-template [ngIf]=\"lastFile?.uploadState === 'validating'\">\n <ng-template\n [ngTemplateOutlet]=\"progressTemplate\"\n [ngTemplateOutletContext]=\"{\n file: lastFile,\n text: t('dragDrop.text.fileStateValidating'),\n }\"\n ></ng-template>\n </ng-template>\n </ng-template>\n\n <!-- COMPONENT STATE DONE -->\n <ng-template [ngSwitchCase]=\"'done'\">\n {{ t('dragDrop.label.fileUploaded', { filename: lastFile?.fileName })\n }}<gds-icon-checkmark *nggCoreElement></gds-icon-checkmark>\n </ng-template>\n </label>\n\n <!-- LIST -->\n <table\n class=\"gds-table file-list\"\n [attr.data-thook]=\"thook + '-file-list'\"\n *ngIf=\"list\"\n >\n <thead>\n <tr>\n <th *ngIf=\"selectable\">\n <div class=\"gds-field-checkbox-wrap\">\n <input\n type=\"checkbox\"\n aria-label=\"Field label\"\n id=\"select-all\"\n />\n <label for=\"select-all\"></label>\n </div>\n </th>\n <th class=\"gds-table__primary-col col-name\">\n {{ t('dragDrop.label.fileName') }}\n </th>\n <th class=\"col-status\">\n {{ t('dragDrop.label.fileStatus') }}\n </th>\n <th class=\"col-actions\"></th>\n </tr>\n </thead>\n <tbody>\n <tr\n [attr.data-thook]=\"thook + '-file'\"\n *ngFor=\"let file of files | value\"\n >\n <td *ngIf=\"selectable\">\n <div class=\"gds-field-checkbox-wrap\">\n <input\n type=\"checkbox\"\n aria-label=\"Field label\"\n [id]=\"'file-checkbox-' + file.id\"\n />\n <label [for]=\"'file-checkbox-' + file.id\"></label>\n </div>\n </td>\n <td\n class=\"gds-table__primary-col\"\n [attr.data-thook]=\"thook + '-file-name'\"\n >\n {{ file.fileName }}\n </td>\n <td\n [attr.data-thook]=\"thook + '-file-status'\"\n [ngSwitch]=\"file.uploadState\"\n >\n <!-- UPLOADING STATE -->\n <ng-template [ngSwitchCase]=\"'uploading'\">\n <ng-template\n [ngTemplateOutlet]=\"progressTemplate\"\n [ngTemplateOutletContext]=\"{\n file: file,\n }\"\n ></ng-template>\n </ng-template>\n\n <!-- UPLOADED STATE -->\n <ng-template [ngSwitchCase]=\"'uploaded'\">\n <ng-template\n [ngTemplateOutlet]=\"progressTemplate\"\n [ngTemplateOutletContext]=\"{\n file: file,\n text: t('dragDrop.text.fileStateUploaded'),\n }\"\n ></ng-template>\n </ng-template>\n\n <!-- VALIDATING STATE -->\n <ng-template [ngSwitchCase]=\"'validating'\">\n <ng-template\n [ngTemplateOutlet]=\"progressTemplate\"\n [ngTemplateOutletContext]=\"{\n file: file,\n text: t('dragDrop.text.fileStateValidating'),\n }\"\n ></ng-template>\n </ng-template>\n\n <!-- ABORTED STATE -->\n <ng-template [ngSwitchCase]=\"'aborted'\">\n <span\n class=\"error-text\"\n [transloco]=\"\n 'dragDrop.error.' + file.internalStatusReasonCode\n \"\n [translocoParams]=\"translateParams(file)\"\n *ngIf=\"file.internalStatusReasonCode\"\n ></span>\n </ng-template>\n\n <!-- ERROR STATE -->\n <ng-template [ngSwitchCase]=\"'error'\">\n <span\n class=\"error-text\"\n [transloco]=\"\n 'dragDrop.error.' + file.internalStatusReasonCode\n \"\n [translocoParams]=\"translateParams(file)\"\n *ngIf=\"file.internalStatusReasonCode\"\n ></span>\n <br />\n <a\n (click)=\"detailsClick.emit(file)\"\n style=\"cursor: pointer\"\n *ngIf=\"\n file.statusReasonInformation &&\n file.statusReasonInformation.length\n \"\n >\n {{ t('dragDrop.link.viewDetails') }}\n </a>\n </ng-template>\n\n <!-- DONE STATE -->\n <ng-template [ngSwitchCase]=\"'done'\">\n <span class=\"success-text\">{{\n t('dragDrop.text.fileStateDone')\n }}</span>\n </ng-template>\n </td>\n\n <td class=\"gds-table__numeric-col\">\n <a\n class=\"remove\"\n tabindex=\"0\"\n (click)=\"onRemove(file.id, file.uploadState)\"\n *ngIf=\"!disableRemove.includes(file.uploadState)\"\n >\n <gds-icon-cross-small *nggCoreElement></gds-icon-cross-small>\n </a>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n </form>\n\n <nggv-dialog\n #deleteModalRef\n [title]=\"t('dragDrop.text.fileCancelModalTitle')\"\n [content]=\"\n t('dragDrop.text.fileCancelModalContent', {\n name: markedForDeletion?.fileName,\n })\n \"\n [payload]=\"markedForDeletion\"\n [buttons]=\"{\n negative: 'dragDrop.text.fileCancelConfirm',\n positive: 'dragDrop.text.fileCancelDeny',\n }\"\n (nggvNegativeEvent)=\"onConfirmRemove($any($event))\"\n ></nggv-dialog>\n\n <!-- PROGRESS TEMPLATE -->\n\n <ng-template\n #progressTemplate\n let-file=\"\n file\"\n let-text=\"text\"\n >\n <div class=\"progress-wrapper\">\n <progress\n class=\"gds-progress-bar progress\"\n max=\"100\"\n [value]=\"file.progress\"\n >\n {{\n t('dragDrop.text.fileStateUploading', {\n uploaded:\n (file.raw?.size * (file.progress / 100)) / 1024 | number: '0.0-0',\n size: file.raw?.size / 1024 | number: '0.0-0',\n progress: file.progress,\n unit: 'kB',\n })\n }}\n </progress>\n <ng-template [ngIf]=\"stateMap.validating.length\">\n <div\n class=\"gds-progress-indicator indicator\"\n *ngIf=\"uploadStateIsArray(stateMap.validating); else singleValidation\"\n >\n <div\n class=\"gds-progress-indicator__step\"\n [class.-done]=\"i <= stateMap.validating.indexOf(file.status)\"\n *ngFor=\"let state of stateMap.validating; let i = index\"\n ></div>\n </div>\n </ng-template>\n <ng-template #singleValidation>\n <div class=\"gds-progress-indicator indicator\">\n <!-- eslint-disable @angular-eslint/template/eqeqeq -->\n <div\n class=\"gds-progress-indicator__step\"\n [class.-done]=\"file.status == stateMap.validating\"\n ></div>\n <!-- eslint-enable @angular-eslint/template/eqeqeq -->\n </div>\n </ng-template>\n </div>\n <span class=\"progress-text\">\n {{\n text ||\n t('dragDrop.text.fileStateUploading', {\n uploaded:\n (file.raw?.size * (file.progress / 100)) / 1024 | number: '0.0-0',\n size: file.raw?.size / 1024 | number: '0.0-0',\n progress: file.progress,\n unit: 'kB',\n })\n }}\n </span>\n </ng-template>\n</ng-container>\n","import { CommonModule } from '@angular/common'\nimport { HttpClientModule } from '@angular/common/http'\nimport { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'\nimport { TRANSLOCO_SCOPE, TranslocoModule } from '@jsverse/transloco'\n\nimport { NggCoreWrapperModule } from '@sebgroup/green-angular/src/lib/shared'\nimport { NggvModalModule } from '@sebgroup/green-angular/src/v-angular/modal'\nimport { NggvDragDropComponent } from './drag-drop.component'\nimport { ValuePipe } from './drag-drop.pipes'\n\n@NgModule({\n imports: [\n HttpClientModule,\n TranslocoModule,\n NggvModalModule,\n NggCoreWrapperModule,\n CommonModule,\n ],\n declarations: [ValuePipe, NggvDragDropComponent],\n providers: [\n {\n provide: TRANSLOCO_SCOPE,\n useValue: 'dragDrop',\n },\n ],\n exports: [NggvDragDropComponent],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NggvDragDropModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i5.ValuePipe"],"mappings":"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"}
1
+ {"version":3,"file":"sebgroup-green-angular-src-v-angular-drag-drop.mjs","sources":["../../../../libs/angular/src/v-angular/drag-drop/drag-drop.utils.ts","../../../../libs/angular/src/v-angular/drag-drop/drag-drop.pipes.ts","../../../../libs/angular/src/v-angular/drag-drop/drag-drop.component.ts","../../../../libs/angular/src/v-angular/drag-drop/drag-drop.component.html","../../../../libs/angular/src/v-angular/drag-drop/drag-drop.module.ts","../../../../libs/angular/src/v-angular/drag-drop/sebgroup-green-angular-src-v-angular-drag-drop.ts"],"sourcesContent":["/* eslint-disable no-console */\nimport { Observable, throwError, timer } from 'rxjs'\nimport { finalize, mergeMap } from 'rxjs/operators'\n\nimport { APIFile, LocalFile } from './drag-drop.models'\n\n/**\n * Helper to extend the base file with {@link APIFile} defaults\n * @param file file base that will be extended with {@link APIFile} defaults\n * @param data extra data to override defaults\n */\nexport const extendFile = (\n file: File | undefined,\n ...data: Array<Partial<Omit<LocalFile, 'raw'> & APIFile>>\n): LocalFile & APIFile => {\n return Object.assign(\n {\n id: file ? btoa(file.name) : '',\n fileName: file ? file.name : 'na',\n status: '',\n statusReasonInformation: null,\n principal: '',\n uploadDate: (file\n ? new Date(file.lastModified)\n : new Date()\n ).toISOString(),\n registrarId: '',\n registrarName: '',\n progress: 0,\n uploadState: 'local',\n uploadRequests: undefined,\n raw: file,\n } as LocalFile & APIFile,\n ...data,\n )\n}\n\n/**\n * Checks if file matches allowed mime types\n * @param type file mime type\n * @param accept allowed mime types\n */\nexport const verifyAccept = (type: string, accept?: string) => {\n if (!accept) return true\n const regex = new RegExp(accept.replace(/\\*/g, '.*').replace(/\\s*,\\s*/g, '|'))\n return regex.test(type)\n}\n\n/**\n * Determines if browser supports drag and drop\n */\nexport const isDragDropAvailable = () => {\n const div = document.createElement('div')\n return (\n ('draggable' in div || ('ondragstart' in div && 'ondrop' in div)) &&\n 'FormData' in window &&\n 'FileReader' in window\n )\n}\n\n/**\n * Pick only specified keys from a given object\n * @param keys keys to pick from a given object\n * @param object to extract keys from\n */\nexport const pick = <T, K extends keyof T>(\n object: T,\n ...keys: K[]\n): Pick<T, K> => {\n const copy: any = {}\n keys.forEach((key) => {\n copy[key] = object[key]\n })\n return copy\n}\n\n/**\n * Will retry running the observable when an error occurs to a maximum limit, increasing delay between executions.\n * @param options specifies number of retries, scaling duration and statuses to exclude\n */\nexport const retryStrategy =\n ({\n maxRetryAttempts = 3,\n scalingDuration = 1000,\n excludedStatusCodes = [],\n }: {\n maxRetryAttempts?: number\n scalingDuration?: number\n excludedStatusCodes?: number[]\n } = {}) =>\n (attempts: Observable<any>) => {\n return attempts.pipe(\n mergeMap((error, i) => {\n const retryAttempt = i + 1\n // if maximum number of retries have been met\n // or response is a status code we don't wish to retry, throw error\n if (\n retryAttempt > maxRetryAttempts ||\n excludedStatusCodes.find((e) => e === error.status)\n ) {\n return throwError(() => error)\n }\n console.warn(\n `Attempt ${retryAttempt}: retrying in ${retryAttempt * scalingDuration}ms`,\n )\n return timer(retryAttempt * scalingDuration)\n }),\n finalize(() =>\n console.warn(\n `Failed after ${maxRetryAttempts} retry attempts, standing down.`,\n ),\n ),\n )\n }\n","import {\n inject,\n KeyValueChangeRecord,\n KeyValueChanges,\n KeyValueDiffer,\n KeyValueDiffers,\n Pipe,\n PipeTransform,\n} from '@angular/core'\n\n@Pipe({\n name: 'value', pure: false,\n standalone: false\n})\nexport class ValuePipe implements PipeTransform {\n constructor(private readonly differs: KeyValueDiffers) {}\n\n private differ!: KeyValueDiffer<any, any>\n private values: Array<any> = []\n\n transform<K, V>(input: null): null\n transform<V>(input: { [key: string]: V } | Map<string, V>): Array<V>\n transform<V>(\n input: { [key: string]: V } | Map<string, V> | null,\n ): Array<V> | null\n transform<K, V>(input: Map<K, V>): Array<V>\n transform<K, V>(input: Map<K, V> | null): Array<V> | null\n transform<K, V>(\n input: null | { [key: string]: V; [key: number]: V } | Map<K, V>,\n ): Array<V> | null {\n if (!input || (!(input instanceof Map) && typeof input !== 'object')) {\n return null\n }\n\n if (!this.differ) {\n // make a differ for whatever type we've been passed in\n this.differ = this.differs.find(input).create()\n }\n\n const differChanges: KeyValueChanges<K, V> | null = this.differ.diff(\n input as any,\n )\n\n if (differChanges) {\n this.values = []\n differChanges.forEachItem((r: KeyValueChangeRecord<K, V>) => {\n this.values.push(r.currentValue)\n })\n }\n return this.values\n }\n}\n\n/**\n * Stand-alone version of existing value pipe.\n *\n * Impure flag needed due to keep track of changes in complex values (such as objects or arrays).\n */\n@Pipe({\n name: 'valueImpure',\n pure: false,\n standalone: true,\n})\nexport class ValueImpurePipe implements PipeTransform {\n private readonly differs = inject(KeyValueDiffers)\n\n private differ!: KeyValueDiffer<any, any>\n private values: Array<any> = []\n\n transform<K, V>(input: null): null\n transform<V>(input: { [key: string]: V } | Map<string, V>): Array<V>\n transform<V>(\n input: { [key: string]: V } | Map<string, V> | null,\n ): Array<V> | null\n transform<K, V>(input: Map<K, V>): Array<V>\n transform<K, V>(input: Map<K, V> | null): Array<V> | null\n transform<K, V>(\n input: null | { [key: string]: V; [key: number]: V } | Map<K, V>,\n ): Array<V> | null {\n if (!input || (!(input instanceof Map) && typeof input !== 'object')) {\n return null\n }\n\n if (!this.differ) {\n // make a differ for whatever type we've been passed in\n this.differ = this.differs.find(input).create()\n }\n\n const differChanges: KeyValueChanges<K, V> | null = this.differ.diff(\n input as any,\n )\n\n if (differChanges) {\n this.values = []\n differChanges.forEachItem(\n ({ currentValue }: KeyValueChangeRecord<K, V>) => {\n this.values.push(currentValue)\n },\n )\n }\n return this.values\n }\n}\n","/* eslint-disable no-console */\nimport { HttpEventType } from '@angular/common/http'\nimport {\n Component,\n EventEmitter,\n HostBinding,\n HostListener,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core'\nimport { timer } from 'rxjs'\nimport { filter, retryWhen, switchMap, take, tap } from 'rxjs/operators'\n\nimport {\n DialogEvent,\n NggvDialogComponent,\n} from '@sebgroup/green-angular/src/v-angular/modal'\nimport {\n extendFile,\n isDragDropAvailable,\n pick,\n retryStrategy,\n verifyAccept,\n} from './drag-drop.utils'\n\nimport type {\n APIFile,\n EventStateChange,\n FileService,\n LocalFile,\n StateMap,\n UploadState,\n} from './drag-drop.models'\n\nimport '@sebgroup/green-core/components/icon/icons/cloud-upload.js'\nimport '@sebgroup/green-core/components/icon/icons/cross-small.js'\nimport '@sebgroup/green-core/components/icon/icons/checkmark.js'\n\nexport type DragDropState = 'normal' | 'over' | 'uploading' | 'done'\n\n@Component({\n selector: 'nggv-drag-drop',\n templateUrl: './drag-drop.component.html',\n styleUrls: ['./drag-drop.component.scss'],\n standalone: false\n})\nexport class NggvDragDropComponent implements OnInit, OnDestroy {\n /** @internal */\n @ViewChild('deleteModalRef') deleteModalRef!: NggvDialogComponent\n\n /** Special property used for selecting DOM elements during automated UI testing. */\n @HostBinding('attr.data-thook') @Input() thook: string | null | undefined =\n 'drag-drop'\n\n /** Allowing selecting or dropping multiple files. */\n @Input() service: FileService | undefined\n\n /** Mime types allowed. */\n @Input() accept?: string\n\n /** Disables deletion or cancellation during defined states [local | uploading | aborted | uploaded | validating | error | deleted | done]. */\n @Input() disableRemove: UploadState[] = []\n\n /** File size limit in mega bytes. */\n @Input() fileLimit: number = 250 * 1024 * 1024\n\n /** Allowing selecting or dropping multiple files. */\n @Input() multiple = true\n\n /** Determines if list should be shown under upload, disabling list disables multiple upload. */\n @Input() list = true\n\n /** Frequency of requests which to send to the API requesting status updates. */\n @Input() throttle = 5000\n\n /** Maximum number of attempts to request a status update from the API if service is unreachable. */\n @Input() retryAttempts = 5\n\n /** If selection of multiple file should be possible with a checkbox.\n * @experimental work in progress and should not yet be used.\n * @internal\n */\n @Input() selectable = false\n\n /** Allows multiple values from `apiFile.status` to be mapped to a single file upload state. */\n @Input() stateMap: StateMap = {\n local: 'local',\n uploading: 'uploading',\n aborted: 'aborted',\n uploaded: 'uploaded',\n validating: 'validating',\n error: 'error',\n deleted: 'deleted',\n done: 'done',\n }\n\n /** Statuses allowed to be fetch during the initial load. Used to hide \"done\" states from list. */\n @Input() fetchStatuses: string[] = []\n\n /** Statuses allowed be shown when status is \"rejected\". Will fallback to generic message. `null` allows all. */\n @Input() errorCodes: string[] | null = null\n\n /** Event triggered on initialization and every time the \"uploadState\" for a file changes. */\n @Output() stateChange = new EventEmitter<EventStateChange>()\n\n /** Event triggered when view details is clicked. */\n @Output() detailsClick = new EventEmitter<LocalFile & APIFile>()\n\n /** @internal */\n isDragDropAvailable = isDragDropAvailable()\n /** @internal */\n componentState: DragDropState = 'normal'\n /** @internal */\n files: Map<string, LocalFile & APIFile> = new Map()\n /** @internal */\n lastFile: (LocalFile & APIFile) | undefined\n /** @internal */\n selected: string[] = []\n /** @internal */\n loading = false\n /** @internal */\n markedForDeletion: APIFile | undefined\n\n /**\n * Initialize the component and warn if service is not defined. Will also fetch files for the list if enabled.\n */\n ngOnInit() {\n if (!this.service) {\n return console.error(\n 'Drag and drop component will not work without the [service] property defined!',\n )\n }\n\n if (this.list) {\n this.service.fetchFiles(this.fetchStatuses).subscribe((apiFiles) => {\n for (const apiFile of apiFiles) {\n const extendedFile = extendFile(undefined, apiFile, {\n progress: 100,\n uploadState: this.determineUploadState(apiFile.status),\n internalStatusReasonCode: this.fallbackError(\n apiFile.internalStatusReasonCode,\n ),\n })\n this.files.set(extendedFile.id, extendedFile)\n this.stateChange.emit(\n pick(\n extendedFile,\n 'uploadState',\n 'fileName',\n 'id',\n 'status',\n 'internalStatusReasonCode',\n 'statusReasonInformation',\n ),\n )\n\n // Check if validation is required, then start polling\n if (\n extendedFile.uploadState === 'uploaded' ||\n extendedFile.uploadState === 'validating'\n ) {\n this.checkValidity(extendedFile, this.throttle)\n }\n }\n })\n }\n }\n\n /** Destroy all event listeners and polling running */\n ngOnDestroy() {\n this.files.forEach((file) => {\n file.uploadRequests?.unsubscribe()\n if (file.uploadState === 'uploading') {\n file.uploadState = 'aborted'\n file.internalStatusReasonCode = 'MFEFHM004'\n this.stateChange.emit(\n pick(\n file,\n 'uploadState',\n 'fileName',\n 'status',\n 'internalStatusReasonCode',\n ),\n )\n }\n })\n }\n\n /** @internal Warn user trying to leave page before all uploads are done. Custom message only works in older browsers. */\n @HostListener('window:beforeunload', ['$event'])\n onBeforeUnload(event: Event) {\n if (!this.allUploadingDone(this.files)) {\n const confirmationMessage = `You still have files uploading, are you sure you want to leave this page?`\n ;((event as any) || (window.event as any)).returnValue =\n confirmationMessage\n return confirmationMessage\n }\n return\n }\n\n /* Drag & Drop Events */\n\n /** @internal Event handler for when a file is held over the drop area */\n onDragEnter(event: DragEvent): void {\n if (!this.service) return\n event.preventDefault()\n // Update the visual state\n this.componentState = 'over'\n }\n\n /** @internal Event handler for when a file leaves the drop area */\n onDragLeave(event: DragEvent): void {\n if (!this.service) return\n event.preventDefault()\n this.componentState = 'normal'\n }\n\n /** @internal Event handler for when a file is dropped on the drop area or when `input` files are selected */\n onDrop(event: DragEvent | Event): void {\n if (!this.service) return\n event.preventDefault()\n this.componentState = 'normal'\n\n let files: FileList | undefined\n\n // Determine if files are from the drop event or input element\n if (event instanceof DragEvent && event.dataTransfer) {\n files = event.dataTransfer.files\n } else if (\n event.target &&\n event.target instanceof HTMLInputElement &&\n event.target.files\n ) {\n files = event.target.files\n }\n\n if (files) {\n const extendedFiles = Array.from(files, (file) => {\n let abort = false\n let statusCode: string | null = null\n // Check if file size is larger than limit\n if (file.size > this.fileLimit) {\n abort = true\n statusCode = 'MFEFHM003'\n }\n // Check if file type is not acceptable\n if (!verifyAccept(file.type, this.accept)) {\n abort = true\n statusCode = 'MFEFHM002'\n }\n // Add default values expected by the API\n const extendedFile = extendFile(file, {\n internalStatusReasonCode: statusCode,\n uploadState: (abort ? 'aborted' : 'local') as UploadState,\n })\n\n // Emit initial local upload event\n this.stateChange.emit({\n uploadState: 'local',\n fileName: extendedFile.fileName,\n })\n\n if (abort) {\n // Emit aborted upload event\n this.stateChange.emit({\n uploadState: 'aborted',\n fileName: extendedFile.fileName,\n status: 'aborted',\n internalStatusReasonCode: statusCode,\n })\n }\n\n return extendedFile\n })\n\n // Append to previous files\n let i = 0\n for (const file of extendedFiles) {\n // If multiple or list is false append only file then break loop\n if ((!this.multiple || !this.list) && i >= 1) break\n this.lastFile = file\n this.files.set(file.id, file)\n i++\n }\n\n // Clear file input so that same file can be uploaded\n if (\n event.target &&\n event.target instanceof HTMLInputElement &&\n event.target.files\n ) {\n event.target.value = ''\n }\n\n this.onSubmit()\n }\n }\n\n /** @internal Event trigger for when delete button is pressed */\n onRemove(id: string, state: UploadState): void {\n // Only allow removal in certain states\n if (!this.service || this.disableRemove.includes(state)) return\n const file = this.files.get(id)\n if (!file) return\n // Skip confirmation for aborted and deleted files\n if (\n file.uploadState === 'error' ||\n file.uploadState === 'aborted' ||\n file.uploadState === 'deleted'\n ) {\n this.onConfirmRemove({ original: undefined, payload: file })\n } else {\n this.markedForDeletion = file\n this.deleteModalRef.open()\n }\n }\n\n /** @internal */\n onConfirmRemove(event: DialogEvent<LocalFile & APIFile>) {\n const { payload: file } = event\n if (!file || !this.service) return\n\n // Abort upload and set local state to aborted to inform user\n switch (file.uploadState) {\n case 'local':\n case 'uploading':\n file.uploadRequests?.unsubscribe()\n file.uploadState = 'aborted'\n file.internalStatusReasonCode = 'MFEFHM004'\n this.stateChange.emit(\n pick(\n file,\n 'uploadState',\n 'fileName',\n 'status',\n 'internalStatusReasonCode',\n ),\n )\n break\n\n // Remove file from service then set local state to aborted to inform user\n case 'uploaded':\n case 'validating':\n this.service\n .removeFile(file.id)\n .subscribe({\n error: console.warn,\n })\n .add(() => {\n // Abort regardless of response from server\n file.uploadRequests?.unsubscribe()\n file.uploadState = 'aborted'\n file.internalStatusReasonCode = 'MFEFHM005'\n this.stateChange.emit(\n pick(\n file,\n 'uploadState',\n 'fileName',\n 'status',\n 'internalStatusReasonCode',\n ),\n )\n })\n break\n\n // Remove file from service then locally for \"completed\" states\n case 'error':\n case 'done':\n ;(this.service.removeFileFor\n ? this.service.removeFileFor(file)\n : this.service.removeFile(file.id)\n )\n .subscribe({\n error: console.warn,\n })\n .add(() => {\n // Remove regardless of response from server\n this.files.delete(file.id)\n const event = pick(\n file,\n 'uploadState',\n 'fileName',\n 'id',\n 'status',\n 'internalStatusReasonCode',\n 'statusReasonInformation',\n )\n event.uploadState = 'deleted'\n this.stateChange.emit(event)\n })\n break\n\n // Just remove the file locally to clean up\n case 'aborted':\n case 'deleted':\n default:\n this.files.delete(file.id)\n this.stateChange.emit({\n ...pick(\n file,\n 'uploadState',\n 'fileName',\n 'id',\n 'status',\n 'internalStatusReasonCode',\n 'statusReasonInformation',\n ),\n uploadState: 'deleted',\n })\n break\n }\n }\n\n /** @internal Event handler for when the files should be uploaded */\n onSubmit() {\n if (!this.files || !this.service) return\n // If list is not enabled update the component state to show progress\n if (!this.list) this.componentState = 'uploading'\n this.loading = true\n this.files.forEach((file) => {\n // Filter out all files that aren't currently considered local\n if (!file.raw || file.uploadState !== 'local') return\n file.uploadRequests = this.service!.uploadFile(file.raw!).subscribe({\n next: (event) => {\n switch (event.type) {\n case HttpEventType.UploadProgress:\n // Update upload progress\n if (file.uploadState !== 'uploading') {\n file.uploadState = 'uploading'\n this.stateChange.emit(pick(file, 'uploadState', 'fileName'))\n }\n file.progress = Math.round(\n (100 * event.loaded) / (event.total || 100),\n )\n file.uploadState = 'uploading'\n break\n\n case HttpEventType.Response:\n if (event.body?.id) {\n // Remove old file id\n this.files.delete(file.id)\n // Update file with information from the API\n Object.assign(file, event.body)\n file.progress = 100\n file.uploadState = this.determineUploadState(file.status)\n // Update with new file id\n this.files.set(file.id, file)\n }\n\n this.stateChange.emit(\n pick(\n file,\n 'uploadState',\n 'fileName',\n 'id',\n 'status',\n 'statusReasonInformation',\n ),\n )\n\n // Check if validation is required, then start polling\n if (\n file.uploadState === 'uploaded' ||\n file.uploadState === 'validating'\n ) {\n this.checkValidity(file, this.throttle)\n } else this.setComponentStateDone()\n this.loading = false\n break\n }\n },\n error: (error) => {\n console.warn(error)\n file.uploadState = 'aborted'\n file.status = 'aborted'\n // todo: wrong\n file.statusReasonInformation = [\n { originatorId: 'local', reason: 'dragDrop.error.MFEFHM001' },\n ]\n this.stateChange.emit(\n pick(\n file,\n 'uploadState',\n 'fileName',\n 'id',\n 'status',\n 'statusReasonInformation',\n ),\n )\n this.loading = false\n },\n })\n })\n }\n\n /**\n * @internal\n * Using the state map convert `apiFile.state` to one of {@link UploadState}\n * @param apiState the state given by the file to be used for mapping\n */\n determineUploadState(apiState: string): UploadState {\n // Reverse so that later states override earlier\n const stateEntries = Object.entries(this.stateMap).reverse()\n for (const [uploadState, apiStates] of stateEntries) {\n if (this.uploadStateIsArray(apiStates)) {\n if (apiStates.includes(apiState)) return uploadState as any\n } else {\n if (apiStates === apiState) return uploadState as any\n }\n }\n return 'error'\n }\n\n /** @internal */\n uploadStateIsArray(state: string | string[]): state is string[] {\n return Array.isArray(state)\n }\n\n /** @internal used for translation templating parameters */\n translateParams(file: LocalFile & APIFile) {\n return { ...file, fileLimit: (this.fileLimit / 1024 / 1024).toFixed(3) }\n }\n\n /**\n * Poll the status endpoint to determine when file is valid\n * @param file file used to check state and update\n * @param delay how long each interval should wait before sending a request\n */\n private checkValidity(file: LocalFile & APIFile, delay: number) {\n if (!this.service) return\n file.uploadRequests = timer(0, delay)\n .pipe(\n switchMap(() => {\n const asyncFetchStatus =\n this.service && this.service.fetchStatusFor\n ? this.service.fetchStatusFor(file)\n : this.service!.fetchStatus(file.id)\n return asyncFetchStatus\n }),\n retryWhen(\n retryStrategy({\n maxRetryAttempts: this.retryAttempts,\n }),\n ),\n tap((fileStatus) => {\n // Continuously update file state to show step progress\n if (fileStatus) {\n // Emit event when status changes\n if (file.status !== fileStatus.status) {\n file.status = fileStatus.status\n file.internalStatusReasonCode = this.fallbackError(\n fileStatus.internalStatusReasonCode,\n )\n file.statusReasonInformation = fileStatus.statusReasonInformation\n file.uploadState = this.determineUploadState(fileStatus.status)\n this.stateChange.emit(\n pick(\n file,\n 'uploadState',\n 'fileName',\n 'id',\n 'status',\n 'internalStatusReasonCode',\n 'statusReasonInformation',\n ),\n )\n }\n }\n }),\n // Remove validation state\n filter(\n (apiFile) =>\n !!apiFile &&\n this.determineUploadState(apiFile.status) !== 'uploaded' &&\n this.determineUploadState(apiFile.status) !== 'validating',\n ),\n // Take first state after validation\n take(1),\n )\n .subscribe({\n next: () => {\n if (this.allValidationDone(this.files)) {\n this.setComponentStateDone()\n }\n },\n error: (err) => {\n console.warn(err)\n file.uploadState = 'aborted'\n file.status = 'aborted'\n file.internalStatusReasonCode = 'MFEFHM001'\n this.stateChange.emit(\n pick(\n file,\n 'uploadState',\n 'fileName',\n 'id',\n 'status',\n 'internalStatusReasonCode',\n ),\n )\n this.setComponentStateDone()\n },\n })\n }\n\n private fallbackError(code: string | null | undefined): string | null {\n if (this.errorCodes == null || (code && this.errorCodes.includes(code))) {\n return code ?? null\n } else {\n return 'MFEFHM001'\n }\n }\n\n /**\n * Check so that no files are still validating\n */\n private allValidationDone(files: Map<string, LocalFile>) {\n return Array.from(files.values()).every(\n (file) => file.uploadState !== 'validating',\n )\n }\n\n /**\n * Check so that no files are still uploading\n */\n private allUploadingDone(files: Map<string, LocalFile>) {\n return Array.from(files.values()).every(\n (file) => file.uploadState !== 'uploading',\n )\n }\n\n /**\n * Helper to update the component state to done and then back to normal\n */\n private setComponentStateDone() {\n if (!this.list) this.componentState = 'done'\n setTimeout(() => {\n if (this.componentState === 'done') this.componentState = 'normal'\n }, 3000)\n }\n}\n","<ng-container *transloco=\"let t\">\n <form enctype=\"multipart/form-data\" #dragDropForm>\n <div class=\"gds-drag-drop\">\n <input\n class=\"gds-drag-drop__input\"\n id=\"drag-drop\"\n type=\"file\"\n [accept]=\"accept\"\n [multiple]=\"multiple && list\"\n (change)=\"onDrop($event)\"\n />\n <label\n [ngClass]=\"{\n 'gds-drag-drop__label': true,\n 'gds-drag-drop__label--above': componentState === 'over',\n }\"\n for=\"drag-drop\"\n [attr.data-thook]=\"thook + '-picker'\"\n [attr.aria-busy]=\"loading\"\n (dragenter)=\"onDragEnter($event)\"\n (dragover)=\"onDragEnter($event)\"\n (dragleave)=\"onDragLeave($event)\"\n (dragend)=\"onDragLeave($event)\"\n (drop)=\"onDrop($event)\"\n [ngSwitch]=\"componentState\"\n >\n <!-- COMPONENT STATE NORMAL -->\n <ng-template [ngSwitchCase]=\"'normal'\">\n <gds-icon-cloud-upload *nggCoreElement></gds-icon-cloud-upload\n ><em>{{ t('dragDrop.label.fileChoose') }}</em>\n <ng-template [ngIf]=\"isDragDropAvailable\">\n {{ t('dragDrop.label.fileDrag') }}</ng-template\n >\n </ng-template>\n\n <!-- COMPONENT STATE OVER -->\n <ng-template [ngSwitchCase]=\"'over'\">\n <gds-icon-cloud-upload *nggCoreElement></gds-icon-cloud-upload\n >{{ t('dragDrop.label.fileDrop') }}\n </ng-template>\n\n <!-- COMPONENT STATE UPLOADING -->\n <ng-template [ngSwitchCase]=\"'uploading'\">\n <strong class=\"filename\">{{ lastFile?.fileName }}</strong>\n\n <!-- UPLOADING STATE -->\n <ng-template [ngIf]=\"lastFile?.uploadState === 'uploading'\">\n <ng-template\n [ngTemplateOutlet]=\"progressTemplate\"\n [ngTemplateOutletContext]=\"{\n file: lastFile,\n }\"\n ></ng-template>\n </ng-template>\n\n <!-- UPLOADED STATE -->\n <ng-template [ngIf]=\"lastFile?.uploadState === 'uploaded'\">\n <ng-template\n [ngTemplateOutlet]=\"progressTemplate\"\n [ngTemplateOutletContext]=\"{\n file: lastFile,\n text: t('dragDrop.text.fileStateUploaded'),\n }\"\n ></ng-template>\n </ng-template>\n\n <!-- VALIDATING STATE -->\n <ng-template [ngIf]=\"lastFile?.uploadState === 'validating'\">\n <ng-template\n [ngTemplateOutlet]=\"progressTemplate\"\n [ngTemplateOutletContext]=\"{\n file: lastFile,\n text: t('dragDrop.text.fileStateValidating'),\n }\"\n ></ng-template>\n </ng-template>\n </ng-template>\n\n <!-- COMPONENT STATE DONE -->\n <ng-template [ngSwitchCase]=\"'done'\">\n {{ t('dragDrop.label.fileUploaded', { filename: lastFile?.fileName })\n }}<gds-icon-checkmark *nggCoreElement></gds-icon-checkmark>\n </ng-template>\n </label>\n\n <!-- LIST -->\n <table\n class=\"gds-table file-list\"\n [attr.data-thook]=\"thook + '-file-list'\"\n *ngIf=\"list\"\n >\n <thead>\n <tr>\n <th *ngIf=\"selectable\">\n <div class=\"gds-field-checkbox-wrap\">\n <input\n type=\"checkbox\"\n aria-label=\"Field label\"\n id=\"select-all\"\n />\n <label for=\"select-all\"></label>\n </div>\n </th>\n <th class=\"gds-table__primary-col col-name\">\n {{ t('dragDrop.label.fileName') }}\n </th>\n <th class=\"col-status\">\n {{ t('dragDrop.label.fileStatus') }}\n </th>\n <th class=\"col-actions\"></th>\n </tr>\n </thead>\n <tbody>\n <tr\n [attr.data-thook]=\"thook + '-file'\"\n *ngFor=\"let file of files | value\"\n >\n <td *ngIf=\"selectable\">\n <div class=\"gds-field-checkbox-wrap\">\n <input\n type=\"checkbox\"\n aria-label=\"Field label\"\n [id]=\"'file-checkbox-' + file.id\"\n />\n <label [for]=\"'file-checkbox-' + file.id\"></label>\n </div>\n </td>\n <td\n class=\"gds-table__primary-col\"\n [attr.data-thook]=\"thook + '-file-name'\"\n >\n {{ file.fileName }}\n </td>\n <td\n [attr.data-thook]=\"thook + '-file-status'\"\n [ngSwitch]=\"file.uploadState\"\n >\n <!-- UPLOADING STATE -->\n <ng-template [ngSwitchCase]=\"'uploading'\">\n <ng-template\n [ngTemplateOutlet]=\"progressTemplate\"\n [ngTemplateOutletContext]=\"{\n file: file,\n }\"\n ></ng-template>\n </ng-template>\n\n <!-- UPLOADED STATE -->\n <ng-template [ngSwitchCase]=\"'uploaded'\">\n <ng-template\n [ngTemplateOutlet]=\"progressTemplate\"\n [ngTemplateOutletContext]=\"{\n file: file,\n text: t('dragDrop.text.fileStateUploaded'),\n }\"\n ></ng-template>\n </ng-template>\n\n <!-- VALIDATING STATE -->\n <ng-template [ngSwitchCase]=\"'validating'\">\n <ng-template\n [ngTemplateOutlet]=\"progressTemplate\"\n [ngTemplateOutletContext]=\"{\n file: file,\n text: t('dragDrop.text.fileStateValidating'),\n }\"\n ></ng-template>\n </ng-template>\n\n <!-- ABORTED STATE -->\n <ng-template [ngSwitchCase]=\"'aborted'\">\n <span\n class=\"error-text\"\n [transloco]=\"\n 'dragDrop.error.' + file.internalStatusReasonCode\n \"\n [translocoParams]=\"translateParams(file)\"\n *ngIf=\"file.internalStatusReasonCode\"\n ></span>\n </ng-template>\n\n <!-- ERROR STATE -->\n <ng-template [ngSwitchCase]=\"'error'\">\n <span\n class=\"error-text\"\n [transloco]=\"\n 'dragDrop.error.' + file.internalStatusReasonCode\n \"\n [translocoParams]=\"translateParams(file)\"\n *ngIf=\"file.internalStatusReasonCode\"\n ></span>\n <br />\n <a\n (click)=\"detailsClick.emit(file)\"\n style=\"cursor: pointer\"\n *ngIf=\"\n file.statusReasonInformation &&\n file.statusReasonInformation.length\n \"\n >\n {{ t('dragDrop.link.viewDetails') }}\n </a>\n </ng-template>\n\n <!-- DONE STATE -->\n <ng-template [ngSwitchCase]=\"'done'\">\n <span class=\"success-text\">{{\n t('dragDrop.text.fileStateDone')\n }}</span>\n </ng-template>\n </td>\n\n <td class=\"gds-table__numeric-col\">\n <a\n class=\"remove\"\n tabindex=\"0\"\n (click)=\"onRemove(file.id, file.uploadState)\"\n *ngIf=\"!disableRemove.includes(file.uploadState)\"\n >\n <gds-icon-cross-small *nggCoreElement></gds-icon-cross-small>\n </a>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n </form>\n\n <nggv-dialog\n #deleteModalRef\n [title]=\"t('dragDrop.text.fileCancelModalTitle')\"\n [content]=\"\n t('dragDrop.text.fileCancelModalContent', {\n name: markedForDeletion?.fileName,\n })\n \"\n [payload]=\"markedForDeletion\"\n [buttons]=\"{\n negative: 'dragDrop.text.fileCancelConfirm',\n positive: 'dragDrop.text.fileCancelDeny',\n }\"\n (nggvNegativeEvent)=\"onConfirmRemove($any($event))\"\n ></nggv-dialog>\n\n <!-- PROGRESS TEMPLATE -->\n\n <ng-template\n #progressTemplate\n let-file=\"\n file\"\n let-text=\"text\"\n >\n <div class=\"progress-wrapper\">\n <progress\n class=\"gds-progress-bar progress\"\n max=\"100\"\n [value]=\"file.progress\"\n >\n {{\n t('dragDrop.text.fileStateUploading', {\n uploaded:\n (file.raw?.size * (file.progress / 100)) / 1024 | number: '0.0-0',\n size: file.raw?.size / 1024 | number: '0.0-0',\n progress: file.progress,\n unit: 'kB',\n })\n }}\n </progress>\n <ng-template [ngIf]=\"stateMap.validating.length\">\n <div\n class=\"gds-progress-indicator indicator\"\n *ngIf=\"uploadStateIsArray(stateMap.validating); else singleValidation\"\n >\n <div\n class=\"gds-progress-indicator__step\"\n [class.-done]=\"i <= stateMap.validating.indexOf(file.status)\"\n *ngFor=\"let state of stateMap.validating; let i = index\"\n ></div>\n </div>\n </ng-template>\n <ng-template #singleValidation>\n <div class=\"gds-progress-indicator indicator\">\n <!-- eslint-disable @angular-eslint/template/eqeqeq -->\n <div\n class=\"gds-progress-indicator__step\"\n [class.-done]=\"file.status == stateMap.validating\"\n ></div>\n <!-- eslint-enable @angular-eslint/template/eqeqeq -->\n </div>\n </ng-template>\n </div>\n <span class=\"progress-text\">\n {{\n text ||\n t('dragDrop.text.fileStateUploading', {\n uploaded:\n (file.raw?.size * (file.progress / 100)) / 1024 | number: '0.0-0',\n size: file.raw?.size / 1024 | number: '0.0-0',\n progress: file.progress,\n unit: 'kB',\n })\n }}\n </span>\n </ng-template>\n</ng-container>\n","import { CommonModule } from '@angular/common'\nimport { HttpClientModule } from '@angular/common/http'\nimport { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'\nimport { TRANSLOCO_SCOPE, TranslocoModule } from '@jsverse/transloco'\n\nimport { NggCoreWrapperModule } from '@sebgroup/green-angular/src/lib/shared'\nimport { NggvModalModule } from '@sebgroup/green-angular/src/v-angular/modal'\nimport { NggvDragDropComponent } from './drag-drop.component'\nimport { ValuePipe } from './drag-drop.pipes'\n\n@NgModule({\n imports: [\n HttpClientModule,\n TranslocoModule,\n NggvModalModule,\n NggCoreWrapperModule,\n CommonModule,\n ],\n declarations: [ValuePipe, NggvDragDropComponent],\n providers: [\n {\n provide: TRANSLOCO_SCOPE,\n useValue: 'dragDrop',\n },\n ],\n exports: [NggvDragDropComponent],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NggvDragDropModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i5.ValuePipe"],"mappings":";;;;;;;;;;;;;;;;;AAAA;AAMA;;;;AAIG;AACI,MAAM,UAAU,GAAG,CACxB,IAAsB,EACtB,GAAG,IAAsD,KAClC;IACvB,OAAO,MAAM,CAAC,MAAM,CAClB;AACE,QAAA,EAAE,EAAE,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;QAC/B,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI;AACjC,QAAA,MAAM,EAAE,EAAE;AACV,QAAA,uBAAuB,EAAE,IAAI;AAC7B,QAAA,SAAS,EAAE,EAAE;QACb,UAAU,EAAE,CAAC;AACX,cAAE,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY;AAC5B,cAAE,IAAI,IAAI,EAAE,EACZ,WAAW,EAAE;AACf,QAAA,WAAW,EAAE,EAAE;AACf,QAAA,aAAa,EAAE,EAAE;AACjB,QAAA,QAAQ,EAAE,CAAC;AACX,QAAA,WAAW,EAAE,OAAO;AACpB,QAAA,cAAc,EAAE,SAAS;AACzB,QAAA,GAAG,EAAE,IAAI;KACa,EACxB,GAAG,IAAI,CACR;AACH,CAAC;AAED;;;;AAIG;AACI,MAAM,YAAY,GAAG,CAAC,IAAY,EAAE,MAAe,KAAI;AAC5D,IAAA,IAAI,CAAC,MAAM;AAAE,QAAA,OAAO,IAAI;IACxB,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;AAC9E,IAAA,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;AACzB,CAAC;AAED;;AAEG;AACI,MAAM,mBAAmB,GAAG,MAAK;IACtC,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AACzC,IAAA,QACE,CAAC,WAAW,IAAI,GAAG,KAAK,aAAa,IAAI,GAAG,IAAI,QAAQ,IAAI,GAAG,CAAC;AAChE,QAAA,UAAU,IAAI,MAAM;QACpB,YAAY,IAAI,MAAM;AAE1B,CAAC;AAED;;;;AAIG;AACI,MAAM,IAAI,GAAG,CAClB,MAAS,EACT,GAAG,IAAS,KACE;IACd,MAAM,IAAI,GAAQ,EAAE;AACpB,IAAA,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;QACnB,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC;AACzB,IAAA,CAAC,CAAC;AACF,IAAA,OAAO,IAAI;AACb,CAAC;AAED;;;AAGG;AACI,MAAM,aAAa,GACxB,CAAC,EACC,gBAAgB,GAAG,CAAC,EACpB,eAAe,GAAG,IAAI,EACtB,mBAAmB,GAAG,EAAE,GAAA,GAKtB,EAAE,KACN,CAAC,QAAyB,KAAI;IAC5B,OAAO,QAAQ,CAAC,IAAI,CAClB,QAAQ,CAAC,CAAC,KAAK,EAAE,CAAC,KAAI;AACpB,QAAA,MAAM,YAAY,GAAG,CAAC,GAAG,CAAC;;;QAG1B,IACE,YAAY,GAAG,gBAAgB;AAC/B,YAAA,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,MAAM,CAAC,EACnD;AACA,YAAA,OAAO,UAAU,CAAC,MAAM,KAAK,CAAC;QAChC;QACA,OAAO,CAAC,IAAI,CACV,CAAA,QAAA,EAAW,YAAY,CAAA,cAAA,EAAiB,YAAY,GAAG,eAAe,CAAA,EAAA,CAAI,CAC3E;AACD,QAAA,OAAO,KAAK,CAAC,YAAY,GAAG,eAAe,CAAC;AAC9C,IAAA,CAAC,CAAC,EACF,QAAQ,CAAC,MACP,OAAO,CAAC,IAAI,CACV,CAAA,aAAA,EAAgB,gBAAgB,iCAAiC,CAClE,CACF,CACF;AACH,CAAC;;MCnGU,SAAS,CAAA;AACpB,IAAA,WAAA,CAA6B,OAAwB,EAAA;QAAxB,IAAA,CAAA,OAAO,GAAP,OAAO;QAG5B,IAAA,CAAA,MAAM,GAAe,EAAE;IAHyB;AAYxD,IAAA,SAAS,CACP,KAAgE,EAAA;AAEhE,QAAA,IAAI,CAAC,KAAK,KAAK,EAAE,KAAK,YAAY,GAAG,CAAC,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,EAAE;AACpE,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;;AAEhB,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE;QACjD;QAEA,MAAM,aAAa,GAAiC,IAAI,CAAC,MAAM,CAAC,IAAI,CAClE,KAAY,CACb;QAED,IAAI,aAAa,EAAE;AACjB,YAAA,IAAI,CAAC,MAAM,GAAG,EAAE;AAChB,YAAA,aAAa,CAAC,WAAW,CAAC,CAAC,CAA6B,KAAI;gBAC1D,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC;AAClC,YAAA,CAAC,CAAC;QACJ;QACA,OAAO,IAAI,CAAC,MAAM;IACpB;8GApCW,SAAS,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAT,SAAS,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,OAAA,EAAA,IAAA,EAAA,KAAA,EAAA,CAAA,CAAA;;2FAAT,SAAS,EAAA,UAAA,EAAA,CAAA;kBAJrB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK;AAC1B,oBAAA,UAAU,EAAE;AACf,iBAAA;;AAwCD;;;;AAIG;MAMU,eAAe,CAAA;AAL5B,IAAA,WAAA,GAAA;AAMmB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,eAAe,CAAC;QAG1C,IAAA,CAAA,MAAM,GAAe,EAAE;AAmChC,IAAA;AA1BC,IAAA,SAAS,CACP,KAAgE,EAAA;AAEhE,QAAA,IAAI,CAAC,KAAK,KAAK,EAAE,KAAK,YAAY,GAAG,CAAC,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,EAAE;AACpE,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;;AAEhB,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE;QACjD;QAEA,MAAM,aAAa,GAAiC,IAAI,CAAC,MAAM,CAAC,IAAI,CAClE,KAAY,CACb;QAED,IAAI,aAAa,EAAE;AACjB,YAAA,IAAI,CAAC,MAAM,GAAG,EAAE;YAChB,aAAa,CAAC,WAAW,CACvB,CAAC,EAAE,YAAY,EAA8B,KAAI;AAC/C,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;AAChC,YAAA,CAAC,CACF;QACH;QACA,OAAO,IAAI,CAAC,MAAM;IACpB;8GAtCW,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,aAAA,EAAA,IAAA,EAAA,KAAA,EAAA,CAAA,CAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAL3B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,aAAa;AACnB,oBAAA,IAAI,EAAE,KAAK;AACX,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;;AC9DD;MAiDa,qBAAqB,CAAA;AANlC,IAAA,WAAA,GAAA;;QAW2C,IAAA,CAAA,KAAK,GAC5C,WAAW;;QASJ,IAAA,CAAA,aAAa,GAAkB,EAAE;;AAGjC,QAAA,IAAA,CAAA,SAAS,GAAW,GAAG,GAAG,IAAI,GAAG,IAAI;;QAGrC,IAAA,CAAA,QAAQ,GAAG,IAAI;;QAGf,IAAA,CAAA,IAAI,GAAG,IAAI;;QAGX,IAAA,CAAA,QAAQ,GAAG,IAAI;;QAGf,IAAA,CAAA,aAAa,GAAG,CAAC;AAE1B;;;AAGG;QACM,IAAA,CAAA,UAAU,GAAG,KAAK;;AAGlB,QAAA,IAAA,CAAA,QAAQ,GAAa;AAC5B,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,SAAS,EAAE,WAAW;AACtB,YAAA,OAAO,EAAE,SAAS;AAClB,YAAA,QAAQ,EAAE,UAAU;AACpB,YAAA,UAAU,EAAE,YAAY;AACxB,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,OAAO,EAAE,SAAS;AAClB,YAAA,IAAI,EAAE,MAAM;SACb;;QAGQ,IAAA,CAAA,aAAa,GAAa,EAAE;;QAG5B,IAAA,CAAA,UAAU,GAAoB,IAAI;;AAGjC,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAoB;;AAGlD,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAuB;;QAGhE,IAAA,CAAA,mBAAmB,GAAG,mBAAmB,EAAE;;QAE3C,IAAA,CAAA,cAAc,GAAkB,QAAQ;;AAExC,QAAA,IAAA,CAAA,KAAK,GAAqC,IAAI,GAAG,EAAE;;QAInD,IAAA,CAAA,QAAQ,GAAa,EAAE;;QAEvB,IAAA,CAAA,OAAO,GAAG,KAAK;AAygBhB,IAAA;AArgBC;;AAEG;IACH,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACjB,YAAA,OAAO,OAAO,CAAC,KAAK,CAClB,+EAA+E,CAChF;QACH;AAEA,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;AACb,YAAA,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,KAAI;AACjE,gBAAA,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;AAC9B,oBAAA,MAAM,YAAY,GAAG,UAAU,CAAC,SAAS,EAAE,OAAO,EAAE;AAClD,wBAAA,QAAQ,EAAE,GAAG;wBACb,WAAW,EAAE,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,MAAM,CAAC;wBACtD,wBAAwB,EAAE,IAAI,CAAC,aAAa,CAC1C,OAAO,CAAC,wBAAwB,CACjC;AACF,qBAAA,CAAC;oBACF,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,EAAE,YAAY,CAAC;oBAC7C,IAAI,CAAC,WAAW,CAAC,IAAI,CACnB,IAAI,CACF,YAAY,EACZ,aAAa,EACb,UAAU,EACV,IAAI,EACJ,QAAQ,EACR,0BAA0B,EAC1B,yBAAyB,CAC1B,CACF;;AAGD,oBAAA,IACE,YAAY,CAAC,WAAW,KAAK,UAAU;AACvC,wBAAA,YAAY,CAAC,WAAW,KAAK,YAAY,EACzC;wBACA,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC;oBACjD;gBACF;AACF,YAAA,CAAC,CAAC;QACJ;IACF;;IAGA,WAAW,GAAA;QACT,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AAC1B,YAAA,IAAI,CAAC,cAAc,EAAE,WAAW,EAAE;AAClC,YAAA,IAAI,IAAI,CAAC,WAAW,KAAK,WAAW,EAAE;AACpC,gBAAA,IAAI,CAAC,WAAW,GAAG,SAAS;AAC5B,gBAAA,IAAI,CAAC,wBAAwB,GAAG,WAAW;AAC3C,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CACnB,IAAI,CACF,IAAI,EACJ,aAAa,EACb,UAAU,EACV,QAAQ,EACR,0BAA0B,CAC3B,CACF;YACH;AACF,QAAA,CAAC,CAAC;IACJ;;AAIA,IAAA,cAAc,CAAC,KAAY,EAAA;QACzB,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YACtC,MAAM,mBAAmB,GAAG,CAAA,yEAAA,CAA2E;AACtG,YAAA,CAAE,KAAa,IAAK,MAAM,CAAC,KAAa,EAAE,WAAW;AACpD,gBAAA,mBAAmB;AACrB,YAAA,OAAO,mBAAmB;QAC5B;QACA;IACF;;;AAKA,IAAA,WAAW,CAAC,KAAgB,EAAA;QAC1B,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE;QACnB,KAAK,CAAC,cAAc,EAAE;;AAEtB,QAAA,IAAI,CAAC,cAAc,GAAG,MAAM;IAC9B;;AAGA,IAAA,WAAW,CAAC,KAAgB,EAAA;QAC1B,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE;QACnB,KAAK,CAAC,cAAc,EAAE;AACtB,QAAA,IAAI,CAAC,cAAc,GAAG,QAAQ;IAChC;;AAGA,IAAA,MAAM,CAAC,KAAwB,EAAA;QAC7B,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE;QACnB,KAAK,CAAC,cAAc,EAAE;AACtB,QAAA,IAAI,CAAC,cAAc,GAAG,QAAQ;AAE9B,QAAA,IAAI,KAA2B;;QAG/B,IAAI,KAAK,YAAY,SAAS,IAAI,KAAK,CAAC,YAAY,EAAE;AACpD,YAAA,KAAK,GAAG,KAAK,CAAC,YAAY,CAAC,KAAK;QAClC;aAAO,IACL,KAAK,CAAC,MAAM;YACZ,KAAK,CAAC,MAAM,YAAY,gBAAgB;AACxC,YAAA,KAAK,CAAC,MAAM,CAAC,KAAK,EAClB;AACA,YAAA,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK;QAC5B;QAEA,IAAI,KAAK,EAAE;YACT,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,KAAI;gBAC/C,IAAI,KAAK,GAAG,KAAK;gBACjB,IAAI,UAAU,GAAkB,IAAI;;gBAEpC,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE;oBAC9B,KAAK,GAAG,IAAI;oBACZ,UAAU,GAAG,WAAW;gBAC1B;;AAEA,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE;oBACzC,KAAK,GAAG,IAAI;oBACZ,UAAU,GAAG,WAAW;gBAC1B;;AAEA,gBAAA,MAAM,YAAY,GAAG,UAAU,CAAC,IAAI,EAAE;AACpC,oBAAA,wBAAwB,EAAE,UAAU;oBACpC,WAAW,GAAG,KAAK,GAAG,SAAS,GAAG,OAAO,CAAgB;AAC1D,iBAAA,CAAC;;AAGF,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AACpB,oBAAA,WAAW,EAAE,OAAO;oBACpB,QAAQ,EAAE,YAAY,CAAC,QAAQ;AAChC,iBAAA,CAAC;gBAEF,IAAI,KAAK,EAAE;;AAET,oBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AACpB,wBAAA,WAAW,EAAE,SAAS;wBACtB,QAAQ,EAAE,YAAY,CAAC,QAAQ;AAC/B,wBAAA,MAAM,EAAE,SAAS;AACjB,wBAAA,wBAAwB,EAAE,UAAU;AACrC,qBAAA,CAAC;gBACJ;AAEA,gBAAA,OAAO,YAAY;AACrB,YAAA,CAAC,CAAC;;YAGF,IAAI,CAAC,GAAG,CAAC;AACT,YAAA,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE;;AAEhC,gBAAA,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC;oBAAE;AAC9C,gBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;gBACpB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC;AAC7B,gBAAA,CAAC,EAAE;YACL;;YAGA,IACE,KAAK,CAAC,MAAM;gBACZ,KAAK,CAAC,MAAM,YAAY,gBAAgB;AACxC,gBAAA,KAAK,CAAC,MAAM,CAAC,KAAK,EAClB;AACA,gBAAA,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,EAAE;YACzB;YAEA,IAAI,CAAC,QAAQ,EAAE;QACjB;IACF;;IAGA,QAAQ,CAAC,EAAU,EAAE,KAAkB,EAAA;;AAErC,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE;QACzD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;AAC/B,QAAA,IAAI,CAAC,IAAI;YAAE;;AAEX,QAAA,IACE,IAAI,CAAC,WAAW,KAAK,OAAO;YAC5B,IAAI,CAAC,WAAW,KAAK,SAAS;AAC9B,YAAA,IAAI,CAAC,WAAW,KAAK,SAAS,EAC9B;AACA,YAAA,IAAI,CAAC,eAAe,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC9D;aAAO;AACL,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI;AAC7B,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;QAC5B;IACF;;AAGA,IAAA,eAAe,CAAC,KAAuC,EAAA;AACrD,QAAA,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,KAAK;AAC/B,QAAA,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE;;AAG5B,QAAA,QAAQ,IAAI,CAAC,WAAW;AACtB,YAAA,KAAK,OAAO;AACZ,YAAA,KAAK,WAAW;AACd,gBAAA,IAAI,CAAC,cAAc,EAAE,WAAW,EAAE;AAClC,gBAAA,IAAI,CAAC,WAAW,GAAG,SAAS;AAC5B,gBAAA,IAAI,CAAC,wBAAwB,GAAG,WAAW;AAC3C,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CACnB,IAAI,CACF,IAAI,EACJ,aAAa,EACb,UAAU,EACV,QAAQ,EACR,0BAA0B,CAC3B,CACF;gBACD;;AAGF,YAAA,KAAK,UAAU;AACf,YAAA,KAAK,YAAY;AACf,gBAAA,IAAI,CAAC;AACF,qBAAA,UAAU,CAAC,IAAI,CAAC,EAAE;AAClB,qBAAA,SAAS,CAAC;oBACT,KAAK,EAAE,OAAO,CAAC,IAAI;iBACpB;qBACA,GAAG,CAAC,MAAK;;AAER,oBAAA,IAAI,CAAC,cAAc,EAAE,WAAW,EAAE;AAClC,oBAAA,IAAI,CAAC,WAAW,GAAG,SAAS;AAC5B,oBAAA,IAAI,CAAC,wBAAwB,GAAG,WAAW;AAC3C,oBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CACnB,IAAI,CACF,IAAI,EACJ,aAAa,EACb,UAAU,EACV,QAAQ,EACR,0BAA0B,CAC3B,CACF;AACH,gBAAA,CAAC,CAAC;gBACJ;;AAGF,YAAA,KAAK,OAAO;AACZ,YAAA,KAAK,MAAM;gBACT;AAAC,gBAAA,CAAC,IAAI,CAAC,OAAO,CAAC;sBACX,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI;sBAC/B,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;AAEjC,qBAAA,SAAS,CAAC;oBACT,KAAK,EAAE,OAAO,CAAC,IAAI;iBACpB;qBACA,GAAG,CAAC,MAAK;;oBAER,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;AAC1B,oBAAA,MAAM,KAAK,GAAG,IAAI,CAChB,IAAI,EACJ,aAAa,EACb,UAAU,EACV,IAAI,EACJ,QAAQ,EACR,0BAA0B,EAC1B,yBAAyB,CAC1B;AACD,oBAAA,KAAK,CAAC,WAAW,GAAG,SAAS;AAC7B,oBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;AAC9B,gBAAA,CAAC,CAAC;gBACJ;;AAGF,YAAA,KAAK,SAAS;AACd,YAAA,KAAK,SAAS;AACd,YAAA;gBACE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;AAC1B,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AACpB,oBAAA,GAAG,IAAI,CACL,IAAI,EACJ,aAAa,EACb,UAAU,EACV,IAAI,EACJ,QAAQ,EACR,0BAA0B,EAC1B,yBAAyB,CAC1B;AACD,oBAAA,WAAW,EAAE,SAAS;AACvB,iBAAA,CAAC;gBACF;;IAEN;;IAGA,QAAQ,GAAA;QACN,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE;;QAElC,IAAI,CAAC,IAAI,CAAC,IAAI;AAAE,YAAA,IAAI,CAAC,cAAc,GAAG,WAAW;AACjD,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;QACnB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;;YAE1B,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,WAAW,KAAK,OAAO;gBAAE;AAC/C,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,OAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,GAAI,CAAC,CAAC,SAAS,CAAC;AAClE,gBAAA,IAAI,EAAE,CAAC,KAAK,KAAI;AACd,oBAAA,QAAQ,KAAK,CAAC,IAAI;wBAChB,KAAK,aAAa,CAAC,cAAc;;AAE/B,4BAAA,IAAI,IAAI,CAAC,WAAW,KAAK,WAAW,EAAE;AACpC,gCAAA,IAAI,CAAC,WAAW,GAAG,WAAW;AAC9B,gCAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC;4BAC9D;4BACA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CACxB,CAAC,GAAG,GAAG,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,KAAK,IAAI,GAAG,CAAC,CAC5C;AACD,4BAAA,IAAI,CAAC,WAAW,GAAG,WAAW;4BAC9B;wBAEF,KAAK,aAAa,CAAC,QAAQ;AACzB,4BAAA,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE;;gCAElB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;;gCAE1B,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC;AAC/B,gCAAA,IAAI,CAAC,QAAQ,GAAG,GAAG;gCACnB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC;;gCAEzD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC;4BAC/B;4BAEA,IAAI,CAAC,WAAW,CAAC,IAAI,CACnB,IAAI,CACF,IAAI,EACJ,aAAa,EACb,UAAU,EACV,IAAI,EACJ,QAAQ,EACR,yBAAyB,CAC1B,CACF;;AAGD,4BAAA,IACE,IAAI,CAAC,WAAW,KAAK,UAAU;AAC/B,gCAAA,IAAI,CAAC,WAAW,KAAK,YAAY,EACjC;gCACA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC;4BACzC;;gCAAO,IAAI,CAAC,qBAAqB,EAAE;AACnC,4BAAA,IAAI,CAAC,OAAO,GAAG,KAAK;4BACpB;;gBAEN,CAAC;AACD,gBAAA,KAAK,EAAE,CAAC,KAAK,KAAI;AACf,oBAAA,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;AACnB,oBAAA,IAAI,CAAC,WAAW,GAAG,SAAS;AAC5B,oBAAA,IAAI,CAAC,MAAM,GAAG,SAAS;;oBAEvB,IAAI,CAAC,uBAAuB,GAAG;AAC7B,wBAAA,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,0BAA0B,EAAE;qBAC9D;oBACD,IAAI,CAAC,WAAW,CAAC,IAAI,CACnB,IAAI,CACF,IAAI,EACJ,aAAa,EACb,UAAU,EACV,IAAI,EACJ,QAAQ,EACR,yBAAyB,CAC1B,CACF;AACD,oBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;gBACtB,CAAC;AACF,aAAA,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;AAEA;;;;AAIG;AACH,IAAA,oBAAoB,CAAC,QAAgB,EAAA;;AAEnC,QAAA,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE;QAC5D,KAAK,MAAM,CAAC,WAAW,EAAE,SAAS,CAAC,IAAI,YAAY,EAAE;AACnD,YAAA,IAAI,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,EAAE;AACtC,gBAAA,IAAI,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC;AAAE,oBAAA,OAAO,WAAkB;YAC7D;iBAAO;gBACL,IAAI,SAAS,KAAK,QAAQ;AAAE,oBAAA,OAAO,WAAkB;YACvD;QACF;AACA,QAAA,OAAO,OAAO;IAChB;;AAGA,IAAA,kBAAkB,CAAC,KAAwB,EAAA;AACzC,QAAA,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;IAC7B;;AAGA,IAAA,eAAe,CAAC,IAAyB,EAAA;QACvC,OAAO,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE;IAC1E;AAEA;;;;AAIG;IACK,aAAa,CAAC,IAAyB,EAAE,KAAa,EAAA;QAC5D,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE;QACnB,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,CAAC,EAAE,KAAK;AACjC,aAAA,IAAI,CACH,SAAS,CAAC,MAAK;YACb,MAAM,gBAAgB,GACpB,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC;kBACzB,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI;kBAChC,IAAI,CAAC,OAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;AACxC,YAAA,OAAO,gBAAgB;AACzB,QAAA,CAAC,CAAC,EACF,SAAS,CACP,aAAa,CAAC;YACZ,gBAAgB,EAAE,IAAI,CAAC,aAAa;AACrC,SAAA,CAAC,CACH,EACD,GAAG,CAAC,CAAC,UAAU,KAAI;;YAEjB,IAAI,UAAU,EAAE;;gBAEd,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,CAAC,MAAM,EAAE;AACrC,oBAAA,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM;oBAC/B,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,aAAa,CAChD,UAAU,CAAC,wBAAwB,CACpC;AACD,oBAAA,IAAI,CAAC,uBAAuB,GAAG,UAAU,CAAC,uBAAuB;oBACjE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,MAAM,CAAC;oBAC/D,IAAI,CAAC,WAAW,CAAC,IAAI,CACnB,IAAI,CACF,IAAI,EACJ,aAAa,EACb,UAAU,EACV,IAAI,EACJ,QAAQ,EACR,0BAA0B,EAC1B,yBAAyB,CAC1B,CACF;gBACH;YACF;AACF,QAAA,CAAC,CAAC;;QAEF,MAAM,CACJ,CAAC,OAAO,KACN,CAAC,CAAC,OAAO;YACT,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,UAAU;YACxD,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,YAAY,CAC7D;;QAED,IAAI,CAAC,CAAC,CAAC;AAER,aAAA,SAAS,CAAC;YACT,IAAI,EAAE,MAAK;gBACT,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;oBACtC,IAAI,CAAC,qBAAqB,EAAE;gBAC9B;YACF,CAAC;AACD,YAAA,KAAK,EAAE,CAAC,GAAG,KAAI;AACb,gBAAA,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;AACjB,gBAAA,IAAI,CAAC,WAAW,GAAG,SAAS;AAC5B,gBAAA,IAAI,CAAC,MAAM,GAAG,SAAS;AACvB,gBAAA,IAAI,CAAC,wBAAwB,GAAG,WAAW;gBAC3C,IAAI,CAAC,WAAW,CAAC,IAAI,CACnB,IAAI,CACF,IAAI,EACJ,aAAa,EACb,UAAU,EACV,IAAI,EACJ,QAAQ,EACR,0BAA0B,CAC3B,CACF;gBACD,IAAI,CAAC,qBAAqB,EAAE;YAC9B,CAAC;AACF,SAAA,CAAC;IACN;AAEQ,IAAA,aAAa,CAAC,IAA+B,EAAA;AACnD,QAAA,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE;YACvE,OAAO,IAAI,IAAI,IAAI;QACrB;aAAO;AACL,YAAA,OAAO,WAAW;QACpB;IACF;AAEA;;AAEG;AACK,IAAA,iBAAiB,CAAC,KAA6B,EAAA;QACrD,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CACrC,CAAC,IAAI,KAAK,IAAI,CAAC,WAAW,KAAK,YAAY,CAC5C;IACH;AAEA;;AAEG;AACK,IAAA,gBAAgB,CAAC,KAA6B,EAAA;QACpD,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CACrC,CAAC,IAAI,KAAK,IAAI,CAAC,WAAW,KAAK,WAAW,CAC3C;IACH;AAEA;;AAEG;IACK,qBAAqB,GAAA;QAC3B,IAAI,CAAC,IAAI,CAAC,IAAI;AAAE,YAAA,IAAI,CAAC,cAAc,GAAG,MAAM;QAC5C,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,IAAI,CAAC,cAAc,KAAK,MAAM;AAAE,gBAAA,IAAI,CAAC,cAAc,GAAG,QAAQ;QACpE,CAAC,EAAE,IAAI,CAAC;IACV;8GAjlBW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,6rBCjDlC,g2UAiTA,EAAA,MAAA,EAAA,CAAA,ozSAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,SAAA,EAAA,eAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDhQa,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,cAGd,KAAK,EAAA,QAAA,EAAA,g2UAAA,EAAA,MAAA,EAAA,CAAA,ozSAAA,CAAA,EAAA;8BAIU,cAAc,EAAA,CAAA;sBAA1C,SAAS;uBAAC,gBAAgB;gBAGc,KAAK,EAAA,CAAA;sBAA7C,WAAW;uBAAC,iBAAiB;;sBAAG;gBAIxB,OAAO,EAAA,CAAA;sBAAf;gBAGQ,MAAM,EAAA,CAAA;sBAAd;gBAGQ,aAAa,EAAA,CAAA;sBAArB;gBAGQ,SAAS,EAAA,CAAA;sBAAjB;gBAGQ,QAAQ,EAAA,CAAA;sBAAhB;gBAGQ,IAAI,EAAA,CAAA;sBAAZ;gBAGQ,QAAQ,EAAA,CAAA;sBAAhB;gBAGQ,aAAa,EAAA,CAAA;sBAArB;gBAMQ,UAAU,EAAA,CAAA;sBAAlB;gBAGQ,QAAQ,EAAA,CAAA;sBAAhB;gBAYQ,aAAa,EAAA,CAAA;sBAArB;gBAGQ,UAAU,EAAA,CAAA;sBAAlB;gBAGS,WAAW,EAAA,CAAA;sBAApB;gBAGS,YAAY,EAAA,CAAA;sBAArB;gBAoFD,cAAc,EAAA,CAAA;sBADb,YAAY;uBAAC,qBAAqB,EAAE,CAAC,QAAQ,CAAC;;;MEpKpC,kBAAkB,CAAA;8GAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,EAAA,YAAA,EAAA,CAVd,SAAS,EAAE,qBAAqB,aAN7C,gBAAgB;YAChB,eAAe;YACf,eAAe;YACf,oBAAoB;AACpB,YAAA,YAAY,aASJ,qBAAqB,CAAA,EAAA,CAAA,CAAA;AAGpB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,EAAA,SAAA,EATlB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,eAAe;AACxB,gBAAA,QAAQ,EAAE,UAAU;AACrB,aAAA;AACF,SAAA,EAAA,OAAA,EAAA,CAZC,gBAAgB;YAChB,eAAe;YACf,eAAe;YACf,oBAAoB;YACpB,YAAY,CAAA,EAAA,CAAA,CAAA;;2FAYH,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAlB9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,gBAAgB;wBAChB,eAAe;wBACf,eAAe;wBACf,oBAAoB;wBACpB,YAAY;AACb,qBAAA;AACD,oBAAA,YAAY,EAAE,CAAC,SAAS,EAAE,qBAAqB,CAAC;AAChD,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,eAAe;AACxB,4BAAA,QAAQ,EAAE,UAAU;AACrB,yBAAA;AACF,qBAAA;oBACD,OAAO,EAAE,CAAC,qBAAqB,CAAC;oBAChC,OAAO,EAAE,CAAC,sBAAsB,CAAC;AAClC,iBAAA;;;AC3BD;;AAEG;;;;"}