@sd-angular/core 1.3.149 → 1.3.151

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 (658) hide show
  1. package/api/sd-angular-core-api.metadata.json +1 -1
  2. package/api/src/lib/api.service.d.ts +1 -5
  3. package/assets/img/file-types/eps/001-file.eps +143 -143
  4. package/assets/img/file-types/eps/002-file-1.eps +136 -136
  5. package/assets/img/file-types/eps/003-file-2.eps +130 -130
  6. package/assets/img/file-types/eps/004-file-3.eps +127 -127
  7. package/assets/img/file-types/eps/005-file-4.eps +120 -120
  8. package/assets/img/file-types/eps/006-file-5.eps +133 -133
  9. package/assets/img/file-types/eps/007-file-6.eps +133 -133
  10. package/assets/img/file-types/eps/008-file-7.eps +144 -144
  11. package/assets/img/file-types/eps/009-file-8.eps +150 -150
  12. package/assets/img/file-types/eps/010-file-9.eps +155 -155
  13. package/assets/img/file-types/eps/011-file-10.eps +124 -124
  14. package/assets/img/file-types/eps/012-file-11.eps +147 -147
  15. package/assets/img/file-types/eps/013-file-12.eps +125 -125
  16. package/assets/img/file-types/eps/014-file-13.eps +129 -129
  17. package/assets/img/file-types/eps/015-file-14.eps +143 -143
  18. package/assets/img/file-types/eps/016-file-15.eps +130 -130
  19. package/assets/img/file-types/eps/017-file-16.eps +197 -197
  20. package/assets/img/file-types/eps/018-file-17.eps +146 -146
  21. package/assets/img/file-types/eps/019-file-18.eps +131 -131
  22. package/assets/img/file-types/eps/020-file-19.eps +137 -137
  23. package/assets/img/file-types/eps/021-file-20.eps +134 -134
  24. package/assets/img/file-types/eps/022-file-21.eps +130 -130
  25. package/assets/img/file-types/eps/023-file-22.eps +161 -161
  26. package/assets/img/file-types/eps/024-file-23.eps +144 -144
  27. package/assets/img/file-types/eps/025-file-24.eps +164 -164
  28. package/assets/img/file-types/eps/026-file-25.eps +135 -135
  29. package/assets/img/file-types/eps/027-file-26.eps +124 -124
  30. package/assets/img/file-types/eps/028-file-27.eps +120 -120
  31. package/assets/img/file-types/eps/029-file-28.eps +141 -141
  32. package/assets/img/file-types/eps/030-file-29.eps +130 -130
  33. package/assets/img/file-types/eps/031-file-30.eps +157 -157
  34. package/assets/img/file-types/eps/032-file-31.eps +139 -139
  35. package/assets/img/file-types/eps/033-file-32.eps +139 -139
  36. package/assets/img/file-types/eps/034-file-33.eps +189 -189
  37. package/assets/img/file-types/eps/035-file-34.eps +162 -162
  38. package/assets/img/file-types/eps/036-file-35.eps +142 -142
  39. package/assets/img/file-types/eps/037-file-36.eps +123 -123
  40. package/assets/img/file-types/eps/038-file-37.eps +127 -127
  41. package/assets/img/file-types/eps/039-file-38.eps +146 -146
  42. package/assets/img/file-types/eps/040-file-39.eps +126 -126
  43. package/assets/img/file-types/eps/041-file-40.eps +117 -117
  44. package/assets/img/file-types/eps/042-file-41.eps +156 -156
  45. package/assets/img/file-types/eps/043-file-42.eps +118 -118
  46. package/assets/img/file-types/eps/044-file-43.eps +172 -172
  47. package/assets/img/file-types/eps/045-file-44.eps +201 -201
  48. package/assets/img/file-types/eps/046-file-45.eps +94 -94
  49. package/assets/img/file-types/eps/047-file-46.eps +176 -176
  50. package/assets/img/file-types/eps/048-file-47.eps +238 -238
  51. package/assets/img/file-types/eps/049-file-48.eps +187 -187
  52. package/assets/img/file-types/eps/050-file-49.eps +137 -137
  53. package/bundles/sd-angular-core-api.umd.js +27 -59
  54. package/bundles/sd-angular-core-api.umd.js.map +1 -1
  55. package/bundles/sd-angular-core-api.umd.min.js +1 -1
  56. package/bundles/sd-angular-core-api.umd.min.js.map +1 -1
  57. package/bundles/sd-angular-core-common.umd.js +92 -0
  58. package/bundles/sd-angular-core-common.umd.js.map +1 -1
  59. package/bundles/sd-angular-core-common.umd.min.js +1 -1
  60. package/bundles/sd-angular-core-common.umd.min.js.map +1 -1
  61. package/bundles/sd-angular-core-input-dropdown.umd.js +9 -12
  62. package/bundles/sd-angular-core-input-dropdown.umd.js.map +1 -1
  63. package/bundles/sd-angular-core-input-dropdown.umd.min.js +2 -2
  64. package/bundles/sd-angular-core-input-dropdown.umd.min.js.map +1 -1
  65. package/bundles/sd-angular-core-table.umd.js +585 -991
  66. package/bundles/sd-angular-core-table.umd.js.map +1 -1
  67. package/bundles/sd-angular-core-table.umd.min.js +1 -1
  68. package/bundles/sd-angular-core-table.umd.min.js.map +1 -1
  69. package/bundles/sd-angular-core-utility.umd.js +10 -56
  70. package/bundles/sd-angular-core-utility.umd.js.map +1 -1
  71. package/bundles/sd-angular-core-utility.umd.min.js +1 -1
  72. package/bundles/sd-angular-core-utility.umd.min.js.map +1 -1
  73. package/common/sd-angular-core-common.d.ts +1 -0
  74. package/common/sd-angular-core-common.metadata.json +1 -1
  75. package/common/src/lib/directives/sd-for.directive.d.ts +16 -0
  76. package/esm2015/api/index.js +1 -1
  77. package/esm2015/api/sd-angular-core-api.js +1 -1
  78. package/esm2015/api/src/lib/api.model.js +1 -1
  79. package/esm2015/api/src/lib/api.module.js +1 -1
  80. package/esm2015/api/src/lib/api.service.js +3 -36
  81. package/esm2015/api/src/lib/http.interceptor.js +1 -1
  82. package/esm2015/api/src/lib/http.service.js +1 -1
  83. package/esm2015/api/src/lib/token.service.js +1 -1
  84. package/esm2015/api/src/public-api.js +1 -1
  85. package/esm2015/autocomplete/index.js +1 -1
  86. package/esm2015/autocomplete/sd-angular-core-autocomplete.js +1 -1
  87. package/esm2015/autocomplete/src/lib/autocomplete-display-def.directive.js +1 -1
  88. package/esm2015/autocomplete/src/lib/autocomplete.component.js +1 -1
  89. package/esm2015/autocomplete/src/lib/autocomplete.module.js +1 -1
  90. package/esm2015/autocomplete/src/public-api.js +1 -1
  91. package/esm2015/badge/index.js +1 -1
  92. package/esm2015/badge/sd-angular-core-badge.js +1 -1
  93. package/esm2015/badge/src/lib/badge.component.js +1 -1
  94. package/esm2015/badge/src/lib/badge.module.js +1 -1
  95. package/esm2015/badge/src/public-api.js +1 -1
  96. package/esm2015/button/index.js +1 -1
  97. package/esm2015/button/sd-angular-core-button.js +1 -1
  98. package/esm2015/button/src/lib/button.component.js +1 -1
  99. package/esm2015/button/src/lib/button.module.js +1 -1
  100. package/esm2015/button/src/public-api.js +1 -1
  101. package/esm2015/cache/index.js +1 -1
  102. package/esm2015/cache/sd-angular-core-cache.js +1 -1
  103. package/esm2015/cache/src/lib/cache.model.js +1 -1
  104. package/esm2015/cache/src/lib/cache.service.js +1 -1
  105. package/esm2015/cache/src/public-api.js +1 -1
  106. package/esm2015/chart/index.js +1 -1
  107. package/esm2015/chart/sd-angular-core-chart.js +1 -1
  108. package/esm2015/chart/src/lib/chart.component.js +1 -1
  109. package/esm2015/chart/src/lib/chart.model.js +1 -1
  110. package/esm2015/chart/src/lib/chart.module.js +1 -1
  111. package/esm2015/chart/src/public-api.js +1 -1
  112. package/esm2015/checkbox/index.js +1 -1
  113. package/esm2015/checkbox/sd-angular-core-checkbox.js +1 -1
  114. package/esm2015/checkbox/src/lib/checkbox.component.js +1 -1
  115. package/esm2015/checkbox/src/lib/checkbox.module.js +1 -1
  116. package/esm2015/checkbox/src/public-api.js +1 -1
  117. package/esm2015/chip/index.js +1 -1
  118. package/esm2015/chip/sd-angular-core-chip.js +1 -1
  119. package/esm2015/chip/src/lib/chip.component.js +1 -1
  120. package/esm2015/chip/src/lib/chip.model.js +1 -1
  121. package/esm2015/chip/src/lib/chip.module.js +1 -1
  122. package/esm2015/chip/src/lib/directives/sd-chip-display-def.directive.js +1 -1
  123. package/esm2015/chip/src/lib/pipes/removable-chip.pipe.js +1 -1
  124. package/esm2015/chip/src/public-api.js +1 -1
  125. package/esm2015/comment/index.js +1 -1
  126. package/esm2015/comment/sd-angular-core-comment.js +1 -1
  127. package/esm2015/comment/src/lib/comment.component.js +1 -1
  128. package/esm2015/comment/src/lib/comment.model.js +1 -1
  129. package/esm2015/comment/src/lib/comment.module.js +1 -1
  130. package/esm2015/comment/src/public-api.js +1 -1
  131. package/esm2015/common/index.js +1 -1
  132. package/esm2015/common/sd-angular-core-common.js +2 -1
  133. package/esm2015/common/src/lib/common.module.js +4 -1
  134. package/esm2015/common/src/lib/configurations/firebase.configuration.js +1 -1
  135. package/esm2015/common/src/lib/configurations/form.configuration.js +1 -1
  136. package/esm2015/common/src/lib/directives/sd-for.directive.js +82 -0
  137. package/esm2015/common/src/lib/directives/sd-lable.directive.js +1 -1
  138. package/esm2015/common/src/lib/directives/sd-let.directive.js +1 -1
  139. package/esm2015/common/src/lib/directives/sd-scroll.directive.js +1 -1
  140. package/esm2015/common/src/lib/directives/sd-suffix.directive.js +1 -1
  141. package/esm2015/common/src/lib/directives/view-def.directive.js +1 -1
  142. package/esm2015/common/src/lib/models/sd-form-control.js +1 -1
  143. package/esm2015/common/src/lib/others/detectIncognito.js +1 -1
  144. package/esm2015/common/src/lib/services/browser.service.js +1 -1
  145. package/esm2015/common/src/lib/typings/array.extension.js +1 -1
  146. package/esm2015/common/src/lib/typings/date.extension.js +1 -1
  147. package/esm2015/common/src/lib/typings/index.js +1 -1
  148. package/esm2015/common/src/lib/typings/number.extension.js +1 -1
  149. package/esm2015/common/src/lib/typings/string.extension.js +1 -1
  150. package/esm2015/common/src/lib/typings/utility.extension.js +1 -1
  151. package/esm2015/common/src/public-api.js +1 -1
  152. package/esm2015/confirm/index.js +1 -1
  153. package/esm2015/confirm/sd-angular-core-confirm.js +1 -1
  154. package/esm2015/confirm/src/lib/components/dialog-confirm/dialog-confirm.component.js +1 -1
  155. package/esm2015/confirm/src/lib/confirm.module.js +1 -1
  156. package/esm2015/confirm/src/lib/confirm.service.js +1 -1
  157. package/esm2015/confirm/src/public-api.js +1 -1
  158. package/esm2015/date-month/index.js +1 -1
  159. package/esm2015/date-month/sd-angular-core-date-month.js +1 -1
  160. package/esm2015/date-month/src/lib/date-month.component.js +1 -1
  161. package/esm2015/date-month/src/lib/date-month.module.js +1 -1
  162. package/esm2015/date-month/src/public-api.js +1 -1
  163. package/esm2015/date-range/index.js +1 -1
  164. package/esm2015/date-range/sd-angular-core-date-range.js +1 -1
  165. package/esm2015/date-range/src/lib/date-range.component.js +1 -1
  166. package/esm2015/date-range/src/lib/date-range.module.js +1 -1
  167. package/esm2015/date-range/src/public-api.js +1 -1
  168. package/esm2015/date-time/index.js +1 -1
  169. package/esm2015/date-time/sd-angular-core-date-time.js +1 -1
  170. package/esm2015/date-time/src/lib/date-time.component.js +1 -1
  171. package/esm2015/date-time/src/lib/date-time.module.js +1 -1
  172. package/esm2015/date-time/src/public-api.js +1 -1
  173. package/esm2015/db/index.js +1 -1
  174. package/esm2015/db/sd-angular-core-db.js +1 -1
  175. package/esm2015/db/src/lib/db.model.js +1 -1
  176. package/esm2015/db/src/lib/db.service.js +1 -1
  177. package/esm2015/db/src/public-api.js +1 -1
  178. package/esm2015/dynamic-report/index.js +1 -1
  179. package/esm2015/dynamic-report/sd-angular-core-dynamic-report.js +1 -1
  180. package/esm2015/dynamic-report/src/lib/dynamic-report.component.js +1 -1
  181. package/esm2015/dynamic-report/src/lib/dynamic-report.module.js +1 -1
  182. package/esm2015/dynamic-report/src/public-api.js +1 -1
  183. package/esm2015/editor/index.js +1 -1
  184. package/esm2015/editor/sd-angular-core-editor.js +1 -1
  185. package/esm2015/editor/src/lib/constant.js +1 -1
  186. package/esm2015/editor/src/lib/editor.component.js +1 -1
  187. package/esm2015/editor/src/lib/editor.model.js +1 -1
  188. package/esm2015/editor/src/lib/editor.module.js +1 -1
  189. package/esm2015/editor/src/public-api.js +1 -1
  190. package/esm2015/export/index.js +1 -1
  191. package/esm2015/export/sd-angular-core-export.js +1 -1
  192. package/esm2015/export/src/lib/excel.model.js +1 -1
  193. package/esm2015/export/src/lib/export.model.js +1 -1
  194. package/esm2015/export/src/lib/export.service.js +1 -1
  195. package/esm2015/export/src/public-api.js +1 -1
  196. package/esm2015/filter/index.js +1 -1
  197. package/esm2015/filter/sd-angular-core-filter.js +1 -1
  198. package/esm2015/filter/src/lib/directives/sd-filter-def.directive.js +1 -1
  199. package/esm2015/filter/src/lib/filter.component.js +1 -1
  200. package/esm2015/filter/src/lib/filter.model.js +1 -1
  201. package/esm2015/filter/src/lib/filter.module.js +1 -1
  202. package/esm2015/filter/src/lib/filter.service.js +1 -1
  203. package/esm2015/filter/src/lib/pipes/values-local.pipe.js +1 -1
  204. package/esm2015/filter/src/lib/pipes/values-server.pipe.js +1 -1
  205. package/esm2015/filter/src/public-api.js +1 -1
  206. package/esm2015/form/index.js +1 -1
  207. package/esm2015/form/sd-angular-core-form.js +1 -1
  208. package/esm2015/form/src/lib/form.module.js +1 -1
  209. package/esm2015/form/src/public-api.js +1 -1
  210. package/esm2015/grid/index.js +1 -1
  211. package/esm2015/grid/sd-angular-core-grid.js +1 -1
  212. package/esm2015/grid/src/lib/components/grid-config/grid-config.component.js +1 -1
  213. package/esm2015/grid/src/lib/components/grid-config/grid-config.model.js +1 -1
  214. package/esm2015/grid/src/lib/components/grid-desktop-column-children-view/grid-desktop-column-children-view.component.js +1 -1
  215. package/esm2015/grid/src/lib/components/grid-desktop-column-edit/grid-desktop-column-edit.component.js +1 -1
  216. package/esm2015/grid/src/lib/components/grid-desktop-column-view/grid-desktop-column-view.component.js +1 -1
  217. package/esm2015/grid/src/lib/components/grid-desktop-inline-filter/grid-desktop-inline-filter.component.js +1 -1
  218. package/esm2015/grid/src/lib/components/grid-import-excel/grid-import-excel.component.js +1 -1
  219. package/esm2015/grid/src/lib/components/grid-mobile-item-view/grid-mobile-item-view.component.js +1 -1
  220. package/esm2015/grid/src/lib/components/grid-popup-editor/grid-popup-editor.component.js +1 -1
  221. package/esm2015/grid/src/lib/components/grid-popup-export-excel/grid-popup-export-excel.component.js +1 -1
  222. package/esm2015/grid/src/lib/components/grid-popup-export-excel/grid-popup-export-excel.model.js +1 -1
  223. package/esm2015/grid/src/lib/components/grid-popup-filter/grid-popup-filter.component.js +1 -1
  224. package/esm2015/grid/src/lib/components/grid-popup-filter/grid-popup-filter.model.js +1 -1
  225. package/esm2015/grid/src/lib/components/grid-popup-quick-filter-detail/grid-popup-quick-filter-detail.component.js +1 -1
  226. package/esm2015/grid/src/lib/components/grid-sub-information/grid-sub-information.component.js +1 -1
  227. package/esm2015/grid/src/lib/directives/cell-def.directive.js +1 -1
  228. package/esm2015/grid/src/lib/directives/cell-editor-def.directive.js +1 -1
  229. package/esm2015/grid/src/lib/directives/cell-footer-def.directive.js +1 -1
  230. package/esm2015/grid/src/lib/directives/sub-information-header-def.directive.js +1 -1
  231. package/esm2015/grid/src/lib/grid.component.js +1 -1
  232. package/esm2015/grid/src/lib/grid.model.js +1 -1
  233. package/esm2015/grid/src/lib/grid.module.js +1 -1
  234. package/esm2015/grid/src/lib/models/filter-info.model.js +1 -1
  235. package/esm2015/grid/src/lib/models/grid-configuration.model.js +1 -1
  236. package/esm2015/grid/src/lib/models/handler-dotnet.js +1 -1
  237. package/esm2015/grid/src/lib/models/handler-local.js +1 -1
  238. package/esm2015/grid/src/lib/models/handler.js +1 -1
  239. package/esm2015/grid/src/lib/pipes/cell-desktop-class-name.pipe.js +1 -1
  240. package/esm2015/grid/src/lib/pipes/cell-mobile-class-name.pipe.js +1 -1
  241. package/esm2015/grid/src/lib/pipes/column-command-filter.pipe.js +1 -1
  242. package/esm2015/grid/src/lib/pipes/column-html-template.pipe.js +1 -1
  243. package/esm2015/grid/src/lib/pipes/column-title.pipe.js +1 -1
  244. package/esm2015/grid/src/lib/pipes/column-values.pipe.js +1 -1
  245. package/esm2015/grid/src/lib/pipes/command-disabled.pipe.js +1 -1
  246. package/esm2015/grid/src/lib/pipes/command-filter.pipe.js +1 -1
  247. package/esm2015/grid/src/lib/pipes/command-hidden.pipe.js +1 -1
  248. package/esm2015/grid/src/lib/pipes/command-icon.pipe.js +1 -1
  249. package/esm2015/grid/src/lib/pipes/command-title.pipe.js +1 -1
  250. package/esm2015/grid/src/lib/pipes/dynamic-items.pipe.js +1 -1
  251. package/esm2015/grid/src/lib/pipes/editor-dynamic-item.pipe.js +1 -1
  252. package/esm2015/grid/src/lib/pipes/editor-handler.pipe.js +1 -1
  253. package/esm2015/grid/src/lib/pipes/editor-popup-visible.pipe.js +1 -1
  254. package/esm2015/grid/src/lib/pipes/editor-sub-information-handler.pipe.js +1 -1
  255. package/esm2015/grid/src/lib/pipes/editor-validate.pipe.js +1 -1
  256. package/esm2015/grid/src/lib/pipes/filter-mobile.pipe.js +1 -1
  257. package/esm2015/grid/src/lib/pipes/mobile-command-filter.js +1 -1
  258. package/esm2015/grid/src/lib/pipes/mobile-view-html-template.pipe.js +1 -1
  259. package/esm2015/grid/src/lib/pipes/value-transform.pipe.js +1 -1
  260. package/esm2015/grid/src/public-api.js +1 -1
  261. package/esm2015/grid-material/index.js +1 -1
  262. package/esm2015/grid-material/sd-angular-core-grid-material.js +1 -1
  263. package/esm2015/grid-material/src/lib/components/column-inline-filter/column-inline-filter.component.js +1 -1
  264. package/esm2015/grid-material/src/lib/components/desktop-cell/desktop-cell.component.js +1 -1
  265. package/esm2015/grid-material/src/lib/components/desktop-cell-children-view/desktop-cell-children-view.component.js +1 -1
  266. package/esm2015/grid-material/src/lib/components/desktop-cell-editor/desktop-cell-editor.component.js +1 -1
  267. package/esm2015/grid-material/src/lib/components/desktop-cell-view/desktop-cell-view.component.js +1 -1
  268. package/esm2015/grid-material/src/lib/components/desktop-command/desktop-command.component.js +1 -1
  269. package/esm2015/grid-material/src/lib/components/desktop-editor-validation/desktop-editor-validation.component.js +1 -1
  270. package/esm2015/grid-material/src/lib/components/dynamic-column/dynamic-column.component.js +1 -1
  271. package/esm2015/grid-material/src/lib/components/grid-filter/grid-filter.component.js +1 -1
  272. package/esm2015/grid-material/src/lib/components/popup-export/popup-export.component.js +1 -1
  273. package/esm2015/grid-material/src/lib/components/popup-filter/popup-filter.component.js +1 -1
  274. package/esm2015/grid-material/src/lib/components/popup-grid-configuration/popup-grid-configuration.component.js +1 -1
  275. package/esm2015/grid-material/src/lib/components/quick-action/quick-action.component.js +1 -1
  276. package/esm2015/grid-material/src/lib/directives/sd-material-cell-def.directive.js +1 -1
  277. package/esm2015/grid-material/src/lib/directives/sd-material-empty-data-def.directive.js +1 -1
  278. package/esm2015/grid-material/src/lib/directives/sd-material-filter-def.directive.js +1 -1
  279. package/esm2015/grid-material/src/lib/directives/sd-material-footer-def.directive.js +1 -1
  280. package/esm2015/grid-material/src/lib/directives/sd-material-sub-information-def.directive.js +1 -1
  281. package/esm2015/grid-material/src/lib/functions/calculate-sd-id.js +1 -1
  282. package/esm2015/grid-material/src/lib/grid-material.component.js +1 -1
  283. package/esm2015/grid-material/src/lib/grid-material.module.js +1 -1
  284. package/esm2015/grid-material/src/lib/models/grid-action.model.js +1 -1
  285. package/esm2015/grid-material/src/lib/models/grid-cell.model.js +1 -1
  286. package/esm2015/grid-material/src/lib/models/grid-column.model.js +1 -1
  287. package/esm2015/grid-material/src/lib/models/grid-command.model.js +1 -1
  288. package/esm2015/grid-material/src/lib/models/grid-config.model.js +1 -1
  289. package/esm2015/grid-material/src/lib/models/grid-configuration.model.js +1 -1
  290. package/esm2015/grid-material/src/lib/models/grid-editor.model.js +1 -1
  291. package/esm2015/grid-material/src/lib/models/grid-export.model.js +1 -1
  292. package/esm2015/grid-material/src/lib/models/grid-group.model.js +1 -1
  293. package/esm2015/grid-material/src/lib/models/grid-option.model.js +1 -1
  294. package/esm2015/grid-material/src/lib/models/grid-reload.model.js +1 -1
  295. package/esm2015/grid-material/src/lib/models/grid-selection.model.js +1 -1
  296. package/esm2015/grid-material/src/lib/models/grid-style.model.js +1 -1
  297. package/esm2015/grid-material/src/lib/models/grid-sub-information.model.js +1 -1
  298. package/esm2015/grid-material/src/lib/models/grid.model.js +1 -1
  299. package/esm2015/grid-material/src/lib/pipes/cell-view.pipe.js +1 -1
  300. package/esm2015/grid-material/src/lib/pipes/column-badge.pipe.js +1 -1
  301. package/esm2015/grid-material/src/lib/pipes/column-children-filter.pipe.js +1 -1
  302. package/esm2015/grid-material/src/lib/pipes/column-html-template.pipe.js +1 -1
  303. package/esm2015/grid-material/src/lib/pipes/column-title.pipe.js +1 -1
  304. package/esm2015/grid-material/src/lib/pipes/column-tooltip.pipe.js +1 -1
  305. package/esm2015/grid-material/src/lib/pipes/column-transform.pipe.js +1 -1
  306. package/esm2015/grid-material/src/lib/pipes/column-values.pipe.js +1 -1
  307. package/esm2015/grid-material/src/lib/pipes/command-disable.pipe.js +1 -1
  308. package/esm2015/grid-material/src/lib/pipes/command-filter.pipe.js +1 -1
  309. package/esm2015/grid-material/src/lib/pipes/command-icon.pipe.js +1 -1
  310. package/esm2015/grid-material/src/lib/pipes/command-title.pipe.js +1 -1
  311. package/esm2015/grid-material/src/lib/pipes/editor-handler-column.pipe.js +1 -1
  312. package/esm2015/grid-material/src/lib/pipes/editor-handler-row.pipe.js +1 -1
  313. package/esm2015/grid-material/src/lib/pipes/editor-validate.pipe.js +1 -1
  314. package/esm2015/grid-material/src/lib/pipes/filter-column.pipe.js +1 -1
  315. package/esm2015/grid-material/src/lib/pipes/filter-external.pipe.js +1 -1
  316. package/esm2015/grid-material/src/lib/pipes/grid-configuration-result.pipe.js +1 -1
  317. package/esm2015/grid-material/src/lib/pipes/sd-group.pipe.js +1 -1
  318. package/esm2015/grid-material/src/lib/pipes/selection-action-filter.pipe.js +1 -1
  319. package/esm2015/grid-material/src/lib/pipes/selection-disable.pipe.js +1 -1
  320. package/esm2015/grid-material/src/lib/pipes/selection-visible-select-all.pipe.js +1 -1
  321. package/esm2015/grid-material/src/lib/pipes/selection-visible.pipe.js +1 -1
  322. package/esm2015/grid-material/src/lib/pipes/style-row-css.pipe.js +1 -1
  323. package/esm2015/grid-material/src/lib/services/generated-column/generated-column.model.js +1 -1
  324. package/esm2015/grid-material/src/lib/services/generated-column/generated-column.service.js +1 -1
  325. package/esm2015/grid-material/src/lib/services/grid-configuration.service.js +1 -1
  326. package/esm2015/grid-material/src/lib/services/grid-filter/grid-filter.model.js +1 -1
  327. package/esm2015/grid-material/src/lib/services/grid-filter/grid-filter.service.js +1 -1
  328. package/esm2015/grid-material/src/public-api.js +1 -1
  329. package/esm2015/group/index.js +1 -1
  330. package/esm2015/group/sd-angular-core-group.js +1 -1
  331. package/esm2015/group/src/lib/group.component.js +1 -1
  332. package/esm2015/group/src/lib/group.module.js +1 -1
  333. package/esm2015/group/src/public-api.js +1 -1
  334. package/esm2015/header-title/index.js +1 -1
  335. package/esm2015/header-title/sd-angular-core-header-title.js +1 -1
  336. package/esm2015/header-title/src/lib/header-title.component.js +1 -1
  337. package/esm2015/header-title/src/lib/header-title.module.js +1 -1
  338. package/esm2015/header-title/src/public-api.js +1 -1
  339. package/esm2015/image-preview/index.js +1 -1
  340. package/esm2015/image-preview/sd-angular-core-image-preview.js +1 -1
  341. package/esm2015/image-preview/src/lib/directives/image-preview.directive.js +1 -1
  342. package/esm2015/image-preview/src/lib/image-preview/image-preview-sdmodal.component.js +1 -1
  343. package/esm2015/image-preview/src/lib/image-preview/image-preview.component.js +1 -1
  344. package/esm2015/image-preview/src/lib/image-preview/image-preview.module.js +1 -1
  345. package/esm2015/image-preview/src/lib/models/image-preview.model.js +1 -1
  346. package/esm2015/image-preview/src/public-api.js +1 -1
  347. package/esm2015/input/index.js +1 -1
  348. package/esm2015/input/sd-angular-core-input.js +1 -1
  349. package/esm2015/input/src/lib/directives/input-suffix.directive.js +1 -1
  350. package/esm2015/input/src/lib/directives/touch.directive.js +1 -1
  351. package/esm2015/input/src/lib/input-tooltip.pipe.js +1 -1
  352. package/esm2015/input/src/lib/input.component.js +1 -1
  353. package/esm2015/input/src/lib/input.module.js +1 -1
  354. package/esm2015/input/src/public-api.js +1 -1
  355. package/esm2015/input-currency/index.js +1 -1
  356. package/esm2015/input-currency/sd-angular-core-input-currency.js +1 -1
  357. package/esm2015/input-currency/src/lib/input-currency-tooltip.pipe.js +1 -1
  358. package/esm2015/input-currency/src/lib/input-currency.component.js +1 -1
  359. package/esm2015/input-currency/src/lib/input-currency.module.js +1 -1
  360. package/esm2015/input-currency/src/public-api.js +1 -1
  361. package/esm2015/input-dropdown/index.js +1 -1
  362. package/esm2015/input-dropdown/sd-angular-core-input-dropdown.js +1 -1
  363. package/esm2015/input-dropdown/src/lib/input-tooltip.pipe.js +1 -1
  364. package/esm2015/input-dropdown/src/lib/input.component.js +3 -3
  365. package/esm2015/input-dropdown/src/lib/input.module.js +1 -1
  366. package/esm2015/input-dropdown/src/public-api.js +1 -1
  367. package/esm2015/input-number/index.js +1 -1
  368. package/esm2015/input-number/sd-angular-core-input-number.js +1 -1
  369. package/esm2015/input-number/src/lib/input-number.component.js +1 -1
  370. package/esm2015/input-number/src/lib/input-number.module.js +1 -1
  371. package/esm2015/input-number/src/public-api.js +1 -1
  372. package/esm2015/input-upload-file/index.js +1 -1
  373. package/esm2015/input-upload-file/sd-angular-core-input-upload-file.js +1 -1
  374. package/esm2015/input-upload-file/src/lib/input-upload-file.component.js +1 -1
  375. package/esm2015/input-upload-file/src/lib/input-upload-file.module.js +1 -1
  376. package/esm2015/input-upload-file/src/public-api.js +1 -1
  377. package/esm2015/json-editor/index.js +1 -1
  378. package/esm2015/json-editor/sd-angular-core-json-editor.js +1 -1
  379. package/esm2015/json-editor/src/lib/json-editor.component.js +1 -1
  380. package/esm2015/json-editor/src/lib/json-editor.module.js +1 -1
  381. package/esm2015/json-editor/src/public-api.js +1 -1
  382. package/esm2015/konva/index.js +1 -1
  383. package/esm2015/konva/sd-angular-core-konva.js +1 -1
  384. package/esm2015/konva/src/lib/konva.module.js +1 -1
  385. package/esm2015/konva/src/lib/merge-images/merge-images.component.js +1 -1
  386. package/esm2015/konva/src/public-api.js +1 -1
  387. package/esm2015/label/index.js +1 -1
  388. package/esm2015/label/sd-angular-core-label.js +1 -1
  389. package/esm2015/label/src/lib/label.component.js +1 -1
  390. package/esm2015/label/src/lib/label.module.js +1 -1
  391. package/esm2015/label/src/public-api.js +1 -1
  392. package/esm2015/lib/core.module.js +1 -1
  393. package/esm2015/lib/material.module.js +1 -1
  394. package/esm2015/loading/index.js +1 -1
  395. package/esm2015/loading/sd-angular-core-loading.js +1 -1
  396. package/esm2015/loading/src/lib/loading.service.js +1 -1
  397. package/esm2015/loading/src/public-api.js +1 -1
  398. package/esm2015/modal/index.js +1 -1
  399. package/esm2015/modal/sd-angular-core-modal.js +1 -1
  400. package/esm2015/modal/src/lib/bottom-sheet/bottom-sheet-body/bottom-sheet-body.component.js +1 -1
  401. package/esm2015/modal/src/lib/bottom-sheet/bottom-sheet-footer/bottom-sheet-footer.component.js +1 -1
  402. package/esm2015/modal/src/lib/bottom-sheet/bottom-sheet-header/bottom-sheet-header.component.js +1 -1
  403. package/esm2015/modal/src/lib/bottom-sheet/bottom-sheet.component.js +1 -1
  404. package/esm2015/modal/src/lib/modal/modal-body/modal-body.component.js +1 -1
  405. package/esm2015/modal/src/lib/modal/modal-footer/modal-footer.component.js +1 -1
  406. package/esm2015/modal/src/lib/modal/modal-header/modal-header.component.js +1 -1
  407. package/esm2015/modal/src/lib/modal/modal.component.js +1 -1
  408. package/esm2015/modal/src/lib/modal.module.js +1 -1
  409. package/esm2015/modal/src/public-api.js +1 -1
  410. package/esm2015/modal-resizable/index.js +1 -1
  411. package/esm2015/modal-resizable/sd-angular-core-modal-resizable.js +1 -1
  412. package/esm2015/modal-resizable/src/lib/modal-resizable/modal-resizable.component.js +1 -1
  413. package/esm2015/modal-resizable/src/lib/modal-resizable.module.js +1 -1
  414. package/esm2015/modal-resizable/src/public-api.js +1 -1
  415. package/esm2015/notify/index.js +1 -1
  416. package/esm2015/notify/sd-angular-core-notify.js +1 -1
  417. package/esm2015/notify/src/lib/components/dialog-confirm/dialog-confirm.component.js +1 -1
  418. package/esm2015/notify/src/lib/configurations/notify.configuration.js +1 -1
  419. package/esm2015/notify/src/lib/notify.module.js +1 -1
  420. package/esm2015/notify/src/lib/notify.service.js +1 -1
  421. package/esm2015/notify/src/public-api.js +1 -1
  422. package/esm2015/pdf/index.js +1 -1
  423. package/esm2015/pdf/sd-angular-core-pdf.js +1 -1
  424. package/esm2015/pdf/src/lib/pdf.module.js +1 -1
  425. package/esm2015/pdf/src/lib/pdf.service.js +1 -1
  426. package/esm2015/pdf/src/public-api.js +1 -1
  427. package/esm2015/popover/index.js +1 -1
  428. package/esm2015/popover/sd-angular-core-popover.js +1 -1
  429. package/esm2015/popover/src/lib/directives/popover-content.directive.js +1 -1
  430. package/esm2015/popover/src/lib/directives/popover-trigger.directive.js +1 -1
  431. package/esm2015/popover/src/lib/popover/popover.component.js +1 -1
  432. package/esm2015/popover/src/lib/popover.model.js +1 -1
  433. package/esm2015/popover/src/lib/popover.module.js +1 -1
  434. package/esm2015/popover/src/public-api.js +1 -1
  435. package/esm2015/print/index.js +1 -1
  436. package/esm2015/print/sd-angular-core-print.js +1 -1
  437. package/esm2015/print/src/lib/fonts/times/bold-italic.js +1 -1
  438. package/esm2015/print/src/lib/fonts/times/bold.js +1 -1
  439. package/esm2015/print/src/lib/fonts/times/italic.js +1 -1
  440. package/esm2015/print/src/lib/fonts/times/normal.js +1 -1
  441. package/esm2015/print/src/lib/print.component.js +1 -1
  442. package/esm2015/print/src/lib/print.module.js +1 -1
  443. package/esm2015/print/src/public-api.js +1 -1
  444. package/esm2015/public-api.js +1 -1
  445. package/esm2015/quick-action/index.js +1 -1
  446. package/esm2015/quick-action/sd-angular-core-quick-action.js +1 -1
  447. package/esm2015/quick-action/src/lib/quick-action.component.js +1 -1
  448. package/esm2015/quick-action/src/lib/quick-action.module.js +1 -1
  449. package/esm2015/quick-action/src/public-api.js +1 -1
  450. package/esm2015/radio/index.js +1 -1
  451. package/esm2015/radio/sd-angular-core-radio.js +1 -1
  452. package/esm2015/radio/src/lib/radio.component.js +1 -1
  453. package/esm2015/radio/src/lib/radio.module.js +1 -1
  454. package/esm2015/radio/src/public-api.js +1 -1
  455. package/esm2015/sd-angular-core.js +1 -1
  456. package/esm2015/select/index.js +1 -1
  457. package/esm2015/select/sd-angular-core-select.js +1 -1
  458. package/esm2015/select/src/lib/select-display-def.directive.js +1 -1
  459. package/esm2015/select/src/lib/select.component.js +1 -1
  460. package/esm2015/select/src/lib/select.module.js +1 -1
  461. package/esm2015/select/src/public-api.js +1 -1
  462. package/esm2015/select-badge/index.js +1 -1
  463. package/esm2015/select-badge/sd-angular-core-select-badge.js +1 -1
  464. package/esm2015/select-badge/src/lib/select-badge-display-def.directive.js +1 -1
  465. package/esm2015/select-badge/src/lib/select-badge.component.js +1 -1
  466. package/esm2015/select-badge/src/lib/select-badge.module.js +1 -1
  467. package/esm2015/select-badge/src/public-api.js +1 -1
  468. package/esm2015/select-editor/index.js +1 -1
  469. package/esm2015/select-editor/sd-angular-core-select-editor.js +1 -1
  470. package/esm2015/select-editor/src/lib/select-editor.component.js +1 -1
  471. package/esm2015/select-editor/src/lib/select-editor.module.js +1 -1
  472. package/esm2015/select-editor/src/public-api.js +1 -1
  473. package/esm2015/service/index.js +1 -1
  474. package/esm2015/service/sd-angular-core-service.js +1 -1
  475. package/esm2015/service/src/lib/service.module.js +1 -1
  476. package/esm2015/service/src/public-api.js +1 -1
  477. package/esm2015/setting/index.js +1 -1
  478. package/esm2015/setting/sd-angular-core-setting.js +1 -1
  479. package/esm2015/setting/src/lib/setting.model.js +1 -1
  480. package/esm2015/setting/src/lib/setting.service.js +1 -1
  481. package/esm2015/setting/src/public-api.js +1 -1
  482. package/esm2015/side-drawer/index.js +1 -1
  483. package/esm2015/side-drawer/sd-angular-core-side-drawer.js +1 -1
  484. package/esm2015/side-drawer/src/lib/side-drawer/side-drawer.component.js +1 -1
  485. package/esm2015/side-drawer/src/lib/side-drawer.module.js +1 -1
  486. package/esm2015/side-drawer/src/public-api.js +1 -1
  487. package/esm2015/switch/index.js +1 -1
  488. package/esm2015/switch/sd-angular-core-switch.js +1 -1
  489. package/esm2015/switch/src/lib/switch.component.js +1 -1
  490. package/esm2015/switch/src/lib/switch.module.js +1 -1
  491. package/esm2015/switch/src/public-api.js +1 -1
  492. package/esm2015/tab-router/index.js +1 -1
  493. package/esm2015/tab-router/sd-angular-core-tab-router.js +1 -1
  494. package/esm2015/tab-router/src/lib/actions/tab-router.action.js +1 -1
  495. package/esm2015/tab-router/src/lib/components/tab-router-item/tab-router-item.component.js +1 -1
  496. package/esm2015/tab-router/src/lib/components/tab-router-nav/tab-router-nav.component.js +1 -1
  497. package/esm2015/tab-router/src/lib/components/tab-router-outlet/tab-router-outlet.component.js +1 -1
  498. package/esm2015/tab-router/src/lib/decorators/tab.decorator.js +1 -1
  499. package/esm2015/tab-router/src/lib/directives/router-link-mouse-down.directive.js +1 -1
  500. package/esm2015/tab-router/src/lib/events/tab-router.event.js +1 -1
  501. package/esm2015/tab-router/src/lib/models/tab-router.model.js +1 -1
  502. package/esm2015/tab-router/src/lib/pipes/tab-info.pipe.js +1 -1
  503. package/esm2015/tab-router/src/lib/services/tab-decorator.service.js +1 -1
  504. package/esm2015/tab-router/src/lib/services/tab-router.service.js +1 -1
  505. package/esm2015/tab-router/src/lib/tab-router.module.js +1 -1
  506. package/esm2015/tab-router/src/public-api.js +1 -1
  507. package/esm2015/table/index.js +1 -1
  508. package/esm2015/table/sd-angular-core-table.js +24 -31
  509. package/esm2015/table/src/lib/components/column-inline-filter/column-inline-filter.component.js +17 -4
  510. package/esm2015/table/src/lib/components/desktop-cell/desktop-cell.component.js +1 -1
  511. package/esm2015/table/src/lib/components/desktop-cell-view/desktop-cell-view.component.js +2 -2
  512. package/esm2015/table/src/lib/components/desktop-command/desktop-command.component.js +1 -1
  513. package/esm2015/table/src/lib/components/popup-configuration/popup-configuration.component.js +69 -0
  514. package/esm2015/table/src/lib/components/popup-filter/popup-filter.component.js +2 -2
  515. package/esm2015/table/src/lib/components/quick-action/quick-action.component.js +6 -6
  516. package/esm2015/table/src/lib/components/table-filter/table-filter.component.js +99 -0
  517. package/esm2015/table/src/lib/directives/sd-material-cell-def.directive.js +1 -1
  518. package/esm2015/table/src/lib/directives/sd-material-empty-data-def.directive.js +1 -1
  519. package/esm2015/table/src/lib/directives/sd-material-filter-def.directive.js +1 -1
  520. package/esm2015/table/src/lib/directives/sd-material-footer-def.directive.js +1 -1
  521. package/esm2015/table/src/lib/directives/sd-material-sub-information-def.directive.js +1 -1
  522. package/esm2015/table/src/lib/models/index.js +1 -1
  523. package/esm2015/table/src/lib/models/table-column.model.js +7 -7
  524. package/esm2015/table/src/lib/models/table-command.model.js +1 -1
  525. package/esm2015/table/src/lib/models/table-configuration.model.js +1 -1
  526. package/esm2015/table/src/lib/models/table-item.model.js +3 -3
  527. package/esm2015/table/src/lib/models/table-option-config.model.js +1 -1
  528. package/esm2015/table/src/lib/models/table-option-expand.model.js +1 -1
  529. package/esm2015/table/src/lib/models/table-option-export.model.js +1 -1
  530. package/esm2015/table/src/lib/models/table-option-group.model.js +1 -1
  531. package/esm2015/table/src/lib/models/table-option-paginate.model.js +1 -1
  532. package/esm2015/table/src/lib/models/table-option-reload.model.js +1 -1
  533. package/esm2015/table/src/lib/models/table-option-selector.model.js +1 -1
  534. package/esm2015/table/src/lib/models/table-option-sort.model.js +1 -1
  535. package/esm2015/table/src/lib/models/table-option-style.model.js +1 -1
  536. package/esm2015/table/src/lib/models/table-option.model.js +1 -1
  537. package/esm2015/table/src/lib/pipes/column-tooltip.pipe.js +1 -1
  538. package/esm2015/table/src/lib/pipes/command-disable.pipe.js +1 -1
  539. package/esm2015/table/src/lib/pipes/command-filter.pipe.js +1 -1
  540. package/esm2015/table/src/lib/pipes/command-icon.pipe.js +1 -1
  541. package/esm2015/table/src/lib/pipes/command-title.pipe.js +1 -1
  542. package/esm2015/table/src/lib/pipes/filter-column.pipe.js +1 -1
  543. package/esm2015/table/src/lib/pipes/filter-external.pipe.js +1 -1
  544. package/esm2015/table/src/lib/pipes/sd-group.pipe.js +1 -1
  545. package/esm2015/table/src/lib/pipes/selection-action-filter.pipe.js +1 -1
  546. package/esm2015/table/src/lib/pipes/selection-disable.pipe.js +1 -1
  547. package/esm2015/table/src/lib/pipes/selection-visible-select-all.pipe.js +1 -1
  548. package/esm2015/table/src/lib/pipes/selection-visible.pipe.js +1 -1
  549. package/esm2015/table/src/lib/services/table-configuration.service.js +37 -207
  550. package/esm2015/table/src/lib/services/table-filter/table-filter.model.js +1 -1
  551. package/esm2015/table/src/lib/services/table-filter/table-filter.service.js +1 -1
  552. package/esm2015/table/src/lib/table.component.js +197 -87
  553. package/esm2015/table/src/lib/table.module.js +7 -22
  554. package/esm2015/table/src/public-api.js +1 -1
  555. package/esm2015/textarea/index.js +1 -1
  556. package/esm2015/textarea/sd-angular-core-textarea.js +1 -1
  557. package/esm2015/textarea/src/lib/textarea.component.js +1 -1
  558. package/esm2015/textarea/src/lib/textarea.module.js +1 -1
  559. package/esm2015/textarea/src/public-api.js +1 -1
  560. package/esm2015/time/index.js +1 -1
  561. package/esm2015/time/sd-angular-core-time.js +1 -1
  562. package/esm2015/time/src/lib/time.component.js +1 -1
  563. package/esm2015/time/src/lib/time.module.js +1 -1
  564. package/esm2015/time/src/public-api.js +1 -1
  565. package/esm2015/timeline/index.js +1 -1
  566. package/esm2015/timeline/sd-angular-core-timeline.js +1 -1
  567. package/esm2015/timeline/src/lib/components/timeline.component.js +1 -1
  568. package/esm2015/timeline/src/lib/directives/timeline-def.directive.js +1 -1
  569. package/esm2015/timeline/src/lib/timeline.module.js +1 -1
  570. package/esm2015/timeline/src/public-api.js +1 -1
  571. package/esm2015/translate/index.js +1 -1
  572. package/esm2015/translate/sd-angular-core-translate.js +1 -1
  573. package/esm2015/translate/src/lib/translate.model.js +1 -1
  574. package/esm2015/translate/src/lib/translate.module.js +1 -1
  575. package/esm2015/translate/src/lib/translate.pipe.js +1 -1
  576. package/esm2015/translate/src/lib/translate.service.js +1 -1
  577. package/esm2015/upload-excel/index.js +1 -1
  578. package/esm2015/upload-excel/sd-angular-core-upload-excel.js +1 -1
  579. package/esm2015/upload-excel/src/lib/pipes/columm-hidden.pipe.js +1 -1
  580. package/esm2015/upload-excel/src/lib/pipes/column-transform.pipe.js +1 -1
  581. package/esm2015/upload-excel/src/lib/upload-excel.component.js +1 -1
  582. package/esm2015/upload-excel/src/lib/upload-excel.model.js +1 -1
  583. package/esm2015/upload-excel/src/lib/upload-excel.module.js +1 -1
  584. package/esm2015/upload-excel/src/public-api.js +1 -1
  585. package/esm2015/upload-file/index.js +1 -1
  586. package/esm2015/upload-file/sd-angular-core-upload-file.js +1 -1
  587. package/esm2015/upload-file/src/lib/upload-file.component.js +1 -1
  588. package/esm2015/upload-file/src/lib/upload-file.module.js +1 -1
  589. package/esm2015/upload-file/src/public-api.js +1 -1
  590. package/esm2015/utility/index.js +1 -1
  591. package/esm2015/utility/sd-angular-core-utility.js +1 -1
  592. package/esm2015/utility/src/lib/directives/desktop.directive.js +1 -1
  593. package/esm2015/utility/src/lib/directives/mobile-tablet.directive.js +1 -1
  594. package/esm2015/utility/src/lib/directives/mobile.directive.js +1 -1
  595. package/esm2015/utility/src/lib/directives/tablet.directive.js +1 -1
  596. package/esm2015/utility/src/lib/pipes/currency.pipe.js +1 -1
  597. package/esm2015/utility/src/lib/pipes/safe-html.pipe.js +1 -1
  598. package/esm2015/utility/src/lib/pipes/time-different.pipe.js +1 -1
  599. package/esm2015/utility/src/lib/utility.module.js +1 -3
  600. package/esm2015/utility/src/lib/utility.service.js +7 -54
  601. package/esm2015/utility/src/public-api.js +1 -1
  602. package/esm2015/view/index.js +1 -1
  603. package/esm2015/view/sd-angular-core-view.js +1 -1
  604. package/esm2015/view/src/lib/view.module.js +1 -1
  605. package/esm2015/view/src/public-api.js +1 -1
  606. package/esm2015/zip/index.js +1 -1
  607. package/esm2015/zip/sd-angular-core-zip.js +1 -1
  608. package/esm2015/zip/src/lib/zip.module.js +1 -1
  609. package/esm2015/zip/src/lib/zip.service.js +1 -1
  610. package/esm2015/zip/src/public-api.js +1 -1
  611. package/fesm2015/sd-angular-core-api.js +2 -35
  612. package/fesm2015/sd-angular-core-api.js.map +1 -1
  613. package/fesm2015/sd-angular-core-common.js +85 -2
  614. package/fesm2015/sd-angular-core-common.js.map +1 -1
  615. package/fesm2015/sd-angular-core-input-dropdown.js +2 -2
  616. package/fesm2015/sd-angular-core-input-dropdown.js.map +1 -1
  617. package/fesm2015/sd-angular-core-table.js +348 -804
  618. package/fesm2015/sd-angular-core-table.js.map +1 -1
  619. package/fesm2015/sd-angular-core-utility.js +7 -54
  620. package/fesm2015/sd-angular-core-utility.js.map +1 -1
  621. package/input-dropdown/sd-angular-core-input-dropdown.metadata.json +1 -1
  622. package/package.json +1 -1
  623. package/{sd-angular-core-1.3.149.tgz → sd-angular-core-1.3.151.tgz} +0 -0
  624. package/table/sd-angular-core-table.d.ts +23 -30
  625. package/table/sd-angular-core-table.metadata.json +1 -1
  626. package/table/src/lib/components/column-inline-filter/column-inline-filter.component.d.ts +2 -0
  627. package/table/src/lib/components/{popup-grid-configuration/popup-grid-configuration.component.d.ts → popup-configuration/popup-configuration.component.d.ts} +5 -10
  628. package/table/src/lib/components/popup-filter/popup-filter.component.d.ts +2 -2
  629. package/table/src/lib/components/quick-action/quick-action.component.d.ts +1 -1
  630. package/table/src/lib/components/{grid-filter/grid-filter.component.d.ts → table-filter/table-filter.component.d.ts} +5 -5
  631. package/table/src/lib/models/table-column.model.d.ts +15 -48
  632. package/table/src/lib/models/table-item.model.d.ts +15 -2
  633. package/table/src/lib/models/table-option-config.model.d.ts +2 -11
  634. package/table/src/lib/models/table-option.model.d.ts +0 -4
  635. package/table/src/lib/services/table-configuration.service.d.ts +5 -5
  636. package/table/src/lib/services/table-filter/table-filter.model.d.ts +1 -2
  637. package/table/src/lib/services/table-filter/table-filter.service.d.ts +2 -2
  638. package/table/src/lib/table.component.d.ts +12 -13
  639. package/utility/sd-angular-core-utility.metadata.json +1 -1
  640. package/utility/src/lib/utility.service.d.ts +2 -4
  641. package/esm2015/table/src/lib/components/grid-filter/grid-filter.component.js +0 -99
  642. package/esm2015/table/src/lib/components/popup-grid-configuration/popup-grid-configuration.component.js +0 -96
  643. package/esm2015/table/src/lib/models/grid-cell.model.js +0 -2
  644. package/esm2015/table/src/lib/pipes/cell-view.pipe.js +0 -180
  645. package/esm2015/table/src/lib/pipes/column-badge.pipe.js +0 -43
  646. package/esm2015/table/src/lib/pipes/column-children-filter.pipe.js +0 -31
  647. package/esm2015/table/src/lib/pipes/column-html-template.pipe.js +0 -23
  648. package/esm2015/table/src/lib/pipes/column-transform.pipe.js +0 -35
  649. package/esm2015/table/src/lib/pipes/column-values.pipe.js +0 -63
  650. package/esm2015/table/src/lib/pipes/grid-configuration-result.pipe.js +0 -21
  651. package/table/src/lib/models/grid-cell.model.d.ts +0 -16
  652. package/table/src/lib/pipes/cell-view.pipe.d.ts +0 -15
  653. package/table/src/lib/pipes/column-badge.pipe.d.ts +0 -11
  654. package/table/src/lib/pipes/column-children-filter.pipe.d.ts +0 -8
  655. package/table/src/lib/pipes/column-html-template.pipe.d.ts +0 -8
  656. package/table/src/lib/pipes/column-transform.pipe.d.ts +0 -8
  657. package/table/src/lib/pipes/column-values.pipe.d.ts +0 -6
  658. package/table/src/lib/pipes/grid-configuration-result.pipe.d.ts +0 -10
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../node_modules/tslib/tslib.es6.js","../../../../projects/sd-core/table/src/lib/models/table-configuration.model.ts","../../../../projects/sd-core/table/src/lib/directives/sd-material-cell-def.directive.ts","../../../../projects/sd-core/table/src/lib/components/popup-filter/popup-filter.component.ts","../../../../projects/sd-core/table/src/lib/components/grid-filter/grid-filter.component.ts","../../../../projects/sd-core/table/src/lib/directives/sd-material-filter-def.directive.ts","../../../../projects/sd-core/table/src/lib/directives/sd-material-sub-information-def.directive.ts","../../../../projects/sd-core/table/src/lib/directives/sd-material-footer-def.directive.ts","../../../../projects/sd-core/table/src/lib/directives/sd-material-empty-data-def.directive.ts","../../../../projects/sd-core/table/src/lib/services/table-configuration.service.ts","../../../../projects/sd-core/table/src/lib/models/table-item.model.ts","../../../../projects/sd-core/table/src/lib/pipes/column-values.pipe.ts","../../../../projects/sd-core/table/src/lib/services/table-filter/table-filter.service.ts","../../../../projects/sd-core/table/src/lib/table.component.ts","../../../../projects/sd-core/table/src/lib/pipes/command-filter.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/command-disable.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/command-icon.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/command-title.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/column-html-template.pipe.ts","../../../../projects/sd-core/table/src/lib/components/desktop-cell-view/desktop-cell-view.component.ts","../../../../projects/sd-core/table/src/lib/pipes/column-transform.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/filter-external.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/filter-column.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/column-children-filter.pipe.ts","../../../../projects/sd-core/table/src/lib/components/desktop-command/desktop-command.component.ts","../../../../projects/sd-core/table/src/lib/pipes/column-badge.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/grid-configuration-result.pipe.ts","../../../../projects/sd-core/table/src/lib/components/popup-grid-configuration/popup-grid-configuration.component.ts","../../../../projects/sd-core/table/src/lib/pipes/column-tooltip.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/selection-action-filter.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/selection-disable.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/selection-visible-select-all.pipe.ts","../../../../projects/sd-core/table/src/lib/components/desktop-cell/desktop-cell.component.ts","../../../../projects/sd-core/table/src/lib/models/table-column.model.ts","../../../../projects/sd-core/table/src/lib/components/column-inline-filter/column-inline-filter.component.ts","../../../../projects/sd-core/table/src/lib/pipes/selection-visible.pipe.ts","../../../../projects/sd-core/table/src/lib/components/quick-action/quick-action.component.ts","../../../../projects/sd-core/table/src/lib/pipes/cell-view.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/sd-group.pipe.ts","../../../../projects/sd-core/table/src/lib/table.module.ts"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","apply","__generator","body","f","y","t","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","this","n","v","op","TypeError","pop","length","push","create","__values","o","s","m","i","__read","r","ar","error","__spread","arguments","concat","__classPrivateFieldGet","receiver","state","kind","has","get","__classPrivateFieldSet","set","DEFAULT_TABLE_CONFIG","paginate","pageSize","pages","TABLE_CONFIG","InjectionToken","templateRef","Directive","args","selector","TemplateRef","Input","SdPopupFilter","cdRef","_this","_filterRegister","externalFilters","externalFilter","inlineExternal","columns","columnFilter","inlineColumn","filterDefs","filterDef","inlineFilterDef","open","configuration","JSON","parse","stringify","filterValue","modal","markForCheck","close","onApply","defineProperty","ngAfterViewInit","ngOnDestroy","onClear","remove","Component","template","changeDetection","ChangeDetectionStrategy","OnPush","ChangeDetectorRef","ViewChild","SdModal","SdGridFilter","ref","deviceService","filterRegisterChange","BehaviorSubject","_subscription","Subscription","onFilter","item","filterRegister","updateFilter","notReload","popupFilter","isMobileOrTablet","isDesktop","filter","add","pipe","startWith","subscribe","observer","unsubscribe","DeviceDetectorService","SdMaterialFilterDefDirective","val","defaultShowing","settingService","gridMaterialConfiguration","_COLUMNS","EDITORVALIDATION","EDITOR","SUBINFORMATION","COMMAND","SELECTION","GROUP","_cache","init","key","gridOption","subject_1","Subject","load","_load","_get","_set","assign","_remove","_default","_getKey","_a","config","hash","prefix","_b","hidden","map","origin","field","title","width","invisible","fixed","subject","_e","storage","createServer","catch","_g","console","_f","type","column","some","forEach","col","find","_c","_d","generateConfigurationResult","sdSubInformation","fixedColumn","firstColumns","secondColumns","firstHeaders","secondHeaders","displayedColumns","displayedFooters","multipleHeader","commands","group","visible","fields","children","childColumn","Injectable","SdSettingService","Inject","Optional","MapToSdTableItem","current","meta","id","expand","isExpanding","isExpanded","actions","isSelected","selectable","_prefix","transform","option","items","valueField","displayField","_l","selection","remain","indexOf","getOwnPropertySymbols","propertyIsEnumerable","__rest","isMultible","includes","_cache$1","values","_m","isArray","join","_j","_h","_k","Pipe","name","_filterConfiguration","_filterValue","register","cacheSession","tempKey","_cache$2","filterConfiguration_1","default","_defaultConfiguration","undefined","_initConfiguration","filterValue_1","cacheFilter","_defaultValue","_initValue","keys","columnOperator","updatedFilter","_u","_v","_w","_x","_y","_z","sdMaterialFilterDef","from","to","_o","_q","_p","SdTable","gridConfigurationService","exportService","notifyService","columnValuesPipe","gridFilterService","_gridId","uuid.v4","_optionChanges","_localItems","selectedItems","isLoading","isHiddenPaginator","_paginator","_sort","sdCellDefs","QueryList","cellDef","sdFooterDefs","footerDef","hasFooter","sdFilterDefs","_reload","isExporting","isSelectAll","exportTitle","_loadCompleted","_initCellDef","_9","_10","sdMaterialCellDef","_initFilterDef","_initFooterDef","sdMaterialFooterDef","_filterExportInfo","pageNumber","_8","rawColumnFilter","rawExternalFilter","rawFilterDef","orderBy","active","orderDirection","direction","isExported","showFirstLastButtons","_s","_r","operator","enable","_t","list","defaultListString","_1","_0","defaultListNumber","_4","_3","_2","defaultListValues","_7","_6","_5","defaultListDate","_loadFilterRegister","_subscription$1","debounceTime","pageIndex","force","_filterLocal","localItems","filterInfo","tableItem","columns_1","columns_1_1","toString","trim","toLowerCase","columnValue","fValue","replace","cValue","fromDate","Date","begin","toDate","end","columnTime","getTime","fromDateTime","toDateTime","type_1","field_1","sort","tableItemCurrent","tableItemNext","s1","s2","reverse","index","total","_getFilter","filterReq","err","notify","warning","data","results","_render","sdScroll","scrollTop","reload","onReload","every","_updateSelectedItems","gridFilter","_load$1","_exportedItems","export","isObservable","toPromise","exportedItems","_allColumns","disabled","_allExportedColumns","_onExport","isCSV","columns_2","_getExportColumns","pageSize_1","maxItemsPerRequest","batch","total_1","pageNumber_1","exportItems_1","items_1","promises_1","handleData","all","results_1","results_1_1","mapping","results_2","totalPage","percent","Math","round","allColumns","allExportedColumns","obj","handle","exportColumn","exportedColumn","isExport","_12","displayOnTrue","displayOnFalse","date","transformDate","toFormat","_11","e_9","columns_3","columns_3_1","exportItems_2","exportItems_2_1","_14","exportCSV","fileName","sheets","sheet","detectChanges","exportExcel","onFilterChange","onExpand","rowData","always","multiple","res","finally","onSelect","single","onSelectAll","onClearSelection","clearFilter","setFilter","_initConfiguration$1","gridConfigurationObserver","paginator","page","sortChange","ngOnInit","switchMap","changes","combineLatest","animations","trigger","style","height","minHeight","visibility","transition","animate","SdTableConfigurationService","SdExportService","SdNotifyService","SdColumnValuesPipe","SdTableFilterService","SdScrollDirective","SdQuickAction","MatPaginator","MatSort","ContentChild","SdMaterialSubInformationDefDirective","SdMaterialEmptyDataDefDirective","ContentChildren","SdMaterialCellDefDirective","SdMaterialFooterDefDirective","SdCommandFilterPipe","commands_1","commands_1_1","command","flag","isHidden","e_1","childCommand","hidden_1","SdCommandDisablePipe","SdCommandIconPipe","icon","SdCommandTitlePipe","SdColumnHtmlTemplatePipe","htmlTemplate","SdColumnTransformPipe","Number","isNumber","toVNCurrency","SdFilterExternalPipe","externalFilters_1","externalFilters_1_1","SdFilterColumnPipe","e_2","columnChildren","SdColumnChildrenFilterPipe","_isMobileOrTablet","transformValue","templateValue","SdColumnBadgePipe","badge","badgeType","color","badgeIcon","SdGridConfigurationResultPipe","a","log","SdPopupGridConfiguration","translateService","EventEmitter","isCreatingColumn","selected","disabledDrag","_cache$3","onSave","onReset","translate","confirm","createColumn","generatedColumn","mouseUp","event","dropTable","moveItemInArray","previousIndex","currentIndex","table","renderRows","handleMouseDown","handleMouseUp","SdTranslateService","HostListener","SdColumnTooltipPipe","tooltip","_convert","action","fontSet","click","childAction","key_1","actions_1","actions_1_1","availableActions","availableActions_1","availableActions_1_1","e1","isGrouped","setTimeout","first","SdFilterOperators","symbol","display","SdColumnInlineFilter","inlineSymbol","_inlineOperator_1","inlineOperatorChange","operators","filterChange","_valueChanges","_subcription","emit","onChangeOperator","_value","inlineOperator","useFilterDate","Output","groupedActions","hasGroup","clear","SdCellViewPipe","utilityService","_maxSecond","_maxMinute","_maxHour","_maxDay","_maxMonth","_isMobileOrTablet$1","displayOnEmpty","align","hasHtml","html","seconds","timeDifferent","timeDifference","time","dateTime","emptyValues","SdUtilityService","SdGroupPipe","groupItem","items_1_1","fields_1","fields_1_1","e_4","MatPaginatorIntlCro","_super","firstPageLabel","lastPageLabel","itemsPerPageLabel","nextPageLabel","previousPageLabel","getRangeLabel","String","__","constructor","__extends","MatPaginatorIntl","NgModule","imports","CommonModule","FormsModule","ReactiveFormsModule","MatInputModule","MatFormFieldModule","MatSortModule","MatPaginatorModule","MatTableModule","MatMenuModule","MatIconModule","MatButtonModule","MatTooltipModule","MatProgressSpinnerModule","MatChipsModule","MatRadioModule","MatSlideToggleModule","MatCheckboxModule","MatListModule","MatDividerModule","CdkTableModule","DragDropModule","SdFormModule","SdServiceModule","MatSliderModule","ScrollingModule","SdCommonModule","SdGroupModule","declarations","SdGridQuickAction","SdDesktopCell","SdDesktopCellView","SdDesktopCommand","SdSelectionActionFilterPipe","SdSelectionVisiblePipe","SdSelectionDisablePipe","SdSelectionVisibleSelectAllPipe","exports","providers","DatePipe","DecimalPipe","CdkColumnDef","provide","useClass"],"mappings":"k6HAgBIA,EAAgB,SAASC,EAAGC,GAI5B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOC,OAAOK,UAAUC,eAAeC,KAAKR,EAAGK,KAAIN,EAAEM,GAAKL,EAAEK,MAC3EN,EAAGC,aAiDZS,EAAUC,EAASC,EAAYC,EAAGC,GAE9C,OAAO,IAAKD,IAAMA,EAAIE,WAAU,SAAUC,EAASC,GAC/C,SAASC,EAAUC,GAAS,IAAMC,EAAKN,EAAUO,KAAKF,IAAW,MAAOG,GAAKL,EAAOK,IACpF,SAASC,EAASJ,GAAS,IAAMC,EAAKN,EAAiB,MAAEK,IAAW,MAAOG,GAAKL,EAAOK,IACvF,SAASF,EAAKI,GAJlB,IAAeL,EAIaK,EAAOC,KAAOT,EAAQQ,EAAOL,QAJ1CA,EAIyDK,EAAOL,MAJhDA,aAAiBN,EAAIM,EAAQ,IAAIN,GAAE,SAAUG,GAAWA,EAAQG,OAITO,KAAKR,EAAWK,GAClGH,GAAMN,EAAYA,EAAUa,MAAMhB,EAASC,GAAc,KAAKS,oBAItDO,EAAYjB,EAASkB,GACjC,IAAsGC,EAAGC,EAAGC,EAAGC,EAA3GC,EAAI,CAAEC,MAAO,EAAGC,KAAM,WAAa,GAAW,EAAPJ,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,IAAOK,KAAM,GAAIC,IAAK,IAChG,OAAOL,EAAI,CAAEZ,KAAMkB,EAAK,GAAIC,MAASD,EAAK,GAAIE,OAAUF,EAAK,IAAwB,mBAAXG,SAA0BT,EAAES,OAAOC,UAAY,WAAa,OAAOC,OAAUX,EACvJ,SAASM,EAAKM,GAAK,OAAO,SAAUC,GAAK,OACzC,SAAcC,GACV,GAAIjB,EAAG,MAAM,IAAIkB,UAAU,mCAC3B,KAAOd,OACH,GAAIJ,EAAI,EAAGC,IAAMC,EAAY,EAARe,EAAG,GAAShB,EAAU,OAAIgB,EAAG,GAAKhB,EAAS,SAAOC,EAAID,EAAU,SAAMC,EAAEvB,KAAKsB,GAAI,GAAKA,EAAEV,SAAWW,EAAIA,EAAEvB,KAAKsB,EAAGgB,EAAG,KAAKtB,KAAM,OAAOO,EAE3J,OADID,EAAI,EAAGC,IAAGe,EAAK,CAAS,EAARA,EAAG,GAAQf,EAAEb,QACzB4B,EAAG,IACP,KAAK,EAAG,KAAK,EAAGf,EAAIe,EAAI,MACxB,KAAK,EAAc,OAAXb,EAAEC,QAAgB,CAAEhB,MAAO4B,EAAG,GAAItB,MAAM,GAChD,KAAK,EAAGS,EAAEC,QAASJ,EAAIgB,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAKb,EAAEI,IAAIW,MAAOf,EAAEG,KAAKY,MAAO,SACxC,QACI,KAAMjB,EAAIE,EAAEG,MAAML,EAAIA,EAAEkB,OAAS,GAAKlB,EAAEA,EAAEkB,OAAS,KAAkB,IAAVH,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAEb,EAAI,EAAG,SACjG,GAAc,IAAVa,EAAG,MAAcf,GAAMe,EAAG,GAAKf,EAAE,IAAMe,EAAG,GAAKf,EAAE,IAAM,CAAEE,EAAEC,MAAQY,EAAG,GAAI,MAC9E,GAAc,IAAVA,EAAG,IAAYb,EAAEC,MAAQH,EAAE,GAAI,CAAEE,EAAEC,MAAQH,EAAE,GAAIA,EAAIe,EAAI,MAC7D,GAAIf,GAAKE,EAAEC,MAAQH,EAAE,GAAI,CAAEE,EAAEC,MAAQH,EAAE,GAAIE,EAAEI,IAAIa,KAAKJ,GAAK,MACvDf,EAAE,IAAIE,EAAEI,IAAIW,MAChBf,EAAEG,KAAKY,MAAO,SAEtBF,EAAKlB,EAAKpB,KAAKE,EAASuB,GAC1B,MAAOZ,GAAKyB,EAAK,CAAC,EAAGzB,GAAIS,EAAI,UAAeD,EAAIE,EAAI,EACtD,GAAY,EAARe,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAE5B,MAAO4B,EAAG,GAAKA,EAAG,QAAK,EAAQtB,MAAM,GArB9BL,CAAK,CAACyB,EAAGC,MAyBhC5C,OAAOkD,gBAYpBC,EAASC,GACrB,IAAIC,EAAsB,mBAAXb,QAAyBA,OAAOC,SAAUa,EAAID,GAAKD,EAAEC,GAAIE,EAAI,EAC5E,GAAID,EAAG,OAAOA,EAAE/C,KAAK6C,GACrB,GAAIA,GAAyB,iBAAbA,EAAEJ,OAAqB,MAAO,CAC1C7B,KAAM,WAEF,OADIiC,GAAKG,GAAKH,EAAEJ,SAAQI,OAAI,GACrB,CAAEnC,MAAOmC,GAAKA,EAAEG,KAAMhC,MAAO6B,KAG5C,MAAM,IAAIN,UAAUO,EAAI,0BAA4B,4CAGxCG,EAAOJ,EAAGT,GACtB,IAAIW,EAAsB,mBAAXd,QAAyBY,EAAEZ,OAAOC,UACjD,IAAKa,EAAG,OAAOF,EACf,IAAmBK,EAAYrC,EAA3BmC,EAAID,EAAE/C,KAAK6C,GAAOM,EAAK,GAC3B,IACI,WAAc,IAANf,GAAgBA,KAAM,MAAQc,EAAIF,EAAEpC,QAAQI,MAAMmC,EAAGT,KAAKQ,EAAExC,OAExE,MAAO0C,GAASvC,EAAI,CAAEuC,MAAOA,WAEzB,IACQF,IAAMA,EAAElC,OAAS+B,EAAIC,EAAU,SAAID,EAAE/C,KAAKgD,WAExC,GAAInC,EAAG,MAAMA,EAAEuC,OAE7B,OAAOD,WAIKE,IACZ,IAAK,IAAIF,EAAK,GAAIH,EAAI,EAAGA,EAAIM,UAAUb,OAAQO,IAC3CG,EAAKA,EAAGI,OAAON,EAAOK,UAAUN,KACpC,OAAOG,EAyDc1D,OAAOkD,gBAkBhBa,EAAuBC,EAAUC,EAAOC,EAAMtC,GAC1D,GAAa,MAATsC,IAAiBtC,EAAG,MAAM,IAAIkB,UAAU,iDAC5C,GAAqB,mBAAVmB,EAAuBD,IAAaC,IAAUrC,GAAKqC,EAAME,IAAIH,GAAW,MAAM,IAAIlB,UAAU,4EACvG,MAAgB,MAAToB,EAAetC,EAAa,MAATsC,EAAetC,EAAErB,KAAKyD,GAAYpC,EAAIA,EAAEX,MAAQgD,EAAMG,IAAIJ,YAGxEK,EAAuBL,EAAUC,EAAOhD,EAAOiD,EAAMtC,GACjE,GAAa,MAATsC,EAAc,MAAM,IAAIpB,UAAU,kCACtC,GAAa,MAAToB,IAAiBtC,EAAG,MAAM,IAAIkB,UAAU,iDAC5C,GAAqB,mBAAVmB,EAAuBD,IAAaC,IAAUrC,GAAKqC,EAAME,IAAIH,GAAW,MAAM,IAAIlB,UAAU,2EACvG,MAAiB,MAAToB,EAAetC,EAAErB,KAAKyD,EAAU/C,GAASW,EAAIA,EAAEX,MAAQA,EAAQgD,EAAMK,IAAIN,EAAU/C,GAASA,QCzN3FsD,GAA8C,CACzDC,SAAU,CACRC,SAAU,GACVC,MAAO,CAAC,GAAI,IAAK,OAIRC,GAAe,IAAIC,EAAAA,eAAsC,6BCpBpE,SAAmBC,GAAAnC,KAAAmC,YAAAA,wBALpBC,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,oEAHeC,EAAAA,2DAMxBC,EAAAA,8BCuBD,SAAAC,EAAoBC,GAApB,IAAAC,EAAA3C,KAAoBA,KAAA0C,MAAAA,EAdpBE,EAAAhB,IAAA5B,UAAA,GAISA,KAAA6C,gBAA2C,GACpD7C,KAAA8C,eAAsC,GACtC9C,KAAA+C,eAA0C,GACjC/C,KAAAgD,QAA2B,GACpChD,KAAAiD,aAAoC,GACpCjD,KAAAkD,aAAwC,GAE/BlD,KAAAmD,WAA6C,GACtDnD,KAAAoD,UAAiC,GACjCpD,KAAAqD,gBAA2C,GAO3CrD,KAAAsD,KAAO,WACL,IAAMC,EAAgBlC,EAAAsB,EAAAC,GAAqBW,cAAc7B,MACzDiB,EAAKO,aAAeM,KAAKC,MAAMD,KAAKE,UAAUH,EAAcL,eAC5DP,EAAKI,eAAiBS,KAAKC,MAAMD,KAAKE,UAAUH,EAAcR,iBAC9DJ,EAAKU,gBAAkBG,KAAKC,MAAMD,KAAKE,UAAUH,EAAcF,kBAC/D,IAAMM,EAActC,EAAAsB,EAAAC,GAAqBrE,MAAMmD,MAC/CiB,EAAKM,aAAeO,KAAKC,MAAMD,KAAKE,UAAUC,EAAYV,eAC1DN,EAAKG,eAAiBU,KAAKC,MAAMD,KAAKE,UAAUC,EAAYb,iBAC5DH,EAAKS,UAAYI,KAAKC,MAAMD,KAAKE,UAAUC,EAAYP,YACvDT,EAAKiB,MAAMN,OACXX,EAAKD,MAAMmB,gBAGb7D,KAAA8D,MAAQ,WACNnB,EAAKiB,MAAME,QACXnB,EAAKD,MAAMmB,gBAGb7D,KAAA+D,QAAU,WACR1C,EAAAsB,EAAAC,GAAqBW,cAAc3B,IAAI,CACrCsB,aAAcP,EAAKO,aACnBH,eAAgBJ,EAAKI,eACrBM,gBAAiBV,EAAKU,kBAExBhC,EAAAsB,EAAAC,GAAqBrE,MAAMqD,IAAI,CAC7BqB,aAAcN,EAAKM,aACnBH,eAAgBH,EAAKG,eACrBM,UAAWT,EAAKS,YAElBT,EAAKiB,MAAME,QACXnB,EAAKD,MAAMmB,uBAjDbvG,OAAA0G,eAAavB,EAAA9E,UAAA,iBAAc,KAA3B,SAA4BY,GAC1BoD,EAAA3B,KAAI4C,EAAmBrE,oCAczBkE,EAAA9E,UAAAsG,gBAAA,aAEAxB,EAAA9E,UAAAuG,YAAA,aAmCAzB,EAAA9E,UAAAwG,QAAA,WACE9C,EAAArB,KAAA4C,GAAqBrE,MAAM6F,SAC3BpE,KAAK4D,MAAME,QACX9D,KAAK0C,MAAMmB,wDAhEdQ,EAAAA,UAAShC,KAAA,CAAC,CACTC,SAAU,kBACVgC,SAAA,gzPAEAC,gBAAiBC,EAAAA,wBAAwBC,8LAXoBC,EAAAA,qDAc5DC,EAAAA,UAAStC,KAAA,CAACuC,EAAAA,iCAEVpC,EAAAA,+BAGAA,EAAAA,uBAGAA,EAAAA,0BAIAA,EAAAA,2BCgCD,SAAAqC,EAAoBC,EAAgCC,GAApD,IAAApC,EAAA3C,KAAoBA,KAAA8E,IAAAA,EAAgC9E,KAAA+E,cAAAA,EAvB3C/E,KAAAgD,QAA2B,GACpChD,KAAA6C,gBAA2C,GAIlC7C,KAAAmD,WAA6C,GAMtDnD,KAAAgF,qBAAuB,IAAIC,EAAAA,gBAA8C,MAEzEjF,KAAAoD,UAAiB,GACjBpD,KAAAqD,gBAA2C,GAC3CrD,KAAAiD,aAAoB,GACpBjD,KAAAkD,aAAwC,GACxClD,KAAA8C,eAAsB,GACtB9C,KAAA+C,eAA0C,GAG1CmC,GAAAtD,IAAA5B,KAAgB,IAAImF,EAAAA,cAsCpBnF,KAAAoF,SAAW,SAACC,GACV1C,EAAK2C,eAAe/G,MAAMqD,IAAI,CAC5BqB,aAAcN,EAAKM,aACnBH,eAAgBH,EAAKG,eACrBM,UAAWT,EAAKS,aAIpBpD,KAAAuF,aAAe,WACb5C,EAAK2C,eAAe/G,MAAMqD,IAAI,CAC5BqB,aAAcN,EAAKM,aACnBH,eAAgBH,EAAKG,eACrBM,UAAWT,EAAKS,UAChBoC,WAAW,KAIfxF,KAAAsD,KAAO,WACLX,EAAK8C,YAAYnC,QArDjBtD,KAAK0F,kBAAoB1F,KAAK+E,cAAcY,YAC5C3F,KAAK8E,IAAIjB,sBA5BXvG,OAAA0G,eAAqBa,EAAAlH,UAAA,UAAO,KAA5B,SAA6BiI,GAC3B5F,KAAK4F,OAASA,mCAIhBtI,OAAA0G,eAA8Ba,EAAAlH,UAAA,mBAAgB,KAA9C,SAA+CY,GAC7CyB,KAAK6C,gBAAkBtE,GAAS,oCAIlCjB,OAAA0G,eAA6Ba,EAAAlH,UAAA,kBAAe,KAA5C,SAA6CY,GAC3CyB,KAAKsF,eAAiB/G,EACtByB,KAAKgF,qBAAqBvG,KAAKuB,KAAKsF,iDAmBtCT,EAAAlH,UAAAsG,gBAAA,WAAA,IAAAtB,EAAA3C,KACEqB,EAAArB,KAAAkF,IAAmBW,IACjB7F,KAAKgF,qBAAqBc,KAAKC,EAAAA,UAAU/F,KAAKsF,iBAAiBU,WAAU,SAAAV,GACnE3C,EAAK2C,iBACPjE,EAAAsB,EAAAuC,IAAmBW,IACjBlD,EAAK2C,eAAe/B,cAAc0C,SAASD,WAAU,SAAAzC,GAC3C,IAAAL,EAAkDK,EAAaL,aAAjDH,EAAoCQ,EAAaR,eAAjCM,EAAoBE,EAAaF,gBACvEV,EAAKO,aAAeA,EACpBP,EAAKI,eAAiBA,EACtBJ,EAAKU,gBAAkBA,EACvBV,EAAKmC,IAAIjB,mBAGbxC,EAAAsB,EAAAuC,IAAmBW,IACjBlD,EAAK2C,eAAe/G,MAAM0H,SAASD,WAAU,SAAAzH,GACnC,IAAA0E,EAA4C1E,EAAK0E,aAAnCH,EAA8BvE,EAAKuE,eAAnBM,EAAc7E,EAAK6E,UACzDT,EAAKM,aAAeA,EACpBN,EAAKG,eAAiBA,EACtBH,EAAKS,UAAYA,EACjBT,EAAKmC,IAAIjB,yBAQrBgB,EAAAlH,UAAAuG,YAAA,WACE7C,EAAArB,KAAAkF,IAAmBgB,wDApEtB7B,EAAAA,UAAShC,KAAA,CAAC,CACTC,SAAU,iBACVgC,SAAA,+0QAEAC,gBAAiBC,EAAAA,wBAAwBC,iMAlBzCC,EAAAA,yBAUOyB,EAAAA,+DAWNxB,EAAAA,UAAStC,KAAA,CAACI,qBAEVD,EAAAA,MAAKH,KAAA,CAAC,2BAGNG,EAAAA,gCAEAA,EAAAA,MAAKH,KAAA,CAAC,uCAGNG,EAAAA,+BAEAA,EAAAA,MAAKH,KAAA,CAAC,uCC/BP,SAAA+D,EAAmBjE,GAAAnC,KAAAmC,YAAAA,SAJnB7E,OAAA0G,eAA6BoC,EAAAzI,UAAA,UAAO,KAApC,SAAqC0I,GACnCrG,KAAKsG,eAA0B,KAARD,GAAeA,6DANzCjE,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,sEAHeC,EAAAA,6DAMxBC,EAAAA,uBACAA,EAAAA,MAAKH,KAAA,CAAC,4BCDP,SAAmBF,GAAAnC,KAAAmC,YAAAA,wBAJpBC,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,8EAHQC,EAAAA,sBCOlB,SAAmBJ,GAAAnC,KAAAmC,YAAAA,wBALpBC,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,sEAHeC,EAAAA,6DAMxBC,EAAAA,wCCAD,SAAmBL,GAAAnC,KAAAmC,YAAAA,wBAJpBC,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,yEAHQC,EAAAA,sBC4BlB,SACUgE,EACiCC,GAF3C,IAAA7D,EAAA3C,KACUA,KAAAuG,eAAAA,EACiCvG,KAAAwG,0BAAAA,EAb3CC,GAAA7E,IAAA5B,KAAW,CACT0G,iBAAkB,qBAClBC,OAAQ,WACRC,eAAgB,yBAChBC,QAAS,YACTC,UAAW,cACXC,MAAO,YAETC,GAAApF,IAAA5B,KAEI,IAMJA,KAAAiH,KAAO,SAACC,EAAaC,GACnB,IAAK9F,EAAAsB,EAAAqE,IAAYE,GAAM,CACrB,IAAME,EAAU,IAAIC,EAAAA,QACpBhG,EAAAsB,EAAAqE,IAAYE,GAAO,CACjBI,KAAMjG,EAAAsB,EAAA4E,IAAA1J,KAAA8E,EAAWwE,EAAYC,GAC7B1F,IAAKL,EAAAsB,EAAA6E,IAAA3J,KAAA8E,EAAUwE,GACfvF,IAAK,SAAC2B,GAGJ,OAFAA,EAAgBlC,EAAAsB,EAAA8E,IAAA5J,KAAA8E,EAAUwE,EAAY5D,GACtC6D,EAAQ3I,KAAInB,OAAAoK,OAAA,GAAMnE,IACXA,GAETa,OAAQ,WACN/C,EAAAsB,EAAAgF,IAAA9J,KAAA8E,EAAawE,EAAb9F,GACA+F,EAAQ3I,KAAK4C,EAAAsB,EAAAiF,IAAA/J,KAAA8E,EAAcwE,KAE7BlB,SAAUmB,GAGd,OAAO/F,EAAAsB,EAAAqE,IAAYE,IAGrBW,GAAAjG,IAAA5B,MAAU,SAACmH,WAET,OAAuB,QAAnBW,EAACX,MAAAA,OAAU,EAAVA,EAAYY,cAAM,IAAAD,OAAA,EAAAA,EAAEZ,OAAQC,MAAAA,OAAU,EAAVA,EAAYD,KAGtCc,EAAAA,QAAK,CACVC,OALa,uCAMbf,KAAuB,QAAlBgB,EAAAf,MAAAA,OAAU,EAAVA,EAAYY,cAAM,IAAAG,OAAA,EAAAA,EAAEhB,QAAQC,MAAAA,OAAU,EAAVA,EAAYD,OAJtC,QAQXU,GAAAhG,IAAA5B,MAAW,SAACmH,SAcV,MAAO,CACLnE,SAbmB,QAAnB8E,EAAAX,MAAAA,OAAU,EAAVA,EAAYnE,eAAO,IAAA8E,OAAA,EAAAA,EACflC,QAAO,SAAAlH,GAAK,OAACA,EAAEyJ,UAChBC,KAAI,SAAA1J,GAAK,MAAA,CACR2J,OAAQ,CACNC,MAAO5J,EAAE4J,MACTC,MAAO7J,EAAE6J,MACTC,MAAO9J,EAAE8J,MACTC,UAAW/J,EAAE+J,WAEfA,UAAW/J,EAAE+J,UACbC,OAAO,QACF,OAMbnB,GAAA3F,IAAA5B,MAAQ,SAACmH,EAA2BwB,GAClC,OAAO,WAAA,OAAA7K,EAAA6E,OAAA,OAAA,GAAA,mEAEiB,MAAA,CAAA,EADVtB,EAAArB,KAAAwH,IAAA3J,KAAAmC,KAAUmH,EACMzF,kBAAtB6B,EAAgBqF,EAAApJ,OACtBmJ,EAAQlK,KAAInB,OAAAoK,OAAA,GAAMnE,mBAItBiE,GAAA5F,IAAA5B,MAAO,SAACmH,GACN,OAAO,WAAA,OAAArJ,EAAA6E,OAAA,OAAA,GAAA,iFAEL,OADMuE,EAAM7F,EAAArB,KAAA6H,IAAAhK,KAAAmC,KAAamH,KAIjBnE,EAAoBmE,EAAUnE,QAEd,YAApB+E,OAFaA,EAAWZ,EAAUY,aAE5B,EAANA,EAAQc,SAAR,CAAA,EAAA,IACID,EAAkB5I,KAAKuG,eAAeuC,aAAkC5B,EAAK,CACjF7E,KAAM0F,MAAAA,OAAM,EAANA,EAAQ1F,OADRX,EAAGkH,EAAAlH,IAAE0C,EAAMwE,EAAAxE,OAGH,CAAA,EAAM1C,IAAMqH,OAAM,kBARlC,CAAA,EAAO1H,EAAArB,KAAA4H,IAAA/J,KAAAmC,KAAcmH,WASrB,OAAK5D,OADLA,EAAgByF,EAAAxJ,aACE,EAAb+D,EAAeP,gBAClBoB,IAAS2E,MAAME,QAAQhI,OACvB,CAAA,EAAOI,EAAArB,KAAA4H,IAAA/J,KAAAmC,KAAcmH,YAQvB,GALM+B,EAAkBlJ,KAAKuG,eAAe/F,OAA4B0G,EAAK,CAC3EiC,KAAMpB,MAAAA,OAAM,EAANA,EAAQc,QACdxG,KAAM0F,MAAAA,OAAM,EAANA,EAAQ1F,OAFRX,EAAGwH,EAAAxH,IAAE0C,EAAM8E,EAAA9E,SAKdb,OADLA,EAAgB7B,UACE,EAAb6B,EAAeP,SAElB,OADAoB,IACA,CAAA,EAAO/C,EAAArB,KAAA4H,IAAA/J,KAAAmC,KAAcmH,qBA4BzB,OAxBA5D,EAAcP,QAAUO,EAAcP,QAAQ4C,QAAO,SAAAwD,GAAU,OAAApG,EAAQqG,MAAK,SAAA3K,GAAK,OAACA,EAAEyJ,QAAUzJ,EAAE4J,QAAUc,EAAOf,OAAOC,YAExHtF,EAAQsG,SAAQ,SAAAF,GACd,IAAMG,EAAMhG,EAAcP,QAAQwG,MAAK,SAAA9K,GAAC,IAAAoJ,EAAI,OAAQ,QAARA,EAAApJ,EAAE2J,cAAM,IAAAP,OAAA,EAAAA,EAAEQ,SAAUc,EAAOd,SAClEiB,EAYHA,EAAIlB,OAAS,CACXC,MAAOc,EAAOd,MACdC,MAAOa,EAAOb,MACdC,MAAOY,EAAOZ,MACdC,UAAWW,EAAOX,WAfpBlF,EAAcP,QAAQzC,KAAK,CACzB8H,OAAQ,CACNC,MAAOc,EAAOd,MACdC,MAAOa,EAAOb,MACdC,MAAOY,EAAOZ,MACdC,UAAWW,EAAOX,WAEpBA,UAAWW,EAAOX,UAClBC,OAAO,OAWb,CAAA,EAAOnF,cAIXkE,GAAA7F,IAAA5B,MAAO,SAACmH,EAA2B5D,eAC3B2D,EAAM7F,EAAAsB,EAAAkF,IAAAhK,KAAA8E,EAAawE,GAezB,OAdID,IACkC,YAAd,QAAlBY,EAAAX,MAAAA,OAAU,EAAVA,EAAYY,cAAM,IAAAD,OAAA,EAAAA,EAAEe,UACdjH,EAAQe,EAAK4D,eAAeuC,aAAkC5B,EAAK,CACzE7E,KAAwB,QAApB6F,EAAEf,MAAAA,OAAU,EAAVA,EAAYY,cAAM,IAAAG,OAAA,EAAAA,EAAE7F,OAC1BT,KACE2B,IAEI3B,EAAQe,EAAK4D,eAAe/F,OAA4B0G,EAAK,CACnEiC,KAAwB,QAApBM,EAAEtC,MAAAA,OAAU,EAAVA,EAAYY,cAAM,IAAA0B,OAAA,EAAAA,EAAEZ,QAC1BxG,KAAwB,QAApBqH,EAAEvC,MAAAA,OAAU,EAAVA,EAAYY,cAAM,IAAA2B,OAAA,EAAAA,EAAErH,OAC1BT,KACE2B,IAGDC,KAAKC,MAAMD,KAAKE,UAAUH,OAGnCoE,GAAA/F,IAAA5B,MAAU,SAACmH,GACT,OAAO,uBACCD,EAAM7F,EAAAsB,EAAAkF,IAAAhK,KAAA8E,EAAawE,GACrBD,IACkC,YAAd,QAAlBY,EAAAX,MAAAA,OAAU,EAAVA,EAAYY,cAAM,IAAAD,OAAA,EAAAA,EAAEe,UACdzE,EAAWzB,EAAK4D,eAAeuC,aAAkC5B,EAAK,CAC5E7E,KAAwB,QAApB6F,EAAEf,MAAAA,OAAU,EAAVA,EAAYY,cAAM,IAAAG,OAAA,EAAAA,EAAE7F,OAC1B+B,WAGMA,EAAWzB,EAAK4D,eAAe/F,OAA4B0G,EAAK,CACtEiC,KAAwB,QAApBM,EAAEtC,MAAAA,OAAU,EAAVA,EAAYY,cAAM,IAAA0B,OAAA,EAAAA,EAAEZ,QAC1BxG,KAAwB,QAApBqH,EAAEvC,MAAAA,OAAU,EAAVA,EAAYY,cAAM,IAAA2B,OAAA,EAAAA,EAAErH,OAC1B+B,eA0DVpE,KAAA2J,4BAA8B,SAC5BpG,EACA4D,EACAyC,WAEMhL,EAAoC,CACxCwK,OAAQ,GACRS,YAAa,GACbC,aAAc,GACdC,cAAe,GACfC,aAAc,GACdC,cAAe,GACfC,iBAAkB,GAClBC,iBAAkB,GAClBC,gBAAgB,GAEZxB,EAAgCzB,GAAc,GAA5C7E,EAAQsG,EAAAtG,SAAE+H,EAAQzB,EAAAyB,SAAEC,EAAK1B,EAAA0B,MAmDjC,OAlDIhI,MAAAA,OAAQ,EAARA,EAAUiI,WACZ3L,EAAOoL,aAAazJ,KAAKc,EAAAsB,EAAA8D,IAAcK,WACvClI,EAAOsL,iBAAiB3J,KAAKc,EAAAsB,EAAA8D,IAAcK,aAEzCuD,MAAAA,OAAQ,EAARA,EAAU/J,UACZ1B,EAAOoL,aAAazJ,KAAKc,EAAAsB,EAAA8D,IAAcI,SACvCjI,EAAOsL,iBAAiB3J,KAAKc,EAAAsB,EAAA8D,IAAcI,WAE5B,QAAjBiB,EAAIwC,MAAAA,OAAK,EAALA,EAAOE,cAAM,IAAA1C,OAAA,EAAAA,EAAExH,UACjB1B,EAAOoL,aAAazJ,KAAKc,EAAAsB,EAAA8D,IAAcM,OACvCnI,EAAOsL,iBAAiB3J,KAAKc,EAAAsB,EAAA8D,IAAcM,QAEvB,QAAtBmB,EAAA3E,MAAAA,OAAa,EAAbA,EAAeP,eAAO,IAAAkF,GAAAA,EAClBtC,QAAO,SAAA2D,GAAO,OAACA,EAAId,aACpBa,SAAQ,SAAAC,SACDH,EAASjC,MAAAA,OAAU,EAAVA,EAAYnE,QAAQwG,MAAK,SAAA9K,GAAK,OAAAA,EAAE4J,QAAUiB,EAAIlB,OAAOC,SAChEc,IACFxK,EAAOwK,OAAOG,EAAIlB,OAAOC,OAAS,CAChCC,MAAOgB,EAAIhB,OAASgB,EAAIlB,OAAOE,MAC/BC,MAAOe,EAAIf,OAASe,EAAIlB,OAAOG,OAE7Be,EAAIb,QACN9J,EAAOiL,YAAYN,EAAIlB,OAAOC,OAAS,CACrCC,MAAOgB,EAAIhB,OAASgB,EAAIlB,OAAOE,MAC/BC,MAAOe,EAAIf,OAASe,EAAIlB,OAAOG,QAGnC5J,EAAOkL,aAAavJ,KAAIjD,OAAAoK,OAAApK,OAAAoK,OAAA,GACnB0B,GAAM,CACTb,MAAOgB,EAAIhB,OAASgB,EAAIlB,OAAOE,MAC/BC,MAAOe,EAAIf,OAASe,EAAIlB,OAAOG,SAEjC5J,EAAOoL,aAAazJ,KAAKgJ,EAAIlB,OAAOC,OACpC1J,EAAOsL,iBAAiB3J,KAAKgJ,EAAIlB,OAAOC,OACpB,aAAhBc,EAAOD,OACM,QAAfrB,EAAAsB,EAAOqB,gBAAQ,IAAA3C,GAAAA,EAAEwB,SAAQ,SAAAoB,GACvB9L,EAAOmL,cAAcxJ,KAAKmK,GAC1B9L,EAAOqL,cAAc1J,KAAKmK,EAAYpC,OACtC1J,EAAOsL,iBAAiB3J,KAAKmK,EAAYpC,gBAK/CsB,MAAAA,OAAgB,EAAhBA,EAAkBzH,eACpBvD,EAAOoL,aAAazJ,KAAKc,EAAAsB,EAAA8D,IAAcG,gBACvChI,EAAOsL,iBAAiB3J,KAAKc,EAAAsB,EAAA8D,IAAcG,iBAE7ChI,EAAOwL,eAAiBxL,EAAOqL,cAAc3J,OAAS,EAEtD1B,EAAOuL,iBAAmBvL,EAAOsL,iBAAiBtE,QAAO,SAAAS,GAAO,OAAAA,IAAQhF,EAAAsB,EAAA8D,IAAcG,kBAC/EhI,iJAnSV+L,EAAAA,uDAbQC,EAAAA,iDA4BJC,EAAAA,OAAMxI,KAAA,CAACJ,KAAY,CAAAkH,KAAG2B,EAAAA,cCDpB,+BAAMC,GAAmB,SAAU1F,GAA4B,MAAA,CACpE2F,QAASxH,KAAKC,MAAMD,KAAKE,UAAU2B,IACnCgD,OAAQhD,EACR4F,KAAM,CACJC,GAAIlD,EAAK3C,GACT8F,OAAQ,CACNC,aAAa,EACbC,YAAY,GAEdf,MAAO,GACPhI,SAAU,CAAEgJ,QAAS,GAAIC,YAAY,EAAOC,YAAY,SCpC5D,WAAA,IAAA7I,EAAA3C,KAIEyL,GAAA7J,IAAA5B,KAAU,wCACVgH,GAAAA,IAAAA,KAII,IACJhH,KAAA0L,UAAY,SAAOnN,EAAY6K,GAAqB,OAAAtL,EAAA6E,OAAA,OAAA,GAAA,yGAClD,MAAoB,WAAhByG,EAAOD,OAAmC,QAAdrB,EAACsB,EAAOuC,cAAM,IAAA7D,OAAA,EAAAA,EAAE8D,SAAuB,QAAd1D,EAACkB,EAAOuC,cAAM,IAAAzD,OAAA,EAAAA,EAAE2D,cAA4B,QAAdpC,EAACL,EAAOuC,cAAM,IAAAlC,OAAA,EAAAA,EAAEqC,eAGjGC,EAA4D3C,EAAOuC,OAAjEC,EAAKG,EAAkEH,MAAhEC,EAAUE,EAAsDF,WAApDC,EAAYC,EAAwCD,aAAtCE,EAASD,EAA6BC,UAAxBC,WXyBpCtL,EAAGjC,GACtB,IAAIU,EAAI,GACR,IAAK,IAAI1B,KAAKiD,EAAOrD,OAAOK,UAAUC,eAAeC,KAAK8C,EAAGjD,IAAMgB,EAAEwN,QAAQxO,GAAK,IAC9E0B,EAAE1B,GAAKiD,EAAEjD,IACb,GAAS,MAALiD,GAAqD,mBAAjCrD,OAAO6O,sBACtB,CAAA,IAAItL,EAAI,EAAb,IAAgBnD,EAAIJ,OAAO6O,sBAAsBxL,GAAIE,EAAInD,EAAE4C,OAAQO,IAC3DnC,EAAEwN,QAAQxO,EAAEmD,IAAM,GAAKvD,OAAOK,UAAUyO,qBAAqBvO,KAAK8C,EAAGjD,EAAEmD,MACvEzB,EAAE1B,EAAEmD,IAAMF,EAAEjD,EAAEmD,KAE1B,OAAOzB,EWlCsDiN,CAAAN,EAAvD,CAAA,QAAA,aAAA,eAAA,cACA7E,EAAMc,EAAAA,QAAK,CACfC,OAAM5G,EAAArB,KAAAyL,IACNI,WAAUA,EACVC,aAAYA,EACZE,UAASA,EACTC,OAAMA,EACN1N,MAAKA,IAED+N,EAAa,CAAC,WAAY,uBAAwB,kBAAmB,+BAA+BC,SAASP,GAC5F,mBAAnB,EAAA,CAAA,EAAA,GACG3K,EAAArB,KAAAwM,IAAYtF,GAAb,CAAA,EAAA,GACa,CAAA,EAAM0E,EAAMrN,GAAO,KAdpC,CAAA,EAAOA,UAcCkO,EAASC,EAAAlN,OACXZ,EAAS,GAEXA,EADE0N,GAAc7O,MAAMkP,QAAQpO,IAC4D,QAAjFqK,EAAoD,QAApDc,EAAA+C,MAAAA,OAAM,EAANA,EAAQ7G,QAAO,SAAAlH,GAAK,OAAAH,MAAAA,OAAK,EAALA,EAAOgO,SAAS7N,MAAAA,OAAC,EAADA,EAAImN,cAAY,IAAAnC,OAAA,EAAAA,EAAGtB,KAAI,SAAA1J,GAAK,OAAAA,MAAAA,OAAC,EAADA,EAAIoN,aAAa,IAAAlD,OAAA,EAAAA,EAAGgE,KAAK,SAASrO,MAAAA,OAAK,EAALA,EAAOqO,KAAK,QAGnE,QAA3C1D,EAAAuD,MAAAA,OAAM,EAANA,EAAQjD,MAAK,SAAA9K,GAAK,OAAAA,MAAAA,OAAC,EAADA,EAAImN,MAAgBtN,YAAK,IAAA2K,OAAA,EAAAA,EAAI4C,KAAiBvN,EAE3E8C,EAAArB,KAAAwM,IAAYtF,GAAO,CACjBtI,OAAMA,uCAILyC,EAAArB,KAAAwM,IAAYtF,KACXtI,EAAS,GAEXA,EADE0N,GAAc7O,MAAMkP,QAAQpO,GACuE,QAA/FsO,EAAmF,QAAnFC,EAAsD,QAAtD9D,EAAG4C,MAAAA,OAAK,EAALA,EAAOhG,QAAO,SAAAlH,GAAK,OAAAH,MAAAA,OAAK,EAALA,EAAOgO,SAAS7N,MAAAA,OAAC,EAADA,EAAImN,cAAY,IAAA7C,OAAA,EAAAA,EAAGZ,KAAI,SAAA1J,GAAK,OAAAA,MAAAA,OAAC,EAADA,EAAIoN,aAAa,IAAAgB,OAAA,EAAAA,EAAGF,KAAK,aAAI,IAAAC,EAAAA,EAAKtO,MAAAA,OAAK,EAALA,EAAOqO,KAAK,OAGnE,QAA1CG,EAAAnB,MAAAA,OAAK,EAALA,EAAOpC,MAAK,SAAA9K,GAAK,OAAAA,MAAAA,OAAC,EAADA,EAAImN,MAAgBtN,YAAK,IAAAwO,OAAA,EAAAA,EAAIjB,KAAiBvN,EAE1E8C,EAAArB,KAAAwM,IAAYtF,GAAO,CACjBtI,OAAMA,qBAIZ,MAAA,CAAA,EAAOyC,EAAArB,KAAAwM,IAAYtF,GAAKtI,oEApD3BoO,EAAAA,KAAI3K,KAAA,CAAC,CACJ4K,KAAM,kGCeN,SAAoB1G,GAApB,IAAA5D,EAAA3C,KAAoBA,KAAAuG,eAAAA,EAHpB2G,GAAAtL,IAAA5B,KAAuB,6BACvBmN,GAAAvL,IAAA5B,KAAe,qBACfgH,GAAAA,IAAAA,KAAuD,IAEvDhH,KAAAoN,SAAW,SACTxH,EACAvD,GAOA,IAAIgL,GAAe,EAEXnC,EAAiC7I,EAAI6I,GAAjClI,EAA6BX,EAAIW,QAAxBH,EAAoBR,EAAIQ,gBACvCyK,EAAUtF,EAAAA,QAAK,CACnBkD,GAAEA,EACFlI,SAASA,MAAAA,OAAO,EAAPA,EAASoF,KAAI,SAAA1J,GAAK,OAAAA,EAAE4J,SAAO1C,QAAO,SAAA0C,GAAS,QAAEA,OAAU,GAChEzF,iBAAiBA,MAAAA,OAAe,EAAfA,EAAiBuF,KAAI,SAAA1J,GAAK,OAAAA,EAAE4J,SAAO1C,QAAO,SAAA0C,GAAS,QAAEA,OAAU,KAE5EpB,GAAMtB,MAAAA,OAAM,EAANA,EAAQsB,MAAOoG,EAI3B,IAHK1H,MAAAA,OAAM,EAANA,EAAQsB,OACXmG,GAAe,IAEZhM,EAAAsB,EAAA4K,IAAYrG,GAAM,CAErB,IAAMsG,EAAsB7K,EAAK4D,eAAe/F,OAC9C,CACEyH,OAAM5G,EAAAsB,EAAAuK,IACNhG,IAAGA,GAEL,CACEuG,QAASpM,EAAAsB,EAAA+K,IAAA7P,KAAA8E,EAA2BN,GACpC8G,KAAMkE,EAAe,eAAYM,IAIrCH,EAAoB5L,IAAIP,EAAAsB,EAAAiL,IAAA/P,KAAA8E,EAAwBN,EAAMmL,EAAoB9L,QAE1E,IAAMmM,EAAclL,EAAK4D,eAAe/F,OACtC,CACEyH,OAAM5G,EAAAsB,EAAAwK,IACNjG,KAAMtB,MAAAA,OAAM,EAANA,EAAQkI,aAAwB5G,EAAVoG,GAE9B,CACEG,QAASpM,EAAAsB,EAAAoL,IAAAlQ,KAAA8E,EAAmBN,GAC5B8G,KAAMkE,KAAiBzH,MAAAA,OAAM,EAANA,EAAQkI,aAAc,eAAYH,IAI7DE,EAAYjM,IAAIP,EAAAsB,EAAAqL,IAAAnQ,KAAA8E,EAAgBN,EAAMwL,EAAYnM,QAClDL,EAAAsB,EAAA4K,IAAYrG,GAAO,CACjB3D,cAAe,CACb7B,IAAK,WACH,OAAO8L,EAAoB9L,OAE7BE,IAAK,SAAC2B,GACI,IAAAL,EAAkDK,EAAaL,aAAjDH,EAAoCQ,EAAaR,eAAjCM,EAAoBE,EAAaF,gBAMvE,OALAmK,EAAoB5L,IAAI,CACtBsB,aAAYA,EACZH,eAAcA,EACdM,gBAAeA,IAEV,CACLH,aAAYA,EACZH,eAAcA,EACdM,gBAAeA,IAGnBe,OAAQ,WACNoJ,EAAoB5L,IAAIP,EAAAsB,EAAA+K,IAAA7P,KAAA8E,EAA2BN,KAErD4D,SAAUuH,EAAoBvH,SAASH,KACrCC,EAAAA,UAAUyH,EAAoB9L,OAE9B0G,EAAAA,KAAI,SAAA7E,GAAiB,OAAAA,GAAiBlC,EAAAsB,EAAA+K,IAAA7P,KAAA8E,EAA2BN,QAGrE9D,MAAO,CACLmD,IAAK,WACH,OAAOmM,EAAYnM,OAErBE,IAAK,SAACrD,GACJ,IAAM0P,EAAO3Q,OAAO2Q,KAAK1P,GAAS,IAC5ByM,EAAU6C,EAAYnM,MACpBwM,EAAuElD,EAAOkD,eAA9DjL,EAAuD+H,EAAO/H,aAAhDH,EAAyCkI,EAAOlI,eAAhCM,EAAyB4H,EAAO5H,UAArBoC,EAAcwF,EAAOxF,UAChF2I,EAAgB,CAEpBD,eAAgBD,EAAK1B,SAAS,mBAAoBhO,MAAAA,OAAK,EAALA,EAAO2P,iBAAkB,GAAKA,EAChFjL,aAAcgL,EAAK1B,SAAS,iBAAkBhO,MAAAA,OAAK,EAALA,EAAO0E,eAAgB,GAAKA,EAE1EH,eAAgBmL,EAAK1B,SAAS,mBAAoBhO,MAAAA,OAAK,EAALA,EAAOuE,iBAAkB,GAAKA,EAEhFM,UAAW6K,EAAK1B,SAAS,cAAehO,MAAAA,OAAK,EAALA,EAAO6E,YAAa,GAAKA,EAEjEoC,YAAaA,GAGf,OADAqI,EAAYjM,IAAIuM,GACTA,GAET/J,OAAQ,WACNyJ,EAAYjM,IAAIP,EAAAsB,EAAAoL,IAAAlQ,KAAA8E,EAAmBN,KAErC4D,SAAU4H,EAAY5H,SAASH,KAC7BC,EAAAA,UAAU8H,EAAYnM,OAEtB0G,EAAAA,KAAI,SAAA7J,GAAS,OAAAA,GAAS8C,EAAAsB,EAAAoL,IAAAlQ,KAAA8E,EAAmBN,SAKjD,OAAOhB,EAAAsB,EAAA4K,IAAYrG,IAGrBwG,GAAA9L,IAAA5B,MAAwB,SAACqC,qBAKfW,EAAyCX,EAAIW,QAApCH,EAAgCR,EAAIQ,gBAAnBM,EAAed,EAAIc,WAC/CD,EAAwC,GACxCH,EAA0C,GAC1CM,EAA2C,OAEjD,IAAmB,IAAA+K,EAAA3N,EAAAuC,GAAW,IAAEqL,EAAAD,EAAA3P,QAAA4P,EAAAxP,KAAAwP,EAAAD,EAAA3P,OAC9ByE,GADSmC,EAAIgJ,EAAA9P,OACK+J,OAAqB,QAAfR,EAAGzC,MAAAA,OAAI,EAAJA,EAAMO,cAAM,IAAAkC,OAAA,EAAAA,EAAExB,oHAG3C,IAAmB,IAAAgI,EAAA7N,EAAAoC,GAAmB,IAAE0L,EAAAD,EAAA7P,QAAA8P,EAAA1P,KAAA0P,EAAAD,EAAA7P,OACtCsE,GADSsC,EAAIkJ,EAAAhQ,OACO+J,OAASjD,MAAAA,OAAI,EAAJA,EAAMiB,oHAGrC,IAAmB,IAAAkI,EAAA/N,EAAA0C,GAAc,IAAEsL,EAAAD,EAAA/P,QAAAgQ,EAAA5P,KAAA4P,EAAAD,EAAA/P,OAAE,CAAhC,IAAM4G,EACThC,GADSgC,EAAIoJ,EAAAlQ,OACQmQ,qBAAuBrJ,MAAAA,OAAI,EAAJA,EAAMiB,iHAEpD,MAAO,CAELpD,aAAYA,EAEZH,eAAcA,EAEdM,gBAAeA,MAInB0K,GAAAnM,IAAA5B,MAAgB,SAACqC,qBAKTY,EAAoC,GACpCH,EAAsC,GACtCM,EAAiC,GAC/BJ,EAAyCX,EAAIW,QAApCH,EAAgCR,EAAIQ,gBAAnBM,EAAed,EAAIc,eAErD,IAAmB,IAAAiL,EAAA3N,EAAAuC,GAAW,IAAEqL,EAAAD,EAAA3P,QAAA4P,EAAAxP,KAAAwP,EAAAD,EAAA3P,OAC9BwE,GADSoC,EAAIgJ,EAAA9P,OACK+J,OAAqB,QAAfR,EAAGzC,MAAAA,OAAI,EAAJA,EAAMO,cAAM,IAAAkC,OAAA,EAAAA,EAAE2F,6GAG3C,IAAmB,IAAAa,EAAA7N,EAAAoC,GAAmB,IAAE0L,EAAAD,EAAA7P,QAAA8P,EAAA1P,KAAA0P,EAAAD,EAAA7P,OACtCqE,GADSuC,EAAIkJ,EAAAhQ,OACO+J,OAASjD,MAAAA,OAAI,EAAJA,EAAMoI,6GAGrC,IAAmB,IAAAe,EAAA/N,EAAA0C,GAAc,IAAEsL,EAAAD,EAAA/P,QAAAgQ,EAAA5P,KAAA4P,EAAAD,EAAA/P,OAAE,CAAhC,IAAM4G,EACTjC,GADSiC,EAAIoJ,EAAAlQ,OACEmQ,0BAAuBf,oGAExC,MAAO,CAEL1K,aAAYA,EAEZH,eAAcA,EAEdM,UAASA,MAIbwK,GAAAhM,IAAA5B,MAAqB,SACnBqC,EAKAkB,iCAEQP,EAAyCX,EAAIW,QAApCH,EAAgCR,EAAIQ,gBAAnBM,EAAed,EAAIc,WAC/CD,EAAwC,GACxCH,EAA0C,GAC1CM,EAA2C,OAEjD,IAAmB,IAAA+K,EAAA3N,EAAAuC,GAAW,IAAEqL,EAAAD,EAAA3P,QAAA4P,EAAAxP,KAAAwP,EAAAD,EAAA3P,OAC9ByE,GADSmC,EAAIgJ,EAAA9P,OACK+J,OAAiD,QAA3CJ,EAA8B,QAA9BJ,EAAGvE,MAAAA,OAAa,EAAbA,EAAeL,oBAAY,IAAA4E,OAAA,EAAAA,EAAGzC,EAAKiD,cAAK,IAAAJ,EAAAA,EAAiB,QAAjBuB,EAAKpE,MAAAA,OAAI,EAAJA,EAAMO,cAAM,IAAA6D,OAAA,EAAAA,EAAEnD,oHAGxF,IAAmB,IAAAgI,EAAA7N,EAAAoC,GAAmB,IAAE0L,EAAAD,EAAA7P,QAAA8P,EAAA1P,KAAA0P,EAAAD,EAAA7P,OACtCsE,GADSsC,EAAIkJ,EAAAhQ,OACO+J,OAAmD,QAA7CM,EAAgC,QAAhCc,EAAGnG,MAAAA,OAAa,EAAbA,EAAeR,sBAAc,IAAA2G,OAAA,EAAAA,EAAGrE,EAAKiD,cAAK,IAAAM,EAAAA,EAAKvD,MAAAA,OAAI,EAAJA,EAAMiB,oHAGpF,IAAmB,IAAAkI,EAAA/N,EAAA0C,GAAc,IAAEsL,EAAAD,EAAA/P,QAAAgQ,EAAA5P,KAAA4P,EAAAD,EAAA/P,OAAE,CAAhC,IAAM4G,EACThC,GADSgC,EAAIoJ,EAAAlQ,OACQmQ,qBAAgF,QAA5D1F,EAAiC,QAAjCE,EAAG3F,MAAAA,OAAa,EAAbA,EAAeF,uBAAe,IAAA6F,OAAA,EAAAA,EAAG7D,EAAKqJ,4BAAmB,IAAA1F,EAAAA,EAAK3D,MAAAA,OAAI,EAAJA,EAAMiB,iHAElH,MAAO,CAELpD,aAAYA,EAEZH,eAAcA,EAEdM,gBAAeA,MAInB2K,GAAApM,IAAA5B,MAAa,SACXqC,EAKA9D,iDAEM0E,EAAoC,GACpCH,EAAsC,GACtCM,EAAiC,GAC/BJ,EAAyCX,EAAIW,QAApCH,EAAgCR,EAAIQ,gBAAnBM,EAAed,EAAIc,eAErD,IAAmB,IAAAiL,EAAA3N,EAAAuC,GAAW,IAAEqL,EAAAD,EAAA3P,QAAA4P,EAAAxP,KAAAwP,EAAAD,EAAA3P,OAC9BwE,GADSoC,EAAIgJ,EAAA9P,OACK+J,OAAyC,QAAnCJ,EAAsB,QAAtBJ,EAAGvJ,MAAAA,OAAK,EAALA,EAAO0E,oBAAY,IAAA6E,OAAA,EAAAA,EAAGzC,EAAKiD,cAAK,IAAAJ,EAAAA,EAAiB,QAAjBuB,EAAKpE,MAAAA,OAAI,EAAJA,EAAMO,cAAM,IAAA6D,OAAA,EAAAA,EAAEgE,6GAGhF,IAAmB,IAAAa,EAAA7N,EAAAoC,GAAmB,IAAE0L,EAAAD,EAAA7P,QAAA8P,EAAA1P,KAAA0P,EAAAD,EAAA7P,OACpB,eADT4G,EAAIkJ,EAAAhQ,OACJ4K,KACPrG,EAAeuC,EAAKiD,OAAS,CAC3BqG,KAA+C,QAA3CzF,EAAoC,QAApCN,EAAuB,QAAvBc,EAAEnL,MAAAA,OAAK,EAALA,EAAOuE,sBAAc,IAAA4G,OAAA,EAAAA,EAAGrE,EAAKiD,cAAK,IAAAM,OAAA,EAAAA,EAAG+F,YAAI,IAAAzF,EAAAA,EAAgB,QAAhBF,EAAI3D,EAAKoI,eAAO,IAAAzE,OAAA,EAAAA,EAAE2F,KACjEC,GAA2C,QAAzC7B,EAAoC,QAApCF,EAAuB,QAAvBC,EAAEvO,MAAAA,OAAK,EAALA,EAAOuE,sBAAc,IAAAgK,OAAA,EAAAA,EAAGzH,EAAKiD,cAAK,IAAAuE,OAAA,EAAAA,EAAG+B,UAAE,IAAA7B,EAAAA,EAAgB,QAAhBhB,EAAI1G,EAAKoI,eAAO,IAAA1B,OAAA,EAAAA,EAAE6C,IAG/D9L,EAAeuC,EAAKiD,OAA2C,QAArCuG,EAAwB,QAAxBnC,EAAGnO,MAAAA,OAAK,EAALA,EAAOuE,sBAAc,IAAA4J,OAAA,EAAAA,EAAGrH,EAAKiD,cAAK,IAAAuG,EAAAA,EAAKxJ,MAAAA,OAAI,EAAJA,EAAMoI,6GAI9E,IAAmB,IAAAe,EAAA/N,EAAA0C,GAAc,IAAEsL,EAAAD,EAAA/P,QAAAgQ,EAAA5P,KAAA4P,EAAAD,EAAA/P,OAAE,CAAhC,IAAM4G,EACTjC,GADSiC,EAAIoJ,EAAAlQ,OACEmQ,qBAAkE,QAA9CI,EAAmB,QAAnBC,EAAGxQ,MAAAA,OAAK,EAALA,EAAO6E,iBAAS,IAAA2L,OAAA,EAAAA,EAAG1J,EAAKqJ,4BAAmB,IAAAI,EAAAA,OAAKnB,oGAExF,MAAO,CAEL1K,aAAYA,EAEZH,eAAcA,EAEdM,UAASA,qIA1PduH,EAAAA,uDAZQC,EAAAA,sCCiLP,SAAAoE,EACUlK,EAGDvB,EACC0L,EACAC,EACAC,EACAC,EACAC,GATV,IAAA1M,EAAA3C,KACUA,KAAA8E,IAAAA,EAGD9E,KAAAuD,cAAAA,EACCvD,KAAAiP,yBAAAA,EACAjP,KAAAkP,cAAAA,EACAlP,KAAAmP,cAAAA,EACAnP,KAAAoP,iBAAAA,EACApP,KAAAqP,kBAAAA,EApIVC,GAAA1N,IAAA5B,KAAUuP,EAAAA,MAGVvP,KAAAkH,IAAMqI,EAAAA,KAiCNC,GAAA5N,IAAA5B,KAAiB,IAAIqH,EAAAA,SAGrBoI,GAAA7N,IAAA5B,KAAgC,IAChCA,KAAA4L,MAA0B,GAC1B5L,KAAA0P,cAAqB,GAIrB1P,KAAA2P,WAAY,EAGZ3P,KAAA4P,mBAAoB,EACpBC,GAAAjO,IAAA5B,UAAA,GAmBA8P,GAAAlO,IAAA5B,UAAA,GA2B6CA,KAAA+P,WAAa,IAAIC,EAAAA,UAC9DhQ,KAAAiQ,QAEI,GAG2CjQ,KAAAkQ,aAAe,IAAIF,EAAAA,UAClEhQ,KAAAmQ,UAEI,GACJnQ,KAAAoQ,WAAY,EAGmCpQ,KAAAqQ,aAAe,IAAIL,EAAAA,UAClEhQ,KAAAmD,WAA6C,GAG7CnD,KAAAkO,eAAmD,GACnDlO,KAAAiD,aAAoC,GAEpCiC,GAAAA,IAAAA,KAAgB,IAAIC,EAAAA,cACpBmL,GAAA1O,IAAA5B,KAAU,IAAIqH,EAAAA,SAGdrH,KAAAuQ,aAAc,EACdvQ,KAAAwQ,aAAc,EACdxQ,KAAAyQ,YAAc,SACdC,GAAA9O,IAAA5B,MAAiB,GA0DjB2Q,GAAA/O,IAAA5B,MAAe,mBACb2C,EAAKsN,QAAU,OACf,IAAsB,IAAAW,EAAAnQ,EAAAkC,EAAKoN,YAAUc,EAAAD,EAAAnS,QAAAoS,EAAAhS,KAAAgS,EAAAD,EAAAnS,OAAE,CAAlC,IAAMwR,EAAOY,EAAAtS,MACZ0R,EAAQa,oBACVnO,EAAKsN,QAAQA,EAAQa,mBAAqBb,yGAKhDc,GAAAnP,IAAA5B,MAAiB,mBACf2C,EAAKQ,WAAa,OAClB,IAAwB,IAAAyN,EAAAnQ,EAAAkC,EAAK0N,cAAYQ,EAAAD,EAAAnS,QAAAoS,EAAAhS,KAAAgS,EAAAD,EAAAnS,OAAE,CAAtC,IAAM2E,EAASyN,EAAAtS,MAClBoE,EAAKQ,WAAW5C,KAAK6C,yGAIzB4N,GAAApP,IAAA5B,MAAiB,mBACf2C,EAAKwN,UAAY,GACjBxN,EAAKyN,WAAY,MACjB,IAAwB,IAAAQ,EAAAnQ,EAAAkC,EAAKuN,cAAYW,EAAAD,EAAAnS,QAAAoS,EAAAhS,KAAAgS,EAAAD,EAAAnS,OAAE,CAAtC,IAAM0R,EAASU,EAAAtS,MACd4R,EAAUc,sBACZtO,EAAKyN,WAAY,EACjBzN,EAAKwN,UAAUA,EAAUc,qBAAuBd,yGAKtDe,GAAAtP,IAAA5B,MAAoB,SAACmR,EAAoBpP,WACjCqP,EAA8DzO,EAAK2C,eAAe/G,MAAMmD,MAC9F,MAAO,CACLwM,eAFoBkD,EAAAlD,gBAEc,GAClCmD,gBAHkCD,EAAAnO,cAGD,GACjCqO,kBAJkDF,EAAAtO,gBAIb,GACrCyO,aAL6DH,EAAAhO,WAKlC,GAC3BoO,SAAS,QAAA1J,EAAAzG,EAAAsB,EAAAmN,WAAA,IAAAhI,OAAA,EAAAA,EAAY2J,SAAU,GAC/BC,gBAAgB,QAAAxJ,EAAA7G,EAAAsB,EAAAmN,WAAA,IAAA5H,OAAA,EAAAA,EAAYyJ,YAAa,GACzCR,WAAUA,EACVpP,SAAQA,EACR6P,YAAY,MAIhBhE,GAAAA,IAAAA,MAAqB,SAACjC,2EAEpBA,EAAO7J,SAAW,CAChBqG,OAAwB,QAAlBL,EAAE6D,MAAAA,OAAM,EAANA,EAAQ7J,gBAAQ,IAAAgG,OAAA,EAAAA,EAAEK,OAC1BpG,SAA8E,QAAtEmH,EAA4B,QAA5BO,EAAkB,QAAlBvB,EAAEyD,MAAAA,OAAM,EAANA,EAAQ7J,gBAAQ,IAAAoG,OAAA,EAAAA,EAAEnG,gBAAQ,IAAA0H,EAAAA,EAAgC,QAAhCb,EAAsB,QAAtBc,EAAI/G,EAAKY,qBAAa,IAAAmG,OAAA,EAAAA,EAAE5H,gBAAQ,IAAA8G,OAAA,EAAAA,EAAE7G,gBAAQ,IAAAmH,EAAAA,EAAiC,QAAjCF,EAAInH,GAAqBC,gBAAQ,IAAAkH,OAAA,EAAAA,EAAEjH,SACjHC,MAAqE,QAAhE0K,EAAyB,QAAzBG,EAAkB,QAAlBC,EAAEnB,MAAAA,OAAM,EAANA,EAAQ7J,gBAAQ,IAAAgL,OAAA,EAAAA,EAAE9K,aAAK,IAAA6K,EAAAA,EAAgC,QAAhCd,EAAsB,QAAtBgB,EAAIpK,EAAKY,qBAAa,IAAAwJ,OAAA,EAAAA,EAAEjL,gBAAQ,IAAAiK,OAAA,EAAAA,EAAE/J,aAAK,IAAA0K,EAAAA,EAAiC,QAAjCmC,EAAIhN,GAAqBC,gBAAQ,IAAA+M,OAAA,EAAAA,EAAE7M,MACxG6P,qBAA4D,QAAxC/C,EAAkB,QAAlBC,EAAEpD,MAAAA,OAAM,EAANA,EAAQ7J,gBAAQ,IAAAiN,OAAA,EAAAA,EAAE8C,4BAAoB,IAAA/C,GAAAA,OAE9D,IAAqB,IAAA8B,EAAAnQ,EAAAkL,EAAO3I,SAAW,IAAE6N,EAAAD,EAAAnS,QAAAoS,EAAAhS,KAAAgS,EAAAD,EAAAnS,OAAE,CAAtC,IAAM2K,EAAMyH,EAAAtS,OACY,QAAvBuT,EAAa,QAAbC,EAAA3I,EAAOxD,cAAM,IAAAmM,OAAA,EAAAA,EAAEC,gBAAQ,IAAAF,OAAA,EAAAA,EAAEG,WAAwC,QAA9B5D,EAAwB,QAAxBD,EAAc,QAAd8D,EAAC9I,EAAOxD,cAAM,IAAAsM,OAAA,EAAAA,EAAEF,gBAAQ,IAAA5D,OAAA,EAAAA,EAAE+D,YAAI,IAAA9D,OAAA,EAAAA,EAAE/N,UACjD,WAAhB8I,EAAOD,OACTC,EAAOxD,OAAOoM,SAASG,MAA2C,QAApC3D,EAA0B,QAA1BD,EAAkB,QAAlBD,EAAA3L,EAAKY,qBAAa,IAAA+K,OAAA,EAAAA,EAAE1I,cAAM,IAAA2I,OAAA,EAAAA,EAAEyD,gBAAQ,IAAAxD,OAAA,EAAAA,EAAE4D,oBAAqB,IAEvE,WAAhBhJ,EAAOD,OACTC,EAAOxD,OAAOoM,SAASG,MAA2C,QAApCE,EAA0B,QAA1BC,EAAkB,QAAlB7D,EAAA9L,EAAKY,qBAAa,IAAAkL,OAAA,EAAAA,EAAE7I,cAAM,IAAA0M,OAAA,EAAAA,EAAEN,gBAAQ,IAAAK,OAAA,EAAAA,EAAEE,oBAAqB,IAEvE,WAAhBnJ,EAAOD,OACTC,EAAOxD,OAAOoM,SAASG,MAA2C,QAApCK,EAA0B,QAA1BC,EAAkB,QAAlBC,EAAA/P,EAAKY,qBAAa,IAAAmP,OAAA,EAAAA,EAAE9M,cAAM,IAAA6M,OAAA,EAAAA,EAAET,gBAAQ,IAAAQ,OAAA,EAAAA,EAAEG,oBAAqB,IAEvE,SAAhBvJ,EAAOD,MAAmC,aAAhBC,EAAOD,OACnCC,EAAOxD,OAAOoM,SAASG,MAA2C,QAApCS,EAA0B,QAA1BC,EAAkB,QAAlBC,EAAAnQ,EAAKY,qBAAa,IAAAuP,OAAA,EAAAA,EAAElN,cAAM,IAAAiN,OAAA,EAAAA,EAAEb,gBAAQ,IAAAY,OAAA,EAAAA,EAAEG,kBAAmB,uGAI7F,OAAOpH,KAGTqH,GAAApR,IAAA5B,MAAsB,uBAEhB2C,EAAKwE,aACFxE,EAAK2C,iBACR3C,EAAK2C,eAAiB3C,EAAK0M,kBAAkBjC,SAAwB,QAAhBtF,EAACnF,EAAKwE,kBAAU,IAAAW,OAAA,EAAAA,EAAElC,OAAQ,CAC7EsF,GAAE7J,EAAAsB,EAAA2M,IACFtM,QAAwB,QAAjBkF,EAAEvF,EAAKwE,kBAAU,IAAAe,OAAA,EAAAA,EAAElF,QAC1BH,gBAAwC,QAAzB6G,EAAiB,QAAjBD,EAAE9G,EAAKwE,kBAAU,IAAAsC,OAAA,EAAAA,EAAE7D,cAAM,IAAA8D,OAAA,EAAAA,EAAE7G,gBAC1CM,WAAYR,EAAKQ,aAEnB9B,EAAAsB,EAAAsQ,IAAmBpN,IACjBlD,EAAK2C,eAAe/G,MAAM0H,SACvBH,KACCoN,EAAAA,aAAa,KACb9K,EAAAA,KAAI,SAAAzE,GACM,IAAAuK,EAA4CvK,EAAWuK,eAAvCjL,EAA4BU,EAAWV,aAAzBuC,EAAc7B,EAAW6B,UAC/D7C,EAAKuL,eAAiBA,EACtBvL,EAAKM,aAAeA,EACfuC,IACHnE,EAAAsB,EAAAkN,IAAgBsD,UAAY,EAC5B9R,EAAAsB,EAAA2N,IAAa7R,KAAK,CAChB2U,OAAO,SAKdpN,kBAMXqN,GAAAzR,IAAA5B,MAAe,SAACsT,EAA8BC,GACpC,IAAAvQ,EAAYL,EAAKwE,WAAUnE,QAC3BqO,EAAmEkC,EAAUlC,gBAA5DG,EAAkD+B,EAAU/B,QAAnDE,EAAyC6B,EAAU7B,eAAnC3P,EAAyBwR,EAAUxR,SAAzBoP,EAAeoC,EAAUpC,WAC/EvF,EAAQ0H,EAAW1N,QAAO,SAAA4N,mBACxBnO,EAAOmO,EAAUxI,YACvB,IAAqB,IAAAyI,EAAAhT,EAAAuC,GAAO0Q,EAAAD,EAAAhV,QAAAiV,EAAA7U,KAAA6U,EAAAD,EAAAhV,OAAE,CAAzB,IAAM2K,EAAMsK,EAAAnV,MACP+J,EAAgBc,EAAMd,MAAfa,EAASC,EAAMD,KACxBxF,GAAuB0N,EAAgB/I,IAAU,IAAIqL,WAAWC,OAAOC,cACvEC,GAAuBzO,EAAKiD,IAAU,IAAIqL,WAAWC,OAAOC,cAClE,GAAIlQ,EAAa,CACf,IAAKmQ,GAAwB,aAAT3K,GAAgC,SAATA,GAA4B,SAATA,EAC5D,OAAO,EAET,GAAa,WAATA,GACF,IAA0C,IAAtC2K,EAAY5H,QAAQvI,GACtB,OAAO,OAEJ,GAAa,WAATwF,GACT,GAAI2K,IAAgBnQ,EAClB,OAAO,OAEJ,GAAa,WAATwF,EAAmB,CAC5B,IAAM4K,GAAUpQ,EAAYqQ,QAAQ,KAAM,IAAIA,QAAQ,KAAM,IAAIA,QAAQ,IAAK,IAAIA,QAAQ,IAAK,IACxFC,GAAUH,EAChB,GAAIC,GAAqB,IAAXA,EAAc,CAC1B,IAAKE,GAAqB,IAAXA,EACb,OAAO,EAET,GAAItQ,EAAYuI,QAAQ,OAAS,GAAK+H,EAASF,EAC7C,OAAO,EACF,GAAIpQ,EAAYuI,QAAQ,OAAS,GAAK+H,EAASF,EACpD,OAAO,EACF,GAAIpQ,EAAYuI,QAAQ,MAAQ,GAAK+H,GAAUF,EACpD,OAAO,EACF,GAAIpQ,EAAYuI,QAAQ,MAAQ,GAAK+H,GAAUF,EACpD,OAAO,EACF,GAAIE,IAAWF,EACpB,OAAO,QAGN,GAAa,SAAT5K,EAAiB,CAC1B,GAAoB,MAAhBxF,GAAuC,MAAhBmQ,GAAuC,SAAhBA,EAChD,OAAO,EACF,GAAoB,MAAhBnQ,GAAuC,MAAhBmQ,GAAuC,UAAhBA,EACvD,OAAO,OAEJ,GAAa,aAAT3K,GAAgC,SAATA,GAA4B,SAATA,EAAiB,CACpE,IAAMwF,EAAmC,QAA/BzG,EAAyB,QAAzBJ,EAAGuJ,EAAgB/I,UAAM,IAAAR,OAAA,EAAAA,EAAE6G,YAAI,IAAAzG,EAAAA,EAAImJ,EAAgB/I,GACvDsG,EAA+B,QAA7BlF,EAAyB,QAAzBD,EAAG4H,EAAgB/I,UAAM,IAAAmB,OAAA,EAAAA,EAAEmF,UAAE,IAAAlF,EAAAA,EAAI2H,EAAgB/I,GACnD4L,EAAWC,KAAKC,MAAMzF,GACtB0F,EAASF,KAAKG,IAAI1F,GACxB,GAAIsF,GAAYG,EAAQ,CACtB,IAAKP,EACH,OAAO,EAGT,IAAMS,EAAa,IAAIJ,KAAKL,GAAaU,UACnCC,GAAeP,MAAAA,OAAQ,EAARA,EAAUM,YAAa,KACtCE,GAAaL,MAAAA,OAAM,EAANA,EAAQG,YAAa,KAExC,GAAIC,GAAgBA,EAAeF,EACjC,OAAO,EAET,GAAIG,GAAcH,EAAaG,EAC7B,OAAO,uGAMjB,OAAO,KAGT,GAAIlD,GAAWE,EAAgB,CAC7B,IAAMtI,EAASpG,EAAQwG,MAAK,SAAA9K,GAAK,OAAAA,EAAE4J,QAAUkJ,KAC7C,GAAIpI,EAAQ,CACF,IAAAuL,EAAgBvL,EAAMD,KAAhByL,EAAUxL,EAAMd,MAC9BsD,EAAMiJ,MAAK,SAACC,EAAkBC,GAC5B,IAAM/J,EAAU8J,EAAiB9J,QAC3BvM,EAAOsW,EAAc/J,QAC3B,GAAa,WAAT2J,EACF,OAAQ3J,EAAQ4J,IAAU,IAAMnW,EAAKmW,IAAU,GAEjD,GAAa,SAATD,GAA4B,aAATA,GAAgC,SAATA,EAG5C,OAFW,IAAIR,KAAKnJ,EAAQ4J,IAAU,IAAIJ,UAC/B,IAAIL,KAAKnJ,EAAQ4J,IAAU,IAAIJ,UAG5C,IAAMQ,GAAMhK,EAAQ4J,IAAU,IAAIjB,WAC5BsB,GAAMxW,EAAKmW,IAAU,IAAIjB,WAC/B,OAAIqB,EAAKC,EACA,EAELD,EAAKC,GACC,EAEH,KAEc,SAAnBvD,GACF9F,EAAMsJ,WAIZ,MAAO,CACLtJ,MAAOA,EAAMhG,QAAO,SAACP,EAAM8P,GACzB,OAAOA,GAAShE,EAAapP,GAAYoT,GAAShE,EAAa,GAAKpP,KAEtEqT,MAAOxJ,EAAMtL,WAIjB+U,GAAAzT,IAAA5B,MAAa,2BACLoR,EAA8DzO,EAAK2C,eAAe/G,MAAMmD,MAC9F,MAAO,CACLwM,eAFoBkD,EAAAlD,gBAEc,GAClCmD,gBAHkCD,EAAAnO,cAGD,GACjCqO,kBAJkDF,EAAAtO,gBAIb,GACrCyO,aAL6DH,EAAAhO,WAKlC,GAC3BoO,SAAS,QAAA1J,EAAAzG,EAAAsB,EAAAmN,WAAA,IAAAhI,OAAA,EAAAA,EAAY2J,SAAU,GAC/BC,gBAAgB,QAAAxJ,EAAA7G,EAAAsB,EAAAmN,WAAA,IAAA5H,OAAA,EAAAA,EAAYyJ,YAAa,GACzCR,YAAY,QAAA1H,EAAApI,EAAAsB,EAAAkN,WAAA,IAAApG,OAAA,EAAAA,EAAiB0J,YAAa,EAC1CpR,UAAU,QAAA2H,EAAArI,EAAAsB,EAAAkN,WAAA,IAAAnG,OAAA,EAAAA,EAAiB3H,YAAqC,QAA7BmH,EAAmB,QAAnBN,EAAIjG,EAAKwE,kBAAU,IAAAyB,OAAA,EAAAA,EAAE9G,gBAAQ,IAAAoH,OAAA,EAAAA,EAAEnH,WAAY,OAIlFwF,GAAAA,IAAAA,MAAQ,SAAO+N,EAAiClC,eAAA,IAAAA,IAAAA,GAAA,2GAC9CpT,KAAK2P,WAAY,EACY,WAAzB3P,KAAKmH,WAAWgC,KAAhB,CAAA,EAAA,GAEW,CAAA,GADLyC,EAAU5L,KAAKmH,WAAUyE,OACR0J,GAAWvM,OAAM,SAAAwM,GAGxC,OAFA5S,EAAKwM,cAAcqG,OAAOC,QAAQ,iBAClCxM,QAAQhI,MAAMsU,GACP,CACL3J,MAAO,GACPwJ,MAAO,cAIX,OATMM,EAAOtE,EAAA5R,OAQbQ,KAAK2P,WAAY,EACjB,CAAA,EAAO,CACL/D,OAAO8J,MAAAA,OAAI,EAAJA,EAAM9J,MAAMxD,IAAI2C,MAAqB,GAC5CqK,OAAOM,MAAAA,OAAI,EAAJA,EAAMN,QAAS,kBAGtBhC,GACMxH,EAAU5L,KAAKmH,WAAUyE,MAC3B+J,EAAU/J,IACZ8J,EAAY,GACZC,aAAmBxX,QACd,CAAA,EAAMwX,EAAQ5M,OAAM,SAAAwM,GAGzB,OAFA5S,EAAKwM,cAAcqG,OAAOC,QAAQ,iBAClCxM,QAAQhI,MAAMsU,GACP,OAJP,CAAA,EAAA,IAJF,CAAA,EAAA,iBAKAG,EAAOtE,EAAA5R,oBAMPkW,EAAOC,mBAEJlY,MAAMkP,QAAQ+I,KACjB1V,KAAKmP,cAAcqG,OAAOC,QAAQ,kCAClCC,EAAO,IAET/T,EAAA3B,KAAIyP,GAAeiG,EAAKtN,IAAI2C,KAC5B/K,KAAK2P,WAAY,mBAEnB,MAAA,CAAA,EAAOtO,EAAArB,KAAAqT,IAAAxV,KAAAmC,KAAIqB,EAAArB,KAAAyP,IAAgC6F,cAG7CM,GAAAhU,IAAA5B,MAAU,SAAOqC,GAAgD,OAAAvE,EAAA6E,OAAA,OAAA,GAAA,yEAI/D,OAHa,QAAbmF,EAAA9H,KAAK6V,gBAAQ,IAAA/N,GAAAA,EAAEgO,YACf9V,KAAK4L,OAAQvJ,MAAAA,OAAI,EAAJA,EAAMuJ,QAAS,GAC5B5L,KAAKoV,OAAQ/S,MAAAA,OAAI,EAAJA,EAAM+S,QAAS,EAC5B,CAAA,EAAuC,QAAvC1L,EAA6B,QAA7BD,EAAqB,QAArBvB,EAAMlI,KAAKmH,kBAAU,IAAAe,OAAA,EAAAA,EAAE6N,cAAM,IAAAtM,OAAA,EAAAA,EAAEuM,gBAAQ,IAAAtM,OAAA,EAAAA,EAAA7L,KAAA4L,EAAGzJ,KAAK4L,sBAA/CwF,EAAA5R,OACAQ,KAAKwQ,YAAcxQ,KAAK4L,MAAMqK,OAAM,SAAAvX,GAAK,OAAAA,EAAEuM,KAAK3I,SAASiJ,cACzDlK,EAAArB,KAAAkW,IAAArY,KAAAmC,oBAGFA,KAAA+V,OAAS,SAAO3C,eAAA,IAAAA,IAAAA,GAAA,6FAED,OADgB,QAA7BlK,EAAe,QAAfN,EAAA5I,KAAKmW,kBAAU,IAAAvN,OAAA,EAAAA,EAAErD,oBAAY,IAAA2D,GAAAA,EAAArL,KAAA+K,GAChB,CAAA,EAAMvH,EAAArB,KAAAoW,IAAAvY,KAAAmC,KAAWqB,EAAArB,KAAAqV,IAAAxX,KAAAmC,MAAmBoT,kBAA3CsC,EAAOtE,EAAA5R,OACb6B,EAAArB,KAAA4V,IAAA/X,KAAAmC,KAAa0V,eAGfW,GAAAzU,IAAA5B,MAAiB,SAAOmR,EAAwBpP,eAAxB,IAAAoP,IAAAA,EAAA,QAAwB,IAAApP,IAAAA,EAAA,4GACpB,UAAtB/B,KAAKmH,WAAWmP,cAAM,IAAAtN,OAAA,EAAAA,EAAE4C,QAEtBhN,EAA+B,QAAzBkO,EAAG9M,KAAKmH,WAAWmP,cAAM,IAAAxJ,OAAA,EAAAA,EAAElB,MAAMvK,EAAArB,KAAAkR,IAAArT,KAAAmC,KAAuBmR,EAAYpP,IAC1EtE,MAAMkP,QAAQ/N,GAChB,CAAA,EAAOA,IAEL2X,EAAAA,aAAoB3X,KACtBA,EAASA,EAAO4X,aAEdD,EAAAA,aAA8C3X,KAChDA,EAASA,EAAO4X,aAEX,CAAA,EAAM5X,KAZkB,CAAA,EAAA,UAY/B,MAAA,CAAA,EAAOwS,EAAA5R,sBAED+T,EAAalS,EAAArB,KAAAkR,IAAArT,KAAAmC,KAAuBmR,EAAYpP,GACzB,WAAzB/B,KAAKmH,WAAWgC,KAAhB,CAAA,EAAA,GAEK,CAAA,EADHvK,EAASoB,KAAKmH,WAAWyE,MAAM2H,WACnC,MAAA,CAAA,EAAOnC,EAAA5R,sBAEHiX,EAAuB,GACU,mBAA1BzW,KAAKmH,WAAWyE,MAAvB,CAAA,EAAA,IACI+J,EAAU3V,KAAKmH,WAAWyE,mBACTzN,QACL,CAAA,EAAMwX,GADpB,CAAA,EAAA,iBACFc,EAAgBrF,EAAA5R,oBAEhBiX,EAAgBd,sCAGlBc,EAAgBzW,KAAKmH,WAAWyE,uBAElC,MAAA,CAAA,EAAOvK,EAAArB,KAAAqT,IAAAxV,KAAAmC,KAAkByW,EAAelD,cAK9CmD,GAAA9U,IAAA5B,MAAc,WACZ,IAAMgD,EAA2B,GAcjC,OAbAL,EAAKwE,WAAWnE,QACb4C,QAAO,SAAAlH,GAAC,IAAAoJ,EAAI,QAAS,QAATA,EAACpJ,EAAE4X,cAAM,IAAAxO,OAAA,EAAAA,EAAE6O,aACvBrN,SAAQ,SAAAF,SACa,aAAhBA,EAAOD,KAQXnG,EAAQzC,KAAK6I,GAPI,QAAftB,EAAAsB,EAAOqB,gBAAQ,IAAA3C,GAAAA,EACXlC,QAAO,SAAAlH,GAAC,IAAAoJ,EAAI,QAAS,QAATA,EAACpJ,EAAE4X,cAAM,IAAAxO,OAAA,EAAAA,EAAE6O,aACxBrN,SAAQ,SAAAoB,GACP1H,EAAQzC,KAAKmK,SAMhB1H,KAGT4T,GAAAhV,IAAA5B,MAAsB,mBACpB,OAAsC,QAA/BkI,EAAsB,QAAtBJ,EAAAnF,EAAKwE,WAAWmP,cAAM,IAAAxO,OAAA,EAAAA,EAAE9E,eAAO,IAAAkF,OAAA,EAAAA,EAAEtC,QAAO,SAAAlH,GAAC,IAAAoJ,EAAI,QAAS,QAATA,EAACpJ,EAAE4X,cAAM,IAAAxO,OAAA,EAAAA,EAAE6O,eAAa,MAG9EE,GAAAjV,IAAA5B,MAAY,SAAO8W,GAAe,OAAAhZ,EAAA6E,OAAA,OAAA,GAAA,0JAE1BoU,EAAU1V,EAAArB,KAAAgX,IAAAnZ,KAAAmC,MACRiX,GAAkC,QAAvBlK,EAAe,QAAfF,EAAA7M,KAAKmH,kBAAU,IAAA0F,OAAA,EAAAA,EAAEyJ,cAAM,IAAAvJ,OAAA,EAAAA,EAAEmK,qBAAsB,IAC1DC,GAA+B,QAAvBzK,EAAe,QAAfX,EAAA/L,KAAKmH,kBAAU,IAAA4E,OAAA,EAAAA,EAAEuK,cAAM,IAAA5J,OAAA,EAAAA,EAAEyK,QAAS,EAC5CC,EAAQpX,KAAKoV,MACbiC,EAAa,EACbC,EAAc,GAClBtX,KAAKuQ,aAAc,EACbgH,EAAe,GACjBC,EAME,GACAC,EAAa,WAAA,OAAA3Z,EAAA6E,OAAA,OAAA,GAAA,8GACD,MAAA,CAAA,EAAMxE,QAAQuZ,IAAIF,WAA5B7B,EAAU9E,EAAArR,OAChBgY,EAAW,GACXF,EAAc,OACd,IAAqBK,EAAAlX,EAAAkV,GAAOiC,EAAAD,EAAAlZ,QAAAmZ,EAAA/Y,KAAA+Y,EAAAD,EAAAlZ,OACtB,UADKG,EAAMgZ,EAAArZ,QAEb+Y,EAAWpW,EAAOoW,EAAgB1Y,EAAOgN,OACzCwL,EAAQxY,EAAOwW,OAEfkC,EAAWpW,EAAOoW,EAAgB1Y,2GAGZ,UAAtBoB,KAAKmH,WAAWmP,cAAM,IAAAlI,OAAA,EAAAA,EAAEyJ,UACpBC,EAAU9X,KAAKmH,WAAWmP,OAAOuB,QAAQP,cACxBnZ,QACP,CAAA,EAAM2Z,GADlB,CAAA,EAAA,GAF6B,CAAA,EAAA,iBAG/BR,EAAczG,EAAArR,oBAEd8X,EAAcQ,mBAGZC,EAAYX,EAAQH,EACpBe,EAAUC,KAAKC,MAA0B,KAAlBb,EAAa,GAAcU,GACxD/X,KAAKyQ,YAAc,eAAeuH,EAAO,IACnCG,EAAa9W,EAAArB,KAAA0W,IAAA7Y,KAAAmC,MACboY,EAAqB/W,EAAArB,KAAA4W,IAAA/Y,KAAAmC,iBAChBqF,yEACHgT,EAAW,GACXC,EAAS,SAAOC,GAA4B,OAAAza,EAAA6E,OAAA,OAAA,GAAA,yFAIhD,OAHA0V,EAAIE,EAAajQ,OAASjD,EAAKkT,EAAajQ,OACtCc,EAAS+O,EAAW3O,MAAK,SAAA9K,GAAK,OAAAA,EAAE4J,QAAUiQ,EAAajQ,UAEzDkQ,OADEA,EAAiBJ,EAAmB5O,MAAK,SAAA9K,GAAK,OAAAA,EAAE4J,QAAUiQ,EAAajQ,eAC3D,EAAdkQ,EAAgB9M,YAClB2M,EAAIG,EAAelQ,OAASkQ,EAAe9M,UAAUrG,EAAKmT,EAAelQ,OAAQjD,GACjF,CAAA,IAEG+D,EAGe,aAAhBA,EAAOD,MACTC,MAAAA,GAAAA,EAAQqB,SAASnB,SAAQ,SAAAoB,GAAe,OAAA4N,EAAO5N,MAC/C,CAAA,IAEGqM,EAAQ1N,MAAK,SAAA3K,GAAK,OAAAA,EAAE4J,QAAUc,EAAOd,SAGtCc,EAAOsC,WACHA,EAAYtC,EAAOsC,UAAUrG,EAAK+D,EAAOd,OAAQjD,EAAM,CAC3DoT,UAAU,eAEata,SACvBiT,EAAAiH,EAAIzH,EAAAxH,EAAOd,MAAS,CAAA,EAAMoD,IADxB,CAAA,EAAA,GAJF,CAAA,EAAA,GAFF,CAAA,GAPA,CAAA,iBAcE0F,EAAAR,GAAoB8H,EAAAlZ,oBAEpB6Y,EAAIjP,EAAOd,OAASoD,0BAEtB2M,EAAIjP,EAAOd,OAA0B,QAApB+F,EAAGgK,EAAIjP,EAAOd,cAAM,IAAA+F,EAAAA,EAAI,6BACTV,IAAvBtI,EAAK+D,EAAOd,QAA+C,OAAvBjD,EAAK+D,EAAOd,QAA0C,KAAvBjD,EAAK+D,EAAOd,OAA/E,CAAA,EAAA,IACT+P,EAAIjP,EAAOd,OAAS,wBACK,WAAhBc,EAAOD,MAAqC,WAAhBC,EAAOD,KAAnC,CAAA,EAAA,IAETkP,EAAIjP,EAAOd,OAASjD,EAAK+D,EAAOd,4BACP,SAAhBc,EAAOD,KAAP,CAAA,EAAA,IAEL9D,EAAK+D,EAAOd,OACd+P,EAAIjP,EAAOd,QAAsB,QAAbgG,EAAAlF,EAAOuC,cAAM,IAAA2C,OAAA,EAAAA,EAAEqK,gBAAiB,YACrBhL,IAAtB0K,EAAIjP,EAAOd,QAA8C,OAAtB+P,EAAIjP,EAAOd,SACvD+P,EAAIjP,EAAOd,QAAsB,QAAbiG,EAAAnF,EAAOuC,cAAM,IAAA4C,OAAA,EAAAA,EAAEqK,iBAAkB,8BAE9B,SAAhBxP,EAAOD,KAAP,CAAA,EAAA,IACL0P,EAAOxT,EAAK+D,EAAOd,QACfwQ,EAAkB1P,EAAM0P,iBAE9BD,EAAOC,EAAcD,EAAMxT,IAG7BgT,EAAIjP,EAAOd,OAAS6L,KAAK4E,SAASF,EAAM,mCACf,aAAhBzP,EAAOD,KAAP,CAAA,EAAA,IACL0P,EAAOxT,EAAK+D,EAAOd,QACfwQ,EAAkB1P,EAAM0P,iBAE9BD,EAAOC,EAAcD,EAAMxT,IAG7BgT,EAAIjP,EAAOd,OAAS6L,KAAK4E,SAASF,EAAM,yCACf,SAAhBzP,EAAOD,KAAP,CAAA,EAAA,KACL0P,EAAOxT,EAAK+D,EAAOd,QACfwQ,EAAkB1P,EAAM0P,iBAE9BD,EAAOC,EAAcD,EAAMxT,IAG7BgT,EAAIjP,EAAOd,OAAS6L,KAAK4E,SAASF,EAAM,+BACf,WAAhBzP,EAAOD,KAAP,CAAA,EAAA,KAET0H,EAAAwH,EAAIW,EAAA5P,EAAOd,MAAS,CAAA,EAAMtI,KAAKoP,iBAAiB1D,UAAUrG,EAAK+D,EAAOd,OAAQc,oBAA9EyH,EAAAmI,GAAoBN,EAAAlZ,sBAEpB6Y,EAAIjP,EAAOd,OAASjD,EAAK+D,EAAOd,oFAIT2Q,OAAA,EAAAC,EAAAzY,EAAAsW,GAAOoC,EAAAD,EAAAza,6CAAvB8Z,EAAYY,EAAA5a,MACrB,CAAA,EAAM+Z,EAAOC,YAAb3H,EAAApR,gNAEF+X,EAAMhX,KAAK8X,uDA7EMe,EAAA3Y,EAAA6W,GAAW+B,EAAAD,EAAA3a,6CAAnB4G,EAAIgU,EAAA9a,WAAJ8G,sQAgFNgS,EAAaJ,EAAWG,GAC7BI,EAASjX,KAAKc,EAAArB,KAAAqW,IAAAxY,KAAAmC,KAAoBqX,EAAYJ,IAC9CI,IACIG,EAASlX,OAAS6W,EACpB,CAAA,EAAA,GAEF,CAAA,EAAMM,MAN4B,CAAA,EAAA,iBAMlC6B,EAAA9Z,2BAEEgY,EAASlX,OAAS,EACpB,CAAA,EAAMmX,KADJ,CAAA,EAAA,UACF6B,EAAA9Z,+BAEEsX,EACF,CAAA,EAAM9W,KAAKkP,cAAcqK,UAAU,CACjCvW,QAAO+T,EACPnL,MAAK2L,EACLiC,SAAiC,QAAzBzK,EAAiB,QAAjBF,EAAE7O,KAAKmH,kBAAU,IAAA0H,OAAA,EAAAA,EAAEyH,cAAM,IAAAvH,OAAA,EAAAA,EAAEyK,YAJnC,CAAA,EAAA,UAMF,OALAF,EAAA9Z,OAKA,CAAA,aAEIia,EAIA,IACFhc,MAAMkP,QAA+B,QAAxBoF,EAAgB,QAAhBjD,EAAC9O,KAAKmH,kBAAU,IAAA2H,OAAA,EAAAA,EAAEwH,cAAM,IAAAvE,OAAA,EAAAA,EAAE0H,QAAvC,MAAA,CAAA,EAAA,+CACkBrI,EAAA3Q,EAAAT,KAAKmH,WAAWmP,OAAOmD,QAAM7I,EAAAQ,EAAA3S,8CAAtCib,EAAK9I,EAAArS,OACJ0O,MAAQyM,EAAM9N,OAAS8N,EAAMlP,OACjC/M,MAAMkP,QAAQ+M,EAAM9N,QACtB6N,EAAOlZ,KAAK,CACV0M,KAAMyM,EAAMzM,KACZrB,MAAO8N,EAAM9N,MACbpB,OAAQkP,EAAMlP,iBAJd,CAAA,EAAA,IADF,CAAA,EAAA,YAUS,OAFTwO,GAAAnI,EAAA4I,GAAOlZ,QACL0M,KAAMyM,EAAMzM,MACL,CAAA,EAAMyM,EAAM9N,iBAFrBoN,EAAAja,MAAA8R,EAAA,EAEE6H,EAAA9M,MAAO0N,EAAA9Z,OACPkZ,EAAAlO,OAAQkP,EAAMlP,sNAMxB,MAAA,CAAA,EAAMxK,KAAKkP,cAAcoH,OAAO,CAC9BtT,QAAO+T,EACPnL,MAAK2L,EACLiC,SAAiC,QAAzBtH,EAAiB,QAAjBJ,EAAE9R,KAAKmH,kBAAU,IAAA2K,OAAA,EAAAA,EAAEwE,cAAM,IAAApE,OAAA,EAAAA,EAAEsH,SACnCC,OAAMA,aAER,OANAH,EAAA9Z,OAMA,CAAA,kBAEAQ,KAAKuQ,aAAc,EACnBvQ,KAAKyQ,YAAc,SACnBzQ,KAAK8E,IAAI6U,gDAIb3C,GAAApV,IAAA5B,MAAoB,mBAKlB,OAJakB,EACRyB,EAAKwE,WAAWnE,QAAQ4C,QAAO,SAAAlH,GAAC,IAAAoJ,EAAI,QAAS,QAATA,EAACpJ,EAAE4X,cAAM,IAAAxO,OAAA,EAAAA,EAAE6O,cACf,QAA/BzO,EAAsB,QAAtBJ,EAAAnF,EAAKwE,WAAWmP,cAAM,IAAAxO,OAAA,EAAAA,EAAE9E,eAAO,IAAAkF,OAAA,EAAAA,EAAEtC,QAAO,SAAAlH,GAAC,IAAAoJ,EAAI,QAAS,QAATA,EAACpJ,EAAE4X,cAAM,IAAAxO,OAAA,EAAAA,EAAE6O,eAAa,OAK7E3W,KAAA4Z,YAAc,WACZvY,EAAAsB,EAAAkU,IAAAhZ,KAAA8E,IAGF3C,KAAAuZ,UAAY,WACVlY,EAAAsB,EAAAkU,IAAAhZ,KAAA8E,GAAe,IAGjB3C,KAAA6Z,eAAiB,uBACc,QAA7B3R,EAAe,QAAfJ,EAAAnF,EAAKwT,kBAAU,IAAArO,OAAA,EAAAA,EAAEvC,oBAAY,IAAA2C,GAAAA,EAAArK,KAAAiK,IACF,QAA3B4B,EAAmB,QAAnBD,EAAI9G,EAAKwE,kBAAU,IAAAsC,OAAA,EAAAA,EAAE7D,cAAM,IAAA8D,OAAA,EAAAA,EAAExG,cAC3BP,EAAK2C,eAAe/G,MAAMqD,IAAI,CAC5BsM,eAAgBvL,EAAKuL,eACrBjL,aAAcN,EAAKM,eAGrBN,EAAK2C,eAAe/G,MAAMqD,IAAI,KAIlC5B,KAAA8Z,SAAW,SAAOC,GAAuB,OAAAjc,EAAA6E,OAAA,OAAA,GAAA,sDACvC,OAA0B,QAA1B6L,EAAIxO,KAAKmH,WAAWgE,cAAM,IAAAqD,OAAA,EAAAA,EAAEwL,SAGxBD,EAAQ9O,KAAKE,OAAOC,YAFtB,CAAA,GAKE2O,EAAQ9O,KAAKE,OAAOE,YACtB0O,EAAQ9O,KAAKE,OAAOE,YAAa,EACjC,CAAA,KAEIqK,EAAwC,QAApCrD,EAA0B,QAA1BC,EAAkB,QAAlB7D,EAAGzO,KAAKmH,kBAAU,IAAAsH,OAAA,EAAAA,EAAEtD,cAAM,IAAAmH,OAAA,EAAAA,EAAEwH,gBAAQ,IAAAzH,OAAA,EAAAA,EAAAxU,KAAAyU,EAAGyH,EAAQ/O,UAC9B,QAAvB0H,EAAC1S,KAAKmH,WAAWgE,cAAM,IAAAuH,OAAA,EAAAA,EAAEuH,WAC3Bja,KAAK4L,MAAMtC,SAAQ,SAAAjE,GAAQ,OAACA,EAAK4F,KAAKE,OAAOC,YAAc/F,EAAK4F,KAAKE,OAAOE,YAAa,KAEvFqK,aAAgBvX,SAClB4b,EAAQ9O,KAAKE,OAAOC,aAAc,EAClCsK,EACG5W,MAAK,SAAAob,GACJH,EAAQ9O,KAAKE,OAAOuK,KAAOwE,EAC3BH,EAAQ9O,KAAKE,OAAOE,YAAa,KAElC8O,SAAQ,WAAM,OAACJ,EAAQ9O,KAAKE,OAAOC,aAAc,OAEpD2O,EAAQ9O,KAAKE,OAAOuK,KAAOA,EAC3BqE,EAAQ9O,KAAKE,OAAOE,YAAa,eAIrCrL,KAAAoa,SAAW,SAACL,qBACV,GAA6B,QAA7B7R,EAAsB,QAAtBJ,EAAIiS,EAAQ9O,KAAKX,aAAK,IAAAxC,OAAA,EAAAA,EAAE8D,aAAK,IAAA1D,OAAA,EAAAA,EAAE5H,OAC7ByZ,EAAQ9O,KAAKX,MAAMsB,MAAMtC,SAAQ,SAAA5K,GAAK,OAACA,EAAEuM,KAAK3I,SAASiJ,WAAawO,EAAQ9O,KAAK3I,SAASiJ,cACxD,QAAlC7B,EAAwB,QAAxBD,EAAA9G,EAAKwE,WAAW7E,gBAAQ,IAAAmH,OAAA,EAAAA,EAAE2Q,gBAAQ,IAAA1Q,GAAAA,EAAA7L,KAAA4L,EAChCsQ,EAAQ/O,QACRrI,EAAKiJ,MAAMhG,QAAO,SAAAlH,GAAK,OAAAA,EAAEuM,KAAK3I,SAASiJ,cAAYnD,KAAI,SAAA1J,GAAK,OAAAA,EAAEsM,YAEhErI,EAAK6N,YAAc7N,EAAKiJ,MAAMqK,OAAM,SAAAvX,GAAK,OAAAA,EAAEuM,KAAK3I,SAASiJ,cACzDlK,EAAAsB,EAAAuT,IAAArY,KAAA8E,OACK,CACL,GAA4B,QAA5BiG,EAAIjG,EAAKwE,WAAW7E,gBAAQ,IAAAsG,OAAA,EAAAA,EAAEyR,OAG5B,OAFA1X,EAAKiJ,MAAMhG,QAAO,SAAAlH,GAAK,OAAAA,IAAMqb,KAASzQ,SAAQ,SAAA5K,GAAK,OAACA,EAAEuM,KAAK3I,SAASiJ,YAAa,UACjFlK,EAAAsB,EAAAuT,IAAArY,KAAA8E,GAGgC,QAAlCqG,EAAwB,QAAxBE,EAAAvG,EAAKwE,WAAW7E,gBAAQ,IAAA4G,OAAA,EAAAA,EAAEkR,gBAAQ,IAAApR,GAAAA,EAAAnL,KAAAqL,EAChC6Q,EAAQ/O,QACRrI,EAAKiJ,MAAMhG,QAAO,SAAAlH,GAAK,OAAAA,EAAEuM,KAAK3I,SAASiJ,cAAYnD,KAAI,SAAA1J,GAAK,OAAAA,EAAEsM,YAEhErI,EAAK6N,YAAc7N,EAAKiJ,MAAMqK,OAAM,SAAAvX,GAAK,OAAAA,EAAEuM,KAAK3I,SAASiJ,cACzDlK,EAAAsB,EAAAuT,IAAArY,KAAA8E,KAIJ3C,KAAAsa,YAAc,qBACF,QAAVxS,EAAAnF,EAAKiJ,aAAK,IAAA9D,GAAAA,EAAEwB,SAAQ,SAAA5K,gBACdA,EAAEuM,KAAK3I,SAASkJ,aAAkD,QAAnC/B,EAA0B,QAA1BvB,EAAgB,QAAhBJ,EAACnF,EAAKwE,kBAAU,IAAAW,OAAA,EAAAA,EAAExF,gBAAQ,IAAA4F,OAAA,EAAAA,EAAEoD,eAAO,IAAA7B,OAAA,EAAAA,EAAEnJ,WAAiC,QAA3BoJ,EAAIhL,EAAEuM,KAAK3I,SAASgJ,eAAO,IAAA5B,OAAA,EAAAA,EAAEpJ,UACzG5B,EAAEuM,KAAK3I,SAASiJ,WAAa5I,EAAK6N,gBAGD,QAArC/G,EAAwB,QAAxBvB,EAAAvF,EAAKwE,WAAW7E,gBAAQ,IAAA4F,OAAA,EAAAA,EAAEoS,mBAAW,IAAA7Q,GAAAA,EAAA5L,KAAAqK,EAAGvF,EAAKiJ,MAAMhG,QAAO,SAAAlH,GAAK,OAAAA,EAAEuM,KAAK3I,SAASiJ,cAAYnD,KAAI,SAAA1J,GAAK,OAAAA,EAAEsM,YACtG3J,EAAAsB,EAAAuT,IAAArY,KAAA8E,IAGF3C,KAAAua,iBAAmB,SAAC3O,GAClBA,EAAQA,GAASjJ,EAAKiJ,MACtBjJ,EAAK6N,aAAc,EACnB5E,MAAAA,GAAAA,EAAOtC,SAAQ,SAAA5K,GAAK,OAACA,EAAEuM,KAAK3I,SAASiJ,YAAa,KAClDlK,EAAAsB,EAAAuT,IAAArY,KAAA8E,IAGFuT,GAAAtU,IAAA5B,MAAuB,WACrB2C,EAAK+M,cAAgB/M,EAAKiJ,MAAMhG,QAAO,SAAAP,GAAQ,OAAAA,EAAK4F,KAAK3I,SAASiJ,cAAYnD,KAAI,SAAA/C,GAAQ,OAAAA,EAAK2F,WAC/FrI,EAAKmC,IAAI6U,mBAGX3Z,KAAAwa,YAAc,WACZ7X,EAAK2C,eAAe/G,MAAM6F,UAG5BpE,KAAAya,UAAY,SAACpY,WACL+O,EAA8C/O,GAAQ,GAApDY,EAAYmO,EAAAnO,aAAEH,EAAcsO,EAAAtO,eAAEM,EAASgO,EAAAhO,WACpB,QAAvB8E,EAAe,QAAfJ,EAAAnF,EAAKwE,kBAAU,IAAAW,OAAA,EAAAA,EAAElC,cAAM,IAAAsC,OAAA,EAAAA,EAAEhF,eAAgBD,IAC3CN,EAAKM,aAAeA,GAEtBN,EAAK2C,eAAe/G,MAAMqD,IAAI,CAC5BqB,aAAYA,EACZH,eAAcA,EACdM,UAASA,KAQbpD,KAAA2Z,cAAgB,WAAM,OAAAhX,EAAKmC,IAAI6U,wBA9yB/Brc,OAAA0G,eAA6BgL,EAAArR,UAAA,cAAW,KAAxC,SAAyCwY,GACnCA,GAAcnW,KAAKmW,aAAeA,IACpCnW,KAAKmW,WAAaA,oCAetB7Y,OAAA0G,eAAagL,EAAArR,UAAA,SAAM,KAAnB,SAAoBgO,GAClB,GAAIA,EAAQ,CACVA,EAAStK,EAAArB,KAAA0a,IAAA7c,KAAAmC,KAAwB2L,GACjC3L,KAAKmH,WAAawE,EAClBhK,EAAA3B,KAAI0Q,IAAkB,GACtB,IAAMnN,EAAgBvD,KAAKiP,yBAAyBhI,KAAKjH,KAAKkH,IAAKlH,KAAKmH,YACxEnH,KAAK2a,0BAA4BpX,EAAc0C,SAC/C1C,EAAc+D,OACdjG,EAAArB,KAAAwP,IAAoB/Q,KAAKuB,KAAKmH,8CAiBlC7J,OAAA0G,eAA6BgL,EAAArR,UAAA,YAAS,KAAtC,SAAuCid,GAAvC,IAAAjY,EAAA3C,KACM4a,GAAavZ,EAAArB,KAAA6P,MAAoB+K,IACnCjZ,EAAA3B,KAAI6P,GAAc+K,GAClBvZ,EAAArB,KAAAiT,IAAmBpN,IACjB+U,EAAUC,KACP/U,KACCsC,EAAAA,KAAI,WACF/G,EAAAsB,EAAA2N,IAAa7R,KAAK,CAChB2U,OAAO,QAIZpN,+CAOT1I,OAAA0G,eAAwBgL,EAAArR,UAAA,OAAI,KAA5B,SAA6BkX,GAA7B,IAAAlS,EAAA3C,KACM6U,GAAQxT,EAAArB,KAAA8P,MAAe+E,IACzBlT,EAAA3B,KAAI8P,GAAS+E,GACbxT,EAAArB,KAAAiT,IAAmBpN,IACjBgP,EAAKiG,WACFhV,KACCsC,EAAAA,KAAI,WACF/G,EAAAsB,EAAA2N,IAAa7R,KAAK,CAChB2U,OAAO,QAIZpN,+CAsDTgJ,EAAArR,UAAAod,SAAA,WACE1Z,EAAArB,KAAA2Q,IAAA9S,KAAAmC,OAGFgP,EAAArR,UAAAsG,gBAAA,WAAA,IAAAtB,EAAA3C,KACEqB,EAAArB,KAAAiT,IAAmBpN,IACjBxE,EAAArB,KAAAsQ,IACGxK,KACCoN,EAAAA,aAAa,KACb8H,EAAAA,WAAU,SAAMtF,GAAI,OAAA5X,EAAA6E,OAAA,OAAA,GAAA,qEAEH,OADT4Q,EAAalS,EAAArB,KAAAqV,IAAAxX,KAAAmC,MACJ,CAAA,EAAMqB,EAAArB,KAAAoW,IAAAvY,KAAAmC,KAAWuT,GAAYlS,EAAArB,KAAA0Q,KAAwBgF,EAAKtC,eAEzE,OAFMxU,EAASwS,EAAA5R,OACfmC,EAAA3B,KAAI0Q,IAAkB,GACtB,CAAA,EAAO9R,cAGVoH,UAAS3E,EAAArB,KAAA4V,MAEdvU,EAAArB,KAAAiT,IAAmBpN,IAAI7F,KAAK+P,WAAWkL,QAAQnV,KAAKC,EAAAA,UAAU,KAAKC,UAAS3E,EAAArB,KAAA2Q,MAC5EtP,EAAArB,KAAAiT,IAAmBpN,IAAI7F,KAAKkQ,aAAa+K,QAAQnV,KAAKC,EAAAA,UAAU,KAAKC,UAAS3E,EAAArB,KAAAgR,MAC9E3P,EAAArB,KAAAiT,IAAmBpN,IAAI7F,KAAKqQ,aAAa4K,QAAQnV,KAAKC,EAAAA,UAAU,KAAKC,UAAS3E,EAAArB,KAAA+Q,MAC9E1P,EAAArB,KAAAiT,IAAmBpN,IACjBqV,EAAAA,cAAc,CACZ7Z,EAAArB,KAAAwP,IAAoB1J,KAAKC,EAAAA,UAAU/F,KAAKmH,aACxCnH,KAAKqQ,aAAa4K,QAAQnV,KAAKC,EAAAA,UAAU/F,KAAKmD,eAC7C6C,WAAU,WACX3E,EAAAsB,EAAAqQ,IAAAnV,KAAA8E,OAGJtB,EAAArB,KAAAiT,IAAmBpN,IACjBxE,EAAArB,KAAAwP,IAAoBxJ,WAAU,WACxBrD,EAAK2C,gBACPjE,EAAAsB,EAAA2N,IAAa7R,KAAK,CAChB2U,OAAO,QAKfpT,KAAK8E,IAAI6U,iBAGX3K,EAAArR,UAAAuG,YAAA,WACE7C,EAAArB,KAAAiT,IAAmB/M,eAioBrB5I,OAAA0G,eAAIgL,EAAArR,UAAA,YAAS,KAAb,WACE,OAAOqC,KAAK4L,MAAMxD,KAAI,SAAA/C,GAAQ,OAAAA,EAAK2F,8aAj0BtC3G,EAAAA,UAAShC,KAAA,CAAC,CACTC,SAAU,WACVgC,SAAA,gsqBAEAC,gBAAiBC,EAAAA,wBAAwBC,OACzC0W,WAAY,CACVC,EAAAA,QAAQ,eAAgB,CACtB7Z,EAAAA,MAAM,YAAa8Z,EAAAA,MAAM,CAAEC,OAAQ,IAAKC,UAAW,IAAKC,WAAY,YACpEja,EAAAA,MAAM,WAAY8Z,EAAAA,MAAM,CAAEC,OAAQ,IAAKE,WAAY,aACnDC,EAAAA,WAAW,yBAA0BC,EAAAA,QAAQ,6vJA5CjDhX,EAAAA,kDA8KGmG,EAAAA,OAAMxI,KAAA,CAACJ,KAAY,CAAAkH,KACnB2B,EAAAA,kBApJI6Q,UAF8BC,EAAAA,uBAT9BC,EAAAA,uBAeAC,UAEAC,yCAiBNpX,EAAAA,UAAStC,KAAA,CAAC2Z,EAAAA,wCAIVrX,EAAAA,UAAStC,KAAA,CAAC4Z,EAAAA,oCAGVtX,EAAAA,UAAStC,KAAA,CAACwC,oBAiBVrC,EAAAA,yBAyBAmC,EAAAA,UAAStC,KAAA,CAAC6Z,EAAAA,4BAmBVvX,EAAAA,UAAStC,KAAA,CAAC8Z,EAAAA,mCAkBVC,EAAAA,aAAY/Z,KAAA,CAACga,yBAIbD,EAAAA,aAAY/Z,KAAA,CAACia,wBAIbC,EAAAA,gBAAela,KAAA,CAACma,0BAMhBD,EAAAA,gBAAela,KAAA,CAACoa,0BAOhBF,EAAAA,gBAAela,KAAA,CAAC+D,yBC9JnB,SAAAsW,YACQA,EAAA/e,UAAA+N,UAAA,SAAUrG,EAAmBgF,qIAEjC,GADMsL,EAA4B,IAC7BtL,EACH,MAAA,CAAA,EAAOsL,8CAEagH,EAAAlc,EAAA4J,GAAQuS,EAAAD,EAAAle,8CAAnBoe,EAAOD,EAAAre,MACZue,GAAO,OAEInP,KADPxF,EAAW0U,EAAO1U,QACtB,CAAA,EAAA,IACF2U,GAAO,uBACsB,kBAApB,EAAA,CAAA,EAAA,IACJ3U,IACH2U,GAAO,wBAGHC,EAAW5U,EAAO9C,cACAlH,QACjB,CAAA,EAAM4e,GADT,CAAA,EAAA,iBACGnU,EAAApJ,SACHsd,GAAO,gBAGJC,IACHD,GAAO,wBAITA,EAAA,MAAA,CAAA,EAAA,SACE,aAAcD,GAAd,MAAA,CAAA,EAAA,IACIpS,EAAmC,8CACduS,OAAA,EAAAlV,EAAArH,EAAAoc,EAAQpS,UAAQvC,EAAAJ,EAAArJ,8CAAhCwe,EAAY/U,EAAA3J,WAENoP,KADPuP,EAAWD,EAAY9U,QAC3B,CAAA,EAAA,KACFsC,EAASlK,KAAK0c,0BACe,kBAApB,EAAA,CAAA,EAAA,KACJC,GACHzS,EAASlK,KAAK0c,0BAGVF,EAAWG,EAAO7X,cACAlH,QACjB,CAAA,EAAM4e,GADT,CAAA,EAAA,mBACGnU,EAAApJ,QACHiL,EAASlK,KAAK0c,kBAGXF,GACHtS,EAASlK,KAAK0c,oNAKlBxS,EAASnK,OAAS,GACpBqV,EAAQpV,KAAIjD,OAAAoK,OAAApK,OAAAoK,OAAA,GAAMmV,GAAO,CAAEpS,SAAQA,oBAGrCkL,EAAQpV,KAAKsc,6MAInB,MAAA,CAAA,EAAOlH,qCA9DV3I,EAAAA,KAAI3K,KAAA,CAAC,CACJ4K,KAAM,sCCCR,SAAAkQ,YACEA,EAAAxf,UAAA+N,UAAA,SAAUrG,EAAWwX,GACnB,SAAKA,MAAAA,OAAO,EAAPA,EAASlG,YAGoB,kBAAtBkG,EAAgB,SACnBA,EAAQlG,SAEVkG,EAAQlG,SAAStR,+BAX3B2H,EAAAA,KAAI3K,KAAA,CAAC,CACJ4K,KAAM,uCCER,SAAAmQ,YACEA,EAAAzf,UAAA+N,UAAA,SAAUmR,EAAyBxX,GACjC,OAAKwX,MAAAA,OAAO,EAAPA,EAASQ,MAGgB,iBAAlBR,EAAY,KACfA,EAAQQ,KAEVR,EAAQQ,KAAKhY,GALX,8BANZ2H,EAAAA,KAAI3K,KAAA,CAAC,CACJ4K,KAAM,oCCER,SAAAqQ,YACEA,EAAA3f,UAAA+N,UAAA,SAAUmR,EAAyBxX,GACjC,OAAKwX,MAAAA,OAAO,EAAPA,EAAStU,OAGiB,iBAAnBsU,EAAa,MAChBA,EAAQtU,MAEVsU,EAAQtU,MAAMlD,GALZ,8BANZ2H,EAAAA,KAAI3K,KAAA,CAAC,CACJ4K,KAAM,qCCKN,SAAAsQ,EAAYxY,GADJ/E,KAAA0F,kBAAmB,EAEzB1F,KAAK0F,kBAAoBX,EAAcY,mBAEzC4X,EAAA5f,UAAA+N,UAAA,SAAUnN,EAAYwb,EAAc3Q,GAClC,MAAsC,mBAA1BA,MAAAA,OAAM,EAANA,EAAQoU,cACXjf,EAEF6K,MAAAA,OAAM,EAANA,EAAQoU,aAAajf,EAAOwb,EAAS/Z,KAAK0F,6CAZpDsH,EAAAA,KAAI3K,KAAA,CAAC,CACJ4K,KAAM,mEAHC9G,EAAAA,gCCgBP,kCAZD9B,EAAAA,UAAShC,KAAA,CAAC,CACTC,SAAU,uBACVgC,SAAA,iuDAEAC,gBAAiBC,EAAAA,wBAAwBC,uTAGxCjC,EAAAA,mBACAA,EAAAA,sBACAA,EAAAA,oBACAA,EAAAA,0BACAA,EAAAA,2BCTD,SAAAib,EAAoBrO,GAAApP,KAAAoP,iBAAAA,SACdqO,EAAA9f,UAAA+N,UAAA,SAAUnN,EAAYwb,EAAc3Q,EAAuBlC,qGAC/D,OAAIkC,MAAAA,OAAM,EAANA,EAAQsC,WACV,CAAA,EAAOtC,EAAOsC,UAAUnN,EAAOwb,IAEb,WAAhB3Q,EAAOD,KAAP,CAAA,EAAA,GACK,CAAA,EAAMnJ,KAAKoP,iBAAiB1D,UAAUnN,EAAO6K,WAApD,MAAA,CAAA,EAAOK,EAAAjK,eAET,MAAoB,WAAhB4J,EAAOD,MAAqBuU,OAAOC,SAASpf,GAC9C,CAAA,EAAOmf,OAAOE,aAAarf,IAET,SAAhB6K,EAAOD,KACT,CAAA,GAAiB,IAAV5K,GAA+B,QAAbuJ,EAAAsB,EAAOuC,cAAM,IAAA7D,OAAA,EAAAA,EAAE6Q,gBAAiB,QAAwB,QAAbzQ,EAAAkB,EAAOuC,cAAM,IAAAzD,OAAA,EAAAA,EAAE0Q,iBAAkB,SAEvG,CAAA,EAAOra,qCAlBVyO,EAAAA,KAAI3K,KAAA,CAAC,CACJ4K,KAAM,gEAFC6O,wBCGT,SAAA+B,YACEA,EAAAlgB,UAAA+N,UAAA,SAAU7I,EAA0CyF,WAC5CqN,EAAmC,GACzC,IAAK9S,EACH,OAAO8S,MAET,IAAqB,IAAAmI,EAAArd,EAAAoC,GAAekb,EAAAD,EAAArf,QAAAsf,EAAAlf,KAAAkf,EAAAD,EAAArf,OAAE,CAAjC,IAAMmH,EAAMmY,EAAAxf,MACfoX,EAAQpV,KAAKqF,qGAEf,OAAO+P,EAAQ/P,QAAO,SAAAlH,GAAK,OAAC4J,GAAS5J,EAAE4J,QAAUA,gCAZpD0E,EAAAA,KAAI3K,KAAA,CAAC,CACJ4K,KAAM,4CCER,SAAA+Q,YACEA,EAAArgB,UAAA+N,UAAA,SAAU1I,EAA0BsF,mBAC5BqN,EAA2B,GACjC,IAAK3S,EACH,OAAO2S,MAET,IAAqB,IAAAlC,EAAAhT,EAAAuC,GAAO0Q,EAAAD,EAAAhV,QAAAiV,EAAA7U,KAAA6U,EAAAD,EAAAhV,OAAE,CAAzB,IAAM2K,EAAMsK,EAAAnV,MACf,GAAoB,aAAhB6K,EAAOD,MAQO,QAAdjB,EAACkB,EAAOxD,cAAM,IAAAsC,OAAA,EAAAA,EAAEyO,WAClBhB,EAAQpV,KAAK6I,YARb,IAA6B,IAAAR,GAAAqV,OAAA,EAAAxd,EAAA2I,MAAAA,OAAM,EAANA,EAAQqB,WAAQvB,EAAAN,EAAAnK,QAAAyK,EAAArK,KAAAqK,EAAAN,EAAAnK,OAAE,CAA1C,IAAMyf,EAAchV,EAAA3K,OACG,QAAtBuJ,EAACoW,EAAetY,cAAM,IAAAkC,OAAA,EAAAA,EAAE6O,WAC1BhB,EAAQpV,KAAK2d,wMASrB,OAAOvI,EAAQ/P,QAAO,SAAAlH,GAAK,OAAC4J,GAAS5J,EAAE4J,QAAUA,gCAtBpD0E,EAAAA,KAAI3K,KAAA,CAAC,CACJ4K,KAAM,uCCMN,SAAAkR,EAAYpZ,GADZqZ,GAAAxc,IAAA5B,MAAoB,GAElB2B,EAAA3B,KAAIoe,IAAsBrZ,EAAcY,oBAE1CwY,EAAAxgB,UAAA+N,UAAA,SAAU1I,EAA0BqC,GAApC,IAAA1C,EAAA3C,KACE,OAAOgD,EAAQ4C,QAAO,SAAAwD,WACd7K,EAAQ8G,MAAAA,OAAI,EAAJA,EAAO+D,EAAOd,OACtB+V,EAAiC,QAAnBvW,EAAGsB,EAAOsC,iBAAS,IAAA5D,OAAA,EAAAA,EAAAjK,KAAhBuL,EAAmB/D,EAAK+D,EAAOd,OAAQjD,GACxDiZ,EAAmC,QAAtBpW,EAAGkB,EAAOoU,oBAAY,IAAAtV,OAAA,EAAAA,EAAArK,KAAnBuL,EAAsB/D,EAAK+D,EAAOd,OAAQjD,EAAIhE,EAAAsB,EAAAyb,KACpE,OAAQ7f,MAAAA,GAAmD,KAAVA,GAC3C8f,MAAAA,GAA8E,KAAnBA,GAC3DC,MAAAA,GAA2E,KAAlBA,+CAfpEtR,EAAAA,KAAI3K,KAAA,CAAC,CACJ4K,KAAM,qEAJC9G,EAAAA,gCCYP,WADSnG,KAAAqK,SAA6B,yBARvChG,EAAAA,UAAShC,KAAA,CAAC,CACTC,SAAU,qBACVgC,SAAA,qsDAEAC,gBAAiBC,EAAAA,wBAAwBC,mLAGxCjC,EAAAA,wBACAA,EAAAA,2BCLD,SAAA+b,YACAA,EAAA5gB,UAAA+N,UAAA,SAAUnN,EAAYwb,EAAc3Q,aAKlC,MAAoB,WAAhBA,EAAOD,OAAqBC,MAAAA,OAAM,EAANA,EAAQoV,OAC/B,CACLrV,MAAOC,MAAAA,OAAM,EAANA,EAAQqV,WAAsBrV,EAAOqV,UAAjB,QAC3BC,MAAOtV,EAAOoV,MAAMjgB,EAAOwb,GAC3BsD,KAAuB,QAAnBvV,EAAEsB,MAAAA,OAAM,EAANA,EAAQuV,iBAAS,IAAA7W,OAAA,EAAAA,EAAAjK,KAAjBuL,EAAoB7K,EAAOwb,IAGjB,WAAhB3Q,EAAOD,OAAqBC,MAAAA,OAAM,EAANA,EAAQoV,OAC/B,CACLrV,MAAOC,MAAAA,OAAM,EAANA,EAAQqV,WAAsBrV,EAAOqV,UAAjB,QAC3BC,MAAOtV,EAAOoV,MAAMjgB,EAAOwb,GAC3BsD,KAAuB,QAAnBnV,EAAEkB,MAAAA,OAAM,EAANA,EAAQuV,iBAAS,IAAAzW,OAAA,EAAAA,EAAArK,KAAjBuL,EAAoB7K,EAAOwb,IAGjB,SAAhB3Q,EAAOD,KACF,CACLA,MAAOC,MAAAA,OAAM,EAANA,EAAQqV,WAAsBrV,EAAOqV,UAAjB,QAC3BC,MAASngB,EAAQ,UAAY,SAC7B8e,KAAM,MAGU,WAAhBjU,EAAOD,OAAqBC,MAAAA,OAAM,EAANA,EAAQoV,OAC/B,CACLrV,MAAOC,MAAAA,OAAM,EAANA,EAAQqV,WAAsBrV,EAAOqV,UAAjB,QAC3BC,MAAOtV,EAAOoV,MAAMjgB,EAAOwb,GAC3BsD,KAAuB,QAAnB5T,EAAEL,MAAAA,OAAM,EAANA,EAAQuV,iBAAS,IAAAlV,OAAA,EAAAA,EAAA5L,KAAjBuL,EAAoB7K,EAAOwb,IAG9B,gCAtCV/M,EAAAA,KAAI3K,KAAA,CAAC,CACJ4K,KAAM,8ECMN,SAAA2R,EAAoB3P,GAAAjP,KAAAiP,yBAAAA,SACpB2P,EAAAjhB,UAAA+N,UAAA,SAAUnI,EAAoC4D,EAA2ByC,GACvE,IAAMiV,EAAI7e,KAAKiP,yBAAyBtF,4BAA4BpG,EAAe4D,EAAYyC,GAE/F,OADAX,QAAQ6V,IAAID,GACLA,6BARV7R,EAAAA,KAAI3K,KAAA,CAAC,CACJ4K,KAAM,0EAJC0O,wBCiCP,SAAAoD,EACUja,EACAqK,EACA6P,EACA/P,GAJV,IAAAtM,EAAA3C,KACUA,KAAA8E,IAAAA,EACA9E,KAAAmP,cAAAA,EACAnP,KAAAgf,iBAAAA,EACAhf,KAAAiP,yBAAAA,EAZDjP,KAAAib,QAAU,IAAIgE,EAAAA,aACvBjY,GAAAA,IAAAA,UAAAA,GAEAhH,KAAAkf,kBAAmB,EACnBlf,KAAAmf,SAEI,GACJnf,KAAAof,cAAe,EAafpf,KAAAsD,KAAO,WAAA,OAAAxF,EAAA6E,OAAA,OAAA,GAAA,mEAEgB,OADrBhB,EAAA3B,KAAIqf,GAAUrf,KAAKiP,yBAAyBhI,KAAKjH,KAAKkH,IAAKlH,KAAKmH,aAChEW,EAAA9H,KAAqB,CAAA,EAAMqB,EAAArB,KAAAqf,IAAY3d,qBAAvCoG,EAAKvE,cAAgB2E,EAAA1I,OACrBQ,KAAK4D,MAAMN,mBAGbtD,KAAAsf,OAAS,WACPje,EAAAsB,EAAA0c,IAAYzd,IAAIe,EAAKY,eACrBZ,EAAKiB,MAAME,QACXnB,EAAKmC,IAAI6U,iBAGX3Z,KAAAuf,QAAU,WAAA,OAAAzhB,EAAA6E,OAAA,OAAA,GAAA,0DACA6c,EAAcxf,KAAKgf,iBAAgBQ,UAC3Cxf,KAAKmP,cAAcsQ,QAAQD,EAAU,wCAAwC1gB,MAAK,WAChFuC,EAAAsB,EAAA0c,IAAYjb,SACZzB,EAAKiB,MAAME,QACXnB,EAAKmC,IAAI6U,8BAIb3Z,KAAA0f,aAAe,WAAA,OAAA5hB,EAAA6E,OAAA,OAAA,GAAA,6CACb3C,KAAKmf,SAAW,GAChBnf,KAAKkf,kBAAmB,aAG1Blf,KAAAyf,QAAU,WAAA,OAAA3hB,EAAA6E,OAAA,OAAA,GAAA,mDACFgd,EAAyC,CAC7CtX,OAAQ,CACNC,MAAOiH,EAAAA,KACPhH,MAAO,YACPC,MAAO,SAETE,OAAO,EACPD,WAAW,EACXF,MAAO,YACPC,MAAO,SAETxI,KAAKuD,cAAcP,QAAQzC,KAAKof,GAChC3f,KAAKuD,cAAgBlC,EAAArB,KAAAqf,IAAYzd,IAAI5B,KAAKuD,eAC1CvD,KAAKkf,kBAAmB,oBA7C1BH,EAAAphB,UAAAod,SAAA,aAEAgE,EAAAphB,UAAAiiB,QAAA,SAAQC,GACN7f,KAAKof,cAAe,GA6CtBL,EAAAphB,UAAAmiB,UAAA,SAAUD,GACRE,EAAAA,gBAAgB/f,KAAKuD,cAAcP,QAAS6c,EAAMG,cAAeH,EAAMI,cACvEjgB,KAAKkgB,MAAMC,cAGbpB,EAAAphB,UAAAyiB,gBAAA,WACEpgB,KAAKof,cAAe,GAGtBL,EAAAphB,UAAA0iB,cAAA,WACErgB,KAAKof,cAAe,4CAnFvB/a,EAAAA,UAAShC,KAAA,CAAC,CACTC,SAAU,8BACVgC,SAAA,g8LApBmDI,EAAAA,yBAE5CmX,EAAAA,uBACAyE,EAAAA,0BAQA3E,2CAaNnZ,EAAAA,mBACAA,EAAAA,qBACAmC,EAAAA,UAAStC,KAAA,CAAC,wBACVsC,EAAAA,UAAStC,KAAA,CAAC,0BAiBVke,EAAAA,aAAYle,KAAA,CAAC,iBAAkB,CAAC,mCCtCjC,SAAAme,YACAA,EAAA7iB,UAAA+N,UAAA,SAAUnN,EAAYwb,EAAc3Q,GAClC,OAAIA,MAAAA,OAAM,EAANA,EAAQqX,SACHrX,EAAOqX,QAAQliB,EAAOwb,GAExB,gCATV/M,EAAAA,KAAI3K,KAAA,CAAC,CACJ4K,KAAM,kECCR,WAAA,IAAAtK,EAAA3C,KAIE0gB,GAAA9e,IAAA5B,MAAW,SAAC2gB,GACV,MAAI,aAAcA,EACT,CACLpY,MAAOoY,EAAOpY,MACd8U,KAAMsD,EAAOtD,KACbuD,QAASD,EAAOC,QAChBH,QAASE,EAAOF,QAChB/B,MAAOiC,EAAOjC,MACdvV,KAAMwX,EAAOxX,KACbsB,SAAUkW,EAAOlW,SAASrC,KAAI,SAAA1J,GAAK,MAAA,CACjC6J,MAAO7J,EAAE6J,MACT8U,KAAM3e,EAAE2e,KACRqB,MAAOiC,EAAOjC,MACdvV,KAAMwX,EAAOxX,KACbyX,QAASliB,EAAEkiB,QACXH,QAAS/hB,EAAE+hB,QACXI,MAAOniB,EAAEmiB,WAIR,CACLtY,MAAOoY,EAAOpY,MACd8U,KAAMsD,EAAOtD,KACbqB,MAAOiC,EAAOjC,MACdvV,KAAMwX,EAAOxX,KACbyX,QAASD,EAAOC,QAChBH,QAASE,EAAOF,QAChBI,MAAOF,EAAOE,UAIlB7gB,KAAA0L,UAAY,SAACgE,EAA8BpE,WACnCqK,EAA2B,GACjC,KAAKrK,MAAAA,OAAO,EAAPA,EAAShL,WAAWoP,MAAAA,OAAa,EAAbA,EAAepP,QACtC,MAAO,kBAEEqgB,WACT,GAAI,aAAcA,EAAQ,CACxB,IAAMlW,EAAkC,cAC7BqW,GACT,IAAM5Z,EAAMc,EAAAA,QAAK8Y,GACbpR,EAAcuG,OAAM,SAAAvX,GAAK,OAAAA,EAAEuM,KAAK3I,SAASgJ,QAAQiB,SAASrF,OAC5DuD,EAASlK,KAAKugB,QAHlB,IAA0B,IAAA5Y,GAAA+V,OAAA,EAAAxd,EAAAkgB,EAAOlW,WAAQhB,EAAAvB,EAAAzJ,QAAAgL,EAAA5K,KAAA4K,EAAAvB,EAAAzJ,SAAnBgL,EAAAlL,wGAMlBkM,EAASnK,OAAS,GACpBqV,EAAQpV,KAAIjD,OAAAoK,OAAApK,OAAAoK,OAAA,GAAMiZ,GAAM,CAAElW,SAAQA,SAE/B,CACL,IAAMsW,EAAM/Y,EAAAA,QAAK2Y,GACbjR,EAAcuG,OAAM,SAAAvX,GAAK,OAAAA,EAAEuM,KAAK3I,SAASgJ,QAAQiB,SAASwU,OAC5DpL,EAAQpV,KAAKogB,SAfnB,IAAqB,IAAAK,EAAAvgB,EAAA6K,GAAO2V,EAAAD,EAAAviB,QAAAwiB,EAAApiB,KAAAoiB,EAAAD,EAAAviB,SAAXwiB,EAAA1iB,wGAmBjB,OAAOoX,EAAQvN,KAAI,SAAAxJ,GAAU,OAAAyC,EAAAsB,EAAA+d,IAAA7iB,KAAA8E,EAAc/D,4CA3D9CoO,EAAAA,KAAI3K,KAAA,CAAC,CACJ4K,KAAM,mCCDR,WAIEjN,KAAA0L,UAAY,SAACgE,EAA8BqK,EAAsB/N,eACvD2K,EAAsB3K,EAAS2K,SAArBrL,EAAYU,EAASV,QACvC,KAAKA,MAAAA,OAAO,EAAPA,EAAShL,QACZ,OAAKqW,GAILoD,EAAQ9O,KAAK3I,SAASkJ,YAAcmL,EAASoD,EAASrK,IAC9CqK,EAAQ9O,KAAK3I,SAASkJ,aAJ5BuO,EAAQ9O,KAAK3I,SAASkJ,YAAa,GAC5B,GAMX,IAAM0V,EAAmB5V,EAAQ1F,QAAO,SAAA+a,WACtC,GAAI,aAAcA,EAAQ,gBACbG,GACT,IAAM5Z,EAAMc,EAAAA,QAAK8Y,GACjB,GAAIpR,EAAcuG,OAAM,SAAAvX,GAAK,OAAAA,EAAEuM,KAAK3I,SAASgJ,QAAQiB,SAASrF,oBACrD,QAHX,IAA0B,IAAAgB,EAAAzH,EAAAkgB,EAAOlW,UAAQhB,EAAAvB,EAAAzJ,QAAAgL,EAAA5K,KAAA4K,EAAAvB,EAAAzJ,OAAA,CAApC,QAAiBgL,EAAAlL,8IAMtB,OAAO,EAEP,IAAMwiB,EAAM/Y,EAAAA,QAAK2Y,GACjB,OAAOjR,EAAcuG,OAAM,SAAAvX,GAAK,OAAAA,EAAEuM,KAAK3I,SAASgJ,QAAQiB,SAASwU,aAIrE,IAAqB,IAAAI,EAAA1gB,EAAAygB,GAAgBE,EAAAD,EAAA1iB,QAAA2iB,EAAAviB,KAAAuiB,EAAAD,EAAA1iB,OAAE,CAAlC,IAAMkiB,EAAMS,EAAA7iB,MACf,GAAI,aAAcoiB,MAChB,IAA0B,IAAAlX,GAAAwU,OAAA,EAAAxd,EAAAkgB,EAAOlW,WAAQf,EAAAD,EAAAhL,QAAAiL,EAAA7K,KAAA6K,EAAAD,EAAAhL,OAAE,CAAtC,IAAMqiB,EAAWpX,EAAAnL,MACpB,GAAGwb,EAAQ9O,KAAK3I,SAASgJ,QAAQiB,SAASvE,EAAAA,QAAK8Y,IAC7C,OAAO,yGAIX,GAAG/G,EAAQ9O,KAAK3I,SAASgJ,QAAQiB,SAASvE,EAAAA,QAAK2Y,IAC7C,OAAO,oGAIb,OAAO,yBA3CV3T,EAAAA,KAAI3K,KAAA,CAAC,CACJ4K,KAAM,8BCFR,WAAA,IAAAtK,EAAA3C,KAIEA,KAAA0L,UAAY,SAAOE,EAAsBI,GAAgC,OAAAlO,EAAA6E,OAAA,OAAA,GAAA,mFAEvE,OAAK2I,OADGA,EAAYU,EAASV,cACjB,EAAPA,EAAShL,QAGTsL,EAAMtL,OAGPgL,EAAQjC,MAAK,SAAA3K,GAAK,MAAC,aAAcA,GAAKA,EAAE+L,SAASpB,MAAK,SAAAgY,GAAM,OAAAA,EAAGC,cAAe5iB,EAAE4iB,aAClF,CAAA,GAAO,GAET,CAAA,EAAM,IAAInjB,SAAQ,SAAAC,GAAW,OAAAmjB,WAAWnjB,EAAS,SAL/C,CAAA,GAAO,GAHP,CAAA,GAAO,UAUT,GAFAwK,EAAApJ,OACMgiB,EAAQ5V,EAAMpC,MAAK,SAAApK,GAAC,IAAA0I,EAAA,OAA2B,QAA3BA,EAAI1I,EAAE6L,KAAK3I,SAASgJ,eAAO,IAAAxD,OAAA,EAAAA,EAAExH,UAC5C,YACEqgB,GACT,GAAI/U,EAAMhG,QAAO,SAAAxG,GAAC,IAAA0I,EAAA,OAA2B,QAA3BA,EAAI1I,EAAE6L,KAAK3I,SAASgJ,eAAO,IAAAxD,OAAA,EAAAA,EAAExH,UAAQ2V,OAAM,SAAAvX,GAAK,OAAAA,EAAEuM,KAAK3I,SAASgJ,QAAQiB,SAASoU,oBAC1F,QAFX,IAAqBzY,EAAAzH,EAAA+gB,EAAMvW,KAAK3I,SAASgJ,SAAO7B,EAAAvB,EAAAzJ,QAAAgL,EAAA5K,KAAA4K,EAAAvB,EAAAzJ,UAArCkiB,EAAMlX,EAAAlL,2BAANoiB,wHAMb,MAAA,CAAA,GAAO,iCAxBV3T,EAAAA,KAAI3K,KAAA,CAAC,CACJ4K,KAAM,uCCkBN,WAJSjN,KAAAiQ,QAEL,yBAdL5L,EAAAA,UAAShC,KAAA,CAAC,CACTC,SAAU,kBACVgC,SAAA,iaACAC,gBAAiBC,EAAAA,wBAAwBC,iFAGxCjC,EAAAA,qBACAA,EAAAA,mBACAA,EAAAA,sBACAA,EAAAA,oBACAA,EAAAA,0BACAA,EAAAA,uBACAA,EAAAA,mBAGAA,EAAAA,sBCGUif,GAAqF,CAChG,CACEljB,MAAO,QACPmjB,OAAQ,IACRC,QAAS,QAEX,CACEpjB,MAAO,YACPmjB,OAAQ,IACRC,QAAS,cAEX,CACEpjB,MAAO,eACPmjB,OAAQ,IACRC,QAAS,WAEX,CACEpjB,MAAO,YACPmjB,OAAQ,IACRC,QAAS,WAEX,CACEpjB,MAAO,mBACPmjB,OAAQ,IACRC,QAAS,sBAEX,CACEpjB,MAAO,gBACPmjB,OAAQ,IACRC,QAAS,sBAEX,CACEpjB,MAAO,UACPmjB,OAAQ,aACRC,QAAS,QAEX,CACEpjB,MAAO,cACPmjB,OAAQ,OACRC,QAAS,cAEX,CACEpjB,MAAO,aACPmjB,OAAQ,oBACRC,QAAS,eAEX,CACEpjB,MAAO,WACPmjB,OAAQ,kBACRC,QAAS,gBAEX,CACEpjB,MAAO,KACPmjB,OAAQ,gBACRC,QAAS,aAEX,CACEpjB,MAAO,SACPmjB,OAAQ,aACRC,QAAS,kCCtCX,SAAAC,EAAoB9c,GAApB,IAAAnC,EAAA3C,KAAoBA,KAAA8E,IAAAA,EA5BpB9E,KAAA6hB,aAAuB,aACvBC,GAAAlgB,IAAA5B,UAAA,GAOUA,KAAA+hB,qBAAuB,IAAI9C,EAAAA,aAErCjf,KAAAiD,aAAoC,GAKpCjD,KAAAgiB,UAA4D,GAUlDhiB,KAAAiiB,aAAe,IAAIhD,EAAAA,aAC7BiD,GAAAtgB,IAAA5B,KAAgB,IAAIqH,EAAAA,SACpB8a,GAAAvgB,IAAA5B,KAAe,IAAImF,EAAAA,cAsBnBnF,KAAA6Z,eAAiB,WACflX,EAAKsf,aAAaG,QAGpBpiB,KAAAqiB,iBAAmB,SAACrQ,GACdA,GACFrQ,EAAAgB,EAAImf,GAAmB9P,EAASzT,OAChCoE,EAAKkf,aAAe7P,EAAS0P,SAE7B/f,EAAAgB,EAAImf,GAAmB,MACvBnf,EAAKkf,aAAe,cAEtBlf,EAAKof,qBAAqBK,KAAI/gB,EAAAsB,EAAAmf,KAC9Bnf,EAAKmC,IAAIjB,uBAlEK+d,EAAAjkB,UAAA2kB,OAAA,SAAO/jB,GACrByB,KAAKzB,MAAQA,EACb8C,EAAArB,KAAAkiB,IAAmBzjB,QAIrBnB,OAAA0G,eAA6B4d,EAAAjkB,UAAA,kBAAe,KAA5C,SAA6C4kB,WACxClhB,EAAArB,KAAA8hB,MAAyBS,IAC1B5gB,EAAA3B,KAAI8hB,GAAmBS,GACvBviB,KAAK6hB,aAA8E,QAAlE3Z,EAA0D,QAA1DJ,EAAG2Z,GAAkBjY,MAAK,SAAA9K,GAAK,OAAAA,EAAEH,QAAUgkB,YAAe,IAAAza,OAAA,EAAAA,EAAE4Z,cAAM,IAAAxZ,EAAAA,EAAI,+CAM3F5K,OAAA0G,eAA2B4d,EAAAjkB,UAAA,gBAAa,KAAxC,SAAyCsF,GACvCjD,KAAKiD,aAAeA,GAAgB,GACpC5B,EAAArB,KAAAkiB,IAAmBzjB,wCAIrBnB,OAAA0G,eAAqB4d,EAAAjkB,UAAA,UAAO,KAA5B,SAA6ByL,aAC3BpJ,KAAKoJ,OAASA,IACK,QAAftB,EAACsB,MAAAA,OAAM,EAANA,EAAQxD,cAAM,IAAAkC,OAAA,EAAAA,EAAE6O,YAAoC,QAA5BlN,EAAkB,QAAlBvB,EAAIkB,MAAAA,OAAM,EAANA,EAAQxD,cAAM,IAAAsC,OAAA,EAAAA,EAAE8J,gBAAQ,IAAAvI,OAAA,EAAAA,EAAEwI,QACzDjS,KAAKgiB,UAAYP,GAAkB7b,QAAO,SAAAlH,GAAC,IAAAoJ,EAAAI,EAAA,OAAyC,QAAzCA,EAA+B,QAA/BJ,EAAIsB,EAAOxD,OAAOoM,SAASG,YAAI,IAAArK,OAAA,EAAAA,EAAEyE,gBAAQ,IAAArE,OAAA,EAAAA,EAAArK,KAAAiK,EAAGpJ,EAAEH,UAEzFyB,KAAKgiB,UAAY,oCAQrBJ,EAAAjkB,UAAAod,SAAA,WAAA,IAAApY,EAAA3C,KACEqB,EAAArB,KAAAmiB,IAAkBtc,IAChBxE,EAAArB,KAAAkiB,IAAmBpc,KAAKC,EAAAA,UAAU/F,KAAKiD,eAAe+C,WAAU,mBACrC,SAArBrD,EAAKyG,OAAOD,MAAwC,SAArBxG,EAAKyG,OAAOD,MAAwC,aAArBxG,EAAKyG,OAAOD,OACpD,QAApBjB,EAAY,QAAZJ,EAACnF,EAAKyG,cAAM,IAAAtB,OAAA,EAAAA,EAAE6D,cAAM,IAAAzD,OAAA,EAAAA,EAAEsa,iBACxB7f,EAAKM,aAAaN,EAAKyG,OAAOd,OAAS3F,EAAKM,aAAaN,EAAKyG,OAAOd,QAAU,CAC7EqG,KAAM,KACNC,GAAI,YAQhBgT,EAAAjkB,UAAAuG,YAAA,WACE7C,EAAArB,KAAAmiB,IAAkBjc,sFA1DrB7B,EAAAA,UAAShC,KAAA,CAAC,CACTC,SAAU,0BACVgC,SAAA,wjJAEAC,gBAAiBC,EAAAA,wBAAwBC,+MATTC,EAAAA,sDAa/BlC,EAAAA,MAAKH,KAAA,CAAC,kCAMNG,EAAAA,MAAKH,KAAA,CAAC,gDAMNogB,EAAAA,8BAGAjgB,EAAAA,MAAKH,KAAA,CAAC,iCAMNG,EAAAA,MAAKH,KAAA,CAAC,gCAQNogB,EAAAA,iBCrCH,WAIEziB,KAAA0L,UAAY,SAACqO,EAAsB/N,qBACzBV,EAAYU,EAASV,QACvBoX,EAA2B,GAEjC,GADA3I,EAAQ9O,KAAK3I,SAASgJ,QAAUyO,EAAQ9O,KAAK3I,SAASgJ,SAAW,KAC5DA,MAAAA,OAAO,EAAPA,EAAShL,QAEZ,OADAyZ,EAAQ9O,KAAK3I,SAASkJ,YAAa,EAC5BuO,EAAQ9O,KAAK3I,SAASkJ,eAE/B,IAAqB,IAAAwV,EAAAvgB,EAAA6K,GAAO2V,EAAAD,EAAAviB,QAAAwiB,EAAApiB,KAAAoiB,EAAAD,EAAAviB,OAAE,CAAzB,IAAMkiB,EAAMM,EAAA1iB,MACf,GAAI,aAAcoiB,EAAQ,CACxB,IAAI7D,GAAO,EACP6F,GAAW,MACf,IAA0B,IAAAzZ,GAAA+U,OAAA,EAAAxd,EAAAkgB,EAAOlW,WAAQzB,EAAAE,EAAAzK,QAAAuK,EAAAnK,KAAAmK,EAAAE,EAAAzK,OAAE,CAAtC,IAAMqiB,EAAW9X,EAAAzK,MACZ4J,EAAsB2Y,EAAW3Y,OAAzBmZ,EAAcR,EAAWQ,UACnCpa,EAAMc,EAAAA,QAAK8Y,GACbQ,IACFqB,GAAW,GAEW,mBAApB,EACGxa,EAAO4R,KACV+C,GAAO,EACP/C,EAAQ9O,KAAK3I,SAASgJ,QAAQ/K,KAAK2G,GAC/Boa,GACFoB,EAAeniB,KAAK2G,IAGdiB,IACV2U,GAAO,EACP/C,EAAQ9O,KAAK3I,SAASgJ,QAAQ/K,KAAK2G,GAC/Boa,GACFoB,EAAeniB,KAAK2G,sGAItB4V,IACF/C,EAAQ9O,KAAK3I,SAASgJ,QAAQ/K,KAAKyH,EAAAA,QAAK2Y,IACpCgC,GACFD,EAAeniB,KAAKyH,EAAAA,QAAK2Y,UAIrBxY,EAAsBwY,EAAMxY,OAApBmZ,EAAcX,EAAMW,UAC9Bpa,EAAMc,EAAAA,QAAK2Y,GACO,mBAApB,EACGxY,EAAO4R,KACVA,EAAQ9O,KAAK3I,SAASgJ,QAAQ/K,KAAK2G,GAC/Boa,GACFoB,EAAeniB,KAAK2G,IAGdiB,IACV4R,EAAQ9O,KAAK3I,SAASgJ,QAAQ/K,KAAK2G,GAC/Boa,GACFoB,EAAeniB,KAAK2G,sGAM5B,OADA6S,EAAQ9O,KAAK3I,SAASkJ,cAA4C,QAA9B1D,EAACiS,EAAQ9O,KAAK3I,SAASgJ,eAAO,IAAAxD,OAAA,EAAAA,EAAExH,QAC/DyZ,EAAQ9O,KAAK3I,SAASkJ,YAAekX,EAAepiB,UAAoC,QAA9BmJ,EAAuB,QAAvBvB,EAAI6R,MAAAA,OAAO,EAAPA,EAAS9O,KAAKX,aAAK,IAAApC,OAAA,EAAAA,EAAE0D,aAAK,IAAAnC,OAAA,EAAAA,EAAEnJ,QAKxFyZ,EAAQ9O,KAAK3I,SAASgJ,QAAQjC,MAAK,SAAAsX,GAAU,OAAC+B,EAAenW,SAASoU,MAJpE5G,EAAQ9O,KAAK3I,SAASkJ,kCAhElCwB,EAAAA,KAAI3K,KAAA,CAAC,CACJ4K,KAAM,gDCON,WAAA,IAAAtK,EAAA3C,KADUA,KAAA4iB,MAAQ,IAAI3D,EAAAA,aAGtBjf,KAAAmE,QAAU,WACRxB,EAAKigB,MAAMR,8BAbd/d,EAAAA,UAAShC,KAAA,CAAC,CACTC,SAAU,uBACVgC,SAAA,83DAEAC,gBAAiBC,EAAAA,wBAAwBC,iqBAGxCjC,EAAAA,6BACAA,EAAAA,qBACAigB,EAAAA,4BCMD,SAAAI,EACE9d,EACQ+d,EACA1T,GADApP,KAAA8iB,eAAAA,EACA9iB,KAAAoP,iBAAAA,EATV2T,GAAAnhB,IAAA5B,KAAa,IACbgjB,GAAAphB,IAAA5B,KAA+B,GAAlBqB,EAAArB,KAAA+iB,KACbE,GAAArhB,IAAA5B,KAA6B,GAAlBqB,EAAArB,KAAAgjB,KACXE,GAAAthB,IAAA5B,KAA0B,GAAhBqB,EAAArB,KAAAijB,KACVE,GAAAvhB,IAAA5B,KAA4B,IAAhBqB,EAAArB,KAAAijB,KACZ7E,GAAAA,IAAAA,MAAoB,GAKlBzc,EAAA3B,KAAIojB,IAAsBre,EAAcY,oBAEpCkd,EAAAllB,UAAA+N,UAAA,SACJnN,EACAiV,EACApK,EACAjC,sJACQkc,EAAmBlc,EAAUkc,eAC/BtJ,EAAUvG,EAAUxI,QAClBsY,EAAmDla,EAAMka,MAAlDzC,EAA4CzX,EAAMyX,MAA3CJ,EAAqCrX,EAAMqX,QAAlCjD,EAA4BpU,EAAMoU,aAApB9R,EAActC,EAAMsC,UAC3D9M,EAAqB,CACzB4f,MAAO,KACPiC,QAAS,KACTkB,QAAS,CACP2B,MAAOA,IAA0B,WAAhBla,EAAOD,KAAoB,QAAU,QACtD5K,MAAKA,GAEPsiB,MAAO,MAGqB,mBAA1B,EAAA,CAAA,EAAA,IACFjiB,EAAO+iB,QAAQ4B,SAAU,EACzB3kB,EAAO+iB,QAAQ6B,KAAOhG,EAAajf,EAAOwb,EAAO1Y,EAAArB,KAAAojB,0BAE7B,aAAhBha,EAAOD,MAAuC,SAAhBC,EAAOD,MAAmC,SAAhBC,EAAOD,OACzD2P,EAAkB1P,EAAM0P,iBAE9Bva,EAAQua,EAAcva,EAAOwb,IAGN,mBAAvB,EAAA,CAAA,EAAA,IACI1T,EAAMqF,EAAUnN,EAAOwb,cACV5b,SACjB+J,EAAAtJ,EAAO+iB,QAAgB,CAAA,EAAMtb,IAD3B,CAAA,EAAA,iBACF6B,EAAe3J,MAAQmL,EAAAlK,oBAEvBZ,EAAO+iB,QAAQpjB,MAAQ8H,4CAGL,SAAhB+C,EAAOD,MAAmC,aAAhBC,EAAOD,OAC3BwC,EAAWvC,EAAMuC,OACnB8X,EAAUxL,KAAKC,QAAO,IAAI/D,MAAOK,UAAY,IAAIL,KAAK5V,GAAOiW,WAAa,KAClD,WAA1B7I,MAAAA,OAAM,EAANA,EAAQ+X,gBAA6BD,EAAOpiB,EAAArB,KAAAmjB,KAGX,SAA1BxX,MAAAA,OAAM,EAANA,EAAQ+X,gBAA2BD,EAAOpiB,EAAArB,KAAAkjB,KAGhB,UAA1BvX,MAAAA,OAAM,EAANA,EAAQ+X,gBAA4BD,EAAOpiB,EAAArB,KAAAijB,KAGjB,YAA1BtX,MAAAA,OAAM,EAANA,EAAQ+X,gBAA8BD,EAAOpiB,EAAArB,KAAAgjB,KAGnB,YAA1BrX,MAAAA,OAAM,EAANA,EAAQ+X,gBAA8BD,EAAOpiB,EAAArB,KAAA+iB,KAXtDnkB,EAAO+iB,QAAQpjB,MAAQyB,KAAK8iB,eAAea,eAAeplB,GAC1DK,EAAO6hB,QAAUtM,KAAK4E,SAASxa,EAAuB,SAAhB6K,EAAOD,KAAkB,aAAe,sBAcxE0P,EAAO1E,KAAK4E,SAASxa,EAAO,cAC5BqlB,EAAOzP,KAAK4E,SAASxa,EAAO,SAC5BslB,EAAW1P,KAAK4E,SAASxa,EAAO,SAClB,aAAhB6K,EAAOD,MAAuBya,GAAiB,UAATA,GACxChlB,EAAO+iB,QAAQpjB,MAAQslB,EACvBjlB,EAAO+iB,QAAQ4B,SAAU,EACzB3kB,EAAO+iB,QAAQ6B,KAAO,4CAA4CrP,KAAK4E,SAASxa,EAAO,SAAQ,qCAAqC4V,KAAK4E,SAASxa,EAAO,cAAa,WAEtKK,EAAO+iB,QAAQpjB,MAAQsa,IAIT,SAAhBzP,EAAOD,OACTvK,EAAO+iB,QAAQpjB,MAAQ4V,KAAK4E,SAASxa,EAAO,UAE1B,WAAhB6K,EAAOD,KAAP,CAAA,EAAA,IACFM,EAAA7K,EAAO+iB,QAAgB,CAAA,EAAM3hB,KAAKoP,iBAAiB1D,UAAUnN,EAAO6K,mBAApEK,EAAelL,MAAQmL,EAAAlK,oBACE,WAAhB4J,EAAOD,MAAqBuU,OAAOC,SAASpf,KACrDK,EAAO+iB,QAAQpjB,MAAQmf,OAAOE,aAAarf,qBAEzB,SAAhB6K,EAAOD,OACDwC,EAAWvC,EAAMuC,OAEvB/M,EAAO+iB,QAAQpjB,MADbA,MAAAA,GAAmD,KAAVA,GACV,IAAVA,GAAkBoN,MAAAA,OAAM,EAANA,EAAQgN,gBAAiB,QAAWhN,MAAAA,OAAM,EAANA,EAAQiN,iBAAkB,QAEhF,uBAIzByK,IACE5W,EAAS,CAAC,UAAMkB,EAAW,IACC,iBAA5B,GACMgU,EAAyB0B,EAAc1B,QAA9BmC,EAAgBT,EAAcS,aAC/CrX,EAAMvL,EAAA,CAAI,UAAMyM,EAAW,IAAOmW,IACvBvX,SAAS3N,EAAO+iB,QAAQpjB,SACR,mBAArB,GACFK,EAAO+iB,QAAQ4B,SAAU,EACzB3kB,EAAO+iB,QAAQ6B,KAAO7B,EAAQ5H,EAAS3Q,KAEvCxK,EAAO+iB,QAAQ4B,SAAU,EACzB3kB,EAAO+iB,QAAQ6B,KAAO,8CAItB/W,EAAOF,SAAS3N,EAAO+iB,QAAQpjB,SACD,mBAA5B,GACFK,EAAO+iB,QAAQ4B,SAAU,EACzB3kB,EAAO+iB,QAAQ6B,KAAOH,EAAetJ,EAAS3Q,KAE9CxK,EAAO+iB,QAAQ4B,SAAU,EACzB3kB,EAAO+iB,QAAQ6B,KAAO,iEA4BhC,MArBqB,WAAhBpa,EAAOD,MAAqC,WAAhBC,EAAOD,MAAqC,WAAhBC,EAAOD,OAAsBC,EAAOoV,MAMtE,SAAhBpV,EAAOD,OAChBvK,EAAO4f,MAAQ,CACbrV,MAAOC,MAAAA,OAAM,EAANA,EAAQqV,WAAsBrV,EAAOqV,UAAjB,QAC3BC,MAASngB,EAAQ,UAAY,SAC7B8e,KAAM,OATRze,EAAO4f,MAAQ,CACbrV,MAAOC,MAAAA,OAAM,EAANA,EAAQqV,WAAsBrV,EAAOqV,UAAjB,QAC3BC,MAAOtV,EAAOoV,MAAMjgB,EAAOwb,GAC3BsD,KAAuB,QAAnBvV,EAAEsB,MAAAA,OAAM,EAANA,EAAQuV,iBAAS,IAAA7W,OAAA,EAAAA,EAAAjK,KAAjBuL,EAAoB7K,EAAOwb,IAUZ,mBAArB,IACFnb,EAAO6hB,QAAUA,EAAQliB,EAAOwb,IAGX,mBAAnB,IACFnb,EAAOiiB,MAAQ,WAAM,OAAAA,EAAMtiB,EAAOwb,KAEpC,CAAA,EAAOnb,+HArJVoO,EAAAA,KAAI3K,KAAA,CAAC,CACJ4K,KAAM,yDAPC9G,EAAAA,6BADA4d,EAAAA,wBAKAjI,wBCCT,SAAAkI,YACEA,EAAArmB,UAAA+N,UAAA,SAAUE,EAAsBzE,2BACtBmD,EAAUnD,EAAUmD,MAC5B,IAAKA,EACH,OAAOsB,EAED,IAAApB,EAAyBF,EAAKE,OAAtBgT,EAAiBlT,EAAKkT,aACtC,KAAKhT,MAAAA,OAAM,EAANA,EAAQlK,QACX,OAAOsL,EAET,IAAMqY,EAEF,OACJ,IAAmB,IAAA1M,EAAA9W,EAAAmL,GAAKsY,EAAA3M,EAAA9Y,QAAAylB,EAAArlB,KAAAqlB,EAAA3M,EAAA9Y,OAAE,CAArB,IAAM4G,EAAI6e,EAAA3lB,MACT8Z,EAAM,OACV,IAAoB,IAAA8L,GAAAlG,OAAA,EAAAxd,EAAA+J,IAAM4Z,EAAAD,EAAA1lB,QAAA2lB,EAAAvlB,KAAAulB,EAAAD,EAAA1lB,OAAE,CAAvB,IAAM6J,EAAK8b,EAAA7lB,MACd8Z,EAAG/a,OAAAoK,OAAApK,OAAAoK,OAAA,GACE2Q,GACY,QADTvQ,EACFzC,EAAKiD,UAAM,IAAAR,EAAAA,IAAA4B,EAAA,IAAOpB,GAAQjD,EAAKiD,GAAMoB,sGAIxCua,EADC/c,EAAMc,EAAAA,QAAKqQ,MAEf4L,EAAU/c,GAAO,IAEnB+c,EAAU/c,GAAK3G,KAAK8E,qGAEtB,IAAMsQ,EAAyB,OAC/B,IAAkB,IAAA3M,EAAAvI,EAAAnD,OAAO2Q,KAAKgW,IAAUnX,EAAA9D,EAAAvK,QAAAqO,EAAAjO,KAAAiO,EAAA9D,EAAAvK,OAAE,CAArC,IAAMyI,EAAG4F,EAAAvO,MACNK,EAASmM,GAAiB,IAChCnM,EAAOqM,KAAKX,MAAMsB,MAAQqY,EAAU/c,GACpCtI,EAAOqM,KAAKX,MAAMkT,aAAeA,EAAayG,EAAU/c,IACxDyO,EAAQpV,KAAK3B,OACb,IAAmB,IAAAiO,GAAAwX,OAAA,EAAA5jB,EAAAwjB,EAAU/c,KAAI6F,EAAAF,EAAApO,QAAAsO,EAAAlO,KAAAkO,EAAAF,EAAApO,OAAE,CAAxB4G,EAAI0H,EAAAxO,MACboX,EAAQpV,KAAK8E,wMAGjB,OAAOsQ,6BAxCV3I,EAAAA,KAAI3K,KAAA,CAAC,CACJ4K,KAAM,iCC2DR,SAAAqX,IAAA,IAAA3hB,EAAA4hB,EAAAxlB,MAAAiB,KAAAkB,EAAAC,aAAAnB,YAEE2C,EAAA6hB,eAAiB,YACjB7hB,EAAA8hB,cAAgB,aAChB9hB,EAAA+hB,kBAAoB,mBACpB/hB,EAAAgiB,cAAgB,YAChBhiB,EAAAiiB,kBAAoB,cAEpBjiB,EAAAkiB,cAAgB,SAAChK,EAAc9Y,EAAkBzB,GAC/C,GAAe,IAAXA,GAA6B,IAAbyB,EAClB,MAAO,GAET,IAAM4M,EAAOkM,EAAO9Y,EAAW,EAE/B,OAAU4M,EAAI,KADHA,GAAQrO,EAASua,EAAO9Y,EAAWA,EAAWA,EAAWzB,EAASua,EAAO9Y,GAAY,GAC5E,SAASzB,qBvCvDPlD,EAAGC,GACzB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAI+C,UAAU,uBAAyB0kB,OAAOznB,GAAK,iCAE7D,SAAS0nB,IAAO/kB,KAAKglB,YAAc5nB,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEO,UAAkB,OAANN,EAAaC,OAAOkD,OAAOnD,IAAM0nB,EAAGpnB,UAAYN,EAAEM,UAAW,IAAIonB,GuCqC1CE,CAAAX,EAAAC,MAAAW,EAAAA,uCADxCva,EAAAA,oBA2GD,kCAzFCwa,EAAAA,SAAQ9iB,KAAA,CAAC,CACR+iB,QAAS,CACPC,EAAAA,aACAC,EAAAA,YACAC,EAAAA,oBACAC,EAAAA,eACAC,EAAAA,mBACAC,EAAAA,cACAC,EAAAA,mBACAC,EAAAA,eACAC,EAAAA,cACAC,EAAAA,cACAC,EAAAA,gBACAC,EAAAA,iBACAC,EAAAA,yBACAC,EAAAA,eACAC,EAAAA,eACAC,EAAAA,qBACAC,EAAAA,kBACAC,EAAAA,cACAC,EAAAA,iBACAC,EAAAA,eACAC,EAAAA,eACAC,EAAAA,aACAC,EAAAA,gBACAC,EAAAA,gBACAC,EAAAA,gBACAC,EAAAA,eACAC,EAAAA,eAEFC,aAAc,CACZC,GACAC,GACAC,GACAC,GACAxF,GACA5S,GAEAyN,GACAD,GACApW,GACAiW,GACAC,GACAyC,GACAla,GACApC,GAGAmc,GACAT,GACAzB,GACAS,GACAC,GACAE,GACAxB,GACAyB,GACAE,GACA+C,GACAjC,GACAP,GACAH,GACAwJ,GACAC,GACAC,GACAC,GACA3E,GACAmB,IAEFyD,QAAS,CACPzY,GACAyN,GACAD,GACApW,GACAkW,GACAD,IAEFqL,UAAW,CACTC,EAAAA,SACAC,EAAAA,YACAC,EAAAA,aACA9L,GACAJ,GACAG,GACA,CACEgM,QAAS5C,EAAAA,iBACT6C,SAAUzD","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\nimport { SdFilterOperator } from './table-column.model';\r\n\r\nexport interface ISdTableConfiguration {\r\n filter?: {\r\n quickFilter?: boolean;\r\n operator?: {\r\n defaultListString?: SdFilterOperator[];\r\n defaultListNumber?: SdFilterOperator[];\r\n defaultListDate?: SdFilterOperator[];\r\n defaultListValues?: SdFilterOperator[];\r\n };\r\n };\r\n paginate?: {\r\n pageSize?: number;\r\n pages?: number[]\r\n };\r\n translate?: boolean;\r\n}\r\n\r\nexport const DEFAULT_TABLE_CONFIG: ISdTableConfiguration = {\r\n paginate: {\r\n pageSize: 50,\r\n pages: [50, 100, 200]\r\n }\r\n};\r\n\r\nexport const TABLE_CONFIG = new InjectionToken<ISdTableConfiguration>('sd-table.configuration');\r\n","import { Directive, Input, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdMaterialCellDef]'\r\n})\r\nexport class SdMaterialCellDefDirective {\r\n @Input() sdMaterialCellDef: string;\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { Component, ViewChild, Input, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core';\r\nimport { SdModal } from '@sd-angular/core/modal';\r\nimport { SdTableColumn } from '../../models/table-column.model';\r\nimport { SdTableExternalFilter, SdGridMaterialFilterRegister } from '../../services/table-filter/table-filter.model';\r\nimport { SdMaterialFilterDefDirective } from '../../directives/sd-material-filter-def.directive';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'sd-popup-filter',\r\n templateUrl: './popup-filter.component.html',\r\n styleUrls: ['./popup-filter.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SdPopupFilter {\r\n @ViewChild(SdModal) modal: SdModal;\r\n #filterRegister: SdGridMaterialFilterRegister;\r\n @Input() set filterRegister(value: SdGridMaterialFilterRegister) {\r\n this.#filterRegister = value;\r\n }\r\n @Input() externalFilters: SdTableExternalFilter[] = [];\r\n externalFilter: Record<string, any> = {};\r\n inlineExternal: Record<string, boolean> = {};\r\n @Input() columns: SdTableColumn[] = [];\r\n columnFilter: Record<string, any> = {};\r\n inlineColumn: Record<string, boolean> = {};\r\n\r\n @Input() filterDefs: SdMaterialFilterDefDirective[] = [];\r\n filterDef: Record<string, any> = {};\r\n inlineFilterDef: Record<string, boolean> = {};\r\n constructor(private cdRef: ChangeDetectorRef) {}\r\n\r\n ngAfterViewInit() {}\r\n\r\n ngOnDestroy() {}\r\n\r\n open = () => {\r\n const configuration = this.#filterRegister.configuration.get();\r\n this.inlineColumn = JSON.parse(JSON.stringify(configuration.inlineColumn));\r\n this.inlineExternal = JSON.parse(JSON.stringify(configuration.inlineExternal));\r\n this.inlineFilterDef = JSON.parse(JSON.stringify(configuration.inlineFilterDef));\r\n const filterValue = this.#filterRegister.value.get();\r\n this.columnFilter = JSON.parse(JSON.stringify(filterValue.columnFilter));\r\n this.externalFilter = JSON.parse(JSON.stringify(filterValue.externalFilter));\r\n this.filterDef = JSON.parse(JSON.stringify(filterValue.filterDef));\r\n this.modal.open();\r\n this.cdRef.markForCheck();\r\n };\r\n\r\n close = () => {\r\n this.modal.close();\r\n this.cdRef.markForCheck();\r\n };\r\n\r\n onApply = () => {\r\n this.#filterRegister.configuration.set({\r\n inlineColumn: this.inlineColumn,\r\n inlineExternal: this.inlineExternal,\r\n inlineFilterDef: this.inlineFilterDef,\r\n });\r\n this.#filterRegister.value.set({\r\n columnFilter: this.columnFilter,\r\n externalFilter: this.externalFilter,\r\n filterDef: this.filterDef,\r\n });\r\n this.modal.close();\r\n this.cdRef.markForCheck();\r\n };\r\n\r\n onClear() {\r\n this.#filterRegister.value.remove();\r\n this.modal.close();\r\n this.cdRef.markForCheck();\r\n }\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ViewChild,\r\n AfterViewInit,\r\n OnDestroy,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n} from '@angular/core';\r\nimport {\r\n SdTableOptionFilter,\r\n SdTableExternalFilter,\r\n SdGridMaterialFilterRegister,\r\n} from '../../services/table-filter/table-filter.model';\r\nimport { SdTableColumn } from '../../models/table-column.model';\r\nimport { SdPopupFilter } from '../popup-filter/popup-filter.component';\r\nimport { BehaviorSubject, Subject, Subscription } from 'rxjs';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\nimport { SdMaterialFilterDefDirective } from '../../directives/sd-material-filter-def.directive';\r\nimport { startWith } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'sd-grid-filter',\r\n templateUrl: './grid-filter.component.html',\r\n styleUrls: ['./grid-filter.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SdGridFilter implements AfterViewInit, OnDestroy {\r\n @ViewChild(SdPopupFilter) popupFilter: SdPopupFilter;\r\n filter: Readonly<SdTableOptionFilter>;\r\n @Input('filter') set _filter(filter: SdTableOptionFilter) {\r\n this.filter = filter;\r\n }\r\n @Input() columns: SdTableColumn[] = [];\r\n externalFilters: SdTableExternalFilter[] = [];\r\n @Input('externalFilters') set _externalFilters(value: SdTableExternalFilter[]) {\r\n this.externalFilters = value || [];\r\n }\r\n @Input() filterDefs: SdMaterialFilterDefDirective[] = [];\r\n filterRegister: SdGridMaterialFilterRegister;\r\n @Input('filterRegister') set _filterRegister(value: SdGridMaterialFilterRegister) {\r\n this.filterRegister = value;\r\n this.filterRegisterChange.next(this.filterRegister);\r\n }\r\n filterRegisterChange = new BehaviorSubject<SdGridMaterialFilterRegister>(null);\r\n\r\n filterDef: any = {};\r\n inlineFilterDef: Record<string, boolean> = {};\r\n columnFilter: any = {};\r\n inlineColumn: Record<string, boolean> = {};\r\n externalFilter: any = {};\r\n inlineExternal: Record<string, boolean> = {};\r\n isMobileOrTablet: boolean;\r\n\r\n #subscription = new Subscription();\r\n\r\n constructor(private ref: ChangeDetectorRef, private deviceService: DeviceDetectorService) {\r\n this.isMobileOrTablet = !this.deviceService.isDesktop();\r\n this.ref.markForCheck();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.#subscription.add(\r\n this.filterRegisterChange.pipe(startWith(this.filterRegister)).subscribe(filterRegister => {\r\n if (this.filterRegister) {\r\n this.#subscription.add(\r\n this.filterRegister.configuration.observer.subscribe(configuration => {\r\n const { inlineColumn, inlineExternal, inlineFilterDef } = configuration;\r\n this.inlineColumn = inlineColumn;\r\n this.inlineExternal = inlineExternal;\r\n this.inlineFilterDef = inlineFilterDef;\r\n this.ref.markForCheck();\r\n })\r\n );\r\n this.#subscription.add(\r\n this.filterRegister.value.observer.subscribe(value => {\r\n const { columnFilter, externalFilter, filterDef } = value;\r\n this.columnFilter = columnFilter;\r\n this.externalFilter = externalFilter;\r\n this.filterDef = filterDef;\r\n this.ref.markForCheck();\r\n })\r\n );\r\n }\r\n })\r\n );\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#subscription.unsubscribe();\r\n }\r\n\r\n onFilter = (item?: SdTableColumn | SdTableExternalFilter) => {\r\n this.filterRegister.value.set({\r\n columnFilter: this.columnFilter,\r\n externalFilter: this.externalFilter,\r\n filterDef: this.filterDef,\r\n });\r\n };\r\n\r\n updateFilter = () => {\r\n this.filterRegister.value.set({\r\n columnFilter: this.columnFilter,\r\n externalFilter: this.externalFilter,\r\n filterDef: this.filterDef,\r\n notReload: true\r\n });\r\n };\r\n\r\n open = () => {\r\n this.popupFilter.open();\r\n };\r\n}\r\n","import { Directive, Input, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdMaterialFilterDef]'\r\n})\r\nexport class SdMaterialFilterDefDirective {\r\n @Input() sdMaterialFilterDef: string;\r\n @Input('defaultShowing') set showing(val: boolean | '') {\r\n this.defaultShowing = (val === '') || val;\r\n }\r\n defaultShowing: boolean;\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdMaterialSubInformationDef]'\r\n})\r\nexport class SdMaterialSubInformationDefDirective {\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { Directive, Input, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdMaterialFooterDef]'\r\n})\r\nexport class SdMaterialFooterDefDirective {\r\n @Input() sdMaterialFooterDef: string;\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdMaterialEmptyDataDef]'\r\n})\r\nexport class SdMaterialEmptyDataDefDirective {\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { Inject, Injectable, Optional } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdSettingService } from '@sd-angular/core/setting';\r\nimport { SdTableOption } from '../models/table-option.model';\r\nimport {\r\n SdColumnConfiguration,\r\n SdGridConfiguration,\r\n SdGridConfigurationCache,\r\n SdGridConfigurationResult,\r\n} from '../models/table-option-config.model';\r\nimport { SdMaterialSubInformationDefDirective } from '../directives/sd-material-sub-information-def.directive';\r\nimport { Subject } from 'rxjs';\r\nimport { SdTableColumn } from '../models/table-column.model';\r\nimport { TABLE_CONFIG, ISdTableConfiguration } from '../models/table-configuration.model';\r\n\r\n@Injectable()\r\nexport class SdTableConfigurationService {\r\n #COLUMNS = {\r\n EDITORVALIDATION: 'sdEditorValidation',\r\n EDITOR: 'sdEditor',\r\n SUBINFORMATION: 'sdSubInformationAction',\r\n COMMAND: 'sdCommand',\r\n SELECTION: 'sdSelection',\r\n GROUP: 'sdGroup',\r\n };\r\n #cache: {\r\n [key: string]: SdGridConfigurationCache;\r\n } = {};\r\n constructor(\r\n private settingService: SdSettingService,\r\n @Inject(TABLE_CONFIG) @Optional() public gridMaterialConfiguration: ISdTableConfiguration\r\n ) {}\r\n\r\n init = (key: string, gridOption: SdTableOption) => {\r\n if (!this.#cache[key]) {\r\n const subject = new Subject<SdGridConfiguration>();\r\n this.#cache[key] = {\r\n load: this.#load(gridOption, subject),\r\n get: this.#get(gridOption),\r\n set: (configuration: SdGridConfiguration) => {\r\n configuration = this.#set(gridOption, configuration);\r\n subject.next({ ...configuration });\r\n return configuration;\r\n },\r\n remove: () => {\r\n this.#remove(gridOption)();\r\n subject.next(this.#default(gridOption));\r\n },\r\n observer: subject,\r\n };\r\n }\r\n return this.#cache[key];\r\n };\r\n\r\n #getKey = (gridOption: SdTableOption) => {\r\n const prefix = 'c9e94836-6ace-4aeb-b148-4f0be63589ee';\r\n if (!gridOption?.config?.key && !gridOption?.key) {\r\n return null;\r\n }\r\n return hash({\r\n prefix,\r\n key: gridOption?.config?.key || !gridOption?.key,\r\n });\r\n };\r\n\r\n #default = (gridOption: SdTableOption): SdGridConfiguration => {\r\n const columns: SdColumnConfiguration[] =\r\n gridOption?.columns\r\n ?.filter(e => !e.hidden)\r\n .map(e => ({\r\n origin: {\r\n field: e.field,\r\n title: e.title,\r\n width: e.width,\r\n invisible: e.invisible,\r\n },\r\n invisible: e.invisible,\r\n fixed: false,\r\n })) || [];\r\n return {\r\n columns,\r\n };\r\n };\r\n\r\n #load = (gridOption: SdTableOption, subject: Subject<SdGridConfiguration>) => {\r\n return async () => {\r\n const get = this.#get(gridOption);\r\n const configuration = await get();\r\n subject.next({ ...configuration });\r\n };\r\n };\r\n\r\n #get = (gridOption: SdTableOption) => {\r\n return async () => {\r\n const key = this.#getKey(gridOption);\r\n if (!key) {\r\n return this.#default(gridOption);\r\n }\r\n const { columns, config } = gridOption;\r\n let configuration: SdGridConfiguration;\r\n if (config?.storage === 'server') {\r\n const { get, remove } = this.settingService.createServer<SdGridConfiguration>(key, {\r\n args: config?.args,\r\n });\r\n configuration = await get().catch(() => undefined);\r\n if (!configuration?.columns) {\r\n remove().catch(console.error);\r\n return this.#default(gridOption);\r\n }\r\n } else {\r\n const { get, remove } = this.settingService.create<SdGridConfiguration>(key, {\r\n type: config?.storage,\r\n args: config?.args,\r\n });\r\n configuration = get();\r\n if (!configuration?.columns) {\r\n remove();\r\n return this.#default(gridOption);\r\n }\r\n }\r\n\r\n configuration.columns = configuration.columns.filter(column => columns.some(e => !e.hidden && e.field === column.origin.field));\r\n // Thêm những column mới vào storage nếu có\r\n columns.forEach(column => {\r\n const col = configuration.columns.find(e => e.origin?.field === column.field);\r\n if (!col) {\r\n configuration.columns.push({\r\n origin: {\r\n field: column.field,\r\n title: column.title,\r\n width: column.width,\r\n invisible: column.invisible,\r\n },\r\n invisible: column.invisible,\r\n fixed: false,\r\n });\r\n } else {\r\n col.origin = {\r\n field: column.field,\r\n title: column.title,\r\n width: column.width,\r\n invisible: column.invisible,\r\n };\r\n }\r\n });\r\n return configuration;\r\n };\r\n };\r\n\r\n #set = (gridOption: SdTableOption, configuration: SdGridConfiguration) => {\r\n const key = this.#getKey(gridOption);\r\n if (key) {\r\n if (gridOption?.config?.storage === 'server') {\r\n const { set } = this.settingService.createServer<SdGridConfiguration>(key, {\r\n args: gridOption?.config?.args,\r\n });\r\n set(configuration);\r\n } else {\r\n const { set } = this.settingService.create<SdGridConfiguration>(key, {\r\n type: gridOption?.config?.storage,\r\n args: gridOption?.config?.args,\r\n });\r\n set(configuration);\r\n }\r\n }\r\n return JSON.parse(JSON.stringify(configuration));\r\n };\r\n\r\n #remove = (gridOption: SdTableOption) => {\r\n return () => {\r\n const key = this.#getKey(gridOption);\r\n if (key) {\r\n if (gridOption?.config?.storage === 'server') {\r\n const { remove } = this.settingService.createServer<SdGridConfiguration>(key, {\r\n args: gridOption?.config?.args,\r\n });\r\n remove();\r\n } else {\r\n const { remove } = this.settingService.create<SdGridConfiguration>(key, {\r\n type: gridOption?.config?.storage,\r\n args: gridOption?.config?.args,\r\n });\r\n remove();\r\n }\r\n }\r\n };\r\n };\r\n\r\n // get = async (gridOption: SdGridMaterialOption): Promise<SdGridConfiguration> => {\r\n // if (!gridOption?.key) {\r\n // return this.#getDefaultConfiguration(gridOption);\r\n // }\r\n // const { key, columns } = gridOption;\r\n // const configuration: SdGridConfiguration = await this.settingService.get(this.#getKey(key)).catch(() => undefined);\r\n // if (!configuration?.columns) {\r\n // this.settingService.remove(this.#getKey(key)).catch(console.error);\r\n // return this.#getDefaultConfiguration(gridOption);\r\n // }\r\n // configuration.columns = configuration.columns\r\n // .filter(column => columns.some(e => !e.hidden && e.field === column.origin.field));\r\n // // Thêm những column mới vào storage nếu có\r\n // columns.forEach(column => {\r\n // const col = configuration.columns.find(e => e.origin?.field === column.field);\r\n // if (!col) {\r\n // configuration.columns.push({\r\n // origin: {\r\n // field: column.field,\r\n // title: column.title,\r\n // width: column.width,\r\n // invisible: column.invisible,\r\n // },\r\n // invisible: column.invisible,\r\n // fixed: false\r\n // });\r\n // } else {\r\n // col.origin = {\r\n // field: column.field,\r\n // title: column.title,\r\n // width: column.width,\r\n // invisible: column.invisible\r\n // };\r\n // }\r\n // });\r\n // return configuration;\r\n // }\r\n\r\n // set = async (key: string, configuration: SdGridConfiguration): Promise<SdGridConfiguration> => {\r\n // if (key) {\r\n // this.settingService.set(this.#getKey(key), configuration);\r\n // }\r\n // return configuration;\r\n // }\r\n\r\n // remove = (key: string) => {\r\n // if (key) {\r\n // this.settingService.remove(this.#getKey(key));\r\n // }\r\n // }\r\n\r\n generateConfigurationResult = (\r\n configuration: SdGridConfiguration,\r\n gridOption: SdTableOption,\r\n sdSubInformation: SdMaterialSubInformationDefDirective\r\n ) => {\r\n const result: SdGridConfigurationResult = {\r\n column: {},\r\n fixedColumn: {},\r\n firstColumns: [],\r\n secondColumns: [],\r\n firstHeaders: [],\r\n secondHeaders: [],\r\n displayedColumns: [],\r\n displayedFooters: [],\r\n multipleHeader: false,\r\n };\r\n const { selector, commands, group } = gridOption || {};\r\n if (selector?.visible) {\r\n result.firstHeaders.push(this.#COLUMNS.SELECTION);\r\n result.displayedColumns.push(this.#COLUMNS.SELECTION);\r\n }\r\n if (commands?.length) {\r\n result.firstHeaders.push(this.#COLUMNS.COMMAND);\r\n result.displayedColumns.push(this.#COLUMNS.COMMAND);\r\n }\r\n if (group?.fields?.length) {\r\n result.firstHeaders.push(this.#COLUMNS.GROUP);\r\n result.displayedColumns.push(this.#COLUMNS.GROUP);\r\n }\r\n configuration?.columns\r\n ?.filter(col => !col.invisible)\r\n .forEach(col => {\r\n const column = gridOption?.columns.find(e => e.field === col.origin.field);\r\n if (column) {\r\n result.column[col.origin.field] = {\r\n title: col.title || col.origin.title,\r\n width: col.width || col.origin.width,\r\n };\r\n if (col.fixed) {\r\n result.fixedColumn[col.origin.field] = {\r\n title: col.title || col.origin.title,\r\n width: col.width || col.origin.width,\r\n };\r\n }\r\n result.firstColumns.push({\r\n ...column,\r\n title: col.title || col.origin.title,\r\n width: col.width || col.origin.width,\r\n });\r\n result.firstHeaders.push(col.origin.field);\r\n result.displayedColumns.push(col.origin.field);\r\n if (column.type === 'children') {\r\n column.children?.forEach(childColumn => {\r\n result.secondColumns.push(childColumn);\r\n result.secondHeaders.push(childColumn.field);\r\n result.displayedColumns.push(childColumn.field);\r\n });\r\n }\r\n }\r\n });\r\n if (sdSubInformation?.templateRef) {\r\n result.firstHeaders.push(this.#COLUMNS.SUBINFORMATION);\r\n result.displayedColumns.push(this.#COLUMNS.SUBINFORMATION);\r\n }\r\n result.multipleHeader = result.secondHeaders.length > 0;\r\n // Sub infomation không thể có footer\r\n result.displayedFooters = result.displayedColumns.filter(val => val !== this.#COLUMNS.SUBINFORMATION);\r\n return result;\r\n };\r\n}\r\n","import * as hash from 'object-hash';\r\nexport interface SdTableMetaSelector {\r\n selectable?: boolean;\r\n isSelected?: boolean;\r\n actions?: string[];\r\n}\r\n\r\nexport interface SdTableMetaExpand {\r\n isExpanded?: boolean;\r\n isExpanding?: boolean;\r\n data?: any;\r\n}\r\n\r\nexport interface SdTableMeta<T> {\r\n id?: string;\r\n selector?: SdTableMetaSelector;\r\n expand?: SdTableMetaExpand;\r\n group?: {\r\n htmlTemplate?: string;\r\n items?: SdTableItem<T>[];\r\n };\r\n}\r\n\r\nexport interface SdTableItem<T = any> {\r\n meta: SdTableMeta<T>;\r\n origin: T;\r\n current: T;\r\n}\r\n\r\nexport const MapToSdTableItem = <T = any>(item: T): SdTableItem<T> => ({\r\n current: JSON.parse(JSON.stringify(item)),\r\n origin: item,\r\n meta: {\r\n id: hash(item),\r\n expand: {\r\n isExpanding: false,\r\n isExpanded: false,\r\n },\r\n group: {},\r\n selector: { actions: [], isSelected: false, selectable: false },\r\n },\r\n});\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdTableColumn } from '../models/table-column.model';\r\n@Pipe({\r\n name: 'columnValues'\r\n})\r\nexport class SdColumnValuesPipe implements PipeTransform {\r\n #prefix = 'a1e67660-8aa2-4c11-b02d-71a32188719f';\r\n #cache: {\r\n [key: string]: {\r\n result: any\r\n }\r\n } = {};\r\n transform = async (value: any, column: SdTableColumn): Promise<string> => {\r\n if (column.type !== 'values' || !column.option?.items || !column.option?.valueField || !column.option?.displayField) {\r\n return value;\r\n }\r\n const { items, valueField, displayField, selection, ...remain } = column.option;\r\n const key = hash({\r\n prefix: this.#prefix,\r\n valueField,\r\n displayField,\r\n selection,\r\n remain,\r\n value\r\n });\r\n const isMultible = ['MULTIPLE', 'MULTIPLEAUTOCOMPLETE', 'MULTIPLE_EDITOR', 'MULTIPLEAUTOCOMPLETE_EDITOR'].includes(selection);\r\n if (typeof (items) === 'function') {\r\n if (!this.#cache[key]) {\r\n const values = await items(value, true);\r\n let result = '';\r\n if (isMultible && Array.isArray(value)) {\r\n result = values?.filter(e => value?.includes(e?.[valueField]))?.map(e => e?.[displayField])?.join(', ') || value?.join(', ');\r\n }\r\n else {\r\n result = values?.find(e => e?.[valueField] === value)?.[displayField] || value;\r\n }\r\n this.#cache[key] = {\r\n result\r\n };\r\n }\r\n } else {\r\n if (!this.#cache[key]) {\r\n let result = '';\r\n if (isMultible && Array.isArray(value)) {\r\n result = items?.filter(e => value?.includes(e?.[valueField]))?.map(e => e?.[displayField])?.join(', ') ?? value?.join(', ');\r\n }\r\n else {\r\n result = items?.find(e => e?.[valueField] === value)?.[displayField] || value\r\n }\r\n this.#cache[key] = {\r\n result\r\n };\r\n }\r\n }\r\n return this.#cache[key].result;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdSettingService } from '@sd-angular/core/setting';\r\nimport {\r\n SdTableExternalFilter,\r\n SdTableFilterConfiguration,\r\n SdTableOptionFilter,\r\n SdGridMaterialFilterRegister,\r\n SdTableFilterValue,\r\n} from './table-filter.model';\r\nimport { SdTableColumn } from '../../models/table-column.model';\r\nimport { SdMaterialFilterDefDirective } from '../../directives/sd-material-filter-def.directive';\r\nimport { map, startWith } from 'rxjs/operators';\r\n\r\n@Injectable()\r\nexport class SdTableFilterService {\r\n #filterConfiguration = 'GRID-FILTER-CONFIGURATION';\r\n #filterValue = 'GRID-FILTER-VALUE';\r\n #cache: Record<string, SdGridMaterialFilterRegister> = {};\r\n constructor(private settingService: SdSettingService) {}\r\n register = (\r\n filter: SdTableOptionFilter,\r\n args: {\r\n id: string;\r\n columns: SdTableColumn[];\r\n externalFilters: SdTableExternalFilter[];\r\n filterDefs: SdMaterialFilterDefDirective[];\r\n }\r\n ) => {\r\n let cacheSession = false;\r\n \r\n const { id, columns, externalFilters } = args;\r\n const tempKey = hash({\r\n id,\r\n columns: columns?.map(e => e.field).filter(field => !!field) || [],\r\n externalFilters: externalFilters?.map(e => e.field).filter(field => !!field) || [],\r\n });\r\n const key = filter?.key || tempKey;\r\n if (!filter?.key) {\r\n cacheSession = true; // Nếu không có key thì chỉ lưu theo session\r\n }\r\n if (!this.#cache[key]) {\r\n // Setting của filter configuration\r\n const filterConfiguration = this.settingService.create<SdTableFilterConfiguration>(\r\n {\r\n prefix: this.#filterConfiguration,\r\n key,\r\n },\r\n {\r\n default: this.#defaultConfiguration(args),\r\n type: cacheSession ? 'session' : undefined,\r\n }\r\n );\r\n // Lấy giá trị configuration merge với giá trị defaultShowing của args nếu như args có thay đổi\r\n filterConfiguration.set(this.#initConfiguration(args, filterConfiguration.get()));\r\n // Setting của filter value\r\n const filterValue = this.settingService.create<SdTableFilterValue>(\r\n {\r\n prefix: this.#filterValue,\r\n key: !filter?.cacheFilter ? tempKey : key,\r\n },\r\n {\r\n default: this.#defaultValue(args),\r\n type: cacheSession || !filter?.cacheFilter ? 'session' : undefined,\r\n }\r\n );\r\n // Lấy giá trị value merge với giá trị default của args nếu như args có thay đổi\r\n filterValue.set(this.#initValue(args, filterValue.get()));\r\n this.#cache[key] = {\r\n configuration: {\r\n get: (): SdTableFilterConfiguration => {\r\n return filterConfiguration.get();\r\n },\r\n set: (configuration: Partial<SdTableFilterConfiguration>): SdTableFilterConfiguration => {\r\n const { inlineColumn, inlineExternal, inlineFilterDef } = configuration;\r\n filterConfiguration.set({\r\n inlineColumn,\r\n inlineExternal,\r\n inlineFilterDef,\r\n });\r\n return {\r\n inlineColumn,\r\n inlineExternal,\r\n inlineFilterDef,\r\n };\r\n },\r\n remove: () => {\r\n filterConfiguration.set(this.#defaultConfiguration(args));\r\n },\r\n observer: filterConfiguration.observer.pipe(\r\n startWith(filterConfiguration.get()),\r\n // Sử dụng mặc định nếu bị reset\r\n map(configuration => configuration || this.#defaultConfiguration(args))\r\n ),\r\n },\r\n value: {\r\n get: (): SdTableFilterValue => {\r\n return filterValue.get();\r\n },\r\n set: (value: Partial<SdTableFilterValue>): SdTableFilterValue => {\r\n const keys = Object.keys(value || {});\r\n const current = filterValue.get();\r\n const { columnOperator, columnFilter, externalFilter, filterDef, notReload } = current;\r\n const updatedFilter = {\r\n // Filter column\r\n columnOperator: keys.includes('columnOperator') ? value?.columnOperator || {} : columnOperator,\r\n columnFilter: keys.includes('columnFilter') ? value?.columnFilter || {} : columnFilter,\r\n // Filter external\r\n externalFilter: keys.includes('externalFilter') ? value?.externalFilter || {} : externalFilter,\r\n // Filter def\r\n filterDef: keys.includes('filterDef') ? value?.filterDef || {} : filterDef,\r\n // Force\r\n notReload: !!notReload,\r\n };\r\n filterValue.set(updatedFilter);\r\n return updatedFilter;\r\n },\r\n remove: () => {\r\n filterValue.set(this.#defaultValue(args));\r\n },\r\n observer: filterValue.observer.pipe(\r\n startWith(filterValue.get()),\r\n // Sử dụng mặc định nếu bị reset\r\n map(value => value || this.#defaultValue(args))\r\n ),\r\n },\r\n };\r\n }\r\n return this.#cache[key];\r\n };\r\n\r\n #defaultConfiguration = (args: {\r\n columns: SdTableColumn[];\r\n externalFilters: SdTableExternalFilter[];\r\n filterDefs: SdMaterialFilterDefDirective[];\r\n }): SdTableFilterConfiguration => {\r\n const { columns, externalFilters, filterDefs } = args;\r\n const inlineColumn: Record<string, boolean> = {};\r\n const inlineExternal: Record<string, boolean> = {};\r\n const inlineFilterDef: Record<string, boolean> = {};\r\n // Filter column\r\n for (const item of columns || []) {\r\n inlineColumn[item.field] = item?.filter?.defaultShowing;\r\n }\r\n // Filter external\r\n for (const item of externalFilters || []) {\r\n inlineExternal[item.field] = item?.defaultShowing;\r\n }\r\n // Filter def\r\n for (const item of filterDefs || []) {\r\n inlineFilterDef[item.sdMaterialFilterDef] = item?.defaultShowing;\r\n }\r\n return {\r\n // Filter column\r\n inlineColumn,\r\n // Filter external\r\n inlineExternal,\r\n // Filter def\r\n inlineFilterDef,\r\n };\r\n };\r\n\r\n #defaultValue = (args: {\r\n columns: SdTableColumn[];\r\n externalFilters: SdTableExternalFilter[];\r\n filterDefs: SdMaterialFilterDefDirective[];\r\n }): SdTableFilterValue => {\r\n const columnFilter: Record<string, any> = {};\r\n const externalFilter: Record<string, any> = {};\r\n const filterDef: Record<string, any> = {};\r\n const { columns, externalFilters, filterDefs } = args;\r\n // Filter column\r\n for (const item of columns || []) {\r\n columnFilter[item.field] = item?.filter?.default;\r\n }\r\n // Filter external\r\n for (const item of externalFilters || []) {\r\n externalFilter[item.field] = item?.default;\r\n }\r\n // Filter def\r\n for (const item of filterDefs || []) {\r\n filterDef[item.sdMaterialFilterDef] = undefined;\r\n }\r\n return {\r\n // Filter column\r\n columnFilter,\r\n // Filter external\r\n externalFilter,\r\n // Filter def\r\n filterDef,\r\n };\r\n };\r\n\r\n #initConfiguration = (\r\n args: {\r\n columns: SdTableColumn[];\r\n externalFilters: SdTableExternalFilter[];\r\n filterDefs: SdMaterialFilterDefDirective[];\r\n },\r\n configuration: SdTableFilterConfiguration\r\n ): SdTableFilterConfiguration => {\r\n const { columns, externalFilters, filterDefs } = args;\r\n const inlineColumn: Record<string, boolean> = {};\r\n const inlineExternal: Record<string, boolean> = {};\r\n const inlineFilterDef: Record<string, boolean> = {};\r\n // Filter column\r\n for (const item of columns || []) {\r\n inlineColumn[item.field] = configuration?.inlineColumn?.[item.field] ?? item?.filter?.defaultShowing;\r\n }\r\n // Filter external\r\n for (const item of externalFilters || []) {\r\n inlineExternal[item.field] = configuration?.inlineExternal?.[item.field] ?? item?.defaultShowing;\r\n }\r\n // Filter def\r\n for (const item of filterDefs || []) {\r\n inlineFilterDef[item.sdMaterialFilterDef] = configuration?.inlineFilterDef?.[item.sdMaterialFilterDef] ?? item?.defaultShowing;\r\n }\r\n return {\r\n // Filter column\r\n inlineColumn,\r\n // Filter external\r\n inlineExternal,\r\n // Filter def\r\n inlineFilterDef,\r\n };\r\n };\r\n\r\n #initValue = (\r\n args: {\r\n columns: SdTableColumn[];\r\n externalFilters: SdTableExternalFilter[];\r\n filterDefs: SdMaterialFilterDefDirective[];\r\n },\r\n value: SdTableFilterValue\r\n ): SdTableFilterValue => {\r\n const columnFilter: Record<string, any> = {};\r\n const externalFilter: Record<string, any> = {};\r\n const filterDef: Record<string, any> = {};\r\n const { columns, externalFilters, filterDefs } = args;\r\n // Filter column\r\n for (const item of columns || []) {\r\n columnFilter[item.field] = value?.columnFilter?.[item.field] ?? item?.filter?.default;\r\n }\r\n // Filter external\r\n for (const item of externalFilters || []) {\r\n if (item.type === 'daterange') {\r\n externalFilter[item.field] = {\r\n from: value?.externalFilter?.[item.field]?.from ?? item.default?.from,\r\n to: value?.externalFilter?.[item.field]?.to ?? item.default?.to,\r\n };\r\n } else {\r\n externalFilter[item.field] = value?.externalFilter?.[item.field] ?? item?.default;\r\n }\r\n }\r\n // Filter def\r\n for (const item of filterDefs || []) {\r\n filterDef[item.sdMaterialFilterDef] = value?.filterDef?.[item.sdMaterialFilterDef] ?? undefined;\r\n }\r\n return {\r\n // Filter column\r\n columnFilter,\r\n // Filter external\r\n externalFilter,\r\n // Filter def\r\n filterDef,\r\n };\r\n };\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n ViewChild,\r\n AfterViewInit,\r\n Optional,\r\n Inject,\r\n ChangeDetectorRef,\r\n ContentChildren,\r\n QueryList,\r\n OnInit,\r\n OnDestroy,\r\n ContentChild,\r\n ChangeDetectionStrategy,\r\n} from '@angular/core';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { animate, state, style, transition, trigger } from '@angular/animations';\r\nimport * as uuid from 'uuid';\r\nimport { SdGridMaterialFilterRegister, SdTableFilterRequest } from './services/table-filter/table-filter.model';\r\nimport { SdTableOption } from './models/table-option.model';\r\nimport { TABLE_CONFIG, DEFAULT_TABLE_CONFIG, ISdTableConfiguration } from './models/table-configuration.model';\r\nimport { Subscription, isObservable, Observable, Subject, combineLatest } from 'rxjs';\r\nimport { SdNotifyService } from '@sd-angular/core/notify';\r\nimport { SdFilterOperator, SdTableColumn } from './models/table-column.model';\r\nimport { SdMaterialCellDefDirective } from './directives/sd-material-cell-def.directive';\r\nimport { debounceTime, filter, map, startWith, switchMap } from 'rxjs/operators';\r\nimport { SdGridFilter } from './components/grid-filter/grid-filter.component';\r\nimport { SdMaterialFilterDefDirective } from './directives/sd-material-filter-def.directive';\r\nimport { SdMaterialSubInformationDefDirective } from './directives/sd-material-sub-information-def.directive';\r\nimport { SdMaterialFooterDefDirective } from './directives/sd-material-footer-def.directive';\r\nimport { SdMaterialEmptyDataDefDirective } from './directives/sd-material-empty-data-def.directive';\r\nimport { SdExportColumn, SdExportFile, SdExportService } from '@sd-angular/core/export';\r\nimport { SdGridConfiguration } from './models/table-option-config.model';\r\nimport { SdTableConfigurationService } from './services/table-configuration.service';\r\nimport { SdTableOptionExportColumn } from './models/table-option-export.model';\r\nimport { SdQuickAction } from '@sd-angular/core/quick-action';\r\nimport { MapToSdTableItem, SdTableItem } from './models/table-item.model';\r\nimport { SdColumnValuesPipe } from './pipes/column-values.pipe';\r\nimport { SdScrollDirective } from '@sd-angular/core/common';\r\nimport { SdTableFilterService } from './services/table-filter/table-filter.service';\r\n\r\n@Component({\r\n selector: 'sd-table',\r\n templateUrl: './table.component.html',\r\n styleUrls: ['./table.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n animations: [\r\n trigger('detailExpand', [\r\n state('collapsed', style({ height: '0', minHeight: '0', visibility: 'hidden' })),\r\n state('expanded', style({ height: '*', visibility: 'visible' })),\r\n transition('expanded <=> collapsed', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),\r\n ]),\r\n ],\r\n})\r\nexport class SdTable<T = any> implements OnInit, AfterViewInit, OnDestroy {\r\n #gridId = uuid.v4();\r\n @ViewChild(SdScrollDirective) sdScroll: SdScrollDirective;\r\n filterRegister: SdGridMaterialFilterRegister;\r\n key = uuid.v4();\r\n gridConfigurationObserver: Observable<SdGridConfiguration>;\r\n @ViewChild(SdQuickAction) quickAction: SdQuickAction;\r\n\r\n gridFilter: SdGridFilter;\r\n @ViewChild(SdGridFilter) set _gridFilter(gridFilter: SdGridFilter) {\r\n if (gridFilter && this.gridFilter !== gridFilter) {\r\n this.gridFilter = gridFilter;\r\n // this.#subscription.add(gridFilter.filterChange.pipe(\r\n // filter(reload => reload),\r\n // debounceTime(500),\r\n // map(() => {\r\n // this.#paginator.pageIndex = 0;\r\n // this.#reload.next({\r\n // force: false,\r\n // source: 'FILTER'\r\n // });\r\n // }),\r\n // ).subscribe());\r\n }\r\n }\r\n\r\n @Input() set option(option: SdTableOption) {\r\n if (option) {\r\n option = this.#initConfiguration(option);\r\n this.gridOption = option;\r\n this.#loadCompleted = false;\r\n const configuration = this.gridConfigurationService.init(this.key, this.gridOption);\r\n this.gridConfigurationObserver = configuration.observer;\r\n configuration.load();\r\n this.#optionChanges.next(this.gridOption);\r\n }\r\n }\r\n #optionChanges = new Subject<SdTableOption>();\r\n\r\n gridOption: SdTableOption<T>;\r\n #localItems: SdTableItem<T>[] = [];\r\n items: SdTableItem<T>[] = [];\r\n selectedItems: T[] = [];\r\n total: number;\r\n\r\n // Loading\r\n isLoading = false;\r\n\r\n // Paginate\r\n isHiddenPaginator = false;\r\n #paginator: MatPaginator;\r\n @ViewChild(MatPaginator) set paginator(paginator: MatPaginator) {\r\n if (paginator && this.#paginator !== paginator) {\r\n this.#paginator = paginator;\r\n this.#subscription.add(\r\n paginator.page\r\n .pipe(\r\n map(() => {\r\n this.#reload.next({\r\n force: false,\r\n });\r\n })\r\n )\r\n .subscribe()\r\n );\r\n }\r\n }\r\n\r\n // Sorting\r\n #sort: MatSort;\r\n @ViewChild(MatSort) set sort(sort: MatSort) {\r\n if (sort && this.#sort !== sort) {\r\n this.#sort = sort;\r\n this.#subscription.add(\r\n sort.sortChange\r\n .pipe(\r\n map(() => {\r\n this.#reload.next({\r\n force: false,\r\n });\r\n })\r\n )\r\n .subscribe()\r\n );\r\n }\r\n }\r\n\r\n // Sub Information\r\n @ContentChild(SdMaterialSubInformationDefDirective)\r\n sdSubInformation: SdMaterialSubInformationDefDirective;\r\n\r\n // Empty Data\r\n @ContentChild(SdMaterialEmptyDataDefDirective)\r\n sdEmptyData: SdMaterialEmptyDataDefDirective;\r\n\r\n // Cell Def\r\n @ContentChildren(SdMaterialCellDefDirective) sdCellDefs = new QueryList<SdMaterialCellDefDirective>();\r\n cellDef: {\r\n [column: string]: SdMaterialCellDefDirective;\r\n } = {};\r\n\r\n // Footer Def\r\n @ContentChildren(SdMaterialFooterDefDirective) sdFooterDefs = new QueryList<SdMaterialFooterDefDirective>();\r\n footerDef: {\r\n [column: string]: SdMaterialFooterDefDirective;\r\n } = {};\r\n hasFooter = false;\r\n\r\n // Filter Def\r\n @ContentChildren(SdMaterialFilterDefDirective) sdFilterDefs = new QueryList<SdMaterialFilterDefDirective>();\r\n filterDefs: SdMaterialFilterDefDirective[] = [];\r\n\r\n // Filter\r\n columnOperator: Record<string, SdFilterOperator> = {};\r\n columnFilter: Record<string, any> = {};\r\n // Subcription\r\n #subscription = new Subscription();\r\n #reload = new Subject<{\r\n force: boolean;\r\n }>();\r\n isExporting = false;\r\n isSelectAll = false;\r\n exportTitle = 'Export';\r\n #loadCompleted = false;\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n @Inject(TABLE_CONFIG)\r\n @Optional()\r\n public configuration: ISdTableConfiguration,\r\n private gridConfigurationService: SdTableConfigurationService,\r\n private exportService: SdExportService,\r\n private notifyService: SdNotifyService,\r\n private columnValuesPipe: SdColumnValuesPipe,\r\n private gridFilterService: SdTableFilterService\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.#initCellDef();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.#subscription.add(\r\n this.#reload\r\n .pipe(\r\n debounceTime(200),\r\n switchMap(async data => {\r\n const filterInfo = this.#getFilter();\r\n const result = await this.#load(filterInfo, !this.#loadCompleted || data.force);\r\n this.#loadCompleted = true;\r\n return result;\r\n })\r\n )\r\n .subscribe(this.#render)\r\n );\r\n this.#subscription.add(this.sdCellDefs.changes.pipe(startWith([])).subscribe(this.#initCellDef));\r\n this.#subscription.add(this.sdFooterDefs.changes.pipe(startWith([])).subscribe(this.#initFooterDef));\r\n this.#subscription.add(this.sdFilterDefs.changes.pipe(startWith([])).subscribe(this.#initFilterDef));\r\n this.#subscription.add(\r\n combineLatest([\r\n this.#optionChanges.pipe(startWith(this.gridOption)),\r\n this.sdFilterDefs.changes.pipe(startWith(this.filterDefs)),\r\n ]).subscribe(() => {\r\n this.#loadFilterRegister();\r\n })\r\n );\r\n this.#subscription.add(\r\n this.#optionChanges.subscribe(() => {\r\n if (this.filterRegister) {\r\n this.#reload.next({\r\n force: true,\r\n });\r\n }\r\n })\r\n );\r\n this.ref.detectChanges();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#subscription.unsubscribe();\r\n }\r\n\r\n #initCellDef = () => {\r\n this.cellDef = {};\r\n for (const cellDef of this.sdCellDefs) {\r\n if (cellDef.sdMaterialCellDef) {\r\n this.cellDef[cellDef.sdMaterialCellDef] = cellDef;\r\n }\r\n }\r\n };\r\n\r\n #initFilterDef = () => {\r\n this.filterDefs = [];\r\n for (const filterDef of this.sdFilterDefs) {\r\n this.filterDefs.push(filterDef);\r\n }\r\n };\r\n\r\n #initFooterDef = () => {\r\n this.footerDef = {};\r\n this.hasFooter = false;\r\n for (const footerDef of this.sdFooterDefs) {\r\n if (footerDef.sdMaterialFooterDef) {\r\n this.hasFooter = true;\r\n this.footerDef[footerDef.sdMaterialFooterDef] = footerDef;\r\n }\r\n }\r\n };\r\n\r\n #filterExportInfo = (pageNumber: number, pageSize: number): SdTableFilterRequest => {\r\n const { columnOperator, columnFilter, externalFilter, filterDef } = this.filterRegister.value.get();\r\n return {\r\n columnOperator: columnOperator || {},\r\n rawColumnFilter: columnFilter || {},\r\n rawExternalFilter: externalFilter || {},\r\n rawFilterDef: filterDef || {},\r\n orderBy: this.#sort?.active || '',\r\n orderDirection: this.#sort?.direction || '',\r\n pageNumber,\r\n pageSize,\r\n isExported: true,\r\n };\r\n };\r\n\r\n #initConfiguration = (option: SdTableOption) => {\r\n // Init pagination\r\n option.paginate = {\r\n hidden: option?.paginate?.hidden,\r\n pageSize: option?.paginate?.pageSize ?? this.configuration?.paginate?.pageSize ?? DEFAULT_TABLE_CONFIG.paginate?.pageSize,\r\n pages: option?.paginate?.pages ?? this.configuration?.paginate?.pages ?? DEFAULT_TABLE_CONFIG.paginate?.pages,\r\n showFirstLastButtons: option?.paginate?.showFirstLastButtons ?? false,\r\n };\r\n for (const column of option.columns || []) {\r\n if (column.filter?.operator?.enable && !column.filter?.operator?.list?.length) {\r\n if (column.type === 'string') {\r\n column.filter.operator.list = this.configuration?.filter?.operator?.defaultListString || [];\r\n }\r\n if (column.type === 'number') {\r\n column.filter.operator.list = this.configuration?.filter?.operator?.defaultListNumber || [];\r\n }\r\n if (column.type === 'values') {\r\n column.filter.operator.list = this.configuration?.filter?.operator?.defaultListValues || [];\r\n }\r\n if (column.type === 'date' || column.type === 'datetime') {\r\n column.filter.operator.list = this.configuration?.filter?.operator?.defaultListDate || [];\r\n }\r\n }\r\n }\r\n return option;\r\n };\r\n\r\n #loadFilterRegister = () => {\r\n // Init filter\r\n if (this.gridOption) {\r\n if (!this.filterRegister) {\r\n this.filterRegister = this.gridFilterService.register(this.gridOption?.filter, {\r\n id: this.#gridId,\r\n columns: this.gridOption?.columns,\r\n externalFilters: this.gridOption?.filter?.externalFilters,\r\n filterDefs: this.filterDefs,\r\n });\r\n this.#subscription.add(\r\n this.filterRegister.value.observer\r\n .pipe(\r\n debounceTime(500),\r\n map(filterValue => {\r\n const { columnOperator, columnFilter, notReload } = filterValue;\r\n this.columnOperator = columnOperator;\r\n this.columnFilter = columnFilter;\r\n if (!notReload) {\r\n this.#paginator.pageIndex = 0;\r\n this.#reload.next({\r\n force: false,\r\n });\r\n }\r\n })\r\n )\r\n .subscribe()\r\n );\r\n }\r\n }\r\n };\r\n\r\n #filterLocal = (localItems: SdTableItem<T>[], filterInfo: SdTableFilterRequest) => {\r\n const { columns } = this.gridOption;\r\n const { rawColumnFilter, orderBy, orderDirection, pageSize, pageNumber } = filterInfo;\r\n const items = localItems.filter(tableItem => {\r\n const item = tableItem.current;\r\n for (const column of columns) {\r\n const { field, type } = column;\r\n const filterValue: string = (rawColumnFilter[field] || '').toString().trim().toLowerCase();\r\n const columnValue: string = (item[field] || '').toString().trim().toLowerCase();\r\n if (filterValue) {\r\n if (!columnValue && type !== 'datetime' && type !== 'date' && type !== 'time') {\r\n return false;\r\n }\r\n if (type === 'string') {\r\n if (columnValue.indexOf(filterValue) === -1) {\r\n return false;\r\n }\r\n } else if (type === 'values') {\r\n if (columnValue !== filterValue) {\r\n return false;\r\n }\r\n } else if (type === 'number') {\r\n const fValue = +filterValue.replace('>=', '').replace('<=', '').replace('>', '').replace('<', '');\r\n const cValue = +columnValue;\r\n if (fValue || fValue === 0) {\r\n if (!cValue && cValue !== 0) {\r\n return false;\r\n }\r\n if (filterValue.indexOf('>=') > -1 && cValue < fValue) {\r\n return false;\r\n } else if (filterValue.indexOf('<=') > -1 && cValue > fValue) {\r\n return false;\r\n } else if (filterValue.indexOf('<') > -1 && cValue >= fValue) {\r\n return false;\r\n } else if (filterValue.indexOf('>') > -1 && cValue <= fValue) {\r\n return false;\r\n } else if (cValue !== fValue) {\r\n return false;\r\n }\r\n }\r\n } else if (type === 'bool') {\r\n if (filterValue === '1' && columnValue !== '1' && columnValue !== 'true') {\r\n return false;\r\n } else if (filterValue === '0' && columnValue !== '0' && columnValue !== 'false') {\r\n return false;\r\n }\r\n } else if (type === 'datetime' || type === 'date' || type === 'time') {\r\n const from = rawColumnFilter[field]?.from ?? rawColumnFilter[field];\r\n const to = rawColumnFilter[field]?.to ?? rawColumnFilter[field];\r\n const fromDate = Date.begin(from);\r\n const toDate = Date.end(to);\r\n if (fromDate || toDate) {\r\n if (!columnValue) {\r\n return false;\r\n }\r\n\r\n const columnTime = new Date(columnValue).getTime();\r\n const fromDateTime = fromDate?.getTime() || null;\r\n const toDateTime = toDate?.getTime() || null;\r\n\r\n if (fromDateTime && fromDateTime > columnTime) {\r\n return false;\r\n }\r\n if (toDateTime && columnTime > toDateTime) {\r\n return false;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return true;\r\n });\r\n // Sort\r\n if (orderBy && orderDirection) {\r\n const column = columns.find(e => e.field === orderBy);\r\n if (column) {\r\n const { type, field } = column;\r\n items.sort((tableItemCurrent, tableItemNext) => {\r\n const current = tableItemCurrent.current;\r\n const next = tableItemNext.current;\r\n if (type === 'number') {\r\n return (current[field] || 0) - (next[field] || 0);\r\n }\r\n if (type === 'date' || type === 'datetime' || type === 'time') {\r\n const d1 = new Date(current[field] || '').getTime();\r\n const d2 = new Date(current[field] || '').getTime();\r\n return d1 - d2;\r\n }\r\n const s1 = (current[field] || '').toString();\r\n const s2 = (next[field] || '').toString();\r\n if (s1 > s2) {\r\n return 1;\r\n }\r\n if (s1 < s2) {\r\n return -1;\r\n }\r\n return 0;\r\n });\r\n if (orderDirection === 'desc') {\r\n items.reverse();\r\n }\r\n }\r\n }\r\n return {\r\n items: items.filter((item, index) => {\r\n return index >= pageNumber * pageSize && index < (pageNumber + 1) * pageSize;\r\n }),\r\n total: items.length,\r\n };\r\n };\r\n\r\n #getFilter = (): SdTableFilterRequest => {\r\n const { columnOperator, columnFilter, externalFilter, filterDef } = this.filterRegister.value.get();\r\n return {\r\n columnOperator: columnOperator || {},\r\n rawColumnFilter: columnFilter || {},\r\n rawExternalFilter: externalFilter || {},\r\n rawFilterDef: filterDef || {},\r\n orderBy: this.#sort?.active || '',\r\n orderDirection: this.#sort?.direction || '',\r\n pageNumber: this.#paginator?.pageIndex || 0,\r\n pageSize: this.#paginator?.pageSize || this.gridOption?.paginate?.pageSize || 50,\r\n };\r\n };\r\n\r\n #load = async (filterReq: SdTableFilterRequest, force: boolean = true) => {\r\n this.isLoading = true;\r\n if (this.gridOption.type === 'server') {\r\n const { items } = this.gridOption;\r\n const data = await items(filterReq).catch(err => {\r\n this.notifyService.notify.warning('Có lỗi xảy ra');\r\n console.error(err);\r\n return {\r\n items: [] as T[],\r\n total: 0,\r\n };\r\n });\r\n this.isLoading = false;\r\n return {\r\n items: data?.items.map(MapToSdTableItem) || [],\r\n total: data?.total || 0,\r\n };\r\n }\r\n if (force) {\r\n const { items } = this.gridOption;\r\n const results = items();\r\n let data: T[] = [];\r\n if (results instanceof Promise) {\r\n data = await results.catch(err => {\r\n this.notifyService.notify.warning('Có lỗi xảy ra');\r\n console.error(err);\r\n return [];\r\n });\r\n } else {\r\n data = results;\r\n }\r\n if (!Array.isArray(data)) {\r\n this.notifyService.notify.warning('Dữ liệu không phải là một mảng');\r\n data = [];\r\n }\r\n this.#localItems = data.map(MapToSdTableItem);\r\n this.isLoading = false;\r\n }\r\n return this.#filterLocal(this.#localItems, filterReq);\r\n };\r\n\r\n #render = async (args: { items: SdTableItem<T>[]; total: number }) => {\r\n this.sdScroll?.scrollTop();\r\n this.items = args?.items || [];\r\n this.total = args?.total || 0;\r\n await this.gridOption?.reload?.onReload?.(this.items);\r\n this.isSelectAll = this.items.every(e => e.meta.selector.isSelected);\r\n this.#updateSelectedItems();\r\n };\r\n\r\n reload = async (force: boolean = true) => {\r\n this.gridFilter?.updateFilter?.();\r\n const data = await this.#load(this.#getFilter(), force);\r\n this.#render(data);\r\n };\r\n\r\n #exportedItems = async (pageNumber: number = 0, pageSize: number = 10000) => {\r\n if (this.gridOption.export?.items) {\r\n // const exportedItems = this.gridOption.export?.items(this.#filterExportInfo(pageNumber, pageSize));\r\n let result = this.gridOption.export?.items(this.#filterExportInfo(pageNumber, pageSize));\r\n if (Array.isArray(result)) {\r\n return result;\r\n }\r\n if (isObservable<any[]>(result)) {\r\n result = result.toPromise();\r\n }\r\n if (isObservable<{ items: any[]; total: number }>(result)) {\r\n result = result.toPromise();\r\n }\r\n return await result;\r\n } else {\r\n const filterInfo = this.#filterExportInfo(pageNumber, pageSize);\r\n if (this.gridOption.type === 'server') {\r\n let result = this.gridOption.items(filterInfo);\r\n return await result;\r\n } else {\r\n let exportedItems: any[] = [];\r\n if (typeof this.gridOption.items === 'function') {\r\n const results = this.gridOption.items();\r\n if (results instanceof Promise) {\r\n exportedItems = await results;\r\n } else {\r\n exportedItems = results;\r\n }\r\n } else {\r\n exportedItems = this.gridOption.items;\r\n }\r\n return this.#filterLocal(exportedItems, filterInfo);\r\n }\r\n }\r\n };\r\n\r\n #allColumns = (): SdTableColumn[] => {\r\n const columns: SdTableColumn[] = [];\r\n this.gridOption.columns\r\n .filter(e => !e.export?.disabled)\r\n .forEach(column => {\r\n if (column.type === 'children') {\r\n column.children\r\n ?.filter(e => !e.export?.disabled)\r\n .forEach(childColumn => {\r\n columns.push(childColumn);\r\n });\r\n return;\r\n }\r\n columns.push(column);\r\n });\r\n return columns;\r\n };\r\n\r\n #allExportedColumns = (): SdTableOptionExportColumn[] => {\r\n return this.gridOption.export?.columns?.filter(e => !e.export?.disabled) || [];\r\n };\r\n\r\n #onExport = async (isCSV?: boolean ) => {\r\n try {\r\n let columns = this.#getExportColumns();\r\n const pageSize = this.gridOption?.export?.maxItemsPerRequest || 1000;\r\n const batch = this.gridOption?.export?.batch || 1;\r\n let total = this.total;\r\n let pageNumber = 0;\r\n let exportItems = [];\r\n this.isExporting = true;\r\n const items: any[] = [];\r\n let promises: Promise<\r\n | any[]\r\n | {\r\n items: any[];\r\n total: number;\r\n }\r\n >[] = [];\r\n const handleData = async () => {\r\n const results = await Promise.all(promises);\r\n promises = [];\r\n exportItems = [];\r\n for (const result of results) {\r\n if ('items' in result) {\r\n exportItems = [...exportItems, ...result.items];\r\n total = result.total;\r\n } else {\r\n exportItems = [...exportItems, ...result];\r\n }\r\n }\r\n if (this.gridOption.export?.mapping) {\r\n const results = this.gridOption.export.mapping(exportItems);\r\n if (results instanceof Promise) {\r\n exportItems = await results;\r\n } else {\r\n exportItems = results;\r\n }\r\n }\r\n const totalPage = total / pageSize;\r\n const percent = Math.round(((pageNumber - 1) * 100.0) / totalPage);\r\n this.exportTitle = `Exporting...${percent}%`;\r\n const allColumns = this.#allColumns();\r\n const allExportedColumns = this.#allExportedColumns();\r\n for (const item of exportItems) {\r\n const obj: any = {};\r\n const handle = async (exportColumn: SdExportColumn) => {\r\n obj[exportColumn.field] = item[exportColumn.field];\r\n const column = allColumns.find(e => e.field === exportColumn.field);\r\n const exportedColumn = allExportedColumns.find(e => e.field === exportColumn.field);\r\n if (exportedColumn?.transform) {\r\n obj[exportedColumn.field] = exportedColumn.transform(item[exportedColumn.field], item);\r\n return;\r\n }\r\n if (!column) {\r\n return;\r\n }\r\n if (column.type === 'children') {\r\n column?.children.forEach(childColumn => handle(childColumn));\r\n return;\r\n }\r\n if (!columns.some(e => e.field === column.field)) {\r\n return;\r\n }\r\n if (column.transform) {\r\n const transform = column.transform(item[column.field], item, {\r\n isExport: true,\r\n });\r\n if (transform instanceof Promise) {\r\n obj[column.field] = await transform;\r\n } else {\r\n obj[column.field] = transform;\r\n }\r\n obj[column.field] = obj[column.field] ?? '';\r\n } else if (item[column.field] === undefined || item[column.field] === null || item[column.field] === '') {\r\n obj[column.field] = '';\r\n } else if (column.type === 'string' || column.type === 'number') {\r\n // Nếu cell là string hoặc number thì gán bằng chính nó\r\n obj[column.field] = item[column.field];\r\n } else if (column.type === 'bool') {\r\n // Nếu là bool thì gán bằng giá trị trueValue và falseValue (nếu có), mặc định là TRUE/FALSE\r\n if (item[column.field]) {\r\n obj[column.field] = column.option?.displayOnTrue || 'True';\r\n } else if (obj[column.field] !== undefined && obj[column.field] !== null) {\r\n obj[column.field] = column.option?.displayOnFalse || 'False';\r\n }\r\n } else if (column.type === 'date') {\r\n let date = item[column.field];\r\n const { transformDate } = column;\r\n if (transformDate) {\r\n date = transformDate(date, item);\r\n }\r\n // Nếu là date thì convert theo đúng format\r\n obj[column.field] = Date.toFormat(date, 'dd/MM/yyyy');\r\n } else if (column.type === 'datetime') {\r\n let date = item[column.field];\r\n const { transformDate } = column;\r\n if (transformDate) {\r\n date = transformDate(date, item);\r\n }\r\n // Nếu là datetime thì convert theo đúng format\r\n obj[column.field] = Date.toFormat(date, 'dd/MM/yyyy HH:mm');\r\n } else if (column.type === 'time') {\r\n let date = item[column.field];\r\n const { transformDate } = column;\r\n if (transformDate) {\r\n date = transformDate(date, item);\r\n }\r\n // Nếu là time thì convert theo đúng format\r\n obj[column.field] = Date.toFormat(date, 'HH:mm');\r\n } else if (column.type === 'values') {\r\n // Nếu là values thì lấy giá trị của value được chọn\r\n obj[column.field] = await this.columnValuesPipe.transform(item[column.field], column);\r\n } else {\r\n obj[column.field] = item[column.field];\r\n }\r\n };\r\n // this.gridOption.columns.forEach(handle);\r\n for (const exportColumn of columns) {\r\n await handle(exportColumn);\r\n }\r\n items.push(obj);\r\n }\r\n };\r\n while (pageNumber * pageSize < total) {\r\n promises.push(this.#exportedItems(pageNumber, pageSize));\r\n pageNumber++;\r\n if (promises.length < batch) {\r\n continue;\r\n }\r\n await handleData();\r\n }\r\n if (promises.length > 0) {\r\n await handleData();\r\n }\r\n if (isCSV) {\r\n await this.exportService.exportCSV({\r\n columns,\r\n items,\r\n fileName: this.gridOption?.export?.fileName,\r\n });\r\n return;\r\n }\r\n const sheets: {\r\n name: string;\r\n items: any[];\r\n fields: string[];\r\n }[] = [];\r\n if (Array.isArray(this.gridOption?.export?.sheets)) {\r\n for (const sheet of this.gridOption.export.sheets) {\r\n if (sheet.name && sheet.items && sheet.fields) {\r\n if (Array.isArray(sheet.items)) {\r\n sheets.push({\r\n name: sheet.name,\r\n items: sheet.items,\r\n fields: sheet.fields,\r\n });\r\n } else {\r\n sheets.push({\r\n name: sheet.name,\r\n items: await sheet.items(),\r\n fields: sheet.fields,\r\n });\r\n }\r\n }\r\n }\r\n }\r\n await this.exportService.export({\r\n columns,\r\n items,\r\n fileName: this.gridOption?.export?.fileName,\r\n sheets,\r\n });\r\n return;\r\n } finally {\r\n this.isExporting = false;\r\n this.exportTitle = `Export`;\r\n this.ref.detectChanges();\r\n }\r\n };\r\n\r\n #getExportColumns = () => {\r\n const columns = [\r\n ...this.gridOption.columns.filter(e => !e.export?.disabled),\r\n ...(this.gridOption.export?.columns?.filter(e => !e.export?.disabled) || []),\r\n ];\r\n return columns;\r\n };\r\n\r\n exportExcel = () => {\r\n this.#onExport();\r\n };\r\n\r\n exportCSV = () => {\r\n this.#onExport(true);\r\n };\r\n\r\n onFilterChange = () => {\r\n this.gridFilter?.updateFilter?.();\r\n if (this.gridOption?.filter?.inlineColumn) {\r\n this.filterRegister.value.set({\r\n columnOperator: this.columnOperator,\r\n columnFilter: this.columnFilter,\r\n });\r\n } else {\r\n this.filterRegister.value.set({});\r\n }\r\n };\r\n\r\n onExpand = async (rowData: SdTableItem<T>) => {\r\n if (this.gridOption.expand?.always) {\r\n return;\r\n }\r\n if (rowData.meta.expand.isExpanding) {\r\n return;\r\n }\r\n if (rowData.meta.expand.isExpanded) {\r\n rowData.meta.expand.isExpanded = false;\r\n return;\r\n }\r\n const data = this.gridOption?.expand?.onExpand?.(rowData.current);\r\n if (!this.gridOption.expand?.multiple) {\r\n this.items.forEach(item => (item.meta.expand.isExpanding = item.meta.expand.isExpanded = false));\r\n }\r\n if (data instanceof Promise) {\r\n rowData.meta.expand.isExpanding = true;\r\n data\r\n .then(res => {\r\n rowData.meta.expand.data = res;\r\n rowData.meta.expand.isExpanded = true;\r\n })\r\n .finally(() => (rowData.meta.expand.isExpanding = false));\r\n } else {\r\n rowData.meta.expand.data = data;\r\n rowData.meta.expand.isExpanded = true;\r\n }\r\n };\r\n\r\n onSelect = (rowData: SdTableItem<T>) => {\r\n if (rowData.meta.group?.items?.length) {\r\n rowData.meta.group.items.forEach(e => (e.meta.selector.isSelected = rowData.meta.selector.isSelected));\r\n this.gridOption.selector?.onSelect?.(\r\n rowData.current,\r\n this.items.filter(e => e.meta.selector.isSelected).map(e => e.current)\r\n );\r\n this.isSelectAll = this.items.every(e => e.meta.selector.isSelected);\r\n this.#updateSelectedItems();\r\n } else {\r\n if (this.gridOption.selector?.single) {\r\n this.items.filter(e => e !== rowData).forEach(e => (e.meta.selector.isSelected = false));\r\n this.#updateSelectedItems();\r\n return;\r\n }\r\n this.gridOption.selector?.onSelect?.(\r\n rowData.current,\r\n this.items.filter(e => e.meta.selector.isSelected).map(e => e.current)\r\n );\r\n this.isSelectAll = this.items.every(e => e.meta.selector.isSelected);\r\n this.#updateSelectedItems();\r\n }\r\n };\r\n\r\n onSelectAll = () => {\r\n this.items?.forEach(e => {\r\n if (e.meta.selector.selectable && (!this.gridOption?.selector?.actions?.length || e.meta.selector.actions?.length)) {\r\n e.meta.selector.isSelected = this.isSelectAll;\r\n }\r\n });\r\n this.gridOption.selector?.onSelectAll?.(this.items.filter(e => e.meta.selector.isSelected).map(e => e.current));\r\n this.#updateSelectedItems();\r\n };\r\n\r\n onClearSelection = (items?: SdTableItem<T>[]) => {\r\n items = items || this.items;\r\n this.isSelectAll = false;\r\n items?.forEach(e => (e.meta.selector.isSelected = false));\r\n this.#updateSelectedItems();\r\n };\r\n\r\n #updateSelectedItems = () => {\r\n this.selectedItems = this.items.filter(item => item.meta.selector.isSelected).map(item => item.current);\r\n this.ref.detectChanges();\r\n };\r\n\r\n clearFilter = () => {\r\n this.filterRegister.value.remove();\r\n };\r\n\r\n setFilter = (args: { columnFilter?: Record<string, any>; externalFilter?: Record<string, any>; filterDef?: Record<string, any> }) => {\r\n const { columnFilter, externalFilter, filterDef } = args || {};\r\n if (this.gridOption?.filter?.inlineColumn && columnFilter) {\r\n this.columnFilter = columnFilter;\r\n }\r\n this.filterRegister.value.set({\r\n columnFilter,\r\n externalFilter,\r\n filterDef,\r\n });\r\n };\r\n\r\n get gridItems(): T[] {\r\n return this.items.map(item => item.current);\r\n }\r\n\r\n detectChanges = () => this.ref.detectChanges();\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdTableCommand, SdTableCommandNormal } from '../models/table-command.model';\r\nimport { SdTableItem } from '../models/table-item.model';\r\n@Pipe({\r\n name: 'commandFilter'\r\n})\r\nexport class SdCommandFilterPipe implements PipeTransform {\r\n async transform(item: SdTableItem, commands: SdTableCommand[]): Promise<SdTableCommand[]> {\r\n const results: SdTableCommand[] = [];\r\n if (!commands) {\r\n return results;\r\n }\r\n for (const command of commands) {\r\n let flag = false;\r\n const { hidden } = command;\r\n if (hidden === undefined) {\r\n flag = true;\r\n } else if (typeof (hidden) === 'boolean') {\r\n if (!hidden) {\r\n flag = true;\r\n }\r\n } else {\r\n const isHidden = hidden(item);\r\n if (isHidden instanceof Promise) {\r\n if (!await isHidden) {\r\n flag = true;\r\n }\r\n } else {\r\n if (!isHidden) {\r\n flag = true;\r\n }\r\n }\r\n }\r\n if (flag) {\r\n if ('children' in command) {\r\n const children: SdTableCommandNormal[] = [];\r\n for (const childCommand of command.children) {\r\n const { hidden } = childCommand;\r\n if (hidden === undefined) {\r\n children.push(childCommand);\r\n } else if (typeof (hidden) === 'boolean') {\r\n if (!hidden) {\r\n children.push(childCommand);\r\n }\r\n } else {\r\n const isHidden = hidden(item);\r\n if (isHidden instanceof Promise) {\r\n if (!await isHidden) {\r\n children.push(childCommand);\r\n }\r\n } else {\r\n if (!isHidden) {\r\n children.push(childCommand);\r\n }\r\n }\r\n }\r\n }\r\n if (children.length > 0) {\r\n results.push({ ...command, children });\r\n }\r\n } else {\r\n results.push(command);\r\n }\r\n }\r\n }\r\n return results;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdTableCommand } from '../models/table-command.model';\r\n@Pipe({\r\n name: 'commandDisable'\r\n})\r\nexport class SdCommandDisablePipe implements PipeTransform {\r\n transform(item: any, command: SdTableCommand): boolean {\r\n if (!command?.disabled) {\r\n return false;\r\n }\r\n if (typeof (command.disabled) === 'boolean') {\r\n return command.disabled;\r\n }\r\n return command.disabled(item);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdTableCommand } from '../models/table-command.model';\r\n@Pipe({\r\n name: 'commandIcon'\r\n})\r\nexport class SdCommandIconPipe implements PipeTransform {\r\n transform(command: SdTableCommand, item: any): string {\r\n if (!command?.icon) {\r\n return '';\r\n }\r\n if (typeof (command.icon) === 'string') {\r\n return command.icon;\r\n }\r\n return command.icon(item);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdTableCommand } from '../models/table-command.model';\r\n@Pipe({\r\n name: 'commandTitle'\r\n})\r\nexport class SdCommandTitlePipe implements PipeTransform {\r\n transform(command: SdTableCommand, item: any): string {\r\n if (!command?.title) {\r\n return '';\r\n }\r\n if (typeof (command.title) === 'string') {\r\n return command.title;\r\n }\r\n return command.title(item);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\nimport { SdTableColumn } from '../models/table-column.model';\r\n@Pipe({\r\n name: 'columnHtmlTemplate'\r\n})\r\nexport class SdColumnHtmlTemplatePipe implements PipeTransform {\r\n private isMobileOrTablet = false;\r\n constructor(deviceService: DeviceDetectorService) {\r\n this.isMobileOrTablet = !deviceService.isDesktop();\r\n }\r\n transform(value: any, rowData: any, column: SdTableColumn): string {\r\n if (typeof (column?.htmlTemplate) !== 'function') {\r\n return value;\r\n }\r\n return column?.htmlTemplate(value, rowData, this.isMobileOrTablet);\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input, QueryList } from '@angular/core';\r\nimport { SdTableColumn } from '../../models/table-column.model';\r\nimport { SdTableOption } from '../../models/table-option.model';\r\nimport { SdTableItem } from '../../models/table-item.model';\r\n\r\n@Component({\r\n selector: 'sd-desktop-cell-view',\r\n templateUrl: './desktop-cell-view.component.html',\r\n styleUrls: ['./desktop-cell-view.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdDesktopCellView {\r\n @Input() sdId: string;\r\n @Input() key: string;\r\n @Input() column: SdTableColumn;\r\n @Input() item: SdTableItem;\r\n @Input() gridOption: SdTableOption;\r\n constructor(\r\n ) { }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdTableColumn } from '../models/table-column.model';\r\nimport { SdColumnValuesPipe } from './column-values.pipe';\r\n@Pipe({\r\n name: 'columnTransform'\r\n})\r\nexport class SdColumnTransformPipe implements PipeTransform {\r\n constructor(private columnValuesPipe: SdColumnValuesPipe) { }\r\n async transform(value: any, rowData: any, column: SdTableColumn, key?: string): Promise<string> {\r\n if (column?.transform) {\r\n return column.transform(value, rowData);\r\n }\r\n if (column.type === 'values') {\r\n return await this.columnValuesPipe.transform(value, column);\r\n }\r\n if (column.type === 'number' && Number.isNumber(value)) {\r\n return Number.toVNCurrency(value); // this.decimalPipe.transform(value, '1.0-2');\r\n }\r\n if (column.type === 'bool') {\r\n return value === true ? (column.option?.displayOnTrue || 'True') : (column.option?.displayOnFalse || 'False');\r\n }\r\n return value;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdTableExternalFilter } from '../services/table-filter/table-filter.model';\r\n@Pipe({\r\n name: 'sdFilterExternal'\r\n})\r\nexport class SdFilterExternalPipe implements PipeTransform {\r\n transform(externalFilters: SdTableExternalFilter[], field?: string): SdTableExternalFilter[] {\r\n const results: SdTableExternalFilter[] = [];\r\n if (!externalFilters) {\r\n return results;\r\n }\r\n for (const filter of externalFilters) {\r\n results.push(filter);\r\n }\r\n return results.filter(e => !field || e.field === field);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdTableColumn } from '../models/table-column.model';\r\n@Pipe({\r\n name: 'sdFilterColumn'\r\n})\r\nexport class SdFilterColumnPipe implements PipeTransform {\r\n transform(columns: SdTableColumn[], field?: string): SdTableColumn[] {\r\n const results: SdTableColumn[] = [];\r\n if (!columns) {\r\n return results;\r\n }\r\n for (const column of columns) {\r\n if (column.type === 'children') {\r\n for (const columnChildren of column?.children) {\r\n if (!columnChildren.filter?.disabled) {\r\n results.push(columnChildren);\r\n }\r\n }\r\n continue;\r\n }\r\n if (!column.filter?.disabled) {\r\n results.push(column);\r\n }\r\n }\r\n return results.filter(e => !field || e.field === field);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\nimport { SdTableColumn } from '../models/table-column.model';\r\n\r\n@Pipe({\r\n name: 'columnChildrenFilter'\r\n})\r\nexport class SdColumnChildrenFilterPipe implements PipeTransform {\r\n #isMobileOrTablet = false;\r\n constructor(deviceService: DeviceDetectorService) {\r\n this.#isMobileOrTablet = !deviceService.isDesktop();\r\n }\r\n transform(columns: SdTableColumn[], item: any): SdTableColumn[] {\r\n return columns.filter(column => {\r\n const value = item?.[column.field];\r\n const transformValue = column.transform?.(item[column.field], item);\r\n const templateValue = column.htmlTemplate?.(item[column.field], item, this.#isMobileOrTablet);\r\n return (value !== undefined && value !== null && value !== '')\r\n || (transformValue !== undefined && transformValue !== null && transformValue !== '')\r\n || (templateValue !== undefined && templateValue !== null && templateValue !== '');\r\n });\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\nimport { SdTableCommand } from '../../models/table-command.model';\r\nimport { SdTableItem } from '../../models/table-item.model';\r\n\r\n@Component({\r\n selector: 'sd-desktop-command',\r\n templateUrl: './desktop-command.component.html',\r\n styleUrls: ['./desktop-command.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdDesktopCommand {\r\n @Input() item: SdTableItem;\r\n @Input() commands: SdTableCommand[] = [];\r\n constructor() {\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdBadgeColor } from '@sd-angular/core/badge';\r\nimport { SdTableColumn } from '../models/table-column.model';\r\n@Pipe({\r\n name: 'columnBadge'\r\n})\r\nexport class SdColumnBadgePipe implements PipeTransform {\r\n constructor() { }\r\n transform(value: any, rowData: any, column: SdTableColumn): {\r\n type: 'round' | 'circle' | 'icon',\r\n color: SdBadgeColor,\r\n icon: string\r\n } {\r\n if (column.type === 'string' && column?.badge) {\r\n return {\r\n type: !column?.badgeType ? 'round' : column.badgeType,\r\n color: column.badge(value, rowData),\r\n icon: column?.badgeIcon?.(value, rowData)\r\n };\r\n }\r\n if (column.type === 'number' && column?.badge) {\r\n return {\r\n type: !column?.badgeType ? 'round' : column.badgeType,\r\n color: column.badge(value, rowData),\r\n icon: column?.badgeIcon?.(value, rowData)\r\n };\r\n }\r\n if (column.type === 'bool') {\r\n return {\r\n type: !column?.badgeType ? 'round' : column.badgeType,\r\n color: !!value ? 'success' : 'danger',\r\n icon: null\r\n };\r\n }\r\n if (column.type === 'values' && column?.badge) {\r\n return {\r\n type: !column?.badgeType ? 'round' : column.badgeType,\r\n color: column.badge(value, rowData),\r\n icon: column?.badgeIcon?.(value, rowData)\r\n };\r\n }\r\n return null;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdTableOption } from '../models/table-option.model';\r\nimport { SdGridConfiguration, SdGridConfigurationResult } from '../models/table-option-config.model';\r\nimport { SdTableConfigurationService } from '../services/table-configuration.service';\r\nimport { SdMaterialSubInformationDefDirective } from '../directives/sd-material-sub-information-def.directive';\r\n\r\n@Pipe({\r\n name: 'sdGridConfigurationResult'\r\n})\r\nexport class SdGridConfigurationResultPipe implements PipeTransform {\r\n constructor(private gridConfigurationService: SdTableConfigurationService) { }\r\n transform(configuration: SdGridConfiguration, gridOption: SdTableOption, sdSubInformation: SdMaterialSubInformationDefDirective): SdGridConfigurationResult {\r\n const a = this.gridConfigurationService.generateConfigurationResult(configuration, gridOption, sdSubInformation);\r\n console.log(a);\r\n return a;\r\n }\r\n}\r\n","import { Component, OnInit, ViewChild, EventEmitter, ChangeDetectorRef, Input, HostListener } from '@angular/core';\r\nimport { SdModal } from '@sd-angular/core/modal';\r\nimport { SdNotifyService } from '@sd-angular/core/notify';\r\nimport { SdTranslateService } from '@sd-angular/core/translate';\r\nimport { SdTableOption } from '../../models/table-option.model';\r\nimport {\r\n SdGridConfigurationResult,\r\n SdGridConfiguration,\r\n SdGridConfigurationCache,\r\n SdColumnConfiguration,\r\n} from '../../models/table-option-config.model';\r\nimport { SdTableConfigurationService } from '../../services/table-configuration.service';\r\nimport * as uuid from 'uuid';\r\nimport { MatTable } from '@angular/material/table';\r\n// import { SdGridMaterialColumn } from '@sd-angular/core/grid-material';\r\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport { SdTableColumn } from '../../models/table-column.model';\r\n\r\n@Component({\r\n selector: 'sd-popup-grid-configuration',\r\n templateUrl: './popup-grid-configuration.component.html',\r\n styleUrls: ['./popup-grid-configuration.component.scss'],\r\n})\r\nexport class SdPopupGridConfiguration implements OnInit {\r\n @Input() gridOption: SdTableOption;\r\n @Input() key: string;\r\n @ViewChild('modal') modal: SdModal;\r\n @ViewChild('table') table: MatTable<SdTableColumn>;\r\n readonly changes = new EventEmitter<SdGridConfigurationResult>();\r\n #cache: SdGridConfigurationCache;\r\n configuration: SdGridConfiguration;\r\n isCreatingColumn = false;\r\n selected: {\r\n [key: string]: boolean;\r\n } = {};\r\n disabledDrag = true;\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n private notifyService: SdNotifyService,\r\n private translateService: SdTranslateService,\r\n private gridConfigurationService: SdTableConfigurationService\r\n ) {}\r\n\r\n ngOnInit() {}\r\n @HostListener('window:mouseup', ['$event'])\r\n mouseUp(event) {\r\n this.disabledDrag = true;\r\n }\r\n open = async () => {\r\n this.#cache = this.gridConfigurationService.init(this.key, this.gridOption);\r\n this.configuration = await this.#cache.get();\r\n this.modal.open();\r\n };\r\n\r\n onSave = () => {\r\n this.#cache.set(this.configuration);\r\n this.modal.close();\r\n this.ref.detectChanges();\r\n };\r\n\r\n onReset = async () => {\r\n const { translate } = this.translateService;\r\n this.notifyService.confirm(translate('Reset grid configuration to default')).then(() => {\r\n this.#cache.remove();\r\n this.modal.close();\r\n this.ref.detectChanges();\r\n });\r\n };\r\n\r\n createColumn = async () => {\r\n this.selected = {};\r\n this.isCreatingColumn = true;\r\n };\r\n\r\n confirm = async () => {\r\n const generatedColumn: SdColumnConfiguration = {\r\n origin: {\r\n field: uuid.v4(),\r\n title: 'Generated',\r\n width: '300px',\r\n },\r\n fixed: false,\r\n invisible: false,\r\n title: 'Generated',\r\n width: '300px',\r\n };\r\n this.configuration.columns.push(generatedColumn);\r\n this.configuration = this.#cache.set(this.configuration);\r\n this.isCreatingColumn = false;\r\n };\r\n\r\n dropTable(event: CdkDragDrop<SdTableColumn[]>) {\r\n moveItemInArray(this.configuration.columns, event.previousIndex, event.currentIndex);\r\n this.table.renderRows();\r\n }\r\n\r\n handleMouseDown() {\r\n this.disabledDrag = false;\r\n }\r\n\r\n handleMouseUp() {\r\n this.disabledDrag = true;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdTableColumn } from '../models/table-column.model';\r\n@Pipe({\r\n name: 'columnTooltip'\r\n})\r\nexport class SdColumnTooltipPipe implements PipeTransform {\r\n constructor() { }\r\n transform(value: any, rowData: any, column: SdTableColumn): string {\r\n if (column?.tooltip) {\r\n return column.tooltip(value, rowData);\r\n }\r\n return null;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdTableItem } from '../models/table-item.model';\r\nimport { SdTableAction, SdTableActionNormal } from '../models/table-option-selector.model';\r\n@Pipe({\r\n name: 'selectionActionFilter'\r\n})\r\nexport class SdSelectionActionFilterPipe implements PipeTransform {\r\n #convert = (action: SdTableAction): SdTableAction => {\r\n if ('children' in action) {\r\n return {\r\n title: action.title,\r\n icon: action.icon,\r\n fontSet: action.fontSet,\r\n tooltip: action.tooltip,\r\n color: action.color,\r\n type: action.type,\r\n children: action.children.map(e => ({\r\n title: e.title,\r\n icon: e.icon,\r\n color: action.color,\r\n type: action.type,\r\n fontSet: e.fontSet,\r\n tooltip: e.tooltip,\r\n click: e.click\r\n }))\r\n };\r\n }\r\n return {\r\n title: action.title,\r\n icon: action.icon,\r\n color: action.color,\r\n type: action.type,\r\n fontSet: action.fontSet,\r\n tooltip: action.tooltip,\r\n click: action.click\r\n };\r\n\r\n }\r\n transform = (selectedItems: SdTableItem[], actions: SdTableAction[]): SdTableAction[] => {\r\n const results: SdTableAction[] = [];\r\n if (!actions?.length || !selectedItems?.length) {\r\n return [];\r\n }\r\n for (const action of actions) {\r\n if ('children' in action) {\r\n const children: SdTableActionNormal[] = [];\r\n for (const childAction of action.children) {\r\n const key = hash(childAction);\r\n if (selectedItems.every(e => e.meta.selector.actions.includes(key))) {\r\n children.push(childAction);\r\n }\r\n }\r\n if (children.length > 0) {\r\n results.push({ ...action, children });\r\n }\r\n } else {\r\n const key = hash(action);\r\n if (selectedItems.every(e => e.meta.selector.actions.includes(key))) {\r\n results.push(action);\r\n }\r\n }\r\n }\r\n return results.map(result => this.#convert(result));\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdTableOptionSelector } from '../models/table-option-selector.model';\r\nimport { SdTableItem } from '../models/table-item.model';\r\n@Pipe({\r\n name: 'selectionDisable'\r\n})\r\nexport class SdSelectionDisablePipe implements PipeTransform {\r\n transform = (selectedItems: SdTableItem[], rowData: SdTableItem, selection: SdTableOptionSelector): boolean => {\r\n const { disabled, actions } = selection;\r\n if (!actions?.length) {\r\n if (!disabled) {\r\n rowData.meta.selector.selectable = true;\r\n return false;\r\n }\r\n rowData.meta.selector.selectable = !disabled(rowData, selectedItems);\r\n return !rowData.meta.selector.selectable;\r\n }\r\n // Lọc các action theo selectedItems hiện tại\r\n const availableActions = actions.filter(action => {\r\n if ('children' in action) {\r\n for (const childAction of action.children) {\r\n const key = hash(childAction);\r\n if (selectedItems.every(e => e.meta.selector.actions.includes(key))) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n } else {\r\n const key = hash(action);\r\n return selectedItems.every(e => e.meta.selector.actions.includes(key));\r\n }\r\n });\r\n // Kiểm tra rowData có action nào thỏa hay ko, nếu ko thì disabled\r\n for (const action of availableActions) {\r\n if ('children' in action) {\r\n for (const childAction of action.children) {\r\n if(rowData.meta.selector.actions.includes(hash(childAction))) {\r\n return false;\r\n }\r\n }\r\n } else {\r\n if(rowData.meta.selector.actions.includes(hash(action))) {\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdTableOptionSelector } from '../models/table-option-selector.model';\r\nimport { SdTableItem } from '../models/table-item.model';\r\n@Pipe({\r\n name: 'selectionVisibleSelectAll'\r\n})\r\nexport class SdSelectionVisibleSelectAllPipe implements PipeTransform {\r\n transform = async (items: SdTableItem[], selection: SdTableOptionSelector): Promise<boolean> => {\r\n const { actions } = selection;\r\n if (!actions?.length) {\r\n return true;\r\n }\r\n if (!items.length) {\r\n return false;\r\n }\r\n if (actions.some(e => ('children' in e && e.children.some(e1 => e1.isGrouped)) || e.isGrouped)) {\r\n return false;\r\n }\r\n await new Promise(resolve => setTimeout(resolve, 500));\r\n const first = items.find(t => t.meta.selector.actions?.length);\r\n if (first) {\r\n for (const action of first.meta.selector.actions) {\r\n if (items.filter(t => t.meta.selector.actions?.length).every(e => e.meta.selector.actions.includes(action))) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input, QueryList } from '@angular/core';\r\nimport { SdMaterialCellDefDirective } from '../../directives/sd-material-cell-def.directive';\r\nimport { SdTableColumn } from '../../models/table-column.model';\r\nimport { SdTableOption } from '../../models/table-option.model';\r\nimport { SdTableItem } from '../../models/table-item.model';\r\n\r\n@Component({\r\n selector: 'sd-desktop-cell',\r\n templateUrl: './desktop-cell.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdDesktopCell {\r\n @Input() sdId: string;\r\n @Input() value: any;\r\n @Input() key: string;\r\n @Input() column: SdTableColumn;\r\n @Input() item: SdTableItem;\r\n @Input() gridOption: SdTableOption;\r\n @Input() cellDef: {\r\n [column: string]: SdMaterialCellDefDirective\r\n } = {};\r\n @Input() idx: number;\r\n constructor(\r\n ) { }\r\n}\r\n","import { SdBadgeColor } from '@sd-angular/core/badge';\r\n\r\nexport type SdTableColumn<T = any> =\r\n | SdTableColumnText<T>\r\n | SdTableColumnNumber<T>\r\n | SdTableColumnBool<T>\r\n | SdTableColumnDate<T>\r\n | SdTableColumnValues<T>\r\n | SdTableColumnChildren<T>;\r\n\r\nexport type SdFilterOperator =\r\n| 'EQUAL'\r\n| 'NOT_EQUAL'\r\n| 'CONTAIN'\r\n| 'NOT_CONTAIN'\r\n| 'IN'\r\n| 'NOT_IN'\r\n| 'START_WITH'\r\n| 'END_WITH'\r\n| 'GREATER_THAN'\r\n| 'LESS_THAN'\r\n| 'GREATER_OR_EQUAL'\r\n| 'LESS_OR_EQUAL';\r\n\r\nexport const SdFilterOperators: { value: SdFilterOperator, symbol?: string, display: string }[] = [\r\n {\r\n value: 'EQUAL',\r\n symbol: '=',\r\n display: 'Bằng',\r\n },\r\n {\r\n value: 'NOT_EQUAL',\r\n symbol: '≠',\r\n display: 'Không bằng',\r\n },\r\n {\r\n value: 'GREATER_THAN',\r\n symbol: '>',\r\n display: 'Lớn hơn',\r\n },\r\n {\r\n value: 'LESS_THAN',\r\n symbol: '<',\r\n display: 'Nhỏ hơn',\r\n },\r\n {\r\n value: 'GREATER_OR_EQUAL',\r\n symbol: '≥',\r\n display: 'Lớn hơn, hoặc bằng'\r\n },\r\n {\r\n value: 'LESS_OR_EQUAL',\r\n symbol: '≤',\r\n display: 'Nhỏ hơn, hoặc bằng'\r\n },\r\n {\r\n value: 'CONTAIN',\r\n symbol: 'join_inner',\r\n display: 'Chứa',\r\n },\r\n {\r\n value: 'NOT_CONTAIN',\r\n symbol: 'join',\r\n display: 'Không chứa',\r\n },\r\n {\r\n value: 'START_WITH',\r\n symbol: 'line_start_circle',\r\n display: 'Bắt đầu bởi'\r\n },\r\n {\r\n value: 'END_WITH',\r\n symbol: 'line_end_circle',\r\n display: 'Kết thúc bởi'\r\n },\r\n {\r\n value: 'IN',\r\n symbol: 'checklist_rtl',\r\n display: 'Nằm trong'\r\n },\r\n {\r\n value: 'NOT_IN',\r\n symbol: 'event_list',\r\n display: 'Không nằm trong'\r\n },\r\n];\r\n\r\nexport type SdTableColumnTransformFunc<T = any> = (\r\n value: any,\r\n rowData: T,\r\n args?: {\r\n isExport?: boolean;\r\n }\r\n) => string | Promise<string>;\r\n\r\ninterface SdTableColumnBase<T = any> {\r\n field: string;\r\n title: string;\r\n titleHtml?: string;\r\n description?: string;\r\n width?: string;\r\n hidden?: boolean;\r\n invisible?: boolean;\r\n fixed?: boolean;\r\n align?: 'center' | 'left' | 'right';\r\n htmlTemplate?: (value: any, rowData: T, isMobileOrTablet: boolean) => string;\r\n transform?: SdTableColumnTransformFunc<T>;\r\n tooltip?: (value: any, rowData: T) => string;\r\n click?: (value: any, rowData: T) => void;\r\n sortable?: boolean;\r\n filter?: {\r\n disabled?: boolean;\r\n defaultShowing?: boolean;\r\n default?: any;\r\n // Chỉ dành cho filter inline column\r\n operator?: {\r\n enable?: boolean;\r\n list?: SdFilterOperator[];\r\n };\r\n };\r\n export?: {\r\n disabled?: boolean;\r\n };\r\n}\r\n\r\ninterface SdTableColumnText<T = any> extends SdTableColumnBase<T> {\r\n type: 'string';\r\n badge?: (value: any, rowData: T) => SdBadgeColor;\r\n badgeIcon?: (value: any, rowData: T) => string;\r\n badgeType?: 'circle' | 'icon';\r\n editor?: {\r\n change?: (rowData: T, selected?: any) => void;\r\n hidden?: boolean | ((rowData: T) => boolean);\r\n disabled?: boolean | ((rowData: T) => boolean);\r\n required?: boolean | ((rowData: T) => boolean);\r\n minLength?: number;\r\n maxLength?: number;\r\n validator?: (rowData: T) => string;\r\n };\r\n}\r\n\r\ninterface SdTableColumnNumber<T = any> extends SdTableColumnBase<T> {\r\n type: 'number';\r\n badge?: (value: any, rowData: T) => SdBadgeColor;\r\n badgeIcon?: (value: any, rowData: T) => string;\r\n badgeType?: 'circle' | 'icon';\r\n editor?: {\r\n change?: (rowData: T, selected?: any) => void;\r\n hidden?: boolean | ((rowData: T) => boolean);\r\n disabled?: boolean | ((rowData: T) => boolean);\r\n required?: boolean | ((rowData: T) => boolean);\r\n minValue?: number;\r\n maxValue?: number;\r\n precision?: number;\r\n validator?: (rowData: T) => string;\r\n };\r\n}\r\n\r\ninterface SdTableColumnBool<T = any> extends SdTableColumnBase<T> {\r\n type: 'bool';\r\n option?: {\r\n displayOnTrue?: string;\r\n displayOnFalse?: string;\r\n };\r\n badgeType?: 'circle';\r\n editor?: {\r\n change?: (rowData: T, selected?: any) => void;\r\n hidden?: boolean | ((rowData: T) => boolean);\r\n disabled?: boolean | ((rowData: T) => boolean);\r\n required?: boolean | ((rowData: T) => boolean);\r\n };\r\n}\r\n\r\ninterface SdTableColumnDate<T = any> extends SdTableColumnBase<T> {\r\n type: 'date' | 'datetime' | 'time';\r\n option?: {\r\n useFilterDate?: boolean;\r\n timeDifferent?: 'second' | 'minute' | 'hour' | 'day' | 'month';\r\n };\r\n transformDate?: (value: any, rowData: T) => string | Date;\r\n editor?: {\r\n change?: (rowData: T, selected?: any) => void;\r\n hidden?: boolean | ((rowData: T) => boolean);\r\n disabled?: boolean | ((rowData: T) => boolean);\r\n required?: boolean | ((rowData: T) => boolean);\r\n };\r\n}\r\n\r\nexport interface SdTableColumnValues<T = any> extends SdTableColumnBase<T> {\r\n type: 'values';\r\n badge?: (value: any, rowData: T) => SdBadgeColor;\r\n badgeIcon?: (value: any, rowData: T) => string;\r\n badgeType?: 'circle' | 'icon';\r\n option: {\r\n items:\r\n | any[]\r\n | ((searchText?: string, isFormValue?: boolean) => Promise<any[]>)\r\n | ((searchText?: string[], isFormValue?: boolean) => Promise<any[]>);\r\n valueField: string;\r\n displayField: string;\r\n selection?:\r\n | 'AUTOCOMPLETE'\r\n | 'MULTIPLE'\r\n | 'MULTIPLEAUTOCOMPLETE'\r\n | 'AUTOCOMPLETE_EDITOR'\r\n | 'MULTIPLE_EDITOR'\r\n | 'MULTIPLEAUTOCOMPLETE_EDITOR';\r\n };\r\n editor?: {\r\n change?: (rowData: T, selected?: any) => void;\r\n add?: (rowData: T) => void;\r\n edit?: (option: any, rowData: T) => void;\r\n delete?: (option: any, rowData: T) => void;\r\n hidden?: boolean | ((rowData: T) => boolean);\r\n disabled?: boolean | ((rowData: T) => boolean);\r\n required?: boolean | ((rowData: T) => boolean);\r\n };\r\n}\r\n\r\ntype SdTableColumnNormal<T> = Exclude<SdTableColumn<T>, SdTableColumnChildren<T>>;\r\n\r\nexport interface SdTableColumnChildren<T = any> extends SdTableColumnBase<T> {\r\n type: 'children';\r\n children: SdTableColumnNormal<T>[];\r\n}\r\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Output, QueryList } from '@angular/core';\r\nimport { Subject, Subscription } from 'rxjs';\r\nimport { startWith } from 'rxjs/operators';\r\nimport { SdFilterOperator, SdFilterOperators, SdTableColumn } from '../../models/table-column.model';\r\n\r\n@Component({\r\n selector: 'sd-column-inline-filter',\r\n templateUrl: './column-inline-filter.component.html',\r\n styleUrls: ['./column-inline-filter.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SdColumnInlineFilter implements OnInit {\r\n value: any;\r\n @Input('value') _value(value: any) {\r\n this.value = value;\r\n this.#valueChanges.next();\r\n }\r\n inlineSymbol: string = 'filter_alt';\r\n #inlineOperator: SdFilterOperator;\r\n @Input('inlineOperator') set _inlineOperator(inlineOperator: SdFilterOperator) {\r\n if(this.#inlineOperator !== inlineOperator) {\r\n this.#inlineOperator = inlineOperator;\r\n this.inlineSymbol = SdFilterOperators.find(e => e.value === inlineOperator)?.symbol ?? 'filter_alt';\r\n }\r\n }\r\n @Output() inlineOperatorChange = new EventEmitter();\r\n\r\n columnFilter: Record<string, any> = {};\r\n @Input('columnFilter') set _columnFilter(columnFilter: Record<string, any>) {\r\n this.columnFilter = columnFilter || {};\r\n this.#valueChanges.next();\r\n }\r\n operators: { value: SdFilterOperator; display: string }[] = [];\r\n column: SdTableColumn;\r\n @Input('column') set _column(column: SdTableColumn) {\r\n this.column = column;\r\n if (!column?.filter?.disabled && column?.filter?.operator?.enable) {\r\n this.operators = SdFilterOperators.filter(e => column.filter.operator.list?.includes?.(e.value));\r\n } else {\r\n this.operators = [];\r\n }\r\n }\r\n @Output() filterChange = new EventEmitter();\r\n #valueChanges = new Subject();\r\n #subcription = new Subscription();\r\n constructor(private ref: ChangeDetectorRef) {}\r\n\r\n ngOnInit() {\r\n this.#subcription.add(\r\n this.#valueChanges.pipe(startWith(this.columnFilter)).subscribe(() => {\r\n if (this.column.type === 'date' || this.column.type === 'time' || this.column.type === 'datetime') {\r\n if (!this.column?.option?.useFilterDate) {\r\n this.columnFilter[this.column.field] = this.columnFilter[this.column.field] || {\r\n from: null,\r\n to: null,\r\n };\r\n }\r\n }\r\n })\r\n );\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#subcription.unsubscribe();\r\n }\r\n\r\n onFilterChange = () => {\r\n this.filterChange.emit();\r\n };\r\n\r\n onChangeOperator = (operator: { value: SdFilterOperator, symbol?: string, display: string }) => {\r\n if (operator) {\r\n this.#inlineOperator = operator.value;\r\n this.inlineSymbol = operator.symbol;\r\n } else {\r\n this.#inlineOperator = null;\r\n this.inlineSymbol = 'filter_alt';\r\n }\r\n this.inlineOperatorChange.emit(this.#inlineOperator);\r\n this.ref.markForCheck();\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdTableOptionSelector } from '../models/table-option-selector.model';\r\nimport { SdTableItem } from '../models/table-item.model';\r\n\r\n@Pipe({\r\n name: 'selectionVisible'\r\n})\r\nexport class SdSelectionVisiblePipe implements PipeTransform {\r\n transform = (rowData: SdTableItem, selection: SdTableOptionSelector): boolean => {\r\n const { actions } = selection;\r\n const groupedActions: string[] = [];\r\n rowData.meta.selector.actions = rowData.meta.selector.actions || [];\r\n if (!actions?.length) {\r\n rowData.meta.selector.selectable = true;\r\n return rowData.meta.selector.selectable;\r\n }\r\n for (const action of actions) {\r\n if ('children' in action) {\r\n let flag = false;\r\n let hasGroup = false;\r\n for (const childAction of action.children) {\r\n const { hidden, isGrouped } = childAction;\r\n const key = hash(childAction);\r\n if (isGrouped) {\r\n hasGroup = true;\r\n }\r\n if (typeof (hidden) === 'function') {\r\n if (!hidden(rowData)) {\r\n flag = true;\r\n rowData.meta.selector.actions.push(key);\r\n if (isGrouped) {\r\n groupedActions.push(key);\r\n }\r\n }\r\n } else if (!hidden) {\r\n flag = true;\r\n rowData.meta.selector.actions.push(key);\r\n if (isGrouped) {\r\n groupedActions.push(key);\r\n }\r\n }\r\n }\r\n if (flag) {\r\n rowData.meta.selector.actions.push(hash(action));\r\n if (hasGroup) {\r\n groupedActions.push(hash(action));\r\n }\r\n }\r\n } else {\r\n const { hidden, isGrouped } = action;\r\n const key = hash(action);\r\n if (typeof (hidden) === 'function') {\r\n if (!hidden(rowData)) {\r\n rowData.meta.selector.actions.push(key);\r\n if (isGrouped) {\r\n groupedActions.push(key);\r\n }\r\n }\r\n } else if (!hidden) {\r\n rowData.meta.selector.actions.push(key);\r\n if (isGrouped) {\r\n groupedActions.push(key);\r\n }\r\n }\r\n }\r\n }\r\n rowData.meta.selector.selectable = !!rowData.meta.selector.actions?.length;\r\n if (!rowData.meta.selector.selectable || !groupedActions.length || rowData?.meta.group?.items?.length) {\r\n return rowData.meta.selector.selectable;\r\n }\r\n // Đối với trường hợp grouped, tuy selectable là true nhưng vẫn ẩn đi checkbox\r\n // nếu các action đều thuộc groupedActions và rowData ko phải là dòng group\r\n return rowData.meta.selector.actions.some(action => !groupedActions.includes(action));\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { SdTableOption } from '../../models/table-option.model';\r\n\r\n@Component({\r\n selector: 'sd-grid-quick-action',\r\n templateUrl: './quick-action.component.html',\r\n styleUrls: ['./quick-action.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdGridQuickAction {\r\n @Input() gridOption: SdTableOption;\r\n @Input() selectedItems: any[];\r\n @Output() clear = new EventEmitter();\r\n constructor(\r\n ) { }\r\n onClear = () => {\r\n this.clear.emit();\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdUtilityService } from '@sd-angular/core/utility';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\nimport { SdCellView } from '../models/grid-cell.model';\r\nimport { SdTableColumn } from '../models/table-column.model';\r\nimport { SdTableOption } from '../models/table-option.model';\r\nimport { SdColumnValuesPipe } from './column-values.pipe';\r\nimport { SdTableItem } from '../models/table-item.model';\r\n@Pipe({\r\n name: 'cellView'\r\n})\r\nexport class SdCellViewPipe implements PipeTransform {\r\n #maxSecond = 60;\r\n #maxMinute = this.#maxSecond * 60;\r\n #maxHour = this.#maxMinute * 24;\r\n #maxDay = this.#maxHour * 30;\r\n #maxMonth = this.#maxHour * 365;\r\n #isMobileOrTablet = false;\r\n constructor(\r\n deviceService: DeviceDetectorService,\r\n private utilityService: SdUtilityService,\r\n private columnValuesPipe: SdColumnValuesPipe) {\r\n this.#isMobileOrTablet = !deviceService.isDesktop();\r\n }\r\n async transform(\r\n value: any,\r\n tableItem: SdTableItem,\r\n column: SdTableColumn,\r\n gridOption: SdTableOption): Promise<SdCellView> {\r\n const { displayOnEmpty } = gridOption;\r\n const rowData = tableItem.current;\r\n const { align, click, tooltip, htmlTemplate, transform } = column;\r\n const result: SdCellView = {\r\n badge: null,\r\n tooltip: null,\r\n display: {\r\n align: align || (column.type === 'number' ? 'right' : 'left'),\r\n value\r\n },\r\n click: null\r\n };\r\n // Display\r\n if (typeof (htmlTemplate) === 'function') {\r\n result.display.hasHtml = true;\r\n result.display.html = htmlTemplate(value, rowData, this.#isMobileOrTablet);\r\n } else {\r\n if (column.type === 'datetime' || column.type === 'date' || column.type === 'time') {\r\n const { transformDate } = column;\r\n if (transformDate) {\r\n value = transformDate(value, rowData);\r\n }\r\n }\r\n if (typeof (transform) === 'function') {\r\n const val = transform(value, rowData);\r\n if (val instanceof Promise) {\r\n result.display.value = await val;\r\n } else {\r\n result.display.value = val;\r\n }\r\n } else {\r\n if (column.type === 'date' || column.type === 'datetime') {\r\n const { option } = column;\r\n const seconds = Math.round((new Date().getTime() - new Date(value).getTime()) / 1000);\r\n if (option?.timeDifferent === 'month' && seconds < this.#maxMonth) {\r\n result.display.value = this.utilityService.timeDifference(value);\r\n result.tooltip = Date.toFormat(value, column.type === 'date' ? 'dd/MM/yyyy' : 'dd/MM/yyyy HH:mm');\r\n } else if (option?.timeDifferent === 'day' && seconds < this.#maxDay) {\r\n result.display.value = this.utilityService.timeDifference(value);\r\n result.tooltip = Date.toFormat(value, column.type === 'date' ? 'dd/MM/yyyy' : 'dd/MM/yyyy HH:mm');\r\n } else if (option?.timeDifferent === 'hour' && seconds < this.#maxHour) {\r\n result.display.value = this.utilityService.timeDifference(value);\r\n result.tooltip = Date.toFormat(value, column.type === 'date' ? 'dd/MM/yyyy' : 'dd/MM/yyyy HH:mm');\r\n } else if (option?.timeDifferent === 'minute' && seconds < this.#maxMinute) {\r\n result.display.value = this.utilityService.timeDifference(value);\r\n result.tooltip = Date.toFormat(value, column.type === 'date' ? 'dd/MM/yyyy' : 'dd/MM/yyyy HH:mm');\r\n } else if (option?.timeDifferent === 'second' && seconds < this.#maxSecond) {\r\n result.display.value = this.utilityService.timeDifference(value);\r\n result.tooltip = Date.toFormat(value, column.type === 'date' ? 'dd/MM/yyyy' : 'dd/MM/yyyy HH:mm');\r\n } else {\r\n const date = Date.toFormat(value, 'dd/MM/yyyy');\r\n const time = Date.toFormat(value, 'HH:mm');\r\n const dateTime = Date.toFormat(value, 'HH:mm');\r\n if (column.type === 'datetime' && time && time !== '00:00') {\r\n result.display.value = dateTime;\r\n result.display.hasHtml = true;\r\n result.display.html = `<span class=\"d-block T14R text-black400\">${Date.toFormat(value, 'HH:mm')}</span><span class=\"d-block T14R\">${Date.toFormat(value, 'dd/MM/yyyy')}</span>`;\r\n } else {\r\n result.display.value = date;\r\n }\r\n }\r\n }\r\n if (column.type === 'time') {\r\n result.display.value = Date.toFormat(value, 'HH:mm');\r\n }\r\n if (column.type === 'values') {\r\n result.display.value = await this.columnValuesPipe.transform(value, column);\r\n } else if (column.type === 'number' && Number.isNumber(value)) {\r\n result.display.value = Number.toVNCurrency(value);\r\n }\r\n if (column.type === 'bool') {\r\n const { option } = column;\r\n if (value !== undefined && value !== null && value !== '') {\r\n result.display.value = value === true ? (option?.displayOnTrue || 'True') : (option?.displayOnFalse || 'False');\r\n } else {\r\n result.display.value = null;\r\n }\r\n }\r\n }\r\n if (displayOnEmpty) {\r\n let values = [null, undefined, ''];\r\n if (typeof (displayOnEmpty) === 'object') {\r\n const { display, emptyValues } = displayOnEmpty;\r\n values = [null, undefined, '', ...emptyValues];\r\n if (values.includes(result.display.value)) {\r\n if (typeof (display) === 'function') {\r\n result.display.hasHtml = true;\r\n result.display.html = display(rowData, column);\r\n } else {\r\n result.display.hasHtml = true;\r\n result.display.html = `<div class=\"T16R text-black400\">--</div>`;\r\n }\r\n }\r\n } else {\r\n if (values.includes(result.display.value)) {\r\n if (typeof (displayOnEmpty) === 'function') {\r\n result.display.hasHtml = true;\r\n result.display.html = displayOnEmpty(rowData, column);\r\n } else {\r\n result.display.hasHtml = true;\r\n result.display.html = `<div class=\"T16R text-black400\">--</div>`;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n // Badge\r\n if ((column.type === 'string' || column.type === 'number' || column.type === 'values') && column.badge) {\r\n result.badge = {\r\n type: !column?.badgeType ? 'round' : column.badgeType,\r\n color: column.badge(value, rowData),\r\n icon: column?.badgeIcon?.(value, rowData)\r\n };\r\n } else if (column.type === 'bool') {\r\n result.badge = {\r\n type: !column?.badgeType ? 'round' : column.badgeType,\r\n color: !!value ? 'success' : 'danger',\r\n icon: null\r\n };\r\n }\r\n // Tooltip\r\n if (typeof (tooltip) === 'function') {\r\n result.tooltip = tooltip(value, rowData);\r\n }\r\n // Clickable\r\n if (typeof (click) === 'function') {\r\n result.click = () => click(value, rowData);\r\n }\r\n return result;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdTableOption } from '../models/table-option.model';\r\nimport { MapToSdTableItem, SdTableItem } from '../models/table-item.model';\r\n@Pipe({\r\n name: 'sdGroup',\r\n})\r\nexport class SdGroupPipe implements PipeTransform {\r\n transform(items: SdTableItem[], gridOption: SdTableOption): SdTableItem[] {\r\n const { group } = gridOption;\r\n if (!group) {\r\n return items;\r\n }\r\n const { fields, htmlTemplate } = group;\r\n if (!fields?.length) {\r\n return items;\r\n }\r\n const groupItem: {\r\n [key: string]: SdTableItem[];\r\n } = {};\r\n for (const item of items) {\r\n let obj = {};\r\n for (const field of fields) {\r\n obj = {\r\n ...obj,\r\n ...(item[field] ?? { [field]: item[field] }),\r\n };\r\n }\r\n const key = hash(obj);\r\n if (!groupItem[key]) {\r\n groupItem[key] = [];\r\n }\r\n groupItem[key].push(item);\r\n }\r\n const results: SdTableItem[] = [];\r\n for (const key of Object.keys(groupItem)) {\r\n const result = MapToSdTableItem({});\r\n result.meta.group.items = groupItem[key];\r\n result.meta.group.htmlTemplate = htmlTemplate(groupItem[key]);\r\n results.push(result);\r\n for (const item of groupItem[key]) {\r\n results.push(item);\r\n }\r\n }\r\n return results;\r\n }\r\n}\r\n","import { Injectable, NgModule } from '@angular/core';\r\nimport { CommonModule, DatePipe, DecimalPipe } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { SdTable } from './table.component';\r\nimport { MatSortModule } from '@angular/material/sort';\r\nimport { MatPaginatorIntl, MatPaginatorModule } from '@angular/material/paginator';\r\nimport { MatTableModule } from '@angular/material/table';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { CdkTableModule, CdkColumnDef } from '@angular/cdk/table';\r\nimport { ScrollingModule } from '@angular/cdk/scrolling';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatSliderModule } from '@angular/material/slider';\r\nimport { SdCommandFilterPipe } from './pipes/command-filter.pipe';\r\nimport { SdCommandDisablePipe } from './pipes/command-disable.pipe';\r\nimport { SdCommandIconPipe } from './pipes/command-icon.pipe';\r\nimport { SdCommandTitlePipe } from './pipes/command-title.pipe';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { SdColumnValuesPipe } from './pipes/column-values.pipe';\r\nimport { SdColumnHtmlTemplatePipe } from './pipes/column-html-template.pipe';\r\nimport { SdDesktopCellView } from './components/desktop-cell-view/desktop-cell-view.component';\r\nimport { SdColumnTransformPipe } from './pipes/column-transform.pipe';\r\nimport { SdServiceModule } from '@sd-angular/core/service';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatChipsModule } from '@angular/material/chips';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\nimport { SdMaterialCellDefDirective } from './directives/sd-material-cell-def.directive';\r\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\r\nimport { SdFilterExternalPipe } from './pipes/filter-external.pipe';\r\nimport { SdFilterColumnPipe } from './pipes/filter-column.pipe';\r\nimport { SdGridFilter } from './components/grid-filter/grid-filter.component';\r\nimport { SdPopupFilter } from './components/popup-filter/popup-filter.component';\r\n\r\nimport { SdTableFilterService } from './services/table-filter/table-filter.service';\r\nimport { SdColumnChildrenFilterPipe } from './pipes/column-children-filter.pipe';\r\nimport { SdDesktopCommand } from './components/desktop-command/desktop-command.component';\r\nimport { SdMaterialFilterDefDirective } from './directives/sd-material-filter-def.directive';\r\nimport { SdMaterialFooterDefDirective } from './directives/sd-material-footer-def.directive';\r\nimport { SdMaterialSubInformationDefDirective } from './directives/sd-material-sub-information-def.directive';\r\nimport { SdFormModule } from '@sd-angular/core/form';\r\nimport { SdMaterialEmptyDataDefDirective } from './directives/sd-material-empty-data-def.directive';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { SdColumnBadgePipe } from './pipes/column-badge.pipe';\r\nimport { SdGridConfigurationResultPipe } from './pipes/grid-configuration-result.pipe';\r\nimport { SdPopupGridConfiguration } from './components/popup-grid-configuration/popup-grid-configuration.component';\r\nimport { SdTableConfigurationService } from './services/table-configuration.service';\r\nimport { MatListModule } from '@angular/material/list';\r\nimport { MatDividerModule } from '@angular/material/divider';\r\nimport { SdColumnTooltipPipe } from './pipes/column-tooltip.pipe';\r\nimport { SdSelectionActionFilterPipe } from './pipes/selection-action-filter.pipe';\r\nimport { SdSelectionDisablePipe } from './pipes/selection-disable.pipe';\r\nimport { SdSelectionVisibleSelectAllPipe } from './pipes/selection-visible-select-all.pipe';\r\nimport { SdDesktopCell } from './components/desktop-cell/desktop-cell.component';\r\nimport { SdColumnInlineFilter } from './components/column-inline-filter/column-inline-filter.component';\r\nimport { SdSelectionVisiblePipe } from './pipes/selection-visible.pipe';\r\nimport { SdGridQuickAction } from './components/quick-action/quick-action.component';\r\nimport { SdCommonModule } from '@sd-angular/core/common';\r\nimport { SdCellViewPipe } from './pipes/cell-view.pipe';\r\nimport { SdGroupPipe } from './pipes/sd-group.pipe';\r\nimport { SdGroupModule } from '@sd-angular/core/group';\r\n\r\n@Injectable()\r\nexport class MatPaginatorIntlCro extends MatPaginatorIntl {\r\n firstPageLabel = 'Trang đầu';\r\n lastPageLabel = 'Trang cuối';\r\n itemsPerPageLabel = 'Kích thước trang';\r\n nextPageLabel = 'Trang sau';\r\n previousPageLabel = 'Trang trước';\r\n\r\n getRangeLabel = (page: number, pageSize: number, length: number) => {\r\n if (length === 0 || pageSize === 0) {\r\n return '';\r\n }\r\n const from = page * pageSize + 1;\r\n const to = from + (length - page * pageSize > pageSize ? pageSize : length - page * pageSize) - 1;\r\n return `${from}-${to} trên ${length}`;\r\n };\r\n}\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MatInputModule,\r\n MatFormFieldModule,\r\n MatSortModule,\r\n MatPaginatorModule,\r\n MatTableModule,\r\n MatMenuModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n MatTooltipModule,\r\n MatProgressSpinnerModule,\r\n MatChipsModule,\r\n MatRadioModule,\r\n MatSlideToggleModule,\r\n MatCheckboxModule,\r\n MatListModule,\r\n MatDividerModule,\r\n CdkTableModule,\r\n DragDropModule,\r\n SdFormModule,\r\n SdServiceModule,\r\n MatSliderModule,\r\n ScrollingModule,\r\n SdCommonModule,\r\n SdGroupModule,\r\n ],\r\n declarations: [\r\n SdGridQuickAction,\r\n SdDesktopCell,\r\n SdDesktopCellView,\r\n SdDesktopCommand,\r\n SdColumnInlineFilter,\r\n SdTable,\r\n\r\n SdMaterialFooterDefDirective,\r\n SdMaterialCellDefDirective,\r\n SdMaterialFilterDefDirective,\r\n SdMaterialSubInformationDefDirective,\r\n SdMaterialEmptyDataDefDirective,\r\n SdPopupGridConfiguration,\r\n SdGridFilter,\r\n SdPopupFilter,\r\n\r\n // Pipes\r\n SdGridConfigurationResultPipe,\r\n SdColumnChildrenFilterPipe,\r\n SdCommandFilterPipe,\r\n SdCommandDisablePipe,\r\n SdCommandIconPipe,\r\n SdCommandTitlePipe,\r\n SdColumnValuesPipe,\r\n SdColumnHtmlTemplatePipe,\r\n SdColumnTransformPipe,\r\n SdColumnTooltipPipe,\r\n SdColumnBadgePipe,\r\n SdFilterColumnPipe,\r\n SdFilterExternalPipe,\r\n SdSelectionActionFilterPipe,\r\n SdSelectionVisiblePipe,\r\n SdSelectionDisablePipe,\r\n SdSelectionVisibleSelectAllPipe,\r\n SdCellViewPipe,\r\n SdGroupPipe,\r\n ],\r\n exports: [\r\n SdTable,\r\n SdMaterialFooterDefDirective,\r\n SdMaterialCellDefDirective,\r\n SdMaterialFilterDefDirective,\r\n SdMaterialEmptyDataDefDirective,\r\n SdMaterialSubInformationDefDirective,\r\n ],\r\n providers: [\r\n DatePipe,\r\n DecimalPipe,\r\n CdkColumnDef,\r\n SdTableFilterService,\r\n SdTableConfigurationService,\r\n SdColumnValuesPipe,\r\n {\r\n provide: MatPaginatorIntl,\r\n useClass: MatPaginatorIntlCro,\r\n },\r\n ],\r\n})\r\nexport class SdTableModule {}\r\n"]}
1
+ {"version":3,"sources":["../../../../node_modules/tslib/tslib.es6.js","../../../../projects/sd-core/table/src/lib/models/table-configuration.model.ts","../../../../projects/sd-core/table/src/lib/directives/sd-material-cell-def.directive.ts","../../../../projects/sd-core/table/src/lib/components/popup-filter/popup-filter.component.ts","../../../../projects/sd-core/table/src/lib/components/table-filter/table-filter.component.ts","../../../../projects/sd-core/table/src/lib/directives/sd-material-filter-def.directive.ts","../../../../projects/sd-core/table/src/lib/directives/sd-material-sub-information-def.directive.ts","../../../../projects/sd-core/table/src/lib/directives/sd-material-footer-def.directive.ts","../../../../projects/sd-core/table/src/lib/directives/sd-material-empty-data-def.directive.ts","../../../../projects/sd-core/table/src/lib/services/table-configuration.service.ts","../../../../projects/sd-core/table/src/lib/models/table-item.model.ts","../../../../projects/sd-core/table/src/lib/services/table-filter/table-filter.service.ts","../../../../projects/sd-core/table/src/lib/components/popup-configuration/popup-configuration.component.ts","../../../../projects/sd-core/table/src/lib/table.component.ts","../../../../projects/sd-core/table/src/lib/pipes/command-filter.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/command-disable.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/command-icon.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/command-title.pipe.ts","../../../../projects/sd-core/table/src/lib/components/desktop-cell-view/desktop-cell-view.component.ts","../../../../projects/sd-core/table/src/lib/pipes/filter-external.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/filter-column.pipe.ts","../../../../projects/sd-core/table/src/lib/components/desktop-command/desktop-command.component.ts","../../../../projects/sd-core/table/src/lib/pipes/column-tooltip.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/selection-action-filter.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/selection-disable.pipe.ts","../../../../projects/sd-core/table/src/lib/pipes/selection-visible-select-all.pipe.ts","../../../../projects/sd-core/table/src/lib/components/desktop-cell/desktop-cell.component.ts","../../../../projects/sd-core/table/src/lib/models/table-column.model.ts","../../../../projects/sd-core/table/src/lib/components/column-inline-filter/column-inline-filter.component.ts","../../../../projects/sd-core/table/src/lib/pipes/selection-visible.pipe.ts","../../../../projects/sd-core/table/src/lib/components/quick-action/quick-action.component.ts","../../../../projects/sd-core/table/src/lib/pipes/sd-group.pipe.ts","../../../../projects/sd-core/table/src/lib/table.module.ts"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","apply","__generator","body","f","y","t","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","this","n","v","op","TypeError","pop","length","push","create","__values","o","s","m","i","__read","r","ar","error","__spread","arguments","concat","__classPrivateFieldGet","receiver","state","kind","has","get","__classPrivateFieldSet","set","DEFAULT_TABLE_CONFIG","paginate","pageSize","pages","TABLE_CONFIG","InjectionToken","templateRef","Directive","args","selector","TemplateRef","Input","SdPopupFilter","cdRef","_this","_filterRegister","externalFilters","externalFilter","inlineExternal","columns","columnFilter","inlineColumn","filterDefs","filterDef","inlineFilterDef","open","configuration","JSON","parse","stringify","filterValue","modal","markForCheck","close","onApply","defineProperty","ngAfterViewInit","ngOnDestroy","onClear","remove","Component","template","changeDetection","ChangeDetectionStrategy","OnPush","ChangeDetectorRef","ViewChild","SdModal","SdTableFilter","ref","deviceService","filterRegisterChange","BehaviorSubject","_subscription","Subscription","onFilter","item","filterRegister","updateFilter","notReload","popupFilter","isMobileOrTablet","isDesktop","filter","add","pipe","startWith","subscribe","observer","unsubscribe","DeviceDetectorService","SdMaterialFilterDefDirective","val","defaultShowing","settingService","gridMaterialConfiguration","_COLUMNS","SUBINFORMATION","COMMAND","SELECTION","GROUP","_prefix","_getSetting","gridOption","key","Error","prefix","default","_default","loadConfiguration","loadConfigurationResult","column","fixedColumn","firstColumns","secondColumns","firstHeaders","secondHeaders","displayedColumns","displayedFooters","multipleHeader","_c","commands","group","visible","_a","fields","_b","col","invisible","forEach","find","field","origin","title","width","fixed","assign","type","children","childColumn","expand","init","hidden","map","Injectable","SdSettingService","Inject","Optional","MapToSdTableItem","data","meta","id","hash","display","isExpanding","isExpanded","actions","isSelected","selectable","_filterConfiguration","_filterValue","_cache","register","cacheSession","tempKey","filterConfiguration_1","_defaultConfiguration","undefined","_initConfiguration","filterValue_1","cacheFilter","_defaultValue","_initValue","keys","current","columnOperator","updatedFilter","includes","_u","_v","_w","_x","_y","_z","sdMaterialFilterDef","_e","_d","_g","_f","from","to","_k","_j","_h","_l","_o","_m","_q","_p","SdPopupConfiguration","notifyService","gridConfigurationService","changes","EventEmitter","_setting","isCreatingColumn","selected","disabledDrag","onSave","detectChanges","onReset","confirm","ngOnInit","mouseUp","event","dropTable","moveItemInArray","previousIndex","currentIndex","table","renderRows","handleMouseDown","handleMouseUp","SdNotifyService","SdTableConfigurationService","HostListener","SdTable","tableConfiguration","exportService","gridFilterService","_gridId","uuid.v4","_optionChanges","Subject","_localItems","items","selectedItems","isLoading","isHiddenPaginator","_paginator","_sort","sdCellDefs","QueryList","cellDef","sdFooterDefs","footerDef","hasFooter","sdFilterDefs","_reload","isExporting","isSelectAll","exportTitle","_loadCompleted","cacheValues","_cacheObjValues","_initCellDef","_9","_10","sdMaterialCellDef","_initFilterDef","_initFooterDef","sdMaterialFooterDef","_filterExportInfo","pageNumber","_8","rawColumnFilter","rawExternalFilter","rawFilterDef","orderBy","active","orderDirection","direction","isExported","option","showFirstLastButtons","_s","_r","operator","enable","_t","list","defaultListString","_1","_0","defaultListNumber","_4","_3","_2","defaultListValues","_7","_6","_5","defaultListDate","_loadFilterRegister","_subscription$1","debounceTime","pageIndex","force","_filterLocal","localItems","filterInfo","tableItem","columns_1","columns_1_1","toString","trim","toLowerCase","columnValue","indexOf","fValue","replace","cValue","fromDate","Date","begin","toDate","end","columnTime","getTime","fromDateTime","toDateTime","type_1","field_1","sort","tableItemCurrent","tableItemNext","s1","s2","reverse","index","total","_getFilter","_load","filterReq","catch","err","notify","warning","console","_11","_format","results","isArray","_render","sdScroll","scrollTop","reload","onReload","every","_updateSelectedItems","tableFilter","_exportedItems","export","isObservable","toPromise","exportedItems","_allColumns","disabled","_allExportedColumns","_onExport","isCSV","columns_2","_getExportColumns","pageSize_1","maxItemsPerRequest","batch","total_1","pageNumber_1","exportItems_1","items_1","promises_1","handleData","all","results_1","results_1_1","mapping","results_2","totalPage","percent","Math","round","allColumns","allExportedColumns","obj","handle","exportColumn","exportedColumn","transform","some","isExport","displayOnTrue","displayOnFalse","date","toFormat","e_9","columns_3","columns_3_1","exportItems_2","exportItems_2_1","_14","exportCSV","fileName","sheets","sheet","name","_12","exportExcel","onFilterChange","onExpand","rowData","always","multiple","res","finally","onSelect","single","onSelectAll","onClearSelection","clearFilter","setFilter","_loadValues","promises","this_1","valueField","displayField","toObject","columns_4","columns_4_1","this_2","results_3","results_3_1","rawItems","cellStyle","click","tooltip","htmlTemplate","objValues","this_3","values","views","badge","text-align","isHtml","newValue","time","endsWith","Number","isNumber","toVNCurrency","color","icon","badgeType","badgeIcon","e_13","items_2","items_2_1","columns_5","columns_5_1","_initConfiguration$1","setting","subject","getValue","configurationResult","displayColumns","paginator","page","sortChange","switchMap","combineLatest","animations","trigger","style","height","minHeight","visibility","transition","animate","SdExportService","SdTableFilterService","SdScrollDirective","SdQuickAction","MatPaginator","MatSort","ContentChild","SdMaterialSubInformationDefDirective","SdMaterialEmptyDataDefDirective","ContentChildren","SdMaterialCellDefDirective","SdMaterialFooterDefDirective","SdCommandFilterPipe","commands_1","commands_1_1","command","flag","isHidden","e_1","childCommand","hidden_1","Pipe","SdCommandDisablePipe","SdCommandIconPipe","SdCommandTitlePipe","SdFilterExternalPipe","externalFilters_1","externalFilters_1_1","SdFilterColumnPipe","e_2","columnChildren","SdColumnTooltipPipe","_convert","action","fontSet","childAction","key_1","actions_1","actions_1_1","selection","availableActions","availableActions_1","availableActions_1_1","e1","isGrouped","setTimeout","first","SdFilterOperators","symbol","SdColumnInlineFilter","inlineSymbol","_inlineOperator_1","inlineOperatorChange","operators","filterChange","_valueChanges","_subcription","emit","onChangeOperator","_value","inlineOperator","useFilterDate","Output","groupedActions","hasGroup","clear","SdGroupPipe","groupItem","items_1_1","fields_1","fields_1_1","e_4","MatPaginatorIntlCro","_super","firstPageLabel","lastPageLabel","itemsPerPageLabel","nextPageLabel","previousPageLabel","getRangeLabel","String","__","constructor","__extends","MatPaginatorIntl","NgModule","imports","CommonModule","FormsModule","ReactiveFormsModule","MatInputModule","MatFormFieldModule","MatSortModule","MatPaginatorModule","MatTableModule","MatMenuModule","MatIconModule","MatButtonModule","MatTooltipModule","MatProgressSpinnerModule","MatChipsModule","MatRadioModule","MatSlideToggleModule","MatCheckboxModule","MatListModule","MatDividerModule","CdkTableModule","DragDropModule","SdFormModule","SdServiceModule","MatSliderModule","ScrollingModule","SdCommonModule","SdGroupModule","declarations","SdTableQuickAction","SdDesktopCell","SdDesktopCellView","SdDesktopCommand","SdSelectionActionFilterPipe","SdSelectionVisiblePipe","SdSelectionDisablePipe","SdSelectionVisibleSelectAllPipe","exports","providers","DatePipe","DecimalPipe","CdkColumnDef","provide","useClass"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\nimport { SdFilterOperator } from './table-column.model';\r\n\r\nexport interface ISdTableConfiguration {\r\n filter?: {\r\n quickFilter?: boolean;\r\n operator?: {\r\n defaultListString?: SdFilterOperator[];\r\n defaultListNumber?: SdFilterOperator[];\r\n defaultListDate?: SdFilterOperator[];\r\n defaultListValues?: SdFilterOperator[];\r\n };\r\n };\r\n paginate?: {\r\n pageSize?: number;\r\n pages?: number[]\r\n };\r\n translate?: boolean;\r\n}\r\n\r\nexport const DEFAULT_TABLE_CONFIG: ISdTableConfiguration = {\r\n paginate: {\r\n pageSize: 50,\r\n pages: [50, 100, 200]\r\n }\r\n};\r\n\r\nexport const TABLE_CONFIG = new InjectionToken<ISdTableConfiguration>('sd-table.configuration');\r\n","import { Directive, Input, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdMaterialCellDef]'\r\n})\r\nexport class SdMaterialCellDefDirective {\r\n @Input() sdMaterialCellDef: string;\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { Component, ViewChild, Input, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core';\r\nimport { SdModal } from '@sd-angular/core/modal';\r\nimport { SdTableColumn } from '../../models/table-column.model';\r\nimport { SdTableExternalFilter, SdTableFilterRegister } from '../../services/table-filter/table-filter.model';\r\nimport { SdMaterialFilterDefDirective } from '../../directives/sd-material-filter-def.directive';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'sd-popup-filter',\r\n templateUrl: './popup-filter.component.html',\r\n styleUrls: ['./popup-filter.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SdPopupFilter {\r\n @ViewChild(SdModal) modal: SdModal;\r\n #filterRegister: SdTableFilterRegister;\r\n @Input() set filterRegister(value: SdTableFilterRegister) {\r\n this.#filterRegister = value;\r\n }\r\n @Input() externalFilters: SdTableExternalFilter[] = [];\r\n externalFilter: Record<string, any> = {};\r\n inlineExternal: Record<string, boolean> = {};\r\n @Input() columns: SdTableColumn[] = [];\r\n columnFilter: Record<string, any> = {};\r\n inlineColumn: Record<string, boolean> = {};\r\n\r\n @Input() filterDefs: SdMaterialFilterDefDirective[] = [];\r\n filterDef: Record<string, any> = {};\r\n inlineFilterDef: Record<string, boolean> = {};\r\n constructor(private cdRef: ChangeDetectorRef) {}\r\n\r\n ngAfterViewInit() {}\r\n\r\n ngOnDestroy() {}\r\n\r\n open = () => {\r\n const configuration = this.#filterRegister.configuration.get();\r\n this.inlineColumn = JSON.parse(JSON.stringify(configuration.inlineColumn));\r\n this.inlineExternal = JSON.parse(JSON.stringify(configuration.inlineExternal));\r\n this.inlineFilterDef = JSON.parse(JSON.stringify(configuration.inlineFilterDef));\r\n const filterValue = this.#filterRegister.value.get();\r\n this.columnFilter = JSON.parse(JSON.stringify(filterValue.columnFilter));\r\n this.externalFilter = JSON.parse(JSON.stringify(filterValue.externalFilter));\r\n this.filterDef = JSON.parse(JSON.stringify(filterValue.filterDef));\r\n this.modal.open();\r\n this.cdRef.markForCheck();\r\n };\r\n\r\n close = () => {\r\n this.modal.close();\r\n this.cdRef.markForCheck();\r\n };\r\n\r\n onApply = () => {\r\n this.#filterRegister.configuration.set({\r\n inlineColumn: this.inlineColumn,\r\n inlineExternal: this.inlineExternal,\r\n inlineFilterDef: this.inlineFilterDef,\r\n });\r\n this.#filterRegister.value.set({\r\n columnFilter: this.columnFilter,\r\n externalFilter: this.externalFilter,\r\n filterDef: this.filterDef,\r\n });\r\n this.modal.close();\r\n this.cdRef.markForCheck();\r\n };\r\n\r\n onClear() {\r\n this.#filterRegister.value.remove();\r\n this.modal.close();\r\n this.cdRef.markForCheck();\r\n }\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ViewChild,\r\n AfterViewInit,\r\n OnDestroy,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n} from '@angular/core';\r\nimport {\r\n SdTableOptionFilter,\r\n SdTableExternalFilter,\r\n SdTableFilterRegister,\r\n} from '../../services/table-filter/table-filter.model';\r\nimport { SdTableColumn } from '../../models/table-column.model';\r\nimport { SdPopupFilter } from '../popup-filter/popup-filter.component';\r\nimport { BehaviorSubject, Subject, Subscription } from 'rxjs';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\nimport { SdMaterialFilterDefDirective } from '../../directives/sd-material-filter-def.directive';\r\nimport { startWith } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'sd-table-filter',\r\n templateUrl: './table-filter.component.html',\r\n styleUrls: ['./table-filter.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SdTableFilter implements AfterViewInit, OnDestroy {\r\n @ViewChild(SdPopupFilter) popupFilter: SdPopupFilter;\r\n filter: Readonly<SdTableOptionFilter>;\r\n @Input('filter') set _filter(filter: SdTableOptionFilter) {\r\n this.filter = filter;\r\n }\r\n @Input() columns: SdTableColumn[] = [];\r\n externalFilters: SdTableExternalFilter[] = [];\r\n @Input('externalFilters') set _externalFilters(value: SdTableExternalFilter[]) {\r\n this.externalFilters = value || [];\r\n }\r\n @Input() filterDefs: SdMaterialFilterDefDirective[] = [];\r\n filterRegister: SdTableFilterRegister;\r\n @Input('filterRegister') set _filterRegister(value: SdTableFilterRegister) {\r\n this.filterRegister = value;\r\n this.filterRegisterChange.next(this.filterRegister);\r\n }\r\n filterRegisterChange = new BehaviorSubject<SdTableFilterRegister>(null);\r\n\r\n filterDef: any = {};\r\n inlineFilterDef: Record<string, boolean> = {};\r\n columnFilter: any = {};\r\n inlineColumn: Record<string, boolean> = {};\r\n externalFilter: any = {};\r\n inlineExternal: Record<string, boolean> = {};\r\n isMobileOrTablet: boolean;\r\n\r\n #subscription = new Subscription();\r\n\r\n constructor(private ref: ChangeDetectorRef, private deviceService: DeviceDetectorService) {\r\n this.isMobileOrTablet = !this.deviceService.isDesktop();\r\n this.ref.markForCheck();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.#subscription.add(\r\n this.filterRegisterChange.pipe(startWith(this.filterRegister)).subscribe(filterRegister => {\r\n if (this.filterRegister) {\r\n this.#subscription.add(\r\n this.filterRegister.configuration.observer.subscribe(configuration => {\r\n const { inlineColumn, inlineExternal, inlineFilterDef } = configuration;\r\n this.inlineColumn = inlineColumn;\r\n this.inlineExternal = inlineExternal;\r\n this.inlineFilterDef = inlineFilterDef;\r\n this.ref.markForCheck();\r\n })\r\n );\r\n this.#subscription.add(\r\n this.filterRegister.value.observer.subscribe(value => {\r\n const { columnFilter, externalFilter, filterDef } = value;\r\n this.columnFilter = columnFilter;\r\n this.externalFilter = externalFilter;\r\n this.filterDef = filterDef;\r\n this.ref.markForCheck();\r\n })\r\n );\r\n }\r\n })\r\n );\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#subscription.unsubscribe();\r\n }\r\n\r\n onFilter = (item?: SdTableColumn | SdTableExternalFilter) => {\r\n this.filterRegister.value.set({\r\n columnFilter: this.columnFilter,\r\n externalFilter: this.externalFilter,\r\n filterDef: this.filterDef,\r\n });\r\n };\r\n\r\n updateFilter = () => {\r\n this.filterRegister.value.set({\r\n columnFilter: this.columnFilter,\r\n externalFilter: this.externalFilter,\r\n filterDef: this.filterDef,\r\n notReload: true\r\n });\r\n };\r\n\r\n open = () => {\r\n this.popupFilter.open();\r\n };\r\n}\r\n","import { Directive, Input, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdMaterialFilterDef]'\r\n})\r\nexport class SdMaterialFilterDefDirective {\r\n @Input() sdMaterialFilterDef: string;\r\n @Input('defaultShowing') set showing(val: boolean | '') {\r\n this.defaultShowing = (val === '') || val;\r\n }\r\n defaultShowing: boolean;\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdMaterialSubInformationDef]'\r\n})\r\nexport class SdMaterialSubInformationDefDirective {\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { Directive, Input, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdMaterialFooterDef]'\r\n})\r\nexport class SdMaterialFooterDefDirective {\r\n @Input() sdMaterialFooterDef: string;\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdMaterialEmptyDataDef]'\r\n})\r\nexport class SdMaterialEmptyDataDefDirective {\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { Inject, Injectable, Optional } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdSetting, SdSettingService } from '@sd-angular/core/setting';\r\nimport { SdTableOption } from '../models/table-option.model';\r\nimport {\r\n SdColumnConfiguration,\r\n SdTableConfiguration,\r\n SdTableConfigurationResult,\r\n} from '../models/table-option-config.model';\r\nimport { TABLE_CONFIG, ISdTableConfiguration } from '../models/table-configuration.model';\r\n\r\n@Injectable()\r\nexport class SdTableConfigurationService {\r\n #COLUMNS = {\r\n SUBINFORMATION: 'sdSubInformationAction',\r\n COMMAND: 'sdCommand',\r\n SELECTION: 'sdSelection',\r\n GROUP: 'sdGroup',\r\n };\r\n #prefix = 'bd364e28-fe67-48b9-a537-1a306f7d195c';\r\n constructor(\r\n private settingService: SdSettingService,\r\n @Inject(TABLE_CONFIG) @Optional() public gridMaterialConfiguration: ISdTableConfiguration\r\n ) { }\r\n\r\n #getSetting = (gridOption: SdTableOption): SdSetting<SdTableConfiguration> => {\r\n if (gridOption?.key) {\r\n throw new Error('Invalid key');\r\n }\r\n return this.settingService.create<SdTableConfiguration>(\r\n { prefix: this.#prefix, key: gridOption.key },\r\n {\r\n default: this.#default(gridOption),\r\n }\r\n );\r\n };\r\n\r\n loadConfiguration = (gridOption: SdTableOption) => {\r\n if (!gridOption?.key) {\r\n return this.#default(gridOption);\r\n }\r\n const setting = this.#getSetting(gridOption);\r\n return setting.get();\r\n };\r\n\r\n loadConfigurationResult = (gridOption: SdTableOption, configuration: SdTableConfiguration) => {\r\n const result: SdTableConfigurationResult = {\r\n column: {},\r\n fixedColumn: {},\r\n firstColumns: [],\r\n secondColumns: [],\r\n firstHeaders: [],\r\n secondHeaders: [],\r\n displayedColumns: [],\r\n displayedFooters: [],\r\n multipleHeader: false,\r\n };\r\n const { selector, commands, group } = gridOption || {};\r\n if (selector?.visible) {\r\n result.firstHeaders.push(this.#COLUMNS.SELECTION);\r\n result.displayedColumns.push(this.#COLUMNS.SELECTION);\r\n }\r\n if (commands?.length) {\r\n result.firstHeaders.push(this.#COLUMNS.COMMAND);\r\n result.displayedColumns.push(this.#COLUMNS.COMMAND);\r\n }\r\n if (group?.fields?.length) {\r\n result.firstHeaders.push(this.#COLUMNS.GROUP);\r\n result.displayedColumns.push(this.#COLUMNS.GROUP);\r\n }\r\n configuration?.columns\r\n ?.filter(col => !col.invisible)\r\n .forEach(col => {\r\n const column = gridOption?.columns.find(e => e.field === col.origin.field);\r\n if (column) {\r\n result.column[col.origin.field] = {\r\n title: col.title || col.origin.title,\r\n width: col.width || col.origin.width,\r\n };\r\n if (col.fixed) {\r\n result.fixedColumn[col.origin.field] = {\r\n title: col.title || col.origin.title,\r\n width: col.width || col.origin.width,\r\n };\r\n }\r\n result.firstColumns.push({\r\n ...column,\r\n title: col.title || col.origin.title,\r\n width: col.width || col.origin.width,\r\n });\r\n result.firstHeaders.push(col.origin.field);\r\n result.displayedColumns.push(col.origin.field);\r\n if (column.type === 'children') {\r\n column.children?.forEach(childColumn => {\r\n result.secondColumns.push(childColumn);\r\n result.secondHeaders.push(childColumn.field);\r\n result.displayedColumns.push(childColumn.field);\r\n });\r\n }\r\n }\r\n });\r\n if (gridOption.expand) {\r\n result.firstHeaders.push(this.#COLUMNS.SUBINFORMATION);\r\n result.displayedColumns.push(this.#COLUMNS.SUBINFORMATION);\r\n }\r\n result.multipleHeader = result.secondHeaders.length > 0;\r\n // Sub infomation không thể có footer\r\n result.displayedFooters = result.displayedColumns.filter(val => val !== this.#COLUMNS.SUBINFORMATION);\r\n return result;\r\n };\r\n\r\n init = (gridOption: SdTableOption) => {\r\n return this.#getSetting(gridOption);\r\n };\r\n\r\n #default = (gridOption: SdTableOption): SdTableConfiguration => {\r\n const columns: SdColumnConfiguration[] =\r\n gridOption?.columns\r\n ?.filter(e => !e.hidden)\r\n .map(e => ({\r\n origin: {\r\n field: e.field,\r\n title: e.title,\r\n width: e.width,\r\n invisible: e.invisible,\r\n },\r\n invisible: e.invisible,\r\n fixed: false,\r\n })) || [];\r\n return {\r\n columns,\r\n };\r\n };\r\n}\r\n","import * as hash from 'object-hash';\r\nimport { SdTableColumn } from './table-column.model';\r\nimport { SdBadgeColor } from '@sd-angular/core/badge';\r\nexport interface SdTableMetaSelector {\r\n selectable?: boolean;\r\n isSelected?: boolean;\r\n actions?: string[];\r\n}\r\n\r\nexport interface SdTableMetaExpand {\r\n isExpanded?: boolean;\r\n isExpanding?: boolean;\r\n data?: any;\r\n}\r\n\r\nexport interface SdTableDisplay {\r\n tooltip: string;\r\n badge: {\r\n type: 'round' | 'circle' | 'icon';\r\n color: SdBadgeColor;\r\n icon: string;\r\n };\r\n cellStyle: Record<string, string>;\r\n data: string;\r\n isHtml: boolean;\r\n click: () => void;\r\n}\r\n\r\nexport interface SdTableMeta<T> {\r\n id?: string;\r\n display: Record<string, SdTableDisplay>;\r\n selector?: SdTableMetaSelector;\r\n expand?: SdTableMetaExpand;\r\n group?: {\r\n htmlTemplate?: string;\r\n items?: SdTableItem<T>[];\r\n };\r\n}\r\n\r\nexport interface SdTableItem<T = any> {\r\n meta: SdTableMeta<T>;\r\n data: T;\r\n}\r\n\r\nexport const MapToSdTableItem = <T = any>(item: T): SdTableItem<T> => ({\r\n data: item,\r\n meta: {\r\n id: hash(item),\r\n display: {},\r\n expand: {\r\n isExpanding: false,\r\n isExpanded: false,\r\n },\r\n group: {},\r\n selector: { actions: [], isSelected: false, selectable: false },\r\n },\r\n});\r\n","import { Injectable } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdSettingService } from '@sd-angular/core/setting';\r\nimport {\r\n SdTableExternalFilter,\r\n SdTableFilterConfiguration,\r\n SdTableOptionFilter,\r\n SdTableFilterRegister,\r\n SdTableFilterValue,\r\n} from './table-filter.model';\r\nimport { SdTableColumn } from '../../models/table-column.model';\r\nimport { SdMaterialFilterDefDirective } from '../../directives/sd-material-filter-def.directive';\r\nimport { map, startWith } from 'rxjs/operators';\r\n\r\n@Injectable()\r\nexport class SdTableFilterService {\r\n #filterConfiguration = 'GRID-FILTER-CONFIGURATION';\r\n #filterValue = 'GRID-FILTER-VALUE';\r\n #cache: Record<string, SdTableFilterRegister> = {};\r\n constructor(private settingService: SdSettingService) {}\r\n register = (\r\n filter: SdTableOptionFilter,\r\n args: {\r\n id: string;\r\n columns: SdTableColumn[];\r\n externalFilters: SdTableExternalFilter[];\r\n filterDefs: SdMaterialFilterDefDirective[];\r\n }\r\n ) => {\r\n let cacheSession = false;\r\n \r\n const { id, columns, externalFilters } = args;\r\n const tempKey = hash({\r\n id,\r\n columns: columns?.map(e => e.field).filter(field => !!field) || [],\r\n externalFilters: externalFilters?.map(e => e.field).filter(field => !!field) || [],\r\n });\r\n const key = filter?.key || tempKey;\r\n if (!filter?.key) {\r\n cacheSession = true; // Nếu không có key thì chỉ lưu theo session\r\n }\r\n if (!this.#cache[key]) {\r\n // Setting của filter configuration\r\n const filterConfiguration = this.settingService.create<SdTableFilterConfiguration>(\r\n {\r\n prefix: this.#filterConfiguration,\r\n key,\r\n },\r\n {\r\n default: this.#defaultConfiguration(args),\r\n type: cacheSession ? 'session' : undefined,\r\n }\r\n );\r\n // Lấy giá trị configuration merge với giá trị defaultShowing của args nếu như args có thay đổi\r\n filterConfiguration.set(this.#initConfiguration(args, filterConfiguration.get()));\r\n // Setting của filter value\r\n const filterValue = this.settingService.create<SdTableFilterValue>(\r\n {\r\n prefix: this.#filterValue,\r\n key: !filter?.cacheFilter ? tempKey : key,\r\n },\r\n {\r\n default: this.#defaultValue(args),\r\n type: cacheSession || !filter?.cacheFilter ? 'session' : undefined,\r\n }\r\n );\r\n // Lấy giá trị value merge với giá trị default của args nếu như args có thay đổi\r\n filterValue.set(this.#initValue(args, filterValue.get()));\r\n this.#cache[key] = {\r\n configuration: {\r\n get: (): SdTableFilterConfiguration => {\r\n return filterConfiguration.get();\r\n },\r\n set: (configuration: Partial<SdTableFilterConfiguration>): SdTableFilterConfiguration => {\r\n const { inlineColumn, inlineExternal, inlineFilterDef } = configuration;\r\n filterConfiguration.set({\r\n inlineColumn,\r\n inlineExternal,\r\n inlineFilterDef,\r\n });\r\n return {\r\n inlineColumn,\r\n inlineExternal,\r\n inlineFilterDef,\r\n };\r\n },\r\n remove: () => {\r\n filterConfiguration.set(this.#defaultConfiguration(args));\r\n },\r\n observer: filterConfiguration.observer.pipe(\r\n startWith(filterConfiguration.get()),\r\n // Sử dụng mặc định nếu bị reset\r\n map(configuration => configuration || this.#defaultConfiguration(args))\r\n ),\r\n },\r\n value: {\r\n get: (): SdTableFilterValue => {\r\n return filterValue.get();\r\n },\r\n set: (value: Partial<SdTableFilterValue>): SdTableFilterValue => {\r\n const keys = Object.keys(value || {});\r\n const current = filterValue.get();\r\n const { columnOperator, columnFilter, externalFilter, filterDef, notReload } = current;\r\n const updatedFilter = {\r\n // Filter column\r\n columnOperator: keys.includes('columnOperator') ? value?.columnOperator || {} : columnOperator,\r\n columnFilter: keys.includes('columnFilter') ? value?.columnFilter || {} : columnFilter,\r\n // Filter external\r\n externalFilter: keys.includes('externalFilter') ? value?.externalFilter || {} : externalFilter,\r\n // Filter def\r\n filterDef: keys.includes('filterDef') ? value?.filterDef || {} : filterDef,\r\n // Force\r\n notReload: !!notReload,\r\n };\r\n filterValue.set(updatedFilter);\r\n return updatedFilter;\r\n },\r\n remove: () => {\r\n filterValue.set(this.#defaultValue(args));\r\n },\r\n observer: filterValue.observer.pipe(\r\n startWith(filterValue.get()),\r\n // Sử dụng mặc định nếu bị reset\r\n map(value => value || this.#defaultValue(args))\r\n ),\r\n },\r\n };\r\n }\r\n return this.#cache[key];\r\n };\r\n\r\n #defaultConfiguration = (args: {\r\n columns: SdTableColumn[];\r\n externalFilters: SdTableExternalFilter[];\r\n filterDefs: SdMaterialFilterDefDirective[];\r\n }): SdTableFilterConfiguration => {\r\n const { columns, externalFilters, filterDefs } = args;\r\n const inlineColumn: Record<string, boolean> = {};\r\n const inlineExternal: Record<string, boolean> = {};\r\n const inlineFilterDef: Record<string, boolean> = {};\r\n // Filter column\r\n for (const item of columns || []) {\r\n inlineColumn[item.field] = item?.filter?.defaultShowing;\r\n }\r\n // Filter external\r\n for (const item of externalFilters || []) {\r\n inlineExternal[item.field] = item?.defaultShowing;\r\n }\r\n // Filter def\r\n for (const item of filterDefs || []) {\r\n inlineFilterDef[item.sdMaterialFilterDef] = item?.defaultShowing;\r\n }\r\n return {\r\n // Filter column\r\n inlineColumn,\r\n // Filter external\r\n inlineExternal,\r\n // Filter def\r\n inlineFilterDef,\r\n };\r\n };\r\n\r\n #defaultValue = (args: {\r\n columns: SdTableColumn[];\r\n externalFilters: SdTableExternalFilter[];\r\n filterDefs: SdMaterialFilterDefDirective[];\r\n }): SdTableFilterValue => {\r\n const columnFilter: Record<string, any> = {};\r\n const externalFilter: Record<string, any> = {};\r\n const filterDef: Record<string, any> = {};\r\n const { columns, externalFilters, filterDefs } = args;\r\n // Filter column\r\n for (const item of columns || []) {\r\n columnFilter[item.field] = item?.filter?.default;\r\n }\r\n // Filter external\r\n for (const item of externalFilters || []) {\r\n externalFilter[item.field] = item?.default;\r\n }\r\n // Filter def\r\n for (const item of filterDefs || []) {\r\n filterDef[item.sdMaterialFilterDef] = undefined;\r\n }\r\n return {\r\n // Filter column\r\n columnFilter,\r\n // Filter external\r\n externalFilter,\r\n // Filter def\r\n filterDef,\r\n };\r\n };\r\n\r\n #initConfiguration = (\r\n args: {\r\n columns: SdTableColumn[];\r\n externalFilters: SdTableExternalFilter[];\r\n filterDefs: SdMaterialFilterDefDirective[];\r\n },\r\n configuration: SdTableFilterConfiguration\r\n ): SdTableFilterConfiguration => {\r\n const { columns, externalFilters, filterDefs } = args;\r\n const inlineColumn: Record<string, boolean> = {};\r\n const inlineExternal: Record<string, boolean> = {};\r\n const inlineFilterDef: Record<string, boolean> = {};\r\n // Filter column\r\n for (const item of columns || []) {\r\n inlineColumn[item.field] = configuration?.inlineColumn?.[item.field] ?? item?.filter?.defaultShowing;\r\n }\r\n // Filter external\r\n for (const item of externalFilters || []) {\r\n inlineExternal[item.field] = configuration?.inlineExternal?.[item.field] ?? item?.defaultShowing;\r\n }\r\n // Filter def\r\n for (const item of filterDefs || []) {\r\n inlineFilterDef[item.sdMaterialFilterDef] = configuration?.inlineFilterDef?.[item.sdMaterialFilterDef] ?? item?.defaultShowing;\r\n }\r\n return {\r\n // Filter column\r\n inlineColumn,\r\n // Filter external\r\n inlineExternal,\r\n // Filter def\r\n inlineFilterDef,\r\n };\r\n };\r\n\r\n #initValue = (\r\n args: {\r\n columns: SdTableColumn[];\r\n externalFilters: SdTableExternalFilter[];\r\n filterDefs: SdMaterialFilterDefDirective[];\r\n },\r\n value: SdTableFilterValue\r\n ): SdTableFilterValue => {\r\n const columnFilter: Record<string, any> = {};\r\n const externalFilter: Record<string, any> = {};\r\n const filterDef: Record<string, any> = {};\r\n const { columns, externalFilters, filterDefs } = args;\r\n // Filter column\r\n for (const item of columns || []) {\r\n columnFilter[item.field] = value?.columnFilter?.[item.field] ?? item?.filter?.default;\r\n }\r\n // Filter external\r\n for (const item of externalFilters || []) {\r\n if (item.type === 'daterange') {\r\n externalFilter[item.field] = {\r\n from: value?.externalFilter?.[item.field]?.from ?? item.default?.from,\r\n to: value?.externalFilter?.[item.field]?.to ?? item.default?.to,\r\n };\r\n } else {\r\n externalFilter[item.field] = value?.externalFilter?.[item.field] ?? item?.default;\r\n }\r\n }\r\n // Filter def\r\n for (const item of filterDefs || []) {\r\n filterDef[item.sdMaterialFilterDef] = value?.filterDef?.[item.sdMaterialFilterDef] ?? undefined;\r\n }\r\n return {\r\n // Filter column\r\n columnFilter,\r\n // Filter external\r\n externalFilter,\r\n // Filter def\r\n filterDef,\r\n };\r\n };\r\n}\r\n","import { Component, OnInit, ViewChild, EventEmitter, ChangeDetectorRef, Input, HostListener } from '@angular/core';\r\nimport { SdModal } from '@sd-angular/core/modal';\r\nimport { SdNotifyService } from '@sd-angular/core/notify';\r\nimport { SdTableOption } from '../../models/table-option.model';\r\nimport { SdTableConfigurationResult, SdTableConfiguration } from '../../models/table-option-config.model';\r\nimport { SdTableConfigurationService } from '../../services/table-configuration.service';\r\nimport { MatTable } from '@angular/material/table';\r\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport { SdTableColumn } from '../../models/table-column.model';\r\nimport { SdSetting } from '@sd-angular/core/setting';\r\n\r\n@Component({\r\n selector: 'sd-popup-configuration',\r\n templateUrl: './popup-configuration.component.html',\r\n styleUrls: ['./popup-configuration.component.scss'],\r\n})\r\nexport class SdPopupConfiguration implements OnInit {\r\n @Input() gridOption: SdTableOption;\r\n @ViewChild('modal') modal: SdModal;\r\n @ViewChild('table') table: MatTable<SdTableColumn>;\r\n readonly changes = new EventEmitter<SdTableConfigurationResult>();\r\n #setting: SdSetting<SdTableConfiguration>;\r\n configuration: SdTableConfiguration;\r\n isCreatingColumn = false;\r\n selected: {\r\n [key: string]: boolean;\r\n } = {};\r\n disabledDrag = true;\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n private notifyService: SdNotifyService,\r\n private gridConfigurationService: SdTableConfigurationService\r\n ) {}\r\n\r\n ngOnInit() {}\r\n @HostListener('window:mouseup', ['$event'])\r\n mouseUp(event) {\r\n this.disabledDrag = true;\r\n }\r\n open = async () => {\r\n this.#setting = this.gridConfigurationService.init(this.gridOption);\r\n this.configuration = this.#setting.get();\r\n this.modal.open();\r\n };\r\n\r\n onSave = () => {\r\n this.#setting.set(this.configuration);\r\n this.modal.close();\r\n this.ref.detectChanges();\r\n };\r\n\r\n onReset = async () => {\r\n this.notifyService.confirm('Xác nhận đưa tất cả thiết lập về mặc định').then(() => {\r\n this.#setting.remove();\r\n this.modal.close();\r\n this.ref.detectChanges();\r\n });\r\n };\r\n\r\n dropTable(event: CdkDragDrop<SdTableColumn[]>) {\r\n moveItemInArray(this.configuration.columns, event.previousIndex, event.currentIndex);\r\n this.table.renderRows();\r\n }\r\n\r\n handleMouseDown() {\r\n this.disabledDrag = false;\r\n }\r\n\r\n handleMouseUp() {\r\n this.disabledDrag = true;\r\n }\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n ViewChild,\r\n AfterViewInit,\r\n Optional,\r\n Inject,\r\n ChangeDetectorRef,\r\n ContentChildren,\r\n QueryList,\r\n OnInit,\r\n OnDestroy,\r\n ContentChild,\r\n ChangeDetectionStrategy,\r\n} from '@angular/core';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { animate, state, style, transition, trigger } from '@angular/animations';\r\nimport * as uuid from 'uuid';\r\nimport { SdTableFilterRegister, SdTableFilterRequest } from './services/table-filter/table-filter.model';\r\nimport { SdTableOption } from './models/table-option.model';\r\nimport { TABLE_CONFIG, DEFAULT_TABLE_CONFIG, ISdTableConfiguration } from './models/table-configuration.model';\r\nimport { Subscription, isObservable, Subject, combineLatest } from 'rxjs';\r\nimport { SdNotifyService } from '@sd-angular/core/notify';\r\nimport { SdFilterOperator, SdTableColumn } from './models/table-column.model';\r\nimport { SdMaterialCellDefDirective } from './directives/sd-material-cell-def.directive';\r\nimport { debounceTime, map, startWith, switchMap } from 'rxjs/operators';\r\nimport { SdTableFilter } from './components/table-filter/table-filter.component';\r\nimport { SdMaterialFilterDefDirective } from './directives/sd-material-filter-def.directive';\r\nimport { SdMaterialSubInformationDefDirective } from './directives/sd-material-sub-information-def.directive';\r\nimport { SdMaterialFooterDefDirective } from './directives/sd-material-footer-def.directive';\r\nimport { SdMaterialEmptyDataDefDirective } from './directives/sd-material-empty-data-def.directive';\r\nimport { SdExportColumn, SdExportService } from '@sd-angular/core/export';\r\nimport { SdTableConfigurationResult } from './models/table-option-config.model';\r\nimport { SdTableConfigurationService } from './services/table-configuration.service';\r\nimport { SdTableOptionExportColumn } from './models/table-option-export.model';\r\nimport { SdQuickAction } from '@sd-angular/core/quick-action';\r\nimport { MapToSdTableItem, SdTableItem } from './models/table-item.model';\r\nimport { SdScrollDirective } from '@sd-angular/core/common';\r\nimport { SdTableFilterService } from './services/table-filter/table-filter.service';\r\nimport { SdPopupConfiguration } from './components/popup-configuration/popup-configuration.component';\r\n\r\n@Component({\r\n selector: 'sd-table',\r\n templateUrl: './table.component.html',\r\n styleUrls: ['./table.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n animations: [\r\n trigger('detailExpand', [\r\n state('collapsed', style({ height: '0', minHeight: '0', visibility: 'hidden' })),\r\n state('expanded', style({ height: '*', visibility: 'visible' })),\r\n transition('expanded <=> collapsed', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),\r\n ]),\r\n ],\r\n})\r\nexport class SdTable<T = any> implements OnInit, AfterViewInit, OnDestroy {\r\n @ViewChild(SdPopupConfiguration) popupConfiguration: SdPopupConfiguration;\r\n #gridId = uuid.v4();\r\n @ViewChild(SdScrollDirective) sdScroll: SdScrollDirective;\r\n filterRegister: SdTableFilterRegister;\r\n key = uuid.v4();\r\n @ViewChild(SdQuickAction) quickAction: SdQuickAction;\r\n @ViewChild(SdTableFilter) tableFilter: SdTableFilter;\r\n gridOption: SdTableOption<T>;\r\n configuration: SdTableConfigurationResult;\r\n @Input() set option(option: SdTableOption) {\r\n if (option) {\r\n option = this.#initConfiguration(option);\r\n this.gridOption = option;\r\n this.#loadCompleted = false;\r\n const setting = this.gridConfigurationService.init(this.gridOption);\r\n this.#subscription.add(\r\n setting.observer.pipe(startWith(setting.subject.getValue())).subscribe(async configuration => {\r\n const configurationResult = this.gridConfigurationService.loadConfigurationResult(this.gridOption, configuration);\r\n const displayColumns = configurationResult.displayedColumns || [];\r\n await this.#loadValues(this.gridOption.columns.filter(column => displayColumns.includes(column.field)));\r\n this.configuration = configurationResult;\r\n this.#optionChanges.next(this.gridOption);\r\n })\r\n );\r\n }\r\n }\r\n #optionChanges = new Subject<SdTableOption>();\r\n\r\n #localItems: SdTableItem<T>[] = [];\r\n items: SdTableItem<T>[] = [];\r\n selectedItems: T[] = [];\r\n total: number;\r\n\r\n // Loading\r\n isLoading = false;\r\n\r\n // Paginate\r\n isHiddenPaginator = false;\r\n #paginator: MatPaginator;\r\n @ViewChild(MatPaginator) set paginator(paginator: MatPaginator) {\r\n if (paginator && this.#paginator !== paginator) {\r\n this.#paginator = paginator;\r\n this.#subscription.add(\r\n paginator.page\r\n .pipe(\r\n map(() => {\r\n this.#reload.next({\r\n force: false,\r\n });\r\n })\r\n )\r\n .subscribe()\r\n );\r\n }\r\n }\r\n\r\n // Sorting\r\n #sort: MatSort;\r\n @ViewChild(MatSort) set sort(sort: MatSort) {\r\n if (sort && this.#sort !== sort) {\r\n this.#sort = sort;\r\n this.#subscription.add(\r\n sort.sortChange\r\n .pipe(\r\n map(() => {\r\n this.#reload.next({\r\n force: false,\r\n });\r\n })\r\n )\r\n .subscribe()\r\n );\r\n }\r\n }\r\n\r\n // Sub Information\r\n @ContentChild(SdMaterialSubInformationDefDirective)\r\n sdSubInformation: SdMaterialSubInformationDefDirective;\r\n\r\n // Empty Data\r\n @ContentChild(SdMaterialEmptyDataDefDirective)\r\n sdEmptyData: SdMaterialEmptyDataDefDirective;\r\n\r\n // Cell Def\r\n @ContentChildren(SdMaterialCellDefDirective) sdCellDefs = new QueryList<SdMaterialCellDefDirective>();\r\n cellDef: {\r\n [column: string]: SdMaterialCellDefDirective;\r\n } = {};\r\n\r\n // Footer Def\r\n @ContentChildren(SdMaterialFooterDefDirective) sdFooterDefs = new QueryList<SdMaterialFooterDefDirective>();\r\n footerDef: {\r\n [column: string]: SdMaterialFooterDefDirective;\r\n } = {};\r\n hasFooter = false;\r\n\r\n // Filter Def\r\n @ContentChildren(SdMaterialFilterDefDirective) sdFilterDefs = new QueryList<SdMaterialFilterDefDirective>();\r\n filterDefs: SdMaterialFilterDefDirective[] = [];\r\n\r\n // Filter\r\n columnOperator: Record<string, SdFilterOperator> = {};\r\n columnFilter: Record<string, any> = {};\r\n // Subcription\r\n #subscription = new Subscription();\r\n #reload = new Subject<{\r\n force: boolean;\r\n }>();\r\n isExporting = false;\r\n isSelectAll = false;\r\n exportTitle = 'Export';\r\n #loadCompleted = false;\r\n cacheValues: Record<string, any[]> = {};\r\n #cacheObjValues: Record<string, Record<string, string>> = {};\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n @Inject(TABLE_CONFIG)\r\n @Optional()\r\n public tableConfiguration: ISdTableConfiguration,\r\n private gridConfigurationService: SdTableConfigurationService,\r\n private exportService: SdExportService,\r\n private notifyService: SdNotifyService,\r\n private gridFilterService: SdTableFilterService\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.#initCellDef();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.#subscription.add(\r\n this.#reload\r\n .pipe(\r\n debounceTime(200),\r\n switchMap(async data => {\r\n const filterInfo = this.#getFilter();\r\n const result = await this.#load(filterInfo, !this.#loadCompleted || data.force);\r\n this.#loadCompleted = true;\r\n return result;\r\n })\r\n )\r\n .subscribe(this.#render)\r\n );\r\n this.#subscription.add(this.sdCellDefs.changes.pipe(startWith([])).subscribe(this.#initCellDef));\r\n this.#subscription.add(this.sdFooterDefs.changes.pipe(startWith([])).subscribe(this.#initFooterDef));\r\n this.#subscription.add(this.sdFilterDefs.changes.pipe(startWith([])).subscribe(this.#initFilterDef));\r\n this.#subscription.add(\r\n combineLatest([\r\n this.#optionChanges.pipe(startWith(this.gridOption)),\r\n this.sdFilterDefs.changes.pipe(startWith(this.filterDefs)),\r\n ]).subscribe(() => {\r\n this.#loadFilterRegister();\r\n })\r\n );\r\n this.#subscription.add(\r\n this.#optionChanges.subscribe(() => {\r\n if (this.filterRegister) {\r\n this.#reload.next({\r\n force: true,\r\n });\r\n }\r\n })\r\n );\r\n this.ref.detectChanges();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#subscription.unsubscribe();\r\n }\r\n\r\n #initCellDef = () => {\r\n this.cellDef = {};\r\n for (const cellDef of this.sdCellDefs) {\r\n if (cellDef.sdMaterialCellDef) {\r\n this.cellDef[cellDef.sdMaterialCellDef] = cellDef;\r\n }\r\n }\r\n };\r\n\r\n #initFilterDef = () => {\r\n this.filterDefs = [];\r\n for (const filterDef of this.sdFilterDefs) {\r\n this.filterDefs.push(filterDef);\r\n }\r\n };\r\n\r\n #initFooterDef = () => {\r\n this.footerDef = {};\r\n this.hasFooter = false;\r\n for (const footerDef of this.sdFooterDefs) {\r\n if (footerDef.sdMaterialFooterDef) {\r\n this.hasFooter = true;\r\n this.footerDef[footerDef.sdMaterialFooterDef] = footerDef;\r\n }\r\n }\r\n };\r\n\r\n #filterExportInfo = (pageNumber: number, pageSize: number): SdTableFilterRequest => {\r\n const { columnOperator, columnFilter, externalFilter, filterDef } = this.filterRegister.value.get();\r\n return {\r\n columnOperator: columnOperator || {},\r\n rawColumnFilter: columnFilter || {},\r\n rawExternalFilter: externalFilter || {},\r\n rawFilterDef: filterDef || {},\r\n orderBy: this.#sort?.active || '',\r\n orderDirection: this.#sort?.direction || '',\r\n pageNumber,\r\n pageSize,\r\n isExported: true,\r\n };\r\n };\r\n\r\n #initConfiguration = (option: SdTableOption) => {\r\n // Init pagination\r\n option.paginate = {\r\n hidden: option?.paginate?.hidden,\r\n pageSize: option?.paginate?.pageSize ?? this.tableConfiguration?.paginate?.pageSize ?? DEFAULT_TABLE_CONFIG.paginate?.pageSize,\r\n pages: option?.paginate?.pages ?? this.tableConfiguration?.paginate?.pages ?? DEFAULT_TABLE_CONFIG.paginate?.pages,\r\n showFirstLastButtons: option?.paginate?.showFirstLastButtons ?? false,\r\n };\r\n for (const column of option.columns || []) {\r\n if (column.filter?.operator?.enable && !column.filter?.operator?.list?.length) {\r\n if (column.type === 'string') {\r\n column.filter.operator.list = this.tableConfiguration?.filter?.operator?.defaultListString || [];\r\n }\r\n if (column.type === 'number') {\r\n column.filter.operator.list = this.tableConfiguration?.filter?.operator?.defaultListNumber || [];\r\n }\r\n if (column.type === 'values' || column.type === 'lazy-values') {\r\n column.filter.operator.list = this.tableConfiguration?.filter?.operator?.defaultListValues || [];\r\n }\r\n if (column.type === 'date' || column.type === 'datetime') {\r\n column.filter.operator.list = this.tableConfiguration?.filter?.operator?.defaultListDate || [];\r\n }\r\n }\r\n }\r\n return option;\r\n };\r\n\r\n #loadFilterRegister = () => {\r\n // Init filter\r\n if (this.gridOption) {\r\n if (!this.filterRegister) {\r\n this.filterRegister = this.gridFilterService.register(this.gridOption?.filter, {\r\n id: this.#gridId,\r\n columns: this.gridOption?.columns,\r\n externalFilters: this.gridOption?.filter?.externalFilters,\r\n filterDefs: this.filterDefs,\r\n });\r\n this.#subscription.add(\r\n this.filterRegister.value.observer\r\n .pipe(\r\n debounceTime(500),\r\n map(filterValue => {\r\n const { columnOperator, columnFilter, notReload } = filterValue;\r\n this.columnOperator = columnOperator || {};\r\n this.columnFilter = columnFilter;\r\n if (!notReload) {\r\n this.#paginator.pageIndex = 0;\r\n this.#reload.next({\r\n force: false,\r\n });\r\n }\r\n })\r\n )\r\n .subscribe()\r\n );\r\n }\r\n }\r\n };\r\n\r\n #filterLocal = (localItems: SdTableItem<T>[], filterInfo: SdTableFilterRequest) => {\r\n const { columns } = this.gridOption;\r\n const { rawColumnFilter, orderBy, orderDirection, pageSize, pageNumber } = filterInfo;\r\n const items = localItems.filter(tableItem => {\r\n const item = tableItem.data;\r\n for (const column of columns) {\r\n const { field, type } = column;\r\n const filterValue: string = (rawColumnFilter[field] || '').toString().trim().toLowerCase();\r\n const columnValue: string = (item[field] || '').toString().trim().toLowerCase();\r\n if (filterValue) {\r\n if (!columnValue && type !== 'datetime' && type !== 'date' && type !== 'time') {\r\n return false;\r\n }\r\n if (type === 'string') {\r\n if (columnValue.indexOf(filterValue) === -1) {\r\n return false;\r\n }\r\n } else if (type === 'values' || type === 'lazy-values') {\r\n if (columnValue !== filterValue) {\r\n return false;\r\n }\r\n } else if (type === 'number') {\r\n const fValue = +filterValue.replace('>=', '').replace('<=', '').replace('>', '').replace('<', '');\r\n const cValue = +columnValue;\r\n if (fValue || fValue === 0) {\r\n if (!cValue && cValue !== 0) {\r\n return false;\r\n }\r\n if (filterValue.indexOf('>=') > -1 && cValue < fValue) {\r\n return false;\r\n } else if (filterValue.indexOf('<=') > -1 && cValue > fValue) {\r\n return false;\r\n } else if (filterValue.indexOf('<') > -1 && cValue >= fValue) {\r\n return false;\r\n } else if (filterValue.indexOf('>') > -1 && cValue <= fValue) {\r\n return false;\r\n } else if (cValue !== fValue) {\r\n return false;\r\n }\r\n }\r\n } else if (type === 'bool') {\r\n if (filterValue === '1' && columnValue !== '1' && columnValue !== 'true') {\r\n return false;\r\n } else if (filterValue === '0' && columnValue !== '0' && columnValue !== 'false') {\r\n return false;\r\n }\r\n } else if (type === 'datetime' || type === 'date' || type === 'time') {\r\n const from = rawColumnFilter[field]?.from ?? rawColumnFilter[field];\r\n const to = rawColumnFilter[field]?.to ?? rawColumnFilter[field];\r\n const fromDate = Date.begin(from);\r\n const toDate = Date.end(to);\r\n if (fromDate || toDate) {\r\n if (!columnValue) {\r\n return false;\r\n }\r\n\r\n const columnTime = new Date(columnValue).getTime();\r\n const fromDateTime = fromDate?.getTime() || null;\r\n const toDateTime = toDate?.getTime() || null;\r\n\r\n if (fromDateTime && fromDateTime > columnTime) {\r\n return false;\r\n }\r\n if (toDateTime && columnTime > toDateTime) {\r\n return false;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return true;\r\n });\r\n // Sort\r\n if (orderBy && orderDirection) {\r\n const column = columns.find(e => e.field === orderBy);\r\n if (column) {\r\n const { type, field } = column;\r\n items.sort((tableItemCurrent, tableItemNext) => {\r\n const data = tableItemCurrent.data;\r\n const next = tableItemNext.data;\r\n if (type === 'number') {\r\n return (data[field] || 0) - (next[field] || 0);\r\n }\r\n if (type === 'date' || type === 'datetime' || type === 'time') {\r\n const d1 = new Date(data[field] || '').getTime();\r\n const d2 = new Date(data[field] || '').getTime();\r\n return d1 - d2;\r\n }\r\n const s1 = (data[field] || '').toString();\r\n const s2 = (next[field] || '').toString();\r\n if (s1 > s2) {\r\n return 1;\r\n }\r\n if (s1 < s2) {\r\n return -1;\r\n }\r\n return 0;\r\n });\r\n if (orderDirection === 'desc') {\r\n items.reverse();\r\n }\r\n }\r\n }\r\n return {\r\n items: items.filter((item, index) => {\r\n return index >= pageNumber * pageSize && index < (pageNumber + 1) * pageSize;\r\n }),\r\n total: items.length,\r\n };\r\n };\r\n\r\n #getFilter = (): SdTableFilterRequest => {\r\n const { columnOperator, columnFilter, externalFilter, filterDef } = this.filterRegister.value.get();\r\n return {\r\n columnOperator: columnOperator || {},\r\n rawColumnFilter: columnFilter || {},\r\n rawExternalFilter: externalFilter || {},\r\n rawFilterDef: filterDef || {},\r\n orderBy: this.#sort?.active || '',\r\n orderDirection: this.#sort?.direction || '',\r\n pageNumber: this.#paginator?.pageIndex || 0,\r\n pageSize: this.#paginator?.pageSize || this.gridOption?.paginate?.pageSize || 50,\r\n };\r\n };\r\n\r\n #load = async (filterReq: SdTableFilterRequest, force: boolean = true) => {\r\n this.isLoading = true;\r\n if (this.gridOption.type === 'server') {\r\n const { items } = this.gridOption;\r\n const data = await items(filterReq).catch(err => {\r\n this.notifyService.notify.warning('Có lỗi xảy ra');\r\n console.error(err);\r\n return {\r\n items: [] as T[],\r\n total: 0,\r\n };\r\n });\r\n this.isLoading = false;\r\n return {\r\n items: await this.#format(data?.items, this.gridOption.columns),\r\n total: data?.total || 0,\r\n };\r\n }\r\n if (force) {\r\n const { items } = this.gridOption;\r\n const results = items();\r\n let data: T[] = [];\r\n if (results instanceof Promise) {\r\n data = await results.catch(err => {\r\n this.notifyService.notify.warning('Có lỗi xảy ra');\r\n console.error(err);\r\n return [];\r\n });\r\n } else {\r\n data = results;\r\n }\r\n if (!Array.isArray(data)) {\r\n this.notifyService.notify.warning('Dữ liệu không phải là một mảng');\r\n data = [];\r\n }\r\n this.#localItems = await this.#format(data, this.gridOption.columns);\r\n }\r\n this.isLoading = false;\r\n return this.#filterLocal(this.#localItems, filterReq);\r\n };\r\n\r\n #render = async (args: { items: SdTableItem<T>[]; total: number }) => {\r\n this.sdScroll?.scrollTop();\r\n this.items = args?.items || [];\r\n this.total = args?.total || 0;\r\n await this.gridOption?.reload?.onReload?.(this.items);\r\n this.isSelectAll = this.items.every(e => e.meta.selector.isSelected);\r\n this.#updateSelectedItems();\r\n };\r\n\r\n reload = async (force: boolean = true) => {\r\n this.tableFilter?.updateFilter?.();\r\n const data = await this.#load(this.#getFilter(), force);\r\n this.#render(data);\r\n };\r\n\r\n #exportedItems = async (pageNumber: number = 0, pageSize: number = 10000) => {\r\n if (this.gridOption.export?.items) {\r\n // const exportedItems = this.gridOption.export?.items(this.#filterExportInfo(pageNumber, pageSize));\r\n let result = this.gridOption.export?.items(this.#filterExportInfo(pageNumber, pageSize));\r\n if (Array.isArray(result)) {\r\n return result;\r\n }\r\n if (isObservable<any[]>(result)) {\r\n result = result.toPromise();\r\n }\r\n if (isObservable<{ items: any[]; total: number }>(result)) {\r\n result = result.toPromise();\r\n }\r\n return await result;\r\n } else {\r\n const filterInfo = this.#filterExportInfo(pageNumber, pageSize);\r\n if (this.gridOption.type === 'server') {\r\n let result = this.gridOption.items(filterInfo);\r\n return await result;\r\n } else {\r\n let exportedItems: any[] = [];\r\n if (typeof this.gridOption.items === 'function') {\r\n const results = this.gridOption.items();\r\n if (results instanceof Promise) {\r\n exportedItems = await results;\r\n } else {\r\n exportedItems = results;\r\n }\r\n } else {\r\n exportedItems = this.gridOption.items;\r\n }\r\n return this.#filterLocal(exportedItems, filterInfo);\r\n }\r\n }\r\n };\r\n\r\n #allColumns = (): SdTableColumn[] => {\r\n const columns: SdTableColumn[] = [];\r\n this.gridOption.columns\r\n .filter(e => !e.export?.disabled)\r\n .forEach(column => {\r\n if (column.type === 'children') {\r\n column.children\r\n ?.filter(e => !e.export?.disabled)\r\n .forEach(childColumn => {\r\n columns.push(childColumn);\r\n });\r\n return;\r\n }\r\n columns.push(column);\r\n });\r\n return columns;\r\n };\r\n\r\n #allExportedColumns = (): SdTableOptionExportColumn[] => {\r\n return this.gridOption.export?.columns?.filter(e => !e.export?.disabled) || [];\r\n };\r\n\r\n #onExport = async (isCSV?: boolean) => {\r\n try {\r\n let columns = this.#getExportColumns();\r\n const pageSize = this.gridOption?.export?.maxItemsPerRequest || 1000;\r\n const batch = this.gridOption?.export?.batch || 1;\r\n let total = this.total;\r\n let pageNumber = 0;\r\n let exportItems = [];\r\n this.isExporting = true;\r\n const items: any[] = [];\r\n let promises: Promise<\r\n | any[]\r\n | {\r\n items: any[];\r\n total: number;\r\n }\r\n >[] = [];\r\n const handleData = async () => {\r\n const results = await Promise.all(promises);\r\n promises = [];\r\n exportItems = [];\r\n for (const result of results) {\r\n if ('items' in result) {\r\n exportItems = [...exportItems, ...result.items];\r\n total = result.total;\r\n } else {\r\n exportItems = [...exportItems, ...result];\r\n }\r\n }\r\n if (this.gridOption.export?.mapping) {\r\n const results = this.gridOption.export.mapping(exportItems);\r\n if (results instanceof Promise) {\r\n exportItems = await results;\r\n } else {\r\n exportItems = results;\r\n }\r\n }\r\n const totalPage = total / pageSize;\r\n const percent = Math.round(((pageNumber - 1) * 100.0) / totalPage);\r\n this.exportTitle = `Exporting...${percent}%`;\r\n const allColumns = this.#allColumns();\r\n const allExportedColumns = this.#allExportedColumns();\r\n for (const item of exportItems) {\r\n const obj: any = {};\r\n const handle = async (exportColumn: SdExportColumn) => {\r\n obj[exportColumn.field] = item[exportColumn.field];\r\n const column = allColumns.find(e => e.field === exportColumn.field);\r\n const exportedColumn = allExportedColumns.find(e => e.field === exportColumn.field);\r\n if (exportedColumn?.transform) {\r\n obj[exportedColumn.field] = exportedColumn.transform(item[exportedColumn.field], item);\r\n return;\r\n }\r\n if (!column) {\r\n return;\r\n }\r\n if (column.type === 'children') {\r\n column?.children.forEach(childColumn => handle(childColumn));\r\n return;\r\n }\r\n if (!columns.some(e => e.field === column.field)) {\r\n return;\r\n }\r\n if (column.transform) {\r\n const transform = column.transform(item[column.field], item, {\r\n isExport: true,\r\n });\r\n if (transform instanceof Promise) {\r\n obj[column.field] = await transform;\r\n } else {\r\n obj[column.field] = transform;\r\n }\r\n obj[column.field] = obj[column.field] ?? '';\r\n } else if (item[column.field] === undefined || item[column.field] === null || item[column.field] === '') {\r\n obj[column.field] = '';\r\n } else if (column.type === 'string' || column.type === 'number') {\r\n // Nếu cell là string hoặc number thì gán bằng chính nó\r\n obj[column.field] = item[column.field];\r\n } else if (column.type === 'bool') {\r\n // Nếu là bool thì gán bằng giá trị trueValue và falseValue (nếu có), mặc định là TRUE/FALSE\r\n if (item[column.field]) {\r\n obj[column.field] = column.option?.displayOnTrue || 'True';\r\n } else if (obj[column.field] !== undefined && obj[column.field] !== null) {\r\n obj[column.field] = column.option?.displayOnFalse || 'False';\r\n }\r\n } else if (column.type === 'date') {\r\n let date = item[column.field];\r\n // Nếu là date thì convert theo đúng format\r\n obj[column.field] = Date.toFormat(date, 'dd/MM/yyyy');\r\n } else if (column.type === 'datetime') {\r\n let date = item[column.field];\r\n // Nếu là datetime thì convert theo đúng format\r\n obj[column.field] = Date.toFormat(date, 'dd/MM/yyyy HH:mm');\r\n } else if (column.type === 'time') {\r\n let date = item[column.field];\r\n // Nếu là time thì convert theo đúng format\r\n obj[column.field] = Date.toFormat(date, 'HH:mm');\r\n } else if (column.type === 'values') {\r\n // Nếu là values thì lấy giá trị của value được chọn\r\n obj[column.field] = this.#cacheObjValues[column.field]?.[item[column.field]] || item[column.field];\r\n } else {\r\n obj[column.field] = item[column.field];\r\n }\r\n };\r\n // this.gridOption.columns.forEach(handle);\r\n for (const exportColumn of columns) {\r\n await handle(exportColumn);\r\n }\r\n items.push(obj);\r\n }\r\n };\r\n while (pageNumber * pageSize < total) {\r\n promises.push(this.#exportedItems(pageNumber, pageSize));\r\n pageNumber++;\r\n if (promises.length < batch) {\r\n continue;\r\n }\r\n await handleData();\r\n }\r\n if (promises.length > 0) {\r\n await handleData();\r\n }\r\n if (isCSV) {\r\n await this.exportService.exportCSV({\r\n columns,\r\n items,\r\n fileName: this.gridOption?.export?.fileName,\r\n });\r\n return;\r\n }\r\n const sheets: {\r\n name: string;\r\n items: any[];\r\n fields: string[];\r\n }[] = [];\r\n if (Array.isArray(this.gridOption?.export?.sheets)) {\r\n for (const sheet of this.gridOption.export.sheets) {\r\n if (sheet.name && sheet.items && sheet.fields) {\r\n if (Array.isArray(sheet.items)) {\r\n sheets.push({\r\n name: sheet.name,\r\n items: sheet.items,\r\n fields: sheet.fields,\r\n });\r\n } else {\r\n sheets.push({\r\n name: sheet.name,\r\n items: await sheet.items(),\r\n fields: sheet.fields,\r\n });\r\n }\r\n }\r\n }\r\n }\r\n await this.exportService.export({\r\n columns,\r\n items,\r\n fileName: this.gridOption?.export?.fileName,\r\n sheets,\r\n });\r\n return;\r\n } finally {\r\n this.isExporting = false;\r\n this.exportTitle = `Export`;\r\n this.ref.detectChanges();\r\n }\r\n };\r\n\r\n #getExportColumns = () => {\r\n const columns = [\r\n ...this.gridOption.columns.filter(e => !e.export?.disabled),\r\n ...(this.gridOption.export?.columns?.filter(e => !e.export?.disabled) || []),\r\n ];\r\n return columns;\r\n };\r\n\r\n exportExcel = () => {\r\n this.#onExport();\r\n };\r\n\r\n exportCSV = () => {\r\n this.#onExport(true);\r\n };\r\n\r\n onFilterChange = () => {\r\n this.tableFilter?.updateFilter?.();\r\n this.filterRegister.value.set({\r\n columnOperator: this.columnOperator || {},\r\n columnFilter: this.columnFilter,\r\n });\r\n };\r\n\r\n onExpand = async (rowData: SdTableItem<T>) => {\r\n if (this.gridOption.expand?.always) {\r\n return;\r\n }\r\n if (rowData.meta.expand.isExpanding) {\r\n return;\r\n }\r\n if (rowData.meta.expand.isExpanded) {\r\n rowData.meta.expand.isExpanded = false;\r\n return;\r\n }\r\n const data = this.gridOption?.expand?.onExpand?.(rowData.data);\r\n if (!this.gridOption.expand?.multiple) {\r\n this.items.forEach(item => (item.meta.expand.isExpanding = item.meta.expand.isExpanded = false));\r\n }\r\n if (data instanceof Promise) {\r\n rowData.meta.expand.isExpanding = true;\r\n data\r\n .then(res => {\r\n rowData.meta.expand.data = res;\r\n rowData.meta.expand.isExpanded = true;\r\n })\r\n .finally(() => (rowData.meta.expand.isExpanding = false));\r\n } else {\r\n rowData.meta.expand.data = data;\r\n rowData.meta.expand.isExpanded = true;\r\n }\r\n };\r\n\r\n onSelect = (rowData: SdTableItem<T>) => {\r\n if (rowData.meta.group?.items?.length) {\r\n rowData.meta.group.items.forEach(e => (e.meta.selector.isSelected = rowData.meta.selector.isSelected));\r\n this.gridOption.selector?.onSelect?.(\r\n rowData.data,\r\n this.items.filter(e => e.meta.selector.isSelected).map(e => e.data)\r\n );\r\n this.isSelectAll = this.items.every(e => e.meta.selector.isSelected);\r\n this.#updateSelectedItems();\r\n } else {\r\n if (this.gridOption.selector?.single) {\r\n this.items.filter(e => e !== rowData).forEach(e => (e.meta.selector.isSelected = false));\r\n this.#updateSelectedItems();\r\n return;\r\n }\r\n this.gridOption.selector?.onSelect?.(\r\n rowData.data,\r\n this.items.filter(e => e.meta.selector.isSelected).map(e => e.data)\r\n );\r\n this.isSelectAll = this.items.every(e => e.meta.selector.isSelected);\r\n this.#updateSelectedItems();\r\n }\r\n };\r\n\r\n onSelectAll = () => {\r\n this.items?.forEach(e => {\r\n if (e.meta.selector.selectable && (!this.gridOption?.selector?.actions?.length || e.meta.selector.actions?.length)) {\r\n e.meta.selector.isSelected = this.isSelectAll;\r\n }\r\n });\r\n this.gridOption.selector?.onSelectAll?.(this.items.filter(e => e.meta.selector.isSelected).map(e => e.data));\r\n this.#updateSelectedItems();\r\n };\r\n\r\n onClearSelection = (items?: SdTableItem<T>[]) => {\r\n items = items || this.items;\r\n this.isSelectAll = false;\r\n items?.forEach(e => (e.meta.selector.isSelected = false));\r\n this.#updateSelectedItems();\r\n };\r\n\r\n #updateSelectedItems = () => {\r\n this.selectedItems = this.items.filter(item => item.meta.selector.isSelected).map(item => item.data);\r\n this.ref.detectChanges();\r\n };\r\n\r\n clearFilter = () => {\r\n this.filterRegister.value.remove();\r\n };\r\n\r\n setFilter = (args: { columnFilter?: Record<string, any>; externalFilter?: Record<string, any>; filterDef?: Record<string, any> }) => {\r\n const { columnFilter, externalFilter, filterDef } = args || {};\r\n if (columnFilter) {\r\n this.columnFilter = columnFilter;\r\n }\r\n this.filterRegister.value.set({\r\n columnFilter,\r\n externalFilter,\r\n filterDef,\r\n });\r\n };\r\n\r\n get gridItems(): T[] {\r\n return this.items.map(item => item.data);\r\n }\r\n\r\n detectChanges = () => this.ref.detectChanges();\r\n\r\n #loadValues = async (columns: SdTableColumn[]) => {\r\n const promises: Promise<{\r\n key: string;\r\n valueField: string;\r\n displayField: string;\r\n data: any[];\r\n }>[] = [];\r\n for (const column of columns) {\r\n if (column.type === 'values' && !this.cacheValues[column.field]) {\r\n if (typeof column.option.items === 'function') {\r\n promises.push(\r\n column.option\r\n .items()\r\n .then(data => ({\r\n key: column.field,\r\n valueField: column.option.valueField,\r\n displayField: column.option.displayField,\r\n data: Array.isArray(data) ? data : [],\r\n }))\r\n .catch(err => {\r\n console.error(err);\r\n return {\r\n key: column.field,\r\n valueField: column.option.valueField,\r\n displayField: column.option.displayField,\r\n data: [],\r\n };\r\n })\r\n );\r\n } else {\r\n this.cacheValues[column.field] = column.option.items.map(e => ({\r\n [column.option.valueField]: e?.[column.option.valueField],\r\n [column.option.displayField]: e?.[column.option.displayField],\r\n }));\r\n this.#cacheObjValues[column.field] = Array.toObject(this.cacheValues[column.field], column.option.valueField);\r\n }\r\n }\r\n }\r\n if (promises.length) {\r\n const results = await Promise.all(promises);\r\n for (const result of results) {\r\n this.cacheValues[result.key] = result.data.map(e => ({\r\n [result.valueField]: e?.[result.valueField],\r\n [result.displayField]: e?.[result.displayField],\r\n }));\r\n this.#cacheObjValues[result.key] = Array.toObject(this.cacheValues[result.key], result.valueField);\r\n }\r\n }\r\n };\r\n\r\n #format = async <T = any>(rawItems: T[], columns: SdTableColumn[]) => {\r\n const items = rawItems.map(MapToSdTableItem);\r\n for (const column of columns) {\r\n // Clickable\r\n const { field, cellStyle, click, tooltip, htmlTemplate, transform } = column;\r\n let objValues: Record<string, string> = {};\r\n if (column.type === 'values') {\r\n objValues = this.#cacheObjValues[field] || {};\r\n }\r\n if (column.type === 'lazy-values') {\r\n const values = items.map(e => e.data?.[field]).filter(val => !!val || val === 0);\r\n const {\r\n option: { views },\r\n } = column;\r\n objValues = Array.toObject(await views(values), column.option.valueField) || {};\r\n }\r\n for (const item of items) {\r\n const rowData = item.data;\r\n const value = rowData?.[field];\r\n item.meta.display[field] = {\r\n badge: undefined,\r\n cellStyle: column.type === 'number' && { 'text-align': 'right!important' },\r\n data: value,\r\n isHtml: false,\r\n tooltip: typeof tooltip === 'function' ? tooltip(value, rowData) : undefined,\r\n click: typeof click === 'function' ? () => click(value, rowData) : undefined,\r\n };\r\n const display = item.meta.display[field];\r\n // Display\r\n if (typeof htmlTemplate === 'function') {\r\n display.isHtml = true;\r\n display.data = htmlTemplate(value, rowData);\r\n } else if (typeof transform === 'function') {\r\n const newValue = transform(value, rowData);\r\n if (newValue instanceof Promise) {\r\n display.data = await newValue;\r\n } else {\r\n display.data = newValue;\r\n }\r\n } else {\r\n if (column.type === 'date' || column.type === 'datetime' || column.type === 'time') {\r\n const date = Date.toFormat(value, 'dd/MM/yyyy');\r\n let time = Date.toFormat(value, 'HH:mm:ss');\r\n if (time?.endsWith('00')) {\r\n time = Date.toFormat(value, 'HH:mm');\r\n }\r\n if (column.type === 'date' || column.type === 'datetime') {\r\n if (column.type === 'datetime') {\r\n display.isHtml = true;\r\n display.data = `<span class=\"d-block T14R text-black400\">${time}</span><span class=\"d-block T14R\">${date}</span>`;\r\n } else {\r\n display.data = date;\r\n }\r\n }\r\n if (column.type === 'time') {\r\n display.data = time;\r\n }\r\n }\r\n if (column.type === 'values' || column.type === 'lazy-values') {\r\n display.data = objValues[value]?.[column.option.displayField] || value;\r\n }\r\n if (column.type === 'number' && Number.isNumber(value)) {\r\n display.data = Number.toVNCurrency(value);\r\n }\r\n if (column.type === 'bool') {\r\n const { option } = column;\r\n if (value !== undefined && value !== null && value !== '') {\r\n display.data = value === true ? option?.displayOnTrue || 'True' : option?.displayOnFalse || 'False';\r\n } else {\r\n display.data = null;\r\n }\r\n }\r\n // Badge\r\n if ((column.type === 'string' || column.type === 'number' || column.type === 'values') && column.badge) {\r\n display.badge = {\r\n type: !column?.badgeType ? 'round' : column.badgeType,\r\n color: column.badge(value, rowData),\r\n icon: column.badgeIcon?.(value, rowData),\r\n };\r\n } else if (column.type === 'bool') {\r\n display.badge = {\r\n type: 'circle',\r\n color: !!value ? 'success' : 'danger',\r\n icon: null,\r\n };\r\n }\r\n }\r\n }\r\n }\r\n return items;\r\n };\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdTableCommand, SdTableCommandNormal } from '../models/table-command.model';\r\nimport { SdTableItem } from '../models/table-item.model';\r\n@Pipe({\r\n name: 'commandFilter'\r\n})\r\nexport class SdCommandFilterPipe implements PipeTransform {\r\n async transform(item: SdTableItem, commands: SdTableCommand[]): Promise<SdTableCommand[]> {\r\n const results: SdTableCommand[] = [];\r\n if (!commands) {\r\n return results;\r\n }\r\n for (const command of commands) {\r\n let flag = false;\r\n const { hidden } = command;\r\n if (hidden === undefined) {\r\n flag = true;\r\n } else if (typeof (hidden) === 'boolean') {\r\n if (!hidden) {\r\n flag = true;\r\n }\r\n } else {\r\n const isHidden = hidden(item);\r\n if (isHidden instanceof Promise) {\r\n if (!await isHidden) {\r\n flag = true;\r\n }\r\n } else {\r\n if (!isHidden) {\r\n flag = true;\r\n }\r\n }\r\n }\r\n if (flag) {\r\n if ('children' in command) {\r\n const children: SdTableCommandNormal[] = [];\r\n for (const childCommand of command.children) {\r\n const { hidden } = childCommand;\r\n if (hidden === undefined) {\r\n children.push(childCommand);\r\n } else if (typeof (hidden) === 'boolean') {\r\n if (!hidden) {\r\n children.push(childCommand);\r\n }\r\n } else {\r\n const isHidden = hidden(item);\r\n if (isHidden instanceof Promise) {\r\n if (!await isHidden) {\r\n children.push(childCommand);\r\n }\r\n } else {\r\n if (!isHidden) {\r\n children.push(childCommand);\r\n }\r\n }\r\n }\r\n }\r\n if (children.length > 0) {\r\n results.push({ ...command, children });\r\n }\r\n } else {\r\n results.push(command);\r\n }\r\n }\r\n }\r\n return results;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdTableCommand } from '../models/table-command.model';\r\n@Pipe({\r\n name: 'commandDisable'\r\n})\r\nexport class SdCommandDisablePipe implements PipeTransform {\r\n transform(item: any, command: SdTableCommand): boolean {\r\n if (!command?.disabled) {\r\n return false;\r\n }\r\n if (typeof (command.disabled) === 'boolean') {\r\n return command.disabled;\r\n }\r\n return command.disabled(item);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdTableCommand } from '../models/table-command.model';\r\n@Pipe({\r\n name: 'commandIcon'\r\n})\r\nexport class SdCommandIconPipe implements PipeTransform {\r\n transform(command: SdTableCommand, item: any): string {\r\n if (!command?.icon) {\r\n return '';\r\n }\r\n if (typeof (command.icon) === 'string') {\r\n return command.icon;\r\n }\r\n return command.icon(item);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdTableCommand } from '../models/table-command.model';\r\n@Pipe({\r\n name: 'commandTitle'\r\n})\r\nexport class SdCommandTitlePipe implements PipeTransform {\r\n transform(command: SdTableCommand, item: any): string {\r\n if (!command?.title) {\r\n return '';\r\n }\r\n if (typeof (command.title) === 'string') {\r\n return command.title;\r\n }\r\n return command.title(item);\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input, QueryList } from '@angular/core';\r\nimport { SdTableColumn } from '../../models/table-column.model';\r\nimport { SdTableOption } from '../../models/table-option.model';\r\nimport { SdTableItem } from '../../models/table-item.model';\r\n\r\n@Component({\r\n selector: 'sd-desktop-cell-view',\r\n templateUrl: './desktop-cell-view.component.html',\r\n styleUrls: ['./desktop-cell-view.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdDesktopCellView {\r\n @Input() sdId: string;\r\n @Input() key: string;\r\n @Input() column: SdTableColumn;\r\n @Input() item: SdTableItem;\r\n @Input() gridOption: SdTableOption;\r\n constructor(\r\n ) { }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdTableExternalFilter } from '../services/table-filter/table-filter.model';\r\n@Pipe({\r\n name: 'sdFilterExternal'\r\n})\r\nexport class SdFilterExternalPipe implements PipeTransform {\r\n transform(externalFilters: SdTableExternalFilter[], field?: string): SdTableExternalFilter[] {\r\n const results: SdTableExternalFilter[] = [];\r\n if (!externalFilters) {\r\n return results;\r\n }\r\n for (const filter of externalFilters) {\r\n results.push(filter);\r\n }\r\n return results.filter(e => !field || e.field === field);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdTableColumn } from '../models/table-column.model';\r\n@Pipe({\r\n name: 'sdFilterColumn'\r\n})\r\nexport class SdFilterColumnPipe implements PipeTransform {\r\n transform(columns: SdTableColumn[], field?: string): SdTableColumn[] {\r\n const results: SdTableColumn[] = [];\r\n if (!columns) {\r\n return results;\r\n }\r\n for (const column of columns) {\r\n if (column.type === 'children') {\r\n for (const columnChildren of column?.children) {\r\n if (!columnChildren.filter?.disabled) {\r\n results.push(columnChildren);\r\n }\r\n }\r\n continue;\r\n }\r\n if (!column.filter?.disabled) {\r\n results.push(column);\r\n }\r\n }\r\n return results.filter(e => !field || e.field === field);\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\nimport { SdTableCommand } from '../../models/table-command.model';\r\nimport { SdTableItem } from '../../models/table-item.model';\r\n\r\n@Component({\r\n selector: 'sd-desktop-command',\r\n templateUrl: './desktop-command.component.html',\r\n styleUrls: ['./desktop-command.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdDesktopCommand {\r\n @Input() item: SdTableItem;\r\n @Input() commands: SdTableCommand[] = [];\r\n constructor() {\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdTableColumn } from '../models/table-column.model';\r\n@Pipe({\r\n name: 'columnTooltip'\r\n})\r\nexport class SdColumnTooltipPipe implements PipeTransform {\r\n constructor() { }\r\n transform(value: any, rowData: any, column: SdTableColumn): string {\r\n if (column?.tooltip) {\r\n return column.tooltip(value, rowData);\r\n }\r\n return null;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdTableItem } from '../models/table-item.model';\r\nimport { SdTableAction, SdTableActionNormal } from '../models/table-option-selector.model';\r\n@Pipe({\r\n name: 'selectionActionFilter'\r\n})\r\nexport class SdSelectionActionFilterPipe implements PipeTransform {\r\n #convert = (action: SdTableAction): SdTableAction => {\r\n if ('children' in action) {\r\n return {\r\n title: action.title,\r\n icon: action.icon,\r\n fontSet: action.fontSet,\r\n tooltip: action.tooltip,\r\n color: action.color,\r\n type: action.type,\r\n children: action.children.map(e => ({\r\n title: e.title,\r\n icon: e.icon,\r\n color: action.color,\r\n type: action.type,\r\n fontSet: e.fontSet,\r\n tooltip: e.tooltip,\r\n click: e.click\r\n }))\r\n };\r\n }\r\n return {\r\n title: action.title,\r\n icon: action.icon,\r\n color: action.color,\r\n type: action.type,\r\n fontSet: action.fontSet,\r\n tooltip: action.tooltip,\r\n click: action.click\r\n };\r\n\r\n }\r\n transform = (selectedItems: SdTableItem[], actions: SdTableAction[]): SdTableAction[] => {\r\n const results: SdTableAction[] = [];\r\n if (!actions?.length || !selectedItems?.length) {\r\n return [];\r\n }\r\n for (const action of actions) {\r\n if ('children' in action) {\r\n const children: SdTableActionNormal[] = [];\r\n for (const childAction of action.children) {\r\n const key = hash(childAction);\r\n if (selectedItems.every(e => e.meta.selector.actions.includes(key))) {\r\n children.push(childAction);\r\n }\r\n }\r\n if (children.length > 0) {\r\n results.push({ ...action, children });\r\n }\r\n } else {\r\n const key = hash(action);\r\n if (selectedItems.every(e => e.meta.selector.actions.includes(key))) {\r\n results.push(action);\r\n }\r\n }\r\n }\r\n return results.map(result => this.#convert(result));\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdTableOptionSelector } from '../models/table-option-selector.model';\r\nimport { SdTableItem } from '../models/table-item.model';\r\n@Pipe({\r\n name: 'selectionDisable'\r\n})\r\nexport class SdSelectionDisablePipe implements PipeTransform {\r\n transform = (selectedItems: SdTableItem[], rowData: SdTableItem, selection: SdTableOptionSelector): boolean => {\r\n const { disabled, actions } = selection;\r\n if (!actions?.length) {\r\n if (!disabled) {\r\n rowData.meta.selector.selectable = true;\r\n return false;\r\n }\r\n rowData.meta.selector.selectable = !disabled(rowData, selectedItems);\r\n return !rowData.meta.selector.selectable;\r\n }\r\n // Lọc các action theo selectedItems hiện tại\r\n const availableActions = actions.filter(action => {\r\n if ('children' in action) {\r\n for (const childAction of action.children) {\r\n const key = hash(childAction);\r\n if (selectedItems.every(e => e.meta.selector.actions.includes(key))) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n } else {\r\n const key = hash(action);\r\n return selectedItems.every(e => e.meta.selector.actions.includes(key));\r\n }\r\n });\r\n // Kiểm tra rowData có action nào thỏa hay ko, nếu ko thì disabled\r\n for (const action of availableActions) {\r\n if ('children' in action) {\r\n for (const childAction of action.children) {\r\n if(rowData.meta.selector.actions.includes(hash(childAction))) {\r\n return false;\r\n }\r\n }\r\n } else {\r\n if(rowData.meta.selector.actions.includes(hash(action))) {\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdTableOptionSelector } from '../models/table-option-selector.model';\r\nimport { SdTableItem } from '../models/table-item.model';\r\n@Pipe({\r\n name: 'selectionVisibleSelectAll'\r\n})\r\nexport class SdSelectionVisibleSelectAllPipe implements PipeTransform {\r\n transform = async (items: SdTableItem[], selection: SdTableOptionSelector): Promise<boolean> => {\r\n const { actions } = selection;\r\n if (!actions?.length) {\r\n return true;\r\n }\r\n if (!items.length) {\r\n return false;\r\n }\r\n if (actions.some(e => ('children' in e && e.children.some(e1 => e1.isGrouped)) || e.isGrouped)) {\r\n return false;\r\n }\r\n await new Promise(resolve => setTimeout(resolve, 500));\r\n const first = items.find(t => t.meta.selector.actions?.length);\r\n if (first) {\r\n for (const action of first.meta.selector.actions) {\r\n if (items.filter(t => t.meta.selector.actions?.length).every(e => e.meta.selector.actions.includes(action))) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input, QueryList } from '@angular/core';\r\nimport { SdMaterialCellDefDirective } from '../../directives/sd-material-cell-def.directive';\r\nimport { SdTableColumn } from '../../models/table-column.model';\r\nimport { SdTableOption } from '../../models/table-option.model';\r\nimport { SdTableItem } from '../../models/table-item.model';\r\n\r\n@Component({\r\n selector: 'sd-desktop-cell',\r\n templateUrl: './desktop-cell.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdDesktopCell {\r\n @Input() sdId: string;\r\n @Input() value: any;\r\n @Input() key: string;\r\n @Input() column: SdTableColumn;\r\n @Input() item: SdTableItem;\r\n @Input() gridOption: SdTableOption;\r\n @Input() cellDef: {\r\n [column: string]: SdMaterialCellDefDirective\r\n } = {};\r\n @Input() idx: number;\r\n constructor(\r\n ) { }\r\n}\r\n","import { SdBadgeColor } from '@sd-angular/core/badge';\r\n\r\nexport type SdTableColumn<T = any> =\r\n | SdTableColumnText<T>\r\n | SdTableColumnNumber<T>\r\n | SdTableColumnBool<T>\r\n | SdTableColumnDate<T>\r\n | SdTableColumnValues<T>\r\n | SdTableColumnLazyValues<T>\r\n | SdTableColumnChildren<T>;\r\n\r\nexport type SdFilterOperator =\r\n | 'EQUAL'\r\n | 'NOT_EQUAL'\r\n | 'CONTAIN'\r\n | 'NOT_CONTAIN'\r\n | 'IN'\r\n | 'NOT_IN'\r\n | 'START_WITH'\r\n | 'END_WITH'\r\n | 'GREATER_THAN'\r\n | 'LESS_THAN'\r\n | 'GREATER_OR_EQUAL'\r\n | 'LESS_OR_EQUAL';\r\n\r\nexport const SdFilterOperators: { value: SdFilterOperator; symbol?: string; display: string }[] = [\r\n {\r\n value: 'EQUAL',\r\n symbol: '=',\r\n display: 'Bằng',\r\n },\r\n {\r\n value: 'NOT_EQUAL',\r\n symbol: '≠',\r\n display: 'Không bằng',\r\n },\r\n {\r\n value: 'GREATER_THAN',\r\n symbol: '>',\r\n display: 'Lớn hơn',\r\n },\r\n {\r\n value: 'LESS_THAN',\r\n symbol: '<',\r\n display: 'Nhỏ hơn',\r\n },\r\n {\r\n value: 'GREATER_OR_EQUAL',\r\n symbol: '≥',\r\n display: 'Lớn hơn, hoặc bằng',\r\n },\r\n {\r\n value: 'LESS_OR_EQUAL',\r\n symbol: '≤',\r\n display: 'Nhỏ hơn, hoặc bằng',\r\n },\r\n {\r\n value: 'CONTAIN',\r\n symbol: 'join_inner',\r\n display: 'Chứa',\r\n },\r\n {\r\n value: 'NOT_CONTAIN',\r\n symbol: 'join',\r\n display: 'Không chứa',\r\n },\r\n {\r\n value: 'START_WITH',\r\n symbol: 'line_start_circle',\r\n display: 'Bắt đầu bởi',\r\n },\r\n {\r\n value: 'END_WITH',\r\n symbol: 'line_end_circle',\r\n display: 'Kết thúc bởi',\r\n },\r\n {\r\n value: 'IN',\r\n symbol: 'checklist_rtl',\r\n display: 'Nằm trong',\r\n },\r\n {\r\n value: 'NOT_IN',\r\n symbol: 'event_list',\r\n display: 'Không nằm trong',\r\n },\r\n];\r\n\r\nexport type SdTableColumnTransformFunc<T = any> = (\r\n value: any,\r\n rowData: T,\r\n args?: {\r\n isExport?: boolean;\r\n }\r\n) => string | Promise<string>;\r\n\r\ninterface SdTableColumnBase<T = any> {\r\n field: string;\r\n title: string;\r\n titleHtml?: string;\r\n description?: string;\r\n width?: string;\r\n hidden?: boolean;\r\n invisible?: boolean;\r\n fixed?: boolean;\r\n cellStyle?: (value: any, rowData: T) => Record<string, string>;\r\n htmlTemplate?: (value: any, rowData: T) => string;\r\n transform?: SdTableColumnTransformFunc<T>;\r\n tooltip?: (value: any, rowData: T) => string;\r\n click?: (value: any, rowData: T) => void;\r\n sortable?: boolean;\r\n filter?: {\r\n disabled?: boolean;\r\n defaultShowing?: boolean;\r\n default?: any;\r\n // Chỉ dành cho filter inline column\r\n operator?: {\r\n enable?: boolean;\r\n list?: SdFilterOperator[];\r\n };\r\n };\r\n export?: {\r\n disabled?: boolean;\r\n };\r\n}\r\n\r\ninterface SdTableColumnText<T = any> extends SdTableColumnBase<T> {\r\n type: 'string';\r\n badge?: (value: any, rowData: T) => SdBadgeColor;\r\n badgeIcon?: (value: any, rowData: T) => string;\r\n badgeType?: 'circle' | 'icon';\r\n}\r\n\r\ninterface SdTableColumnNumber<T = any> extends SdTableColumnBase<T> {\r\n type: 'number';\r\n badge?: (value: any, rowData: T) => SdBadgeColor;\r\n badgeIcon?: (value: any, rowData: T) => string;\r\n badgeType?: 'circle' | 'icon';\r\n}\r\n\r\ninterface SdTableColumnBool<T = any> extends SdTableColumnBase<T> {\r\n type: 'bool';\r\n option?: {\r\n displayOnTrue?: string;\r\n displayOnFalse?: string;\r\n };\r\n}\r\n\r\ninterface SdTableColumnDate<T = any> extends SdTableColumnBase<T> {\r\n type: 'date' | 'datetime' | 'time';\r\n filter?: SdTableColumnBase['filter'] & { useFilterDate?: boolean }\r\n}\r\n\r\nexport interface SdTableColumnValues<T = any> extends SdTableColumnBase<T> {\r\n type: 'values';\r\n badge?: (value: any, rowData: T) => SdBadgeColor;\r\n badgeIcon?: (value: any, rowData: T) => string;\r\n badgeType?: 'circle' | 'icon';\r\n option: {\r\n valueField: string;\r\n displayField: string;\r\n items: any[] | (() => Promise<any[]>);\r\n selection?: 'AUTOCOMPLETE' | 'MULTIPLE' | 'MULTIPLEAUTOCOMPLETE';\r\n };\r\n}\r\n\r\nexport interface SdTableColumnLazyValues<T = any> extends SdTableColumnBase<T> {\r\n type: 'lazy-values';\r\n option: {\r\n valueField: string;\r\n displayField: string;\r\n items: (searchText: string) => Promise<any[]>; // Filter\r\n views?: (values: string[]) => Promise<any[]>; // Hiển thị\r\n selection?: 'AUTOCOMPLETE' | 'MULTIPLE' | 'MULTIPLEAUTOCOMPLETE';\r\n };\r\n}\r\n\r\ntype SdTableColumnNormal<T> = Exclude<SdTableColumn<T>, SdTableColumnChildren<T>>;\r\n\r\nexport interface SdTableColumnChildren<T = any> extends SdTableColumnBase<T> {\r\n type: 'children';\r\n children: SdTableColumnNormal<T>[];\r\n}\r\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Output, QueryList } from '@angular/core';\r\nimport { Subject, Subscription } from 'rxjs';\r\nimport { startWith } from 'rxjs/operators';\r\nimport { SdFilterOperator, SdFilterOperators, SdTableColumn } from '../../models/table-column.model';\r\n\r\n@Component({\r\n selector: 'sd-column-inline-filter',\r\n templateUrl: './column-inline-filter.component.html',\r\n styleUrls: ['./column-inline-filter.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SdColumnInlineFilter implements OnInit {\r\n value: any;\r\n @Input('value') _value(value: any) {\r\n this.value = value;\r\n this.#valueChanges.next();\r\n }\r\n inlineSymbol: string = 'filter_alt';\r\n #inlineOperator: SdFilterOperator;\r\n @Input('inlineOperator') set _inlineOperator(inlineOperator: SdFilterOperator) {\r\n if (this.#inlineOperator !== inlineOperator) {\r\n this.#inlineOperator = inlineOperator;\r\n this.inlineSymbol = SdFilterOperators.find(e => e.value === inlineOperator)?.symbol ?? 'filter_alt';\r\n }\r\n }\r\n @Output() inlineOperatorChange = new EventEmitter();\r\n\r\n columnFilter: Record<string, any> = {};\r\n @Input('columnFilter') set _columnFilter(columnFilter: Record<string, any>) {\r\n this.columnFilter = columnFilter || {};\r\n this.#valueChanges.next();\r\n }\r\n operators: { value: SdFilterOperator; display: string }[] = [];\r\n column: SdTableColumn;\r\n items: any[] | ((searchText: string) => Promise<any[]>) = [];\r\n @Input() cacheValues: Record<string, any[]>;\r\n @Input('column') set _column(column: SdTableColumn) {\r\n this.column = column;\r\n if (!column?.filter?.disabled && column?.filter?.operator?.enable) {\r\n this.operators = SdFilterOperators.filter(e => column.filter.operator.list?.includes?.(e.value));\r\n } else {\r\n this.operators = [];\r\n }\r\n if (this.column.type === 'values') {\r\n if (Array.isArray(this.column.option.items)) {\r\n this.items = this.column.option.items;\r\n } else {\r\n this.items = this.cacheValues?.[column.field] || []\r\n }\r\n } else if (this.column.type === 'lazy-values') {\r\n this.items = this.column.option.items;\r\n }\r\n }\r\n @Output() filterChange = new EventEmitter();\r\n #valueChanges = new Subject();\r\n #subcription = new Subscription();\r\n constructor(private ref: ChangeDetectorRef) {}\r\n ngOnInit() {\r\n this.#subcription.add(\r\n this.#valueChanges.pipe(startWith(this.columnFilter)).subscribe(() => {\r\n if (this.column.type === 'date' || this.column.type === 'time' || this.column.type === 'datetime') {\r\n if (!this.column?.filter?.useFilterDate) {\r\n this.columnFilter[this.column.field] = this.columnFilter[this.column.field] || {\r\n from: null,\r\n to: null,\r\n };\r\n }\r\n }\r\n })\r\n );\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#subcription.unsubscribe();\r\n }\r\n\r\n onFilterChange = () => {\r\n this.filterChange.emit();\r\n };\r\n\r\n onChangeOperator = (operator: { value: SdFilterOperator; symbol?: string; display: string }) => {\r\n if (operator) {\r\n this.#inlineOperator = operator.value;\r\n this.inlineSymbol = operator.symbol;\r\n } else {\r\n this.#inlineOperator = null;\r\n this.inlineSymbol = 'filter_alt';\r\n }\r\n this.inlineOperatorChange.emit(this.#inlineOperator);\r\n this.ref.markForCheck();\r\n };\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdTableOptionSelector } from '../models/table-option-selector.model';\r\nimport { SdTableItem } from '../models/table-item.model';\r\n\r\n@Pipe({\r\n name: 'selectionVisible'\r\n})\r\nexport class SdSelectionVisiblePipe implements PipeTransform {\r\n transform = (rowData: SdTableItem, selection: SdTableOptionSelector): boolean => {\r\n const { actions } = selection;\r\n const groupedActions: string[] = [];\r\n rowData.meta.selector.actions = rowData.meta.selector.actions || [];\r\n if (!actions?.length) {\r\n rowData.meta.selector.selectable = true;\r\n return rowData.meta.selector.selectable;\r\n }\r\n for (const action of actions) {\r\n if ('children' in action) {\r\n let flag = false;\r\n let hasGroup = false;\r\n for (const childAction of action.children) {\r\n const { hidden, isGrouped } = childAction;\r\n const key = hash(childAction);\r\n if (isGrouped) {\r\n hasGroup = true;\r\n }\r\n if (typeof (hidden) === 'function') {\r\n if (!hidden(rowData)) {\r\n flag = true;\r\n rowData.meta.selector.actions.push(key);\r\n if (isGrouped) {\r\n groupedActions.push(key);\r\n }\r\n }\r\n } else if (!hidden) {\r\n flag = true;\r\n rowData.meta.selector.actions.push(key);\r\n if (isGrouped) {\r\n groupedActions.push(key);\r\n }\r\n }\r\n }\r\n if (flag) {\r\n rowData.meta.selector.actions.push(hash(action));\r\n if (hasGroup) {\r\n groupedActions.push(hash(action));\r\n }\r\n }\r\n } else {\r\n const { hidden, isGrouped } = action;\r\n const key = hash(action);\r\n if (typeof (hidden) === 'function') {\r\n if (!hidden(rowData)) {\r\n rowData.meta.selector.actions.push(key);\r\n if (isGrouped) {\r\n groupedActions.push(key);\r\n }\r\n }\r\n } else if (!hidden) {\r\n rowData.meta.selector.actions.push(key);\r\n if (isGrouped) {\r\n groupedActions.push(key);\r\n }\r\n }\r\n }\r\n }\r\n rowData.meta.selector.selectable = !!rowData.meta.selector.actions?.length;\r\n if (!rowData.meta.selector.selectable || !groupedActions.length || rowData?.meta.group?.items?.length) {\r\n return rowData.meta.selector.selectable;\r\n }\r\n // Đối với trường hợp grouped, tuy selectable là true nhưng vẫn ẩn đi checkbox\r\n // nếu các action đều thuộc groupedActions và rowData ko phải là dòng group\r\n return rowData.meta.selector.actions.some(action => !groupedActions.includes(action));\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { SdTableOption } from '../../models/table-option.model';\r\n\r\n@Component({\r\n selector: 'sd-table-quick-action',\r\n templateUrl: './quick-action.component.html',\r\n styleUrls: ['./quick-action.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdTableQuickAction {\r\n @Input() gridOption: SdTableOption;\r\n @Input() selectedItems: any[];\r\n @Output() clear = new EventEmitter();\r\n constructor(\r\n ) { }\r\n onClear = () => {\r\n this.clear.emit();\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdTableOption } from '../models/table-option.model';\r\nimport { MapToSdTableItem, SdTableItem } from '../models/table-item.model';\r\n@Pipe({\r\n name: 'sdGroup',\r\n})\r\nexport class SdGroupPipe implements PipeTransform {\r\n transform(items: SdTableItem[], gridOption: SdTableOption): SdTableItem[] {\r\n const { group } = gridOption;\r\n if (!group) {\r\n return items;\r\n }\r\n const { fields, htmlTemplate } = group;\r\n if (!fields?.length) {\r\n return items;\r\n }\r\n const groupItem: {\r\n [key: string]: SdTableItem[];\r\n } = {};\r\n for (const item of items) {\r\n let obj = {};\r\n for (const field of fields) {\r\n obj = {\r\n ...obj,\r\n ...(item[field] ?? { [field]: item[field] }),\r\n };\r\n }\r\n const key = hash(obj);\r\n if (!groupItem[key]) {\r\n groupItem[key] = [];\r\n }\r\n groupItem[key].push(item);\r\n }\r\n const results: SdTableItem[] = [];\r\n for (const key of Object.keys(groupItem)) {\r\n const result = MapToSdTableItem({});\r\n result.meta.group.items = groupItem[key];\r\n result.meta.group.htmlTemplate = htmlTemplate(groupItem[key]);\r\n results.push(result);\r\n for (const item of groupItem[key]) {\r\n results.push(item);\r\n }\r\n }\r\n return results;\r\n }\r\n}\r\n","import { Injectable, NgModule } from '@angular/core';\r\nimport { CommonModule, DatePipe, DecimalPipe } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { SdTable } from './table.component';\r\nimport { MatSortModule } from '@angular/material/sort';\r\nimport { MatPaginatorIntl, MatPaginatorModule } from '@angular/material/paginator';\r\nimport { MatTableModule } from '@angular/material/table';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { CdkTableModule, CdkColumnDef } from '@angular/cdk/table';\r\nimport { ScrollingModule } from '@angular/cdk/scrolling';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatSliderModule } from '@angular/material/slider';\r\nimport { SdCommandFilterPipe } from './pipes/command-filter.pipe';\r\nimport { SdCommandDisablePipe } from './pipes/command-disable.pipe';\r\nimport { SdCommandIconPipe } from './pipes/command-icon.pipe';\r\nimport { SdCommandTitlePipe } from './pipes/command-title.pipe';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { SdDesktopCellView } from './components/desktop-cell-view/desktop-cell-view.component';\r\nimport { SdServiceModule } from '@sd-angular/core/service';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatChipsModule } from '@angular/material/chips';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\nimport { SdMaterialCellDefDirective } from './directives/sd-material-cell-def.directive';\r\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\r\nimport { SdFilterExternalPipe } from './pipes/filter-external.pipe';\r\nimport { SdFilterColumnPipe } from './pipes/filter-column.pipe';\r\nimport { SdTableFilter } from './components/table-filter/table-filter.component';\r\nimport { SdPopupFilter } from './components/popup-filter/popup-filter.component';\r\n\r\nimport { SdTableFilterService } from './services/table-filter/table-filter.service';\r\nimport { SdDesktopCommand } from './components/desktop-command/desktop-command.component';\r\nimport { SdMaterialFilterDefDirective } from './directives/sd-material-filter-def.directive';\r\nimport { SdMaterialFooterDefDirective } from './directives/sd-material-footer-def.directive';\r\nimport { SdMaterialSubInformationDefDirective } from './directives/sd-material-sub-information-def.directive';\r\nimport { SdFormModule } from '@sd-angular/core/form';\r\nimport { SdMaterialEmptyDataDefDirective } from './directives/sd-material-empty-data-def.directive';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { SdPopupConfiguration } from './components/popup-configuration/popup-configuration.component';\r\nimport { SdTableConfigurationService } from './services/table-configuration.service';\r\nimport { MatListModule } from '@angular/material/list';\r\nimport { MatDividerModule } from '@angular/material/divider';\r\nimport { SdColumnTooltipPipe } from './pipes/column-tooltip.pipe';\r\nimport { SdSelectionActionFilterPipe } from './pipes/selection-action-filter.pipe';\r\nimport { SdSelectionDisablePipe } from './pipes/selection-disable.pipe';\r\nimport { SdSelectionVisibleSelectAllPipe } from './pipes/selection-visible-select-all.pipe';\r\nimport { SdDesktopCell } from './components/desktop-cell/desktop-cell.component';\r\nimport { SdColumnInlineFilter } from './components/column-inline-filter/column-inline-filter.component';\r\nimport { SdSelectionVisiblePipe } from './pipes/selection-visible.pipe';\r\nimport { SdTableQuickAction } from './components/quick-action/quick-action.component';\r\nimport { SdCommonModule } from '@sd-angular/core/common';\r\nimport { SdGroupPipe } from './pipes/sd-group.pipe';\r\nimport { SdGroupModule } from '@sd-angular/core/group';\r\n\r\n@Injectable()\r\nexport class MatPaginatorIntlCro extends MatPaginatorIntl {\r\n firstPageLabel = 'Trang đầu';\r\n lastPageLabel = 'Trang cuối';\r\n itemsPerPageLabel = 'Kích thước trang';\r\n nextPageLabel = 'Trang sau';\r\n previousPageLabel = 'Trang trước';\r\n\r\n getRangeLabel = (page: number, pageSize: number, length: number) => {\r\n if (length === 0 || pageSize === 0) {\r\n return '';\r\n }\r\n const from = page * pageSize + 1;\r\n const to = from + (length - page * pageSize > pageSize ? pageSize : length - page * pageSize) - 1;\r\n return `${from}-${to} trên ${length}`;\r\n };\r\n}\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MatInputModule,\r\n MatFormFieldModule,\r\n MatSortModule,\r\n MatPaginatorModule,\r\n MatTableModule,\r\n MatMenuModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n MatTooltipModule,\r\n MatProgressSpinnerModule,\r\n MatChipsModule,\r\n MatRadioModule,\r\n MatSlideToggleModule,\r\n MatCheckboxModule,\r\n MatListModule,\r\n MatDividerModule,\r\n CdkTableModule,\r\n DragDropModule,\r\n SdFormModule,\r\n SdServiceModule,\r\n MatSliderModule,\r\n ScrollingModule,\r\n SdCommonModule,\r\n SdGroupModule,\r\n ],\r\n declarations: [\r\n SdTableQuickAction,\r\n SdDesktopCell,\r\n SdDesktopCellView,\r\n SdDesktopCommand,\r\n SdColumnInlineFilter,\r\n SdTable,\r\n\r\n SdMaterialFooterDefDirective,\r\n SdMaterialCellDefDirective,\r\n SdMaterialFilterDefDirective,\r\n SdMaterialSubInformationDefDirective,\r\n SdMaterialEmptyDataDefDirective,\r\n SdPopupConfiguration,\r\n SdTableFilter,\r\n SdPopupFilter,\r\n\r\n // Pipes\r\n SdCommandFilterPipe,\r\n SdCommandDisablePipe,\r\n SdCommandIconPipe,\r\n SdCommandTitlePipe,\r\n SdColumnTooltipPipe,\r\n SdFilterColumnPipe,\r\n SdFilterExternalPipe,\r\n SdSelectionActionFilterPipe,\r\n SdSelectionVisiblePipe,\r\n SdSelectionDisablePipe,\r\n SdSelectionVisibleSelectAllPipe,\r\n SdGroupPipe,\r\n ],\r\n exports: [\r\n SdTable,\r\n SdMaterialFooterDefDirective,\r\n SdMaterialCellDefDirective,\r\n SdMaterialFilterDefDirective,\r\n SdMaterialEmptyDataDefDirective,\r\n SdMaterialSubInformationDefDirective,\r\n ],\r\n providers: [\r\n DatePipe,\r\n DecimalPipe,\r\n CdkColumnDef,\r\n SdTableFilterService,\r\n SdTableConfigurationService,\r\n {\r\n provide: MatPaginatorIntl,\r\n useClass: MatPaginatorIntlCro,\r\n },\r\n ],\r\n})\r\nexport class SdTableModule {}\r\n"]}