@sd-angular/core 1.3.22 → 1.3.24

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 (533) hide show
  1. package/assets/img/file-types/eps/001-file.eps +143 -143
  2. package/assets/img/file-types/eps/002-file-1.eps +136 -136
  3. package/assets/img/file-types/eps/003-file-2.eps +130 -130
  4. package/assets/img/file-types/eps/004-file-3.eps +127 -127
  5. package/assets/img/file-types/eps/005-file-4.eps +120 -120
  6. package/assets/img/file-types/eps/006-file-5.eps +133 -133
  7. package/assets/img/file-types/eps/007-file-6.eps +133 -133
  8. package/assets/img/file-types/eps/008-file-7.eps +144 -144
  9. package/assets/img/file-types/eps/009-file-8.eps +150 -150
  10. package/assets/img/file-types/eps/010-file-9.eps +155 -155
  11. package/assets/img/file-types/eps/011-file-10.eps +124 -124
  12. package/assets/img/file-types/eps/012-file-11.eps +147 -147
  13. package/assets/img/file-types/eps/013-file-12.eps +125 -125
  14. package/assets/img/file-types/eps/014-file-13.eps +129 -129
  15. package/assets/img/file-types/eps/015-file-14.eps +143 -143
  16. package/assets/img/file-types/eps/016-file-15.eps +130 -130
  17. package/assets/img/file-types/eps/017-file-16.eps +197 -197
  18. package/assets/img/file-types/eps/018-file-17.eps +146 -146
  19. package/assets/img/file-types/eps/019-file-18.eps +131 -131
  20. package/assets/img/file-types/eps/020-file-19.eps +137 -137
  21. package/assets/img/file-types/eps/021-file-20.eps +134 -134
  22. package/assets/img/file-types/eps/022-file-21.eps +130 -130
  23. package/assets/img/file-types/eps/023-file-22.eps +161 -161
  24. package/assets/img/file-types/eps/024-file-23.eps +144 -144
  25. package/assets/img/file-types/eps/025-file-24.eps +164 -164
  26. package/assets/img/file-types/eps/026-file-25.eps +135 -135
  27. package/assets/img/file-types/eps/027-file-26.eps +124 -124
  28. package/assets/img/file-types/eps/028-file-27.eps +120 -120
  29. package/assets/img/file-types/eps/029-file-28.eps +141 -141
  30. package/assets/img/file-types/eps/030-file-29.eps +130 -130
  31. package/assets/img/file-types/eps/031-file-30.eps +157 -157
  32. package/assets/img/file-types/eps/032-file-31.eps +139 -139
  33. package/assets/img/file-types/eps/033-file-32.eps +139 -139
  34. package/assets/img/file-types/eps/034-file-33.eps +189 -189
  35. package/assets/img/file-types/eps/035-file-34.eps +162 -162
  36. package/assets/img/file-types/eps/036-file-35.eps +142 -142
  37. package/assets/img/file-types/eps/037-file-36.eps +123 -123
  38. package/assets/img/file-types/eps/038-file-37.eps +127 -127
  39. package/assets/img/file-types/eps/039-file-38.eps +146 -146
  40. package/assets/img/file-types/eps/040-file-39.eps +126 -126
  41. package/assets/img/file-types/eps/041-file-40.eps +117 -117
  42. package/assets/img/file-types/eps/042-file-41.eps +156 -156
  43. package/assets/img/file-types/eps/043-file-42.eps +118 -118
  44. package/assets/img/file-types/eps/044-file-43.eps +172 -172
  45. package/assets/img/file-types/eps/045-file-44.eps +201 -201
  46. package/assets/img/file-types/eps/046-file-45.eps +94 -94
  47. package/assets/img/file-types/eps/047-file-46.eps +176 -176
  48. package/assets/img/file-types/eps/048-file-47.eps +238 -238
  49. package/assets/img/file-types/eps/049-file-48.eps +187 -187
  50. package/assets/img/file-types/eps/050-file-49.eps +137 -137
  51. package/bundles/sd-angular-core-grid-material.umd.js +22 -13
  52. package/bundles/sd-angular-core-grid-material.umd.js.map +1 -1
  53. package/bundles/sd-angular-core-grid-material.umd.min.js +1 -1
  54. package/bundles/sd-angular-core-grid-material.umd.min.js.map +1 -1
  55. package/bundles/sd-angular-core-select.umd.js +2 -2
  56. package/bundles/sd-angular-core-select.umd.js.map +1 -1
  57. package/bundles/sd-angular-core-select.umd.min.js +1 -1
  58. package/bundles/sd-angular-core-select.umd.min.js.map +1 -1
  59. package/esm2015/api/index.js +1 -1
  60. package/esm2015/api/sd-angular-core-api.js +1 -1
  61. package/esm2015/api/src/lib/api.model.js +1 -1
  62. package/esm2015/api/src/lib/api.module.js +1 -1
  63. package/esm2015/api/src/lib/api.service.js +1 -1
  64. package/esm2015/api/src/lib/http.interceptor.js +1 -1
  65. package/esm2015/api/src/lib/http.service.js +1 -1
  66. package/esm2015/api/src/lib/token.service.js +1 -1
  67. package/esm2015/api/src/public-api.js +1 -1
  68. package/esm2015/autocomplete/index.js +1 -1
  69. package/esm2015/autocomplete/sd-angular-core-autocomplete.js +1 -1
  70. package/esm2015/autocomplete/src/lib/autocomplete-display-def.directive.js +1 -1
  71. package/esm2015/autocomplete/src/lib/autocomplete.component.js +1 -1
  72. package/esm2015/autocomplete/src/lib/autocomplete.module.js +1 -1
  73. package/esm2015/autocomplete/src/public-api.js +1 -1
  74. package/esm2015/badge/index.js +1 -1
  75. package/esm2015/badge/sd-angular-core-badge.js +1 -1
  76. package/esm2015/badge/src/lib/badge.component.js +1 -1
  77. package/esm2015/badge/src/lib/badge.module.js +1 -1
  78. package/esm2015/badge/src/public-api.js +1 -1
  79. package/esm2015/button/index.js +1 -1
  80. package/esm2015/button/sd-angular-core-button.js +1 -1
  81. package/esm2015/button/src/lib/button.component.js +1 -1
  82. package/esm2015/button/src/lib/button.module.js +1 -1
  83. package/esm2015/button/src/public-api.js +1 -1
  84. package/esm2015/cache/index.js +1 -1
  85. package/esm2015/cache/sd-angular-core-cache.js +1 -1
  86. package/esm2015/cache/src/lib/cache.model.js +1 -1
  87. package/esm2015/cache/src/lib/cache.service.js +1 -1
  88. package/esm2015/cache/src/public-api.js +1 -1
  89. package/esm2015/chart/index.js +1 -1
  90. package/esm2015/chart/sd-angular-core-chart.js +1 -1
  91. package/esm2015/chart/src/lib/chart.component.js +1 -1
  92. package/esm2015/chart/src/lib/chart.model.js +1 -1
  93. package/esm2015/chart/src/lib/chart.module.js +1 -1
  94. package/esm2015/chart/src/public-api.js +1 -1
  95. package/esm2015/checkbox/index.js +1 -1
  96. package/esm2015/checkbox/sd-angular-core-checkbox.js +1 -1
  97. package/esm2015/checkbox/src/lib/checkbox.component.js +1 -1
  98. package/esm2015/checkbox/src/lib/checkbox.module.js +1 -1
  99. package/esm2015/checkbox/src/public-api.js +1 -1
  100. package/esm2015/chip/index.js +1 -1
  101. package/esm2015/chip/sd-angular-core-chip.js +1 -1
  102. package/esm2015/chip/src/lib/chip.component.js +1 -1
  103. package/esm2015/chip/src/lib/chip.model.js +1 -1
  104. package/esm2015/chip/src/lib/chip.module.js +1 -1
  105. package/esm2015/chip/src/lib/directives/sd-chip-display-def.directive.js +1 -1
  106. package/esm2015/chip/src/lib/pipes/removable-chip.pipe.js +1 -1
  107. package/esm2015/chip/src/public-api.js +1 -1
  108. package/esm2015/comment/index.js +1 -1
  109. package/esm2015/comment/sd-angular-core-comment.js +1 -1
  110. package/esm2015/comment/src/lib/comment.component.js +1 -1
  111. package/esm2015/comment/src/lib/comment.model.js +1 -1
  112. package/esm2015/comment/src/lib/comment.module.js +1 -1
  113. package/esm2015/comment/src/public-api.js +1 -1
  114. package/esm2015/common/index.js +1 -1
  115. package/esm2015/common/sd-angular-core-common.js +1 -1
  116. package/esm2015/common/src/lib/common.module.js +1 -1
  117. package/esm2015/common/src/lib/configurations/firebase.configuration.js +1 -1
  118. package/esm2015/common/src/lib/configurations/form.configuration.js +1 -1
  119. package/esm2015/common/src/lib/directives/sd-lable.directive.js +1 -1
  120. package/esm2015/common/src/lib/directives/sd-let.directive.js +1 -1
  121. package/esm2015/common/src/lib/directives/sd-scroll.directive.js +1 -1
  122. package/esm2015/common/src/lib/directives/sd-suffix.directive.js +1 -1
  123. package/esm2015/common/src/lib/directives/view-def.directive.js +1 -1
  124. package/esm2015/common/src/lib/models/sd-form-control.js +1 -1
  125. package/esm2015/common/src/lib/services/browser.service.js +1 -1
  126. package/esm2015/common/src/lib/typings/array.extension.js +1 -1
  127. package/esm2015/common/src/lib/typings/date.extension.js +1 -1
  128. package/esm2015/common/src/lib/typings/number.extension.js +1 -1
  129. package/esm2015/common/src/lib/typings/string.extension.js +1 -1
  130. package/esm2015/common/src/public-api.js +1 -1
  131. package/esm2015/confirm/index.js +1 -1
  132. package/esm2015/confirm/sd-angular-core-confirm.js +1 -1
  133. package/esm2015/confirm/src/lib/components/dialog-confirm/dialog-confirm.component.js +1 -1
  134. package/esm2015/confirm/src/lib/confirm.module.js +1 -1
  135. package/esm2015/confirm/src/lib/confirm.service.js +1 -1
  136. package/esm2015/confirm/src/public-api.js +1 -1
  137. package/esm2015/date-month/index.js +1 -1
  138. package/esm2015/date-month/sd-angular-core-date-month.js +1 -1
  139. package/esm2015/date-month/src/lib/date-month.component.js +1 -1
  140. package/esm2015/date-month/src/lib/date-month.module.js +1 -1
  141. package/esm2015/date-month/src/public-api.js +1 -1
  142. package/esm2015/date-range/index.js +1 -1
  143. package/esm2015/date-range/sd-angular-core-date-range.js +1 -1
  144. package/esm2015/date-range/src/lib/date-range.component.js +1 -1
  145. package/esm2015/date-range/src/lib/date-range.module.js +1 -1
  146. package/esm2015/date-range/src/public-api.js +1 -1
  147. package/esm2015/date-time/index.js +1 -1
  148. package/esm2015/date-time/sd-angular-core-date-time.js +1 -1
  149. package/esm2015/date-time/src/lib/date-time.component.js +1 -1
  150. package/esm2015/date-time/src/lib/date-time.module.js +1 -1
  151. package/esm2015/date-time/src/public-api.js +1 -1
  152. package/esm2015/db/index.js +1 -1
  153. package/esm2015/db/sd-angular-core-db.js +1 -1
  154. package/esm2015/db/src/lib/db.model.js +1 -1
  155. package/esm2015/db/src/lib/db.service.js +1 -1
  156. package/esm2015/db/src/public-api.js +1 -1
  157. package/esm2015/dynamic-report/index.js +1 -1
  158. package/esm2015/dynamic-report/sd-angular-core-dynamic-report.js +1 -1
  159. package/esm2015/dynamic-report/src/lib/dynamic-report.component.js +1 -1
  160. package/esm2015/dynamic-report/src/lib/dynamic-report.module.js +1 -1
  161. package/esm2015/dynamic-report/src/public-api.js +1 -1
  162. package/esm2015/editor/index.js +1 -1
  163. package/esm2015/editor/sd-angular-core-editor.js +1 -1
  164. package/esm2015/editor/src/lib/constant.js +1 -1
  165. package/esm2015/editor/src/lib/editor.component.js +1 -1
  166. package/esm2015/editor/src/lib/editor.model.js +1 -1
  167. package/esm2015/editor/src/lib/editor.module.js +1 -1
  168. package/esm2015/editor/src/public-api.js +1 -1
  169. package/esm2015/excel/index.js +1 -1
  170. package/esm2015/excel/sd-angular-core-excel.js +1 -1
  171. package/esm2015/excel/src/lib/excel.model.js +1 -1
  172. package/esm2015/excel/src/lib/excel.service.js +1 -1
  173. package/esm2015/excel/src/public-api.js +1 -1
  174. package/esm2015/export/index.js +1 -1
  175. package/esm2015/export/sd-angular-core-export.js +1 -1
  176. package/esm2015/export/src/lib/export.model.js +1 -1
  177. package/esm2015/export/src/lib/export.service.js +1 -1
  178. package/esm2015/export/src/public-api.js +1 -1
  179. package/esm2015/filter/index.js +1 -1
  180. package/esm2015/filter/sd-angular-core-filter.js +1 -1
  181. package/esm2015/filter/src/lib/directives/sd-filter-def.directive.js +1 -1
  182. package/esm2015/filter/src/lib/filter.component.js +1 -1
  183. package/esm2015/filter/src/lib/filter.model.js +1 -1
  184. package/esm2015/filter/src/lib/filter.module.js +1 -1
  185. package/esm2015/filter/src/lib/filter.service.js +1 -1
  186. package/esm2015/filter/src/lib/pipes/values-local.pipe.js +1 -1
  187. package/esm2015/filter/src/lib/pipes/values-server.pipe.js +1 -1
  188. package/esm2015/filter/src/public-api.js +1 -1
  189. package/esm2015/form/index.js +1 -1
  190. package/esm2015/form/sd-angular-core-form.js +1 -1
  191. package/esm2015/form/src/lib/form.module.js +1 -1
  192. package/esm2015/form/src/public-api.js +1 -1
  193. package/esm2015/grid/index.js +1 -1
  194. package/esm2015/grid/sd-angular-core-grid.js +1 -1
  195. package/esm2015/grid/src/lib/components/grid-config/grid-config.component.js +1 -1
  196. package/esm2015/grid/src/lib/components/grid-config/grid-config.model.js +1 -1
  197. package/esm2015/grid/src/lib/components/grid-desktop-column-children-view/grid-desktop-column-children-view.component.js +1 -1
  198. package/esm2015/grid/src/lib/components/grid-desktop-column-edit/grid-desktop-column-edit.component.js +1 -1
  199. package/esm2015/grid/src/lib/components/grid-desktop-column-view/grid-desktop-column-view.component.js +1 -1
  200. package/esm2015/grid/src/lib/components/grid-desktop-inline-filter/grid-desktop-inline-filter.component.js +1 -1
  201. package/esm2015/grid/src/lib/components/grid-import-excel/grid-import-excel.component.js +1 -1
  202. package/esm2015/grid/src/lib/components/grid-mobile-item-view/grid-mobile-item-view.component.js +1 -1
  203. package/esm2015/grid/src/lib/components/grid-popup-editor/grid-popup-editor.component.js +1 -1
  204. package/esm2015/grid/src/lib/components/grid-popup-export-excel/grid-popup-export-excel.component.js +1 -1
  205. package/esm2015/grid/src/lib/components/grid-popup-export-excel/grid-popup-export-excel.model.js +1 -1
  206. package/esm2015/grid/src/lib/components/grid-popup-filter/grid-popup-filter.component.js +1 -1
  207. package/esm2015/grid/src/lib/components/grid-popup-filter/grid-popup-filter.model.js +1 -1
  208. package/esm2015/grid/src/lib/components/grid-popup-quick-filter-detail/grid-popup-quick-filter-detail.component.js +1 -1
  209. package/esm2015/grid/src/lib/components/grid-sub-information/grid-sub-information.component.js +1 -1
  210. package/esm2015/grid/src/lib/directives/cell-def.directive.js +1 -1
  211. package/esm2015/grid/src/lib/directives/cell-editor-def.directive.js +1 -1
  212. package/esm2015/grid/src/lib/directives/cell-footer-def.directive.js +1 -1
  213. package/esm2015/grid/src/lib/directives/sub-information-header-def.directive.js +1 -1
  214. package/esm2015/grid/src/lib/grid.component.js +1 -1
  215. package/esm2015/grid/src/lib/grid.model.js +1 -1
  216. package/esm2015/grid/src/lib/grid.module.js +1 -1
  217. package/esm2015/grid/src/lib/models/filter-info.model.js +1 -1
  218. package/esm2015/grid/src/lib/models/grid-configuration.model.js +1 -1
  219. package/esm2015/grid/src/lib/models/handler-dotnet.js +1 -1
  220. package/esm2015/grid/src/lib/models/handler-local.js +1 -1
  221. package/esm2015/grid/src/lib/models/handler.js +1 -1
  222. package/esm2015/grid/src/lib/pipes/cell-desktop-class-name.pipe.js +1 -1
  223. package/esm2015/grid/src/lib/pipes/cell-mobile-class-name.pipe.js +1 -1
  224. package/esm2015/grid/src/lib/pipes/column-command-filter.pipe.js +1 -1
  225. package/esm2015/grid/src/lib/pipes/column-html-template.pipe.js +1 -1
  226. package/esm2015/grid/src/lib/pipes/column-title.pipe.js +1 -1
  227. package/esm2015/grid/src/lib/pipes/column-values.pipe.js +1 -1
  228. package/esm2015/grid/src/lib/pipes/command-disabled.pipe.js +1 -1
  229. package/esm2015/grid/src/lib/pipes/command-filter.pipe.js +1 -1
  230. package/esm2015/grid/src/lib/pipes/command-hidden.pipe.js +1 -1
  231. package/esm2015/grid/src/lib/pipes/command-icon.pipe.js +1 -1
  232. package/esm2015/grid/src/lib/pipes/command-title.pipe.js +1 -1
  233. package/esm2015/grid/src/lib/pipes/dynamic-items.pipe.js +1 -1
  234. package/esm2015/grid/src/lib/pipes/editor-dynamic-item.pipe.js +1 -1
  235. package/esm2015/grid/src/lib/pipes/editor-handler.pipe.js +1 -1
  236. package/esm2015/grid/src/lib/pipes/editor-popup-visible.pipe.js +1 -1
  237. package/esm2015/grid/src/lib/pipes/editor-sub-information-handler.pipe.js +1 -1
  238. package/esm2015/grid/src/lib/pipes/editor-validate.pipe.js +1 -1
  239. package/esm2015/grid/src/lib/pipes/filter-mobile.pipe.js +1 -1
  240. package/esm2015/grid/src/lib/pipes/mobile-command-filter.js +1 -1
  241. package/esm2015/grid/src/lib/pipes/mobile-view-html-template.pipe.js +1 -1
  242. package/esm2015/grid/src/lib/pipes/value-transform.pipe.js +1 -1
  243. package/esm2015/grid/src/public-api.js +1 -1
  244. package/esm2015/grid-material/index.js +1 -1
  245. package/esm2015/grid-material/sd-angular-core-grid-material.js +1 -1
  246. package/esm2015/grid-material/src/lib/components/column-inline-filter/column-inline-filter.component.js +1 -1
  247. package/esm2015/grid-material/src/lib/components/desktop-cell/desktop-cell.component.js +1 -1
  248. package/esm2015/grid-material/src/lib/components/desktop-cell-children-view/desktop-cell-children-view.component.js +1 -1
  249. package/esm2015/grid-material/src/lib/components/desktop-cell-editor/desktop-cell-editor.component.js +1 -1
  250. package/esm2015/grid-material/src/lib/components/desktop-cell-view/desktop-cell-view.component.js +1 -1
  251. package/esm2015/grid-material/src/lib/components/desktop-command/desktop-command.component.js +1 -1
  252. package/esm2015/grid-material/src/lib/components/desktop-editor-validation/desktop-editor-validation.component.js +1 -1
  253. package/esm2015/grid-material/src/lib/components/dynamic-column/dynamic-column.component.js +1 -1
  254. package/esm2015/grid-material/src/lib/components/grid-filter/grid-filter.component.js +17 -10
  255. package/esm2015/grid-material/src/lib/components/popup-export/popup-export.component.js +1 -1
  256. package/esm2015/grid-material/src/lib/components/popup-filter/popup-filter.component.js +1 -1
  257. package/esm2015/grid-material/src/lib/components/popup-grid-configuration/popup-grid-configuration.component.js +1 -1
  258. package/esm2015/grid-material/src/lib/components/quick-action/quick-action.component.js +1 -1
  259. package/esm2015/grid-material/src/lib/directives/sd-material-cell-def.directive.js +1 -1
  260. package/esm2015/grid-material/src/lib/directives/sd-material-empty-data-def.directive.js +1 -1
  261. package/esm2015/grid-material/src/lib/directives/sd-material-filter-def.directive.js +1 -1
  262. package/esm2015/grid-material/src/lib/directives/sd-material-footer-def.directive.js +1 -1
  263. package/esm2015/grid-material/src/lib/directives/sd-material-sub-information-def.directive.js +1 -1
  264. package/esm2015/grid-material/src/lib/functions/calculate-sd-id.js +1 -1
  265. package/esm2015/grid-material/src/lib/grid-material.component.js +8 -6
  266. package/esm2015/grid-material/src/lib/grid-material.module.js +1 -1
  267. package/esm2015/grid-material/src/lib/models/grid-action.model.js +1 -1
  268. package/esm2015/grid-material/src/lib/models/grid-cell.model.js +1 -1
  269. package/esm2015/grid-material/src/lib/models/grid-column.model.js +1 -1
  270. package/esm2015/grid-material/src/lib/models/grid-command.model.js +1 -1
  271. package/esm2015/grid-material/src/lib/models/grid-config.model.js +1 -1
  272. package/esm2015/grid-material/src/lib/models/grid-configuration.model.js +1 -1
  273. package/esm2015/grid-material/src/lib/models/grid-editor.model.js +1 -1
  274. package/esm2015/grid-material/src/lib/models/grid-export.model.js +1 -1
  275. package/esm2015/grid-material/src/lib/models/grid-filter.model.js +1 -1
  276. package/esm2015/grid-material/src/lib/models/grid-group.model.js +1 -1
  277. package/esm2015/grid-material/src/lib/models/grid-option.model.js +1 -1
  278. package/esm2015/grid-material/src/lib/models/grid-reload.model.js +1 -1
  279. package/esm2015/grid-material/src/lib/models/grid-selection.model.js +1 -1
  280. package/esm2015/grid-material/src/lib/models/grid-style.model.js +1 -1
  281. package/esm2015/grid-material/src/lib/models/grid-sub-information.model.js +1 -1
  282. package/esm2015/grid-material/src/lib/models/grid.model.js +1 -1
  283. package/esm2015/grid-material/src/lib/pipes/cell-view.pipe.js +1 -1
  284. package/esm2015/grid-material/src/lib/pipes/column-badge.pipe.js +1 -1
  285. package/esm2015/grid-material/src/lib/pipes/column-children-filter.pipe.js +1 -1
  286. package/esm2015/grid-material/src/lib/pipes/column-html-template.pipe.js +1 -1
  287. package/esm2015/grid-material/src/lib/pipes/column-title.pipe.js +1 -1
  288. package/esm2015/grid-material/src/lib/pipes/column-tooltip.pipe.js +1 -1
  289. package/esm2015/grid-material/src/lib/pipes/column-transform.pipe.js +1 -1
  290. package/esm2015/grid-material/src/lib/pipes/column-values.pipe.js +1 -1
  291. package/esm2015/grid-material/src/lib/pipes/command-disable.pipe.js +1 -1
  292. package/esm2015/grid-material/src/lib/pipes/command-filter.pipe.js +1 -1
  293. package/esm2015/grid-material/src/lib/pipes/command-icon.pipe.js +1 -1
  294. package/esm2015/grid-material/src/lib/pipes/command-title.pipe.js +1 -1
  295. package/esm2015/grid-material/src/lib/pipes/editor-handler-column.pipe.js +1 -1
  296. package/esm2015/grid-material/src/lib/pipes/editor-handler-row.pipe.js +1 -1
  297. package/esm2015/grid-material/src/lib/pipes/editor-validate.pipe.js +1 -1
  298. package/esm2015/grid-material/src/lib/pipes/filter-column.pipe.js +1 -1
  299. package/esm2015/grid-material/src/lib/pipes/filter-external.pipe.js +1 -1
  300. package/esm2015/grid-material/src/lib/pipes/grid-configuration-result.pipe.js +1 -1
  301. package/esm2015/grid-material/src/lib/pipes/sd-group.pipe.js +1 -1
  302. package/esm2015/grid-material/src/lib/pipes/selection-action-filter.pipe.js +1 -1
  303. package/esm2015/grid-material/src/lib/pipes/selection-disable.pipe.js +1 -1
  304. package/esm2015/grid-material/src/lib/pipes/selection-visible-select-all.pipe.js +1 -1
  305. package/esm2015/grid-material/src/lib/pipes/selection-visible.pipe.js +1 -1
  306. package/esm2015/grid-material/src/lib/pipes/style-row-css.pipe.js +1 -1
  307. package/esm2015/grid-material/src/lib/services/generated-column/generated-column.model.js +1 -1
  308. package/esm2015/grid-material/src/lib/services/generated-column/generated-column.service.js +1 -1
  309. package/esm2015/grid-material/src/lib/services/grid-configuration.service.js +1 -1
  310. package/esm2015/grid-material/src/lib/services/grid-filter.service.js +1 -1
  311. package/esm2015/grid-material/src/public-api.js +1 -1
  312. package/esm2015/group/index.js +1 -1
  313. package/esm2015/group/sd-angular-core-group.js +1 -1
  314. package/esm2015/group/src/lib/group.component.js +1 -1
  315. package/esm2015/group/src/lib/group.module.js +1 -1
  316. package/esm2015/group/src/public-api.js +1 -1
  317. package/esm2015/header-title/index.js +1 -1
  318. package/esm2015/header-title/sd-angular-core-header-title.js +1 -1
  319. package/esm2015/header-title/src/lib/header-title.component.js +1 -1
  320. package/esm2015/header-title/src/lib/header-title.module.js +1 -1
  321. package/esm2015/header-title/src/public-api.js +1 -1
  322. package/esm2015/image-preview/index.js +1 -1
  323. package/esm2015/image-preview/sd-angular-core-image-preview.js +1 -1
  324. package/esm2015/image-preview/src/lib/directives/image-preview.directive.js +1 -1
  325. package/esm2015/image-preview/src/lib/image-preview/image-preview.component.js +1 -1
  326. package/esm2015/image-preview/src/lib/image-preview/image-preview.module.js +1 -1
  327. package/esm2015/image-preview/src/lib/models/image-preview.model.js +1 -1
  328. package/esm2015/image-preview/src/public-api.js +1 -1
  329. package/esm2015/input/index.js +1 -1
  330. package/esm2015/input/sd-angular-core-input.js +1 -1
  331. package/esm2015/input/src/lib/directives/input-suffix.directive.js +1 -1
  332. package/esm2015/input/src/lib/directives/touch.directive.js +1 -1
  333. package/esm2015/input/src/lib/input-tooltip.pipe.js +1 -1
  334. package/esm2015/input/src/lib/input.component.js +1 -1
  335. package/esm2015/input/src/lib/input.module.js +1 -1
  336. package/esm2015/input/src/public-api.js +1 -1
  337. package/esm2015/input-currency/index.js +1 -1
  338. package/esm2015/input-currency/sd-angular-core-input-currency.js +1 -1
  339. package/esm2015/input-currency/src/lib/input-currency-tooltip.pipe.js +1 -1
  340. package/esm2015/input-currency/src/lib/input-currency.component.js +1 -1
  341. package/esm2015/input-currency/src/lib/input-currency.module.js +1 -1
  342. package/esm2015/input-currency/src/public-api.js +1 -1
  343. package/esm2015/input-dropdown/index.js +1 -1
  344. package/esm2015/input-dropdown/sd-angular-core-input-dropdown.js +1 -1
  345. package/esm2015/input-dropdown/src/lib/input-tooltip.pipe.js +1 -1
  346. package/esm2015/input-dropdown/src/lib/input.component.js +1 -1
  347. package/esm2015/input-dropdown/src/lib/input.module.js +1 -1
  348. package/esm2015/input-dropdown/src/public-api.js +1 -1
  349. package/esm2015/input-number/index.js +1 -1
  350. package/esm2015/input-number/sd-angular-core-input-number.js +1 -1
  351. package/esm2015/input-number/src/lib/input-number.component.js +1 -1
  352. package/esm2015/input-number/src/lib/input-number.module.js +1 -1
  353. package/esm2015/input-number/src/public-api.js +1 -1
  354. package/esm2015/input-upload-file/index.js +1 -1
  355. package/esm2015/input-upload-file/sd-angular-core-input-upload-file.js +1 -1
  356. package/esm2015/input-upload-file/src/lib/input-upload-file.component.js +1 -1
  357. package/esm2015/input-upload-file/src/lib/input-upload-file.module.js +1 -1
  358. package/esm2015/input-upload-file/src/public-api.js +1 -1
  359. package/esm2015/json-editor/index.js +1 -1
  360. package/esm2015/json-editor/sd-angular-core-json-editor.js +1 -1
  361. package/esm2015/json-editor/src/lib/json-editor.component.js +1 -1
  362. package/esm2015/json-editor/src/lib/json-editor.module.js +1 -1
  363. package/esm2015/json-editor/src/public-api.js +1 -1
  364. package/esm2015/konva/index.js +1 -1
  365. package/esm2015/konva/sd-angular-core-konva.js +1 -1
  366. package/esm2015/konva/src/lib/konva.module.js +1 -1
  367. package/esm2015/konva/src/lib/merge-images/merge-images.component.js +1 -1
  368. package/esm2015/konva/src/public-api.js +1 -1
  369. package/esm2015/label/index.js +1 -1
  370. package/esm2015/label/sd-angular-core-label.js +1 -1
  371. package/esm2015/label/src/lib/label.component.js +1 -1
  372. package/esm2015/label/src/lib/label.module.js +1 -1
  373. package/esm2015/label/src/public-api.js +1 -1
  374. package/esm2015/lib/core.module.js +1 -1
  375. package/esm2015/lib/material.module.js +1 -1
  376. package/esm2015/loading/index.js +1 -1
  377. package/esm2015/loading/sd-angular-core-loading.js +1 -1
  378. package/esm2015/loading/src/lib/loading.service.js +1 -1
  379. package/esm2015/loading/src/public-api.js +1 -1
  380. package/esm2015/modal/index.js +1 -1
  381. package/esm2015/modal/sd-angular-core-modal.js +1 -1
  382. package/esm2015/modal/src/lib/bottom-sheet/bottom-sheet-body/bottom-sheet-body.component.js +1 -1
  383. package/esm2015/modal/src/lib/bottom-sheet/bottom-sheet-footer/bottom-sheet-footer.component.js +1 -1
  384. package/esm2015/modal/src/lib/bottom-sheet/bottom-sheet-header/bottom-sheet-header.component.js +1 -1
  385. package/esm2015/modal/src/lib/bottom-sheet/bottom-sheet.component.js +1 -1
  386. package/esm2015/modal/src/lib/modal/modal-body/modal-body.component.js +1 -1
  387. package/esm2015/modal/src/lib/modal/modal-footer/modal-footer.component.js +1 -1
  388. package/esm2015/modal/src/lib/modal/modal-header/modal-header.component.js +1 -1
  389. package/esm2015/modal/src/lib/modal/modal.component.js +1 -1
  390. package/esm2015/modal/src/lib/modal.module.js +1 -1
  391. package/esm2015/modal/src/public-api.js +1 -1
  392. package/esm2015/modal-resizable/index.js +1 -1
  393. package/esm2015/modal-resizable/sd-angular-core-modal-resizable.js +1 -1
  394. package/esm2015/modal-resizable/src/lib/modal-resizable/modal-resizable.component.js +1 -1
  395. package/esm2015/modal-resizable/src/lib/modal-resizable.module.js +1 -1
  396. package/esm2015/modal-resizable/src/public-api.js +1 -1
  397. package/esm2015/notify/index.js +1 -1
  398. package/esm2015/notify/sd-angular-core-notify.js +1 -1
  399. package/esm2015/notify/src/lib/components/dialog-confirm/dialog-confirm.component.js +1 -1
  400. package/esm2015/notify/src/lib/configurations/notify.configuration.js +1 -1
  401. package/esm2015/notify/src/lib/notify.module.js +1 -1
  402. package/esm2015/notify/src/lib/notify.service.js +1 -1
  403. package/esm2015/notify/src/public-api.js +1 -1
  404. package/esm2015/popover/index.js +1 -1
  405. package/esm2015/popover/sd-angular-core-popover.js +1 -1
  406. package/esm2015/popover/src/lib/directives/popover-content.directive.js +1 -1
  407. package/esm2015/popover/src/lib/directives/popover-trigger.directive.js +1 -1
  408. package/esm2015/popover/src/lib/popover/popover.component.js +1 -1
  409. package/esm2015/popover/src/lib/popover.model.js +1 -1
  410. package/esm2015/popover/src/lib/popover.module.js +1 -1
  411. package/esm2015/popover/src/public-api.js +1 -1
  412. package/esm2015/public-api.js +1 -1
  413. package/esm2015/quick-action/index.js +1 -1
  414. package/esm2015/quick-action/sd-angular-core-quick-action.js +1 -1
  415. package/esm2015/quick-action/src/lib/quick-action.component.js +1 -1
  416. package/esm2015/quick-action/src/lib/quick-action.module.js +1 -1
  417. package/esm2015/quick-action/src/public-api.js +1 -1
  418. package/esm2015/radio/index.js +1 -1
  419. package/esm2015/radio/sd-angular-core-radio.js +1 -1
  420. package/esm2015/radio/src/lib/radio.component.js +1 -1
  421. package/esm2015/radio/src/lib/radio.module.js +1 -1
  422. package/esm2015/radio/src/public-api.js +1 -1
  423. package/esm2015/sd-angular-core.js +1 -1
  424. package/esm2015/select/index.js +1 -1
  425. package/esm2015/select/sd-angular-core-select.js +1 -1
  426. package/esm2015/select/src/lib/select-display-def.directive.js +1 -1
  427. package/esm2015/select/src/lib/select.component.js +3 -3
  428. package/esm2015/select/src/lib/select.module.js +1 -1
  429. package/esm2015/select/src/public-api.js +1 -1
  430. package/esm2015/select-badge/index.js +1 -1
  431. package/esm2015/select-badge/sd-angular-core-select-badge.js +1 -1
  432. package/esm2015/select-badge/src/lib/select-badge-display-def.directive.js +1 -1
  433. package/esm2015/select-badge/src/lib/select-badge.component.js +1 -1
  434. package/esm2015/select-badge/src/lib/select-badge.module.js +1 -1
  435. package/esm2015/select-badge/src/public-api.js +1 -1
  436. package/esm2015/select-editor/index.js +1 -1
  437. package/esm2015/select-editor/sd-angular-core-select-editor.js +1 -1
  438. package/esm2015/select-editor/src/lib/select-editor.component.js +1 -1
  439. package/esm2015/select-editor/src/lib/select-editor.module.js +1 -1
  440. package/esm2015/select-editor/src/public-api.js +1 -1
  441. package/esm2015/service/index.js +1 -1
  442. package/esm2015/service/sd-angular-core-service.js +1 -1
  443. package/esm2015/service/src/lib/service.module.js +1 -1
  444. package/esm2015/service/src/public-api.js +1 -1
  445. package/esm2015/setting/index.js +1 -1
  446. package/esm2015/setting/sd-angular-core-setting.js +1 -1
  447. package/esm2015/setting/src/lib/setting.model.js +1 -1
  448. package/esm2015/setting/src/lib/setting.service.js +1 -1
  449. package/esm2015/setting/src/public-api.js +1 -1
  450. package/esm2015/side-drawer/index.js +1 -1
  451. package/esm2015/side-drawer/sd-angular-core-side-drawer.js +1 -1
  452. package/esm2015/side-drawer/src/lib/side-drawer/side-drawer.component.js +1 -1
  453. package/esm2015/side-drawer/src/lib/side-drawer.module.js +1 -1
  454. package/esm2015/side-drawer/src/public-api.js +1 -1
  455. package/esm2015/switch/index.js +1 -1
  456. package/esm2015/switch/sd-angular-core-switch.js +1 -1
  457. package/esm2015/switch/src/lib/switch.component.js +1 -1
  458. package/esm2015/switch/src/lib/switch.module.js +1 -1
  459. package/esm2015/switch/src/public-api.js +1 -1
  460. package/esm2015/tab-router/index.js +1 -1
  461. package/esm2015/tab-router/sd-angular-core-tab-router.js +1 -1
  462. package/esm2015/tab-router/src/lib/actions/tab-router.action.js +1 -1
  463. package/esm2015/tab-router/src/lib/components/tab-router-item/tab-router-item.component.js +1 -1
  464. package/esm2015/tab-router/src/lib/components/tab-router-nav/tab-router-nav.component.js +1 -1
  465. package/esm2015/tab-router/src/lib/components/tab-router-outlet/tab-router-outlet.component.js +1 -1
  466. package/esm2015/tab-router/src/lib/decorators/tab.decorator.js +1 -1
  467. package/esm2015/tab-router/src/lib/directives/router-link-mouse-down.directive.js +1 -1
  468. package/esm2015/tab-router/src/lib/events/tab-router.event.js +1 -1
  469. package/esm2015/tab-router/src/lib/models/tab-router.model.js +1 -1
  470. package/esm2015/tab-router/src/lib/pipes/tab-info.pipe.js +1 -1
  471. package/esm2015/tab-router/src/lib/services/tab-decorator.service.js +1 -1
  472. package/esm2015/tab-router/src/lib/services/tab-router.service.js +1 -1
  473. package/esm2015/tab-router/src/lib/tab-router.module.js +1 -1
  474. package/esm2015/tab-router/src/public-api.js +1 -1
  475. package/esm2015/textarea/index.js +1 -1
  476. package/esm2015/textarea/sd-angular-core-textarea.js +1 -1
  477. package/esm2015/textarea/src/lib/textarea.component.js +1 -1
  478. package/esm2015/textarea/src/lib/textarea.module.js +1 -1
  479. package/esm2015/textarea/src/public-api.js +1 -1
  480. package/esm2015/time/index.js +1 -1
  481. package/esm2015/time/sd-angular-core-time.js +1 -1
  482. package/esm2015/time/src/lib/time.component.js +1 -1
  483. package/esm2015/time/src/lib/time.module.js +1 -1
  484. package/esm2015/time/src/public-api.js +1 -1
  485. package/esm2015/timeline/index.js +1 -1
  486. package/esm2015/timeline/sd-angular-core-timeline.js +1 -1
  487. package/esm2015/timeline/src/lib/components/timeline.component.js +1 -1
  488. package/esm2015/timeline/src/lib/directives/timeline-def.directive.js +1 -1
  489. package/esm2015/timeline/src/lib/timeline.module.js +1 -1
  490. package/esm2015/timeline/src/public-api.js +1 -1
  491. package/esm2015/translate/index.js +1 -1
  492. package/esm2015/translate/sd-angular-core-translate.js +1 -1
  493. package/esm2015/translate/src/lib/translate.model.js +1 -1
  494. package/esm2015/translate/src/lib/translate.module.js +1 -1
  495. package/esm2015/translate/src/lib/translate.pipe.js +1 -1
  496. package/esm2015/translate/src/lib/translate.service.js +1 -1
  497. package/esm2015/upload-excel/index.js +1 -1
  498. package/esm2015/upload-excel/sd-angular-core-upload-excel.js +1 -1
  499. package/esm2015/upload-excel/src/lib/pipes/columm-hidden.pipe.js +1 -1
  500. package/esm2015/upload-excel/src/lib/pipes/column-transform.pipe.js +1 -1
  501. package/esm2015/upload-excel/src/lib/upload-excel.component.js +1 -1
  502. package/esm2015/upload-excel/src/lib/upload-excel.model.js +1 -1
  503. package/esm2015/upload-excel/src/lib/upload-excel.module.js +1 -1
  504. package/esm2015/upload-excel/src/public-api.js +1 -1
  505. package/esm2015/upload-file/index.js +1 -1
  506. package/esm2015/upload-file/sd-angular-core-upload-file.js +1 -1
  507. package/esm2015/upload-file/src/lib/upload-file.component.js +1 -1
  508. package/esm2015/upload-file/src/lib/upload-file.module.js +1 -1
  509. package/esm2015/upload-file/src/public-api.js +1 -1
  510. package/esm2015/utility/index.js +1 -1
  511. package/esm2015/utility/sd-angular-core-utility.js +1 -1
  512. package/esm2015/utility/src/lib/directives/desktop.directive.js +1 -1
  513. package/esm2015/utility/src/lib/directives/mobile-tablet.directive.js +1 -1
  514. package/esm2015/utility/src/lib/directives/mobile.directive.js +1 -1
  515. package/esm2015/utility/src/lib/directives/tablet.directive.js +1 -1
  516. package/esm2015/utility/src/lib/pipes/currency.pipe.js +1 -1
  517. package/esm2015/utility/src/lib/pipes/safe-html.pipe.js +1 -1
  518. package/esm2015/utility/src/lib/pipes/time-different.pipe.js +1 -1
  519. package/esm2015/utility/src/lib/utility.module.js +1 -1
  520. package/esm2015/utility/src/lib/utility.service.js +1 -1
  521. package/esm2015/utility/src/public-api.js +1 -1
  522. package/esm2015/view/index.js +1 -1
  523. package/esm2015/view/sd-angular-core-view.js +1 -1
  524. package/esm2015/view/src/lib/view.module.js +1 -1
  525. package/esm2015/view/src/public-api.js +1 -1
  526. package/fesm2015/sd-angular-core-grid-material.js +24 -15
  527. package/fesm2015/sd-angular-core-grid-material.js.map +1 -1
  528. package/fesm2015/sd-angular-core-select.js +2 -2
  529. package/fesm2015/sd-angular-core-select.js.map +1 -1
  530. package/grid-material/sd-angular-core-grid-material.metadata.json +1 -1
  531. package/grid-material/src/lib/components/grid-filter/grid-filter.component.d.ts +2 -2
  532. package/package.json +1 -1
  533. package/{sd-angular-core-1.3.22.tgz → sd-angular-core-1.3.24.tgz} +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../projects/sd-core/grid-material/src/lib/directives/sd-material-cell-def.directive.ts","../../../../projects/sd-core/grid-material/src/lib/directives/sd-material-filter-def.directive.ts","../../../../projects/sd-core/grid-material/src/lib/directives/sd-material-footer-def.directive.ts","../../../../projects/sd-core/grid-material/src/lib/directives/sd-material-empty-data-def.directive.ts","../../../../projects/sd-core/grid-material/src/lib/directives/sd-material-sub-information-def.directive.ts","../../../../node_modules/tslib/tslib.es6.js","../../../../projects/sd-core/grid-material/src/lib/models/grid-configuration.model.ts","../../../../projects/sd-core/grid-material/src/lib/components/popup-filter/popup-filter.component.ts","../../../../projects/sd-core/grid-material/src/lib/services/grid-filter.service.ts","../../../../projects/sd-core/grid-material/src/lib/components/grid-filter/grid-filter.component.ts","../../../../projects/sd-core/grid-material/src/lib/components/popup-export/popup-export.component.ts","../../../../projects/sd-core/grid-material/src/lib/services/grid-configuration.service.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/column-values.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/functions/calculate-sd-id.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/editor-handler-column.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/grid-material.component.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/command-filter.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/command-disable.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/command-icon.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/command-title.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/column-html-template.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/components/desktop-cell-view/desktop-cell-view.component.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/column-transform.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/filter-external.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/filter-column.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/components/desktop-cell-children-view/desktop-cell-children-view.component.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/column-children-filter.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/column-title.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/components/desktop-command/desktop-command.component.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/column-badge.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/grid-configuration-result.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/components/popup-grid-configuration/popup-grid-configuration.component.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/column-tooltip.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/selection-action-filter.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/selection-disable.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/selection-visible-select-all.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/services/generated-column/generated-column.service.ts","../../../../projects/sd-core/grid-material/src/lib/components/dynamic-column/dynamic-column.component.ts","../../../../projects/sd-core/grid-material/src/lib/components/desktop-cell/desktop-cell.component.ts","../../../../projects/sd-core/grid-material/src/lib/components/desktop-cell-editor/desktop-cell-editor.component.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/editor-handler-row.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/editor-validate.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/style-row-css.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/components/desktop-editor-validation/desktop-editor-validation.component.ts","../../../../projects/sd-core/grid-material/src/lib/components/column-inline-filter/column-inline-filter.component.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/selection-visible.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/components/quick-action/quick-action.component.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/cell-view.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/sd-group.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/grid-material.module.ts"],"names":["templateRef","this","Directive","args","selector","TemplateRef","Input","SdMaterialFilterDefDirective","Object","defineProperty","prototype","val","defaultShowing","extendStatics","d","b","setPrototypeOf","__proto__","Array","p","hasOwnProperty","call","__rest","s","e","t","indexOf","getOwnPropertySymbols","i","length","propertyIsEnumerable","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","rejected","result","done","then","apply","__generator","body","f","y","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","n","v","op","TypeError","pop","push","create","__values","o","m","__read","r","ar","error","__spread","arguments","concat","__classPrivateFieldGet","receiver","state","kind","has","get","__classPrivateFieldSet","set","DEFAULT_GRID_MATERIAL_CONFIG","pageSize","pages","GRID_MATERIAL_CONFIG","InjectionToken","SdPopupFilter","cdRef","_this","externalFilters","externalFilter","inlineExternal","columns","columnFilter","inlineColumn","filterDefs","filterDef","inlineFilterDef","changeFilter","EventEmitter","clearFilter","open","JSON","parse","stringify","modal","markForCheck","close","onApply","emit","onClear","Component","template","changeDetection","ChangeDetectionStrategy","OnPush","ChangeDetectorRef","ViewChild","Output","settingService","_prefix","key","selectedQuickFilter","quickFilters","configuration","prefix","_a","hash","Injectable","SdSettingService","SdGridFilter","ref","deviceService","gridFilterService","_filterOptionChanges","Subject","filterChange","_subscription","Subscription","_loadDefault","_u","_v","column","field","_b","filter","_c","_d","default","_w","_x","_e","type","from","_j","_g","_f","_h","undefined","to","_o","_l","_k","_m","_p","_y","_z","sdMaterialFilterDef","_q","_clearFilter","_s","_t","onFilter","item","popupFilter","onChangeFilter","onReset","onClearFilter","setFilter","exFilter","isMobileOrTablet","isDesktop","ngAfterViewInit","add","pipe","startWith","subscribe","disabled","ngOnDestroy","unsubscribe","DeviceDetectorService","SdGridFilterService","SdPopupExport","loadingService","exportService","notifyService","translateService","groups","enableCreating","selected","files","export","form","FormGroup","_getExportableColumns","gridColumns","additionalColumns","_getExportableGroups","gridOption","permission","hideMyTemplates","loadFiles","code","detectChanges","exportDefault","_getExportColumns","columns_1","displayColumns","firstColumns","secondColumns","reduce","first","find","children","e1","map","assign","data","file","isCSV","exportCSV","exportRaw","isRaw","group","selectedGroup","filesInFolder","_initTemplate","fileName","sheets","isArray","sheet","name","items","fields","_0","_1","_3","generateTemplate","start","finally","stop","generateAndUploadTemplate","generateUploadTemplate","onExport","uploadTemplate","validator","_r","validators","removeFile","confirm","translate","idx","splice","createTemplate","invalid","markAllAsTouched","some","notify","warning","templateName","filePath","onChangeGroup","listGroups","selectedOptions","validatorTemplateName","test","option","forEach","childColumn","title","description","width","ngOnInit","SdLoadingService","SdExportService","SdNotifyService","SdTranslateService","gridMaterialConfiguration","_COLUMNS","EDITORVALIDATION","EDITOR","SUBINFORMATION","COMMAND","SELECTION","GROUP","_cache","init","subject_1","load","_load","_get","_set","remove","_remove","_default","observer","_getKey","config","hidden","origin","invisible","fixed","subject","storage","createServer","catch","console","isGeneratedColumn","col","generateConfigurationResult","sdSubInformation","fixedColumn","firstHeaders","secondHeaders","displayedColumns","displayedFooters","multipleHeader","selection","commands","editor","addable","removable","visible","generatedColumn","generatedColumns","includes","subColumn","e_2","colSpan","Inject","Optional","transform","valueField","displayField","remain","_prefix$1","isMultible","_cache$1","values","join","Pipe","CalculateSdId","sdId","editorHandlerColumn","expandDetail","isExpanded","isExpanding","isSelected","sdGroup","selectable","actions","groupedActions","originItem","editorErrorMessage","editorHandlerRow","SdEditorHandlerColumnPipe","zone","_visible","columns_1_1","childCol","run","NgZone","SdGridMaterial","gridConfigurationService","columnValuesPipe","editorHandlerColumnPipe","uuid.v4","_localItems","selectedItems","isLoading","isHiddenPaginator","_paginator","_sort","sdCellDefs","QueryList","cellDef","sdFooterDefs","footerDef","hasFooter","sdFilterDefs","_reload","BehaviorSubject","force","source","isExporting","isSelectAll","exportTitle","_loadCompleted","_initCellDef","_5","_6","sdMaterialCellDef","_initFilterDef","_initFooterDef","sdMaterialFooterDef","_filterExportInfo","pageNumber","rawColumnFilter","gridFilter","rawExternalFilter","rawFilterDef","orderBy","active","orderDirection","direction","isExported","_initConfiguration","paginate","showFirstLastButtons","_filterLocal","localItems","filterInfo","filterValue","toString","trim","toLowerCase","columnValue","fValue","replace","cValue","fromDate","Date","begin","toDate","end","getTime","type_1","field_1","sort","current","s1","s2","reverse","index","total","_getFilter","pageIndex","filterReq","isObservable","toPromise","results","_4","handle","error_1","_render","sdScroll","scrollTop","reload","onReload","every","_updateSelectedItems","_load$1","_exportedItems","exportedItems","_allColumns","_allExportedColumns","_onExport","columns_2","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","exportColumn","exportedColumn","_8","displayOnTrue","displayOnFalse","date","transformDate","toFormat","_7","e_8","columns_3","columns_3_1","exportItems_2","exportItems_2_1","_10","exportExcelRaw","exportByTemplate","max","onFilterChange","onExpand","rowData","subInformation","always","multiple","res","onSelect","single","onSelectAll","onClearSelection","editorStatus","sdVersion","onCreate","onAdd","addToLast","temporary","onUpdate","onSave","saving","validate","message","err_1","onCancel","idx2","idx1","onRemove","beforeRemove","_2","update","refreshItem","_subscription$1","gridConfigurationObserver","paginator","page","sortChange","debounceTime","switchMap","changes","drop","event","moveItemInArray","previousIndex","currentIndex","keys","animations","trigger","style","height","minHeight","visibility","transition","animate","SdGridConfigurationService","SdColumnValuesPipe","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","columnChildren","SdColumnChildrenFilterPipe","_isMobileOrTablet","transformValue","templateValue","SdColumnTitlePipe","dynamicTitle","SdColumnBadgePipe","badge","badgeType","color","badgeIcon","SdGridConfigurationResultPipe","SdPopupGridConfiguration","isCreatingColumn","disabledDrag","_cache$2","createColumn","mouseUp","dropTable","table","renderRows","handleMouseDown","handleMouseUp","HostListener","SdColumnTooltipPipe","tooltip","_convert","action","fontSet","click","childAction","key_1","actions_1","actions_1_1","availableActions","availableActions_1","availableActions_1_1","isGrouped","setTimeout","_cache$3","loadSystem","systemColumn","SdDynamicColumn","generatedColumnService","columnTypes","isDetail","originColumns","onDetail","detail","isSystem","useTemplate","markAsUntouched","markAsPristine","systemSetting","setting","id","systemColumns","_subscription$2","SdGeneratedColumnService","SdSideDrawer","onChange","change","editorOnAdd","editorOnEdit","edit","editorOnDelete","delete","SdEditorHandlerRowPipe","status","isDisabled","editable","savable","cancelable","_visible$1","SdEditorValidatePipe","_previous","_delay","now","SdStyleRowCss","rowCss","SdColumnInlineFilter","useFilterDate","hasGroup","clear","SdCellViewPipe","utilityService","_maxSecond","_maxMinute","_maxHour","_maxDay","_maxMonth","_isMobileOrTablet$1","displayOnEmpty","align","display","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","SdDesktopCellEditor","SdDesktopEditorValidation","SdDesktopCellView","SdDesktopCellChildrenView","SdDesktopCommand","SdSelectionActionFilterPipe","SdSelectionVisiblePipe","SdSelectionDisablePipe","SdSelectionVisibleSelectAllPipe","exports","providers","DatePipe","DecimalPipe","CdkColumnDef","provide","useClass"],"mappings":"owHAOE,SAAmBA,GAAAC,KAAAD,YAAAA,uBALpBE,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,mEAHeC,EAAAA,0DAMxBC,EAAAA,0BCKD,SAAAC,EAAmBP,GAAAC,KAAAD,YAAAA,SAJnBQ,OAAAC,eAA6BF,EAAAG,UAAA,UAAO,KAApC,SAAqCC,GACnCV,KAAKW,eAA0B,KAARD,GAAeA,4DANzCT,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,qEAHeC,EAAAA,4DAMxBC,EAAAA,uBACAA,EAAAA,MAAKH,KAAA,CAAC,2BCAP,SAAmBH,GAAAC,KAAAD,YAAAA,uBALpBE,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,qEAHeC,EAAAA,4DAMxBC,EAAAA,eCAD,SAAmBN,GAAAC,KAAAD,YAAAA,uBAJpBE,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,wEAHQC,EAAAA,qBCMlB,SAAmBL,GAAAC,KAAAD,YAAAA,uBAJpBE,EAAAA,UAASC,KAAA,CAAC,CACTC,SAAU,6EAHQC,EAAAA;;;;;;;;;;;;;;;ACgBpB,IAAIQ,EAAgB,SAASC,EAAGC,GAI5B,OAHAF,EAAgBL,OAAOQ,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUJ,EAAGC,GAAKD,EAAEG,UAAYF,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAII,KAAKJ,EAAOP,OAAOE,UAAUU,eAAeC,KAAKN,EAAGI,KAAIL,EAAEK,GAAKJ,EAAEI,MAC3EL,EAAGC,aAsBZO,EAAOC,EAAGC,GACtB,IAAIC,EAAI,GACR,IAAK,IAAIN,KAAKI,EAAOf,OAAOE,UAAUU,eAAeC,KAAKE,EAAGJ,IAAMK,EAAEE,QAAQP,GAAK,IAC9EM,EAAEN,GAAKI,EAAEJ,IACb,GAAS,MAALI,GAAqD,mBAAjCf,OAAOmB,sBACtB,CAAA,IAAIC,EAAI,EAAb,IAAgBT,EAAIX,OAAOmB,sBAAsBJ,GAAIK,EAAIT,EAAEU,OAAQD,IAC3DJ,EAAEE,QAAQP,EAAES,IAAM,GAAKpB,OAAOE,UAAUoB,qBAAqBT,KAAKE,EAAGJ,EAAES,MACvEH,EAAEN,EAAES,IAAML,EAAEJ,EAAES,KAE1B,OAAOH,WAkBKM,EAAUC,EAASC,EAAYC,EAAGC,GAE9C,OAAO,IAAKD,IAAMA,EAAIE,WAAU,SAAUC,EAASC,GAC/C,SAASC,EAAUC,GAAS,IAAMC,EAAKN,EAAUO,KAAKF,IAAW,MAAOhB,GAAKc,EAAOd,IACpF,SAASmB,EAASH,GAAS,IAAMC,EAAKN,EAAiB,MAAEK,IAAW,MAAOhB,GAAKc,EAAOd,IACvF,SAASiB,EAAKG,GAJlB,IAAeJ,EAIaI,EAAOC,KAAOR,EAAQO,EAAOJ,QAJ1CA,EAIyDI,EAAOJ,MAJhDA,aAAiBN,EAAIM,EAAQ,IAAIN,GAAE,SAAUG,GAAWA,EAAQG,OAITM,KAAKP,EAAWI,GAClGF,GAAMN,EAAYA,EAAUY,MAAMf,EAASC,GAAc,KAAKS,oBAItDM,EAAYhB,EAASiB,GACjC,IAAsGC,EAAGC,EAAG1B,EAAG2B,EAA3GC,EAAI,CAAEC,MAAO,EAAGC,KAAM,WAAa,GAAW,EAAP9B,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,IAAO+B,KAAM,GAAIC,IAAK,IAChG,OAAOL,EAAI,CAAEV,KAAMgB,EAAK,GAAIC,MAASD,EAAK,GAAIE,OAAUF,EAAK,IAAwB,mBAAXG,SAA0BT,EAAES,OAAOC,UAAY,WAAa,OAAO7D,OAAUmD,EACvJ,SAASM,EAAKK,GAAK,OAAO,SAAUC,GAAK,OACzC,SAAcC,GACV,GAAIf,EAAG,MAAM,IAAIgB,UAAU,mCAC3B,KAAOb,OACH,GAAIH,EAAI,EAAGC,IAAM1B,EAAY,EAARwC,EAAG,GAASd,EAAU,OAAIc,EAAG,GAAKd,EAAS,SAAO1B,EAAI0B,EAAU,SAAM1B,EAAEJ,KAAK8B,GAAI,GAAKA,EAAET,SAAWjB,EAAIA,EAAEJ,KAAK8B,EAAGc,EAAG,KAAKpB,KAAM,OAAOpB,EAE3J,OADI0B,EAAI,EAAG1B,IAAGwC,EAAK,CAAS,EAARA,EAAG,GAAQxC,EAAEe,QACzByB,EAAG,IACP,KAAK,EAAG,KAAK,EAAGxC,EAAIwC,EAAI,MACxB,KAAK,EAAc,OAAXZ,EAAEC,QAAgB,CAAEd,MAAOyB,EAAG,GAAIpB,MAAM,GAChD,KAAK,EAAGQ,EAAEC,QAASH,EAAIc,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAKZ,EAAEI,IAAIU,MAAOd,EAAEG,KAAKW,MAAO,SACxC,QACI,KAAM1C,EAAI4B,EAAEG,MAAM/B,EAAIA,EAAEI,OAAS,GAAKJ,EAAEA,EAAEI,OAAS,KAAkB,IAAVoC,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAEZ,EAAI,EAAG,SACjG,GAAc,IAAVY,EAAG,MAAcxC,GAAMwC,EAAG,GAAKxC,EAAE,IAAMwC,EAAG,GAAKxC,EAAE,IAAM,CAAE4B,EAAEC,MAAQW,EAAG,GAAI,MAC9E,GAAc,IAAVA,EAAG,IAAYZ,EAAEC,MAAQ7B,EAAE,GAAI,CAAE4B,EAAEC,MAAQ7B,EAAE,GAAIA,EAAIwC,EAAI,MAC7D,GAAIxC,GAAK4B,EAAEC,MAAQ7B,EAAE,GAAI,CAAE4B,EAAEC,MAAQ7B,EAAE,GAAI4B,EAAEI,IAAIW,KAAKH,GAAK,MACvDxC,EAAE,IAAI4B,EAAEI,IAAIU,MAChBd,EAAEG,KAAKW,MAAO,SAEtBF,EAAKhB,EAAK5B,KAAKW,EAASqB,GAC1B,MAAO7B,GAAKyC,EAAK,CAAC,EAAGzC,GAAI2B,EAAI,UAAeD,EAAIzB,EAAI,EACtD,GAAY,EAARwC,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAEzB,MAAOyB,EAAG,GAAKA,EAAG,QAAK,EAAQpB,MAAM,GArB9BJ,CAAK,CAACsB,EAAGC,MAyBhCxD,OAAO6D,gBAYpBC,EAASC,GACrB,IAAIhD,EAAsB,mBAAXsC,QAAyBA,OAAOC,SAAUU,EAAIjD,GAAKgD,EAAEhD,GAAIK,EAAI,EAC5E,GAAI4C,EAAG,OAAOA,EAAEnD,KAAKkD,GACrB,GAAIA,GAAyB,iBAAbA,EAAE1C,OAAqB,MAAO,CAC1Ca,KAAM,WAEF,OADI6B,GAAK3C,GAAK2C,EAAE1C,SAAQ0C,OAAI,GACrB,CAAE/B,MAAO+B,GAAKA,EAAE3C,KAAMiB,MAAO0B,KAG5C,MAAM,IAAIL,UAAU3C,EAAI,0BAA4B,4CAGxCkD,GAAOF,EAAGR,GACtB,IAAIS,EAAsB,mBAAXX,QAAyBU,EAAEV,OAAOC,UACjD,IAAKU,EAAG,OAAOD,EACf,IAAmBG,EAAYlD,EAA3BI,EAAI4C,EAAEnD,KAAKkD,GAAOI,EAAK,GAC3B,IACI,WAAc,IAANZ,GAAgBA,KAAM,MAAQW,EAAI9C,EAAEc,QAAQG,MAAM8B,EAAGP,KAAKM,EAAElC,OAExE,MAAOoC,GAASpD,EAAI,CAAEoD,MAAOA,WAEzB,IACQF,IAAMA,EAAE7B,OAAS2B,EAAI5C,EAAU,SAAI4C,EAAEnD,KAAKO,WAExC,GAAIJ,EAAG,MAAMA,EAAEoD,OAE7B,OAAOD,WAIKE,KACZ,IAAK,IAAIF,EAAK,GAAI/C,EAAI,EAAGA,EAAIkD,UAAUjD,OAAQD,IAC3C+C,EAAKA,EAAGI,OAAON,GAAOK,UAAUlD,KACpC,OAAO+C,EAyDcnE,OAAO6D,gBAkBhBW,GAAuBC,EAAUC,EAAOC,EAAMjC,GAC1D,GAAa,MAATiC,IAAiBjC,EAAG,MAAM,IAAIgB,UAAU,iDAC5C,GAAqB,mBAAVgB,EAAuBD,IAAaC,IAAUhC,GAAKgC,EAAME,IAAIH,GAAW,MAAM,IAAIf,UAAU,4EACvG,MAAgB,MAATiB,EAAejC,EAAa,MAATiC,EAAejC,EAAE7B,KAAK4D,GAAY/B,EAAIA,EAAEV,MAAQ0C,EAAMG,IAAIJ,YAGxEK,GAAuBL,EAAUC,EAAO1C,EAAO2C,EAAMjC,GACjE,GAAa,MAATiC,EAAc,MAAM,IAAIjB,UAAU,kCACtC,GAAa,MAATiB,IAAiBjC,EAAG,MAAM,IAAIgB,UAAU,iDAC5C,GAAqB,mBAAVgB,EAAuBD,IAAaC,IAAUhC,GAAKgC,EAAME,IAAIH,GAAW,MAAM,IAAIf,UAAU,2EACvG,MAAiB,MAATiB,EAAejC,EAAE7B,KAAK4D,EAAUzC,GAASU,EAAIA,EAAEV,MAAQA,EAAQ0C,EAAMK,IAAIN,EAAUzC,GAASA,EChOjG,OAAMgD,GACD,CACRC,SAAU,GACVC,MAAO,CAAC,GAAI,IAAK,MAIRC,GAAuB,IAAIC,EAAAA,eAA6C,gDC0BnF,SAAAC,EACUC,GADV,IAAAC,EAAA9F,KACUA,KAAA6F,MAAAA,EAjCD7F,KAAA+F,gBAAkD,GAC3D/F,KAAAgG,eAAsB,GACtBhG,KAAAiG,eAEI,GACKjG,KAAAkG,QAAkC,GAC3ClG,KAAAmG,aAAoB,GACpBnG,KAAAoG,aAEI,GAEKpG,KAAAqG,WAA6C,GACtDrG,KAAAsG,UAAiB,GACjBtG,KAAAuG,gBAEI,GAEMvG,KAAAwG,aAAe,IAAIC,EAAAA,aAcnBzG,KAAA0G,YAAc,IAAID,EAAAA,aAM5BzG,KAAA2G,KAAO,SAACzG,GAcE,IAAAkG,EAA2FlG,EAAIkG,aAAjFD,EAA6EjG,EAAIiG,aAAnEF,EAA+D/F,EAAI+F,eAAnDD,EAA+C9F,EAAI8F,eAAnCO,EAA+BrG,EAAIqG,gBAAlBD,EAAcpG,EAAIoG,UACvGR,EAAKM,aAAeQ,KAAKC,MAAMD,KAAKE,UAAUV,GAAgB,KAC9DN,EAAKK,aAAeS,KAAKC,MAAMD,KAAKE,UAAUX,GAAgB,KAC9DL,EAAKG,eAAiBW,KAAKC,MAAMD,KAAKE,UAAUb,GAAkB,KAClEH,EAAKE,eAAiBY,KAAKC,MAAMD,KAAKE,UAAUd,GAAkB,KAClEF,EAAKS,gBAAkBK,KAAKC,MAAMD,KAAKE,UAAUP,GAAmB,KACpET,EAAKQ,UAAYM,KAAKC,MAAMD,KAAKE,UAAUR,GAAa,KACxDR,EAAKiB,MAAMJ,OACXb,EAAKD,MAAMmB,gBAGbhH,KAAAiH,MAAQ,WACNnB,EAAKiB,MAAME,QACXnB,EAAKD,MAAMmB,gBAGbhH,KAAAkH,QAAU,WACRpB,EAAKU,aAAaW,KAAK,CACrBf,aAAcN,EAAKM,cAAgB,GACnCD,aAAcL,EAAKK,cAAgB,GACnCF,eAAgBH,EAAKG,gBAAkB,GACvCD,eAAgBF,EAAKE,gBAAkB,GACvCO,gBAAiBT,EAAKS,iBAAmB,GACzCD,UAAWR,EAAKQ,WAAa,KAE/BR,EAAKiB,MAAME,QACXnB,EAAKD,MAAMmB,uBAGbpB,EAAAnF,UAAA2G,QAAA,WACEpH,KAAK0G,YAAYS,OACjBnH,KAAK+G,MAAME,QACXjH,KAAK6F,MAAMmB,0CA3FdK,EAAAA,UAASnH,KAAA,CAAC,CACTC,SAAU,kBACVmH,SAAA,wvNAEAC,gBAAiBC,EAAAA,wBAAwBC,8LAV0CC,EAAAA,qDAalFC,EAAAA,UAASzH,KAAA,CAAC,kCACVG,EAAAA,uBAKAA,EAAAA,0BAMAA,EAAAA,4BAMAuH,EAAAA,4BAcAA,EAAAA,6BCrCD,SAAoBC,GAApB,IAAA/B,EAAA9F,KAAoBA,KAAA6H,eAAAA,EADpBC,GAAAxC,IAAAtF,KAAU,wCAGVA,KAAAoF,IAAM,SAAC2C,SACL,IAAKA,EACH,MAAO,CACLC,oBAAqB,KACrBC,aAAc,GACdhC,eAAgB,GAChBG,aAAc,GACdG,gBAAiB,IAGb,IAIF2B,GAAgB9C,EAJNU,EAAK+B,eAAezD,OAA0C,CAC5E+D,OAAMpD,GAAAe,EAAAgC,IACNC,IAAGA,IACH3C,OAEF,MAAO,CACL4C,oBAAuD,QAApCI,EAAEF,MAAAA,OAAa,EAAbA,EAAeF,2BAAmB,IAAAI,EAAAA,EAAI,KAC3DH,cAAcC,MAAAA,OAAa,EAAbA,EAAeD,eAAgB,GAC7ChC,gBAAgBiC,MAAAA,OAAa,EAAbA,EAAejC,iBAAkB,GACjDG,cAAc8B,MAAAA,OAAa,EAAbA,EAAe9B,eAAgB,GAC7CG,iBAAiB2B,MAAAA,OAAa,EAAbA,EAAe3B,kBAAmB,KAIvDvG,KAAAsF,IAAM,SAACyC,EAAaG,GAQlB,GAPAA,EAAgB,CACdF,qBAAqBE,MAAAA,OAAa,EAAbA,EAAeF,sBAAuB,KAC3DC,cAAcC,MAAAA,OAAa,EAAbA,EAAeD,eAAgB,GAC7ChC,eAAgBiC,EAAcjC,gBAAkB,GAChDG,aAAc8B,EAAc9B,cAAgB,GAC5CG,gBAAiB2B,EAAc3B,iBAAmB,KAE/CwB,EACH,OAAOG,EAED,IAAA5C,EAAQQ,EAAK+B,eAAezD,OAA0C,CAC5E+D,OAAMpD,GAAAe,EAAAgC,IACNC,IAAGA,IACHzC,IAMF,OALAyC,EAAMM,EAAAA,QAAK,CACTF,OAAMpD,GAAAe,EAAAgC,IACNC,IAAGA,IAELzC,EAAI4C,GACGA,wCAjDVI,EAAAA,uDAHQC,EAAAA,kDCoCP,SAAAC,EACUC,EACAC,EACAC,GAHV,IAAA7C,EAAA9F,KACUA,KAAAyI,IAAAA,EACAzI,KAAA0I,cAAAA,EACA1I,KAAA2I,kBAAAA,EAtBVC,GAAAtD,IAAAtF,KAAuB,IAAI6I,EAAAA,SAKlB7I,KAAAkG,QAAkC,GAClClG,KAAAqG,WAA6C,GACtDrG,KAAA8I,aAAe,IAAID,EAAAA,QAEnB7I,KAAAsG,UAAiB,GACjBtG,KAAAuG,gBAA2C,GAC3CvG,KAAAmG,aAAoB,GACpBnG,KAAAoG,aAAwC,GACxCpG,KAAA+F,gBAAkD,GAClD/F,KAAAgG,eAAsB,GACtBhG,KAAAiG,eAA0C,GAG1C8C,GAAAzD,IAAAtF,KAAgB,IAAIgJ,EAAAA,cA0BpBC,GAAA3D,IAAAtF,MAAe,6DACb,IAAqB,IAAAkJ,EAAA7E,EAAAyB,EAAKI,SAAOiD,EAAAD,EAAAzG,QAAA0G,EAAAvG,KAAAuG,EAAAD,EAAAzG,OAAE,CAA9B,IAAM2G,EAAMD,EAAA5G,MACfuD,EAAKM,aAAagD,EAAOC,OAAwC,QAAlCjB,EAAGtC,EAAKM,aAAagD,EAAOC,cAAM,IAAAjB,EAAAA,EAAkB,QAAlBkB,EAAIF,MAAAA,OAAM,EAANA,EAAQG,cAAM,IAAAD,OAAA,EAAAA,EAAE3I,eACrFmF,EAAKK,aAAaiD,EAAOC,OAAwC,QAAlCG,EAAG1D,EAAKK,aAAaiD,EAAOC,cAAM,IAAAG,EAAAA,EAAkB,QAAlBC,EAAIL,MAAAA,OAAM,EAANA,EAAQG,cAAM,IAAAE,OAAA,EAAAA,EAAEC,8GAEvF,IAA6B,IAAAC,EAAAtF,EAAAyB,EAAKC,iBAAe6D,EAAAD,EAAAlH,QAAAmH,EAAAhH,KAAAgH,EAAAD,EAAAlH,OAAE,CAA9C,IAAMuD,EAAc4D,EAAArH,MACvBuD,EAAKG,eAAeD,EAAeqD,OAAkD,QAA5CQ,EAAG/D,EAAKG,eAAeD,EAAeqD,cAAM,IAAAQ,EAAAA,EAAI7D,MAAAA,OAAc,EAAdA,EAAgBrF,eAC7E,cAAxBqF,EAAe8D,KACjBhE,EAAKE,eAAeA,EAAeqD,OAAS,CAC1CU,KAAqF,QAAjFC,EAAiD,QAAjDC,EAA2C,QAA3CC,EAAEpE,EAAKE,eAAeA,EAAeqD,cAAM,IAAAa,OAAA,EAAAA,EAAEH,YAAI,IAAAE,EAAAA,EAA0B,QAA1BE,EAAInE,EAAe0D,eAAO,IAAAS,OAAA,EAAAA,EAAEJ,YAAI,IAAAC,EAAAA,OAAII,EACzFC,GAA+E,QAA7EC,EAA+C,QAA/CC,EAA2C,QAA3CC,EAAE1E,EAAKE,eAAeA,EAAeqD,cAAM,IAAAmB,OAAA,EAAAA,EAAEH,UAAE,IAAAE,EAAAA,EAA0B,QAA1BE,EAAIzE,EAAe0D,eAAO,IAAAe,OAAA,EAAAA,EAAEJ,UAAE,IAAAC,EAAAA,OAAIF,GAGrFtE,EAAKE,eAAeA,EAAeqD,OAAkD,QAA5CqB,EAAG5E,EAAKE,eAAeA,EAAeqD,cAAM,IAAAqB,EAAAA,EAAI1E,EAAe0D,8GAG5G,IAAwB,IAAAiB,EAAAtG,EAAAyB,EAAKO,YAAUuE,EAAAD,EAAAlI,QAAAmI,EAAAhI,KAAAgI,EAAAD,EAAAlI,OAAE,CAApC,IAAM6D,EAASsE,EAAArI,MAClBuD,EAAKS,gBAAgBD,EAAUuE,qBAA0E,QAAtDC,EAAGhF,EAAKS,gBAAgBD,EAAUuE,4BAAoB,IAAAC,EAAAA,EAAIxE,MAAAA,OAAS,EAATA,EAAW3F,qHAI5HoK,GAAAzF,IAAAtF,MAAe,mBACb8F,EAAKK,aAAe,GACpBL,EAAKE,eAAiB,GACtBF,EAAKQ,UAAY,OACjB,IAA6B,IAAA0E,EAAA3G,EAAAyB,EAAKC,iBAAekF,EAAAD,EAAAvI,QAAAwI,EAAArI,KAAAqI,EAAAD,EAAAvI,OAAE,CAA9C,IAAMuD,EAAciF,EAAA1I,MACK,cAAxByD,EAAe8D,OACjBhE,EAAKE,eAAeA,EAAeqD,OAAS,CAC1CU,UAAMK,EACNC,QAAID,0GAUZpK,KAAAkL,SAAW,SAACC,GACVrF,EAAKgD,aAAarG,QAGpBzC,KAAA2G,KAAO,WACLb,EAAKsF,YAAYzE,KAAK,CACpBR,aAAcL,EAAKK,aACnBH,eAAgBF,EAAKE,eACrBM,UAAWR,EAAKQ,UAChBF,aAAcN,EAAKM,aACnBH,eAAgBH,EAAKG,eACrBM,gBAAiBT,EAAKS,mBAI1BvG,KAAAqL,eAAiB,SAACnL,SAcRkG,EAA2FlG,EAAIkG,aAAjFD,EAA6EjG,EAAIiG,aAAnEF,EAA+D/F,EAAI+F,eAAnDD,EAA+C9F,EAAI8F,eAAnCO,EAA+BrG,EAAIqG,gBAAlBD,EAAcpG,EAAIoG,UACvGR,EAAKM,aAAeA,EACpBN,EAAKK,aAAeA,EACpBL,EAAKG,eAAiBA,EACtBH,EAAKE,eAAiBA,EACtBF,EAAKS,gBAAkBA,EACvBT,EAAKQ,UAAYA,EACjBR,EAAK6C,kBAAkBrD,IAAe,QAAZ8C,EAACtC,EAAKyD,cAAM,IAAAnB,OAAA,EAAAA,EAAEL,IAAK,CAC3C3B,aAAYA,EACZH,eAAcA,EACdgC,aAAc,GACd1B,gBAAeA,EACfyB,oBAAqB,OAEvBlC,EAAKgD,aAAarG,QAGpBzC,KAAAsL,QAAU,iBACRxF,EAAKM,aAAe,GACpBN,EAAKK,aAAe,GACpBL,EAAKG,eAAiB,GACtBH,EAAKE,eAAiB,GACtBF,EAAKS,gBAAkB,GACvBT,EAAKQ,UAAY,GACjBvB,GAAAe,EAAAmD,IAAA7H,KAAA0E,GACAA,EAAK6C,kBAAkBrD,IAAe,QAAZ8C,EAACtC,EAAKyD,cAAM,IAAAnB,OAAA,EAAAA,EAAEL,IAAK,CAC3C3B,aAAcN,EAAKM,aACnBH,eAAgBH,EAAKK,aACrBI,gBAAiBT,EAAKS,gBACtB0B,aAAc,GACdD,oBAAqB,OAEvBlC,EAAKgD,aAAarG,OAClBqD,EAAK2C,IAAIzB,gBAGXhH,KAAAuL,cAAgB,iBACdxG,GAAAe,EAAAiF,IAAA3J,KAAA0E,GACAA,EAAK6C,kBAAkBrD,IAAe,QAAZ8C,EAACtC,EAAKyD,cAAM,IAAAnB,OAAA,EAAAA,EAAEL,IAAK,CAC3C3B,aAAcN,EAAKM,aACnBH,eAAgBH,EAAKK,aACrBI,gBAAiBT,EAAKS,gBACtB0B,aAAc,GACdD,oBAAqB,OAEvBlC,EAAKgD,aAAarG,QAGpBzC,KAAAwL,UAAY,SAACtL,mBAKHiG,EAA4CjG,EAAIiG,aAAlCH,EAA8B9F,EAAI8F,eAAlBM,EAAcpG,EAAIoG,UACpDH,IACFL,EAAKK,aAAeA,GAElBH,IACFF,EAAKE,eAAiBA,GAEpBM,IACFR,EAAKQ,UAAYA,OAEnB,IAAuB,IAAA0E,EAAA3G,EAAAyB,EAAKC,iBAAekF,EAAAD,EAAAvI,QAAAwI,EAAArI,KAAAqI,EAAAD,EAAAvI,OAAE,CAAxC,IAAMgJ,EAAQR,EAAA1I,MACK,cAAlBkJ,EAAS3B,OACXhE,EAAKE,eAAeyF,EAASpC,OAAS,CACpCU,KAA+C,QAA3CT,EAAqC,QAArClB,EAAEtC,EAAKE,eAAeyF,EAASpC,cAAM,IAAAjB,OAAA,EAAAA,EAAE2B,YAAI,IAAAT,EAAAA,OAAIc,EACnDC,GAA2C,QAAzCZ,EAAqC,QAArCD,EAAE1D,EAAKE,eAAeyF,EAASpC,cAAM,IAAAG,OAAA,EAAAA,EAAEa,UAAE,IAAAZ,EAAAA,OAAIW,sGAIrDtE,EAAK2C,IAAIzB,gBAhKThH,KAAK0L,kBAAoB1L,KAAK0I,cAAciD,YAC5C3L,KAAKyI,IAAIzB,sBAvBXzG,OAAAC,eAAqBgI,EAAA/H,UAAA,UAAO,KAA5B,SAA6B8I,GAC3BvJ,KAAKuJ,OAASA,EACdxE,GAAA/E,KAAA4I,IAA0BnG,KAAKzC,KAAKuJ,yCAwBtCf,EAAA/H,UAAAmL,gBAAA,WAAA,IAAA9F,EAAA9F,KACE+E,GAAA/E,KAAA+I,IAAmB8C,IAAI9G,GAAA/E,KAAA4I,IAA0BkD,KAAKC,EAAAA,UAAU/L,KAAKuJ,SAASyC,WAAU,qBACtF,GAAgB,QAAZ5D,EAACtC,EAAKyD,cAAM,IAAAnB,OAAA,EAAAA,EAAE6D,SAAlB,CAIAnG,EAAKC,iBAA6B,QAAXuD,EAAAxD,EAAKyD,cAAM,IAAAD,OAAA,EAAAA,EAAEvD,kBAAmB,GACvD,IAAMmC,EAAgBpC,EAAK6C,kBAAkBvD,IAAe,QAAZoE,EAAC1D,EAAKyD,cAAM,IAAAC,OAAA,EAAAA,EAAEzB,KAC9DjC,EAAKM,aAAe8B,EAAc9B,aAClCN,EAAKG,eAAiBiC,EAAcjC,eACpCH,EAAKS,gBAAkB2B,EAAc3B,gBACrCxB,GAAAe,EAAAmD,IAAA7H,KAAA0E,GACAA,EAAKgD,aAAarG,OAClBqD,EAAK2C,IAAIzB,oBAVPlB,EAAKgD,aAAarG,YAiDxB+F,EAAA/H,UAAAyL,YAAA,WACEnH,GAAA/E,KAAA+I,IAAmBoD,qGAzFtB9E,EAAAA,UAASnH,KAAA,CAAC,CACTC,SAAU,iBACVmH,SAAA,q3QAEAC,gBAAiBC,EAAAA,wBAAwBC,6KAdoEC,EAAAA,yBAOtG0E,EAAAA,6BADAC,4CAWN1E,EAAAA,UAASzH,KAAA,CAAC0F,qBAGVvF,EAAAA,MAAKH,KAAA,CAAC,2BAING,EAAAA,0BACAA,EAAAA,mDCiGD,SAAAiM,EACU7D,EACA8D,EACAC,EACAC,EACAC,GALV,IAAA5G,EAAA9F,KACUA,KAAAyI,IAAAA,EACAzI,KAAAuM,eAAAA,EACAvM,KAAAwM,cAAAA,EACAxM,KAAAyM,cAAAA,EACAzM,KAAA0M,iBAAAA,EA9FV1M,KAAAkG,QAA4B,GAC5BlG,KAAA2M,OAA0B,GAE1B3M,KAAA4M,gBAAiB,EAIjB5M,KAAA6M,SAEI,GACJ7M,KAAA8M,MAAwB,GAGd9M,KAAA+M,OAAS,IAAItG,EAAAA,aACvBzG,KAAAgN,KAAO,IAAIC,EAAAA,UAAU,IA6DrBC,GAAA5H,IAAAtF,MAAwB,WACtB,OAAA4E,GAAWkB,EAAKqH,YAAgBrH,EAAKsH,sBAGvCC,GAAA/H,IAAAtF,MAAuB,qBACrB,OAAsC,QAA/BwJ,EAAuB,QAAvBF,EAAe,QAAflB,EAAAtC,EAAKwH,kBAAU,IAAAlF,OAAA,EAAAA,EAAE2E,cAAM,IAAAzD,OAAA,EAAAA,EAAEqD,cAAM,IAAAnD,OAAA,EAAAA,EAAED,QAAO,SAAAhI,GAC7C,IAAMgM,EAAahM,EAAEgM,WACrB,MAA4B,mBAAxB,EACKA,IAEFA,OACH,MAiBRvN,KAAA2G,KAAO,WAAA,OAAA7E,EAAAgE,OAAA,OAAA,GAAA,8CACL,OAAK9F,KAAK+H,KAIiB,IAAvB/H,KAAK2M,OAAO/K,SAAuC,QAA3B0H,EAAmB,QAAnBlB,EAAIpI,KAAKsN,kBAAU,IAAAlF,OAAA,EAAAA,EAAE2E,cAAM,IAAAzD,OAAA,EAAAA,EAAEkE,iBACvDxN,KAAKyN,UAAUzN,KAAK2M,OAAO,GAAGe,MAE9B1N,KAAKyN,UAAU,MAEjBzN,KAAK6M,SAAW,GAChB7M,KAAK+G,MAAMJ,OACX3G,KAAKyI,IAAIkF,sBAVP3N,KAAK4N,gBACL,CAAA,WAYJC,GAAAvI,IAAAtF,MAAoB,WAClB,GAAI8F,EAAKoC,cAAe,CACtB,IAAM4F,EAAOlJ,GAAOkB,EAAKqH,aACnBvD,EAAkC9D,EAAKoC,cACvC6F,EAA8CnJ,GADhCgF,EAAAoE,aAAepE,EAAAqE,eACqDC,QAAO,SAACC,EAAO1L,GACrG,IAAM2G,EAAStD,EAAKwH,WAAWpH,QAAQkI,MAAK,SAAA7M,GAAK,OAAAA,EAAE8H,QAAU5G,EAAK4G,SAClE,OAAKD,EAGe,aAAhBA,EAAOU,MAAuC,iBAAhBV,EAAOU,KACvClF,GAAWuJ,EAAK,CAAE/E,IAGpBxE,GAAWuJ,EADM/E,EAAOiF,SAAS9E,QAAO,SAAA+E,GAAM,MAAY,UAAZA,EAAGxE,SALxCqE,IAOR,IAMH,OAAAvJ,GALgBmJ,EAAeQ,KAAI,SAAAhN,GAAK,OAAAhB,OAAAiO,OAAAjO,OAAAiO,OAAA,GACnCjN,GAAC,CACJkN,KAAMX,EAAQM,MAAK,SAAAE,GAAM,OAAAA,EAAGjF,QAAU9H,EAAE8H,cACtCE,QAAO,SAAAhI,GAAK,QAAEA,EAAEkN,QACjBF,KAAI,SAAAhN,GAAK,OAAAA,EAAEkN,QACS3I,EAAKsH,mBAE5B,OAAOtH,EAAKI,WAIhBlG,KAAA4N,cAAgB,WACd9H,EAAKiH,OAAO5F,KAAK,CACfuH,KAAM,KACNxI,QAASnB,GAAAe,EAAA+H,IAAAzM,KAAA0E,GACT6I,OAAO,KAIX3O,KAAA4O,UAAY,WACV9I,EAAKiH,OAAO5F,KAAK,CACfuH,KAAM,KACNxI,QAASnB,GAAAe,EAAA+H,IAAAzM,KAAA0E,GACT6I,OAAO,KAIX3O,KAAA6O,UAAY,WACV/I,EAAKiH,OAAO5F,KAAK,CACfuH,KAAM,KACNxI,QAASnB,GAAAe,EAAA+H,IAAAzM,KAAA0E,GACTgJ,OAAO,KAIX9O,KAAAyN,UAAY,SAAOsB,eAAA,IAAAA,IAAAA,EAAA,4FAEJ,OADb/O,KAAKgP,cAAgBhP,KAAK2M,OAAOyB,MAAK,SAAA7M,GAAK,OAAAA,EAAEmM,OAASqB,KACtDnF,EAAA5J,KAAa,CAAA,EAAMA,KAAKwM,cAAcyC,cAAc,CAClDlH,IAAK/H,KAAK+H,IACVgH,MAAKA,mBAFPnF,EAAKkD,MAAQnC,EAAArH,OAIbtD,KAAKyI,IAAIzB,2BAGXkI,GAAA5J,IAAAtF,MAAgB,SAAOmP,GAAiB,OAAArN,EAAAgE,OAAA,OAAA,GAAA,gGAChCsJ,EAIA,IACFnO,MAAMoO,QAA+B,QAAxB5F,EAAgB,QAAhBD,EAACxJ,KAAKsN,kBAAU,IAAA9D,OAAA,EAAAA,EAAEuD,cAAM,IAAAtD,OAAA,EAAAA,EAAE2F,QAAvC,MAAA,CAAA,EAAA,2CACkBxF,EAAAvF,EAAArE,KAAKsN,WAAWP,OAAOqC,QAAMzE,EAAAf,EAAAnH,6CAAtC6M,EAAK3E,EAAApI,OACJgN,MAAQD,EAAME,OAASF,EAAMG,OACjCxO,MAAMoO,QAAQC,EAAME,QACtBJ,EAAOjL,KAAK,CACVoL,KAAMD,EAAMC,KACZC,MAAOF,EAAME,MACbC,OAAQH,EAAMG,gBAJd,CAAA,EAAA,GADF,CAAA,EAAA,UAUS,OAFTC,GAAA9E,EAAAwE,GAAOjL,QACLoL,KAAMD,EAAMC,MACL,CAAA,EAAMD,EAAME,gBAFrBE,EAAA5M,MAAA8H,EAAA,EAEE+E,EAAAH,MAAOI,EAAAtM,OACPqM,EAAAF,OAAQH,EAAMG,8MAMjB,MAAA,CAAA,EAAMzP,KAAKwM,cAAcqD,iBAAiB,CAC/CV,SAAUA,IAAmC,QAA3BjF,EAAmB,QAAnBL,EAAI7J,KAAKsN,kBAAU,IAAAzD,OAAA,EAAAA,EAAEkD,cAAM,IAAA7C,OAAA,EAAAA,EAAEiF,UAC/CjJ,QAASlG,KAAKkG,QACdkJ,OAAMA,aAHR,MAAA,CAAA,EAAOQ,EAAAtM,kBAOTtD,KAAA6P,iBAAmB,WAAA,OAAA/N,EAAAgE,OAAA,OAAA,GAAA,6DAEjB,OADA9F,KAAKuM,eAAeuD,QACpB,CAAA,EAAM/K,GAAA/E,KAAAkP,IAAA9N,KAAApB,MAAqB+P,QAAQ/P,KAAKuM,eAAeyD,qBAAvDpG,EAAAtG,mBAGFtD,KAAAiQ,0BAA4B,SAAOd,GAAiB,OAAArN,EAAAgE,OAAA,OAAA,GAAA,6GAC5CsJ,EAIA,IACFnO,MAAMoO,QAA+B,QAAxBlF,EAAgB,QAAhBF,EAACjK,KAAKsN,kBAAU,IAAArD,OAAA,EAAAA,EAAE8C,cAAM,IAAA5C,OAAA,EAAAA,EAAEiF,QAAvC,MAAA,CAAA,EAAA,+CACyC,UAAR,UAAfpP,KAAKsN,kBAAU,IAAAtD,OAAA,EAAAA,EAAE+C,cAAM,IAAAvC,OAAA,EAAAA,EAAE4E,QAAMzE,EAAAf,EAAAnH,6CAAxC6M,EAAK3E,EAAApI,OACJgN,MAAQD,EAAME,OAASF,EAAMG,OACjCxO,MAAMoO,QAAQC,EAAME,QACtBJ,EAAOjL,KAAK,CACVoL,KAAMD,EAAMC,KACZC,MAAOF,EAAME,MACbC,OAAQH,EAAMG,gBAJd,CAAA,EAAA,GADF,CAAA,EAAA,UAUS,OAFTC,GAAA9E,EAAAwE,GAAOjL,QACLoL,KAAMD,EAAMC,MACL,CAAA,EAAMD,EAAME,gBAFrBE,EAAA5M,MAAA8H,EAAA,EAEE+E,EAAAH,MAAOI,EAAAtM,OACPqM,EAAAF,OAAQH,EAAMG,8MAMjB,MAAA,CAAA,EAAMzP,KAAKwM,cAAc0D,uBAAuB,CACrDnI,IAAK/H,KAAK+H,IACVT,SAAU,CACR6H,SAAUA,IAAmC,QAA3B1E,EAAmB,QAAnBF,EAAIvK,KAAKsN,kBAAU,IAAA/C,OAAA,EAAAA,EAAEwC,cAAM,IAAAtC,OAAA,EAAAA,EAAE0E,UAC/CjJ,QAASlG,KAAKkG,QAAQqD,QAAO,SAAAhI,GAAK,OAAAuE,EAAK+G,SAAStL,EAAE8H,UAClD+F,OAAMA,GAERL,MAAyB,QAApBzE,EAAEtK,KAAKgP,qBAAa,IAAA1E,OAAA,EAAAA,EAAEoD,gBAP7B,MAAA,CAAA,EAAOkC,EAAAtM,gBAWTtD,KAAAmQ,SAAW,SAACzB,GACV5I,EAAKiH,OAAO5F,KAAK,CACfuH,KAAIA,EACJxI,QAASJ,EAAKI,UAEhBJ,EAAK2C,IAAIkF,iBAGX3N,KAAAoQ,eAAiB,WAAA,OAAAtO,EAAAgE,OAAA,OAAA,GAAA,yEACF,MAAA,CAAA,EAAM9F,KAAKwM,cAAc4D,eAAe,CACnDrI,IAAK/H,KAAK+H,IACVgH,MAAyB,QAApBrE,EAAE1K,KAAKgP,qBAAa,IAAAtE,OAAA,EAAAA,EAAEgD,KAC3B2C,UAAkC,QAAzBC,EAAiB,QAAjBxF,EAAE9K,KAAKsN,kBAAU,IAAAxC,OAAA,EAAAA,EAAEiC,cAAM,IAAAuD,OAAA,EAAAA,EAAEC,4BAHhC7B,EAAO9E,EAAAtG,UAMXtD,KAAK8M,MAAKlI,GAAO5E,KAAK8M,MAAK,CAAE4B,IAC7B1O,KAAKyI,IAAIkF,6BAIb3N,KAAAwQ,WAAa,SAAC9B,GACZ5I,EAAK2G,cAAcgE,QAAQ3K,EAAK4G,iBAAiBgE,UAAU,oBAAoB7N,MAAK,iBAClFiD,EAAK0G,cAAcgE,WAAW,CAC5BzI,IAAKjC,EAAKiC,IACVoH,SAAUT,EAAKS,SACfJ,OAAyB,QAAlB3G,EAAAtC,EAAKkJ,qBAAa,IAAA5G,OAAA,EAAAA,EAAEsF,OAAQ,OAErC,IAAMiD,EAAM7K,EAAKgH,MAAMrL,QAAQiN,GAC/B5I,EAAKgH,MAAM8D,OAAOD,EAAK,GACvB7K,EAAKgH,MAAKlI,GAAOkB,EAAKgH,OACtBhH,EAAK2C,IAAIkF,oBAIb3N,KAAA6Q,eAAiB,WAAA,OAAA/O,EAAAgE,OAAA,OAAA,GAAA,0FAEf,GADQ4K,EAAc1Q,KAAK0M,iBAAgBgE,UACvC1Q,KAAKgN,KAAK8D,QAEZ,OADA9Q,KAAKgN,KAAK+D,mBACV,CAAA,GAEF,IAAK/Q,KAAKkG,QAAQ8K,MAAK,SAAAzP,GAAK,OAAAuE,EAAK+G,SAAStL,EAAE8H,UAE1C,OADArJ,KAAKyM,cAAcwE,OAAOC,QAAQR,EAAU,0BAC5C,CAAA,GAEF1Q,KAAKuM,eAAeuD,QACdX,EAAWnP,KAAKmR,aAAe,yBAEnC,8BAAuC,QAAvCjI,EAA2B,QAA3B+B,EAAmB,QAAnBD,EAAIhL,KAAKsN,kBAAU,IAAAtC,OAAA,EAAAA,EAAE+B,cAAM,IAAA9B,OAAA,EAAAA,EAAEsF,kBAAU,IAAArH,OAAA,EAAAA,EAAA9H,KAAA6J,EAAGkE,KACxCnP,KAAKyM,cAAcwE,OAAOC,QAA+B,QAAxBvH,EAAgB,QAAhBR,EAACnJ,KAAKsN,kBAAU,IAAAnE,OAAA,EAAAA,EAAE4D,cAAM,IAAApD,OAAA,EAAAA,EAAE4G,WAAWpB,IACtE,CAAA,IAEa,CAAA,EAAMnP,KAAKiQ,0BAA0Bd,kBAChDxM,OADEA,EAASiH,EAAAtG,aACL,EAANX,EAAQyO,YACJ1C,EAAqB,CACzB0C,SAAUzO,EAAOyO,SACjBjC,SAAUxM,EAAOwM,UAEnBnP,KAAKmQ,SAASzB,GACd1O,KAAKmR,aAAe,KACpBnR,KAAK4M,gBAAiB,EACtB5M,KAAK8M,MAAKlI,GAAO5E,KAAK8M,MAAK,CAAE4B,IAC7B1O,KAAKyI,IAAIkF,qCAGX3N,KAAKuM,eAAeyD,oCAIxBhQ,KAAAqR,cAAgB,qBACdvL,EAAK2H,UAAsD,QAA7CjE,EAAiC,QAAjCF,EAAgB,QAAhBlB,EAACtC,EAAKwL,kBAAU,IAAAlJ,OAAA,EAAAA,EAAEmJ,uBAAe,IAAAjI,OAAA,EAAAA,EAAEuD,SAAS,UAAC,IAAArD,OAAA,EAAAA,EAAGjH,QAGhEvC,KAAAwR,sBAAwB,SAAC9Q,GACf,IAAAgQ,EAAc5K,EAAK4G,iBAAgBgE,UAE3C,OAAKhQ,EAGDA,EAAIkB,OAAS,GACR8O,EAAU,6BALL,4CAOHe,KAAK/Q,GAGT,KAFEgQ,EAAU,2DANVA,EAAU,2CAtTrBnQ,OAAAC,eAAyB8L,EAAA7L,UAAA,cAAW,KAApC,SAAqCiR,GACnC1R,KAAKsN,WAAaoE,EAClB1R,KAAKkG,QAAUnB,GAAA/E,KAAAkN,IAAA9L,KAAApB,MACfA,KAAK2M,OAAS5H,GAAA/E,KAAAqN,IAAAjM,KAAApB,uCAGhBO,OAAAC,eAAY8L,EAAA7L,UAAA,MAAG,KAAf,uBAEE,OAA4B,QAAxB6I,EAAgB,QAAhBlB,EAACpI,KAAKsN,kBAAU,IAAAlF,OAAA,EAAAA,EAAE2E,cAAM,IAAAzD,OAAA,EAAAA,EAAEvB,KAGvBM,EAAAA,QAAK,CACVF,OALa,uCAMbJ,IAA4B,QAAzB0B,EAAiB,QAAjBD,EAAExJ,KAAKsN,kBAAU,IAAA9D,OAAA,EAAAA,EAAEuD,cAAM,IAAAtD,OAAA,EAAAA,EAAE1B,MAJvB,sCAQXxH,OAAAC,eAAY8L,EAAA7L,UAAA,cAAW,KAAvB,WACE,IAAMyF,EAA4B,GAyBlC,OAxBAlG,KAAKsN,WAAWpH,QAAQqD,QAAO,SAAAhI,GAAC,IAAA6G,EAAI,QAAS,QAATA,EAAC7G,EAAEwL,cAAM,IAAA3E,OAAA,EAAAA,EAAE6D,aAAU0F,SAAQ,SAAAvI,WAC3C,UAAhBA,EAAOU,OAGS,aAAhBV,EAAOU,KASS,iBAAhBV,EAAOU,KASX5D,EAAQ/B,KAAKiF,GARI,QAAfE,EAAAF,EAAOiF,gBAAQ,IAAA/E,GAAAA,EAAEC,QAAO,SAAAhI,GAAC,IAAA6G,EAAI,QAAS,QAATA,EAAC7G,EAAEwL,cAAM,IAAA3E,OAAA,EAAAA,EAAE6D,aAAU0F,SAAQ,SAAAC,GAC/B,UAArBA,EAAY9H,MAGhB5D,EAAQ/B,KAAKyN,MAbA,QAAfxJ,EAAAgB,EAAOiF,gBAAQ,IAAAjG,GAAAA,EAAEmB,QAAO,SAAAhI,GAAC,IAAA6G,EAAI,QAAS,QAATA,EAAC7G,EAAEwL,cAAM,IAAA3E,OAAA,EAAAA,EAAE6D,aAAU0F,SAAQ,SAAAC,GAC/B,UAArBA,EAAY9H,MAGhB5D,EAAQ/B,KAAKyN,UAeZ1L,EAAQqI,KAAI,SAAAhN,GAAK,MAAA,CACtB8H,MAAO9H,EAAE8H,MACTwI,MAAOtQ,EAAEsQ,MACTC,YAAavQ,EAAEuQ,YACfC,MAAOxQ,EAAEwQ,2CAGbxR,OAAAC,eAAY8L,EAAA7L,UAAA,oBAAiB,KAA7B,mBACE,QAAuC,QAA/B6I,EAAsB,QAAtBlB,EAAApI,KAAKsN,WAAWP,cAAM,IAAA3E,OAAA,EAAAA,EAAElC,eAAO,IAAAoD,OAAA,EAAAA,EAAEC,QAAO,SAAAhI,GAAC,IAAA6G,EAAI,QAAS,QAATA,EAAC7G,EAAEwL,cAAM,IAAA3E,OAAA,EAAAA,EAAE6D,eAAa,IAAIsC,KAAI,SAAAhN,GAAK,MAAA,CACxF8H,MAAO9H,EAAE8H,MACTwI,MAAOtQ,EAAEsQ,MACTC,YAAavQ,EAAEuQ,YACfC,MAAOxQ,EAAEwQ,2CA0BbzF,EAAA7L,UAAAuR,SAAA,aAGA1F,EAAA7L,UAAAmL,gBAAA,mGA5GDvE,EAAAA,UAASnH,KAAA,CAAC,CACTC,SAAU,kBACVmH,SAAA,wrLAEAC,gBAAiBC,EAAAA,wBAAwBC,2rMA7BwCC,EAAAA,yBASjFuK,EAAAA,wBAUqBC,EAAAA,uBAdrBC,EAAAA,uBAQAC,EAAAA,sDAwBCzK,EAAAA,UAASzH,KAAA,CAAC,6BACVyH,EAAAA,UAASzH,KAAA,CAAC,8BAQV0H,EAAAA,4BAGAvH,EAAAA,MAAKH,KAAA,CAAC,qCAKNG,EAAAA,sBC/BD,SACUwH,EACyCwK,GAFnD,IAAAvM,EAAA9F,KACUA,KAAA6H,eAAAA,EACyC7H,KAAAqS,0BAAAA,EAbnDC,GAAAhN,IAAAtF,KAAW,CACTuS,iBAAkB,qBAClBC,OAAQ,WACRC,eAAgB,yBAChBC,QAAS,YACTC,UAAW,cACXC,MAAO,YAETC,GAAAvN,IAAAtF,KAEI,IAMJA,KAAA8S,KAAO,SAAC/K,EAAauF,GACnB,IAAKvI,GAAAe,EAAA+M,IAAY9K,GAAM,CACrB,IAAMgL,EAAU,IAAIlK,EAAAA,QACpB9D,GAAAe,EAAA+M,IAAY9K,GAAO,CACjBiL,KAAMjO,GAAAe,EAAAmN,IAAA7R,KAAA0E,EAAWwH,EAAYyF,GAC7B3N,IAAKL,GAAAe,EAAAoN,IAAA9R,KAAA0E,EAAUwH,GACfhI,IAAK,SAAC4C,GAGJ,OAFAA,EAAgBnD,GAAAe,EAAAqN,IAAA/R,KAAA0E,EAAUwH,EAAYpF,GACtC6K,EAAQtQ,KAAIlC,OAAAiO,OAAA,GAAMtG,IACXA,GAETkL,OAAQ,WACNrO,GAAAe,EAAAuN,IAAAjS,KAAA0E,EAAawH,EAAbvI,GACAgO,EAAQtQ,KAAKsC,GAAAe,EAAAwN,IAAAlS,KAAA0E,EAAcwH,KAE7BiG,SAAUR,GAGd,OAAOhO,GAAAe,EAAA+M,IAAY9K,IAGrByL,GAAAlO,IAAAtF,MAAU,SAACsN,WAET,OAAuB,QAAnBlF,EAACkF,MAAAA,OAAU,EAAVA,EAAYmG,cAAM,IAAArL,OAAA,EAAAA,EAAEL,OAAQuF,MAAAA,OAAU,EAAVA,EAAYvF,KAGtCM,EAAAA,QAAK,CACVF,OALa,uCAMbJ,KAAuB,QAAlBuB,EAAAgE,MAAAA,OAAU,EAAVA,EAAYmG,cAAM,IAAAnK,OAAA,EAAAA,EAAEvB,QAAQuF,MAAAA,OAAU,EAAVA,EAAYvF,OAJtC,QAQXuL,GAAAhO,IAAAtF,MAAW,SAACsN,SAWV,MAAO,CACLpH,SAX0D,QAAnBkC,EAAAkF,MAAAA,OAAU,EAAVA,EAAYpH,eAAO,IAAAkC,OAAA,EAAAA,EAAEmB,QAAO,SAAAhI,GAAK,OAACA,EAAEmS,UAAQnF,KAAI,SAAAhN,GAAK,MAAA,CAC5FoS,OAAQ,CACNtK,MAAO9H,EAAE8H,MACTwI,MAAOtQ,EAAEsQ,MACTE,MAAOxQ,EAAEwQ,MACT6B,UAAWrS,EAAEqS,WAEfA,UAAWrS,EAAEqS,UACbC,OAAO,QACF,OAMTZ,GAAA3N,IAAAtF,MAAQ,SAACsN,EAAkCwG,GACzC,OAAO,WAAA,OAAAhS,EAAAgE,OAAA,OAAA,GAAA,mEAEiB,MAAA,CAAA,EADVf,GAAA/E,KAAAkT,IAAA9R,KAAApB,KAAUsN,EACMlI,kBAAtB8C,EAAgB2B,EAAAvG,OACtBwQ,EAAQrR,KAAIlC,OAAAiO,OAAA,GAAMtG,mBAItBgL,GAAA5N,IAAAtF,MAAO,SAACsN,GACN,OAAO,WAAA,OAAAxL,EAAAgE,OAAA,OAAA,GAAA,iFAEL,OADMiC,EAAMhD,GAAA/E,KAAAwT,IAAApS,KAAApB,KAAasN,KAIjBpH,EAAoBoH,EAAUpH,QAEd,YAApBuN,OAFaA,EAAWnG,EAAUmG,aAE5B,EAANA,EAAQM,SAAR,CAAA,EAAA,IACIlK,EAAkB7J,KAAK6H,eAAemM,aAAkCjM,EAAK,CACjF7H,KAAMuT,MAAAA,OAAM,EAANA,EAAQvT,OADRkF,EAAGyE,EAAAzE,IAAEgO,EAAMvJ,EAAAuJ,OAGH,CAAA,EAAMhO,IAAM6O,OAAM,kBARlC,CAAA,EAAOlP,GAAA/E,KAAAsT,IAAAlS,KAAApB,KAAcsN,WASrB,OAAKpF,OADLA,EAAgB+B,EAAA3G,aACE,EAAb4E,EAAehC,gBAClBkN,IAASa,MAAMC,QAAQvP,OACvB,CAAA,EAAOI,GAAA/E,KAAAsT,IAAAlS,KAAApB,KAAcsN,YAQvB,GALMpD,EAAkBlK,KAAK6H,eAAezD,OAA4B2D,EAAK,CAC3E+B,KAAM2J,MAAAA,OAAM,EAANA,EAAQM,QACd7T,KAAMuT,MAAAA,OAAM,EAANA,EAAQvT,OAFRkF,EAAG8E,EAAA9E,IAAEgO,EAAMlJ,EAAAkJ,SAKdlL,OADLA,EAAgB9C,UACE,EAAb8C,EAAehC,SAElB,OADAkN,IACA,CAAA,EAAOrO,GAAA/E,KAAAsT,IAAAlS,KAAApB,KAAcsN,qBA6BzB,OAzBApF,EAAchC,QAAUgC,EAAchC,QACnCqD,QAAO,SAAAH,GAAU,OAAAA,EAAO+K,mBAAqBjO,EAAQ8K,MAAK,SAAAzP,GAAK,OAACA,EAAEmS,QAAUnS,EAAE8H,QAAUD,EAAOuK,OAAOtK,YAEzGnD,EAAQyL,SAAQ,SAAAvI,GACd,IAAMgL,EAAMlM,EAAchC,QAAQkI,MAAK,SAAA7M,GAAC,IAAA6G,EAAI,OAAQ,QAARA,EAAA7G,EAAEoS,cAAM,IAAAvL,OAAA,EAAAA,EAAEiB,SAAUD,EAAOC,SAClE+K,EAYHA,EAAIT,OAAS,CACXtK,MAAOD,EAAOC,MACdwI,MAAOzI,EAAOyI,MACdE,MAAO3I,EAAO2I,MACd6B,UAAWxK,EAAOwK,WAfpB1L,EAAchC,QAAQ/B,KAAK,CACzBwP,OAAQ,CACNtK,MAAOD,EAAOC,MACdwI,MAAOzI,EAAOyI,MACdE,MAAO3I,EAAO2I,MACd6B,UAAWxK,EAAOwK,WAEpBA,UAAWxK,EAAOwK,UAClBC,OAAO,OAWb,CAAA,EAAO3L,cAIXiL,GAAA7N,IAAAtF,MAAO,SAACsN,EAAkCpF,eAClCH,EAAMhD,GAAAe,EAAA0N,IAAApS,KAAA0E,EAAawH,GAezB,OAdIvF,IACkC,YAAd,QAAlBK,EAAAkF,MAAAA,OAAU,EAAVA,EAAYmG,cAAM,IAAArL,OAAA,EAAAA,EAAE2L,UACdzO,EAAQQ,EAAK+B,eAAemM,aAAkCjM,EAAK,CACzE7H,KAAwB,QAApBoJ,EAAEgE,MAAAA,OAAU,EAAVA,EAAYmG,cAAM,IAAAnK,OAAA,EAAAA,EAAEpJ,OAC1BoF,KACE4C,IAEI5C,EAAQQ,EAAK+B,eAAezD,OAA4B2D,EAAK,CACnE+B,KAAwB,QAApBN,EAAE8D,MAAAA,OAAU,EAAVA,EAAYmG,cAAM,IAAAjK,OAAA,EAAAA,EAAEuK,QAC1B7T,KAAwB,QAApBuJ,EAAE6D,MAAAA,OAAU,EAAVA,EAAYmG,cAAM,IAAAhK,OAAA,EAAAA,EAAEvJ,OAC1BoF,KACE4C,IAGDtB,KAAKC,MAAMD,KAAKE,UAAUoB,OAGnCmL,GAAA/N,IAAAtF,MAAU,SAACsN,GACT,OAAO,uBACCvF,EAAMhD,GAAAe,EAAA0N,IAAApS,KAAA0E,EAAawH,GACrBvF,IACkC,YAAd,QAAlBK,EAAAkF,MAAAA,OAAU,EAAVA,EAAYmG,cAAM,IAAArL,OAAA,EAAAA,EAAE2L,UACdX,EAAWtN,EAAK+B,eAAemM,aAAkCjM,EAAK,CAC5E7H,KAAwB,QAApBoJ,EAAEgE,MAAAA,OAAU,EAAVA,EAAYmG,cAAM,IAAAnK,OAAA,EAAAA,EAAEpJ,OAC1BkT,WAGMA,EAAWtN,EAAK+B,eAAezD,OAA4B2D,EAAK,CACtE+B,KAAwB,QAApBN,EAAE8D,MAAAA,OAAU,EAAVA,EAAYmG,cAAM,IAAAjK,OAAA,EAAAA,EAAEuK,QAC1B7T,KAAwB,QAApBuJ,EAAE6D,MAAAA,OAAU,EAAVA,EAAYmG,cAAM,IAAAhK,OAAA,EAAAA,EAAEvJ,OAC1BkT,eA0DVpT,KAAAqU,4BAA8B,SAC5BnM,EACAoF,EACAgH,WACM3R,EAAoC,CACxCyG,OAAQ,GACRmL,YAAa,GACbvG,aAAc,GACdC,cAAe,GACfuG,aAAc,GACdC,cAAe,GACfC,iBAAkB,GAClBC,iBAAkB,GAClBC,gBAAgB,GAEZ/K,EAAyCyD,GAAc,GAArDuH,EAAShL,EAAAgL,UAAEC,EAAQjL,EAAAiL,SAAEC,EAAMlL,EAAAkL,OAAEhG,EAAKlF,EAAAkF,MA0G1C,QAzGIgG,MAAAA,OAAM,EAANA,EAAQC,WAA6B,YAAjBD,MAAAA,OAAM,EAANA,EAAQjL,SAAsBiL,MAAAA,OAAM,EAANA,EAAQE,YAA2C,mBAAtBF,MAAAA,OAAM,EAANA,EAAQ9I,YAA6B8I,MAAAA,OAAM,EAANA,EAAQ9I,aACzG,WAAjB8I,MAAAA,OAAM,EAANA,EAAQjL,OAAmD,mBAAtBiL,MAAAA,OAAM,EAANA,EAAQ9I,YAA6B8I,MAAAA,OAAM,EAANA,EAAQ9I,aACtFtJ,EAAO6R,aAAarQ,KAAKY,GAAAe,EAAAwM,IAAcC,kBACvC5P,EAAO+R,iBAAiBvQ,KAAKY,GAAAe,EAAAwM,IAAcC,oBAEzCsC,MAAAA,OAAS,EAATA,EAAWK,WACbvS,EAAO6R,aAAarQ,KAAKY,GAAAe,EAAAwM,IAAcK,WACvChQ,EAAO+R,iBAAiBvQ,KAAKY,GAAAe,EAAAwM,IAAcK,aAExCoC,MAAAA,OAAM,EAANA,EAAQrB,WACPqB,MAAAA,OAAM,EAANA,EAAQC,WACW,YAAjBD,MAAAA,OAAM,EAANA,EAAQjL,SAAsBiL,MAAAA,OAAM,EAANA,EAAQE,YAA2C,mBAAtBF,MAAAA,OAAM,EAANA,EAAQ9I,YAA6B8I,MAAAA,OAAM,EAANA,EAAQ9I,aACvF,WAAjB8I,MAAAA,OAAM,EAANA,EAAQjL,OAAmD,mBAAtBiL,MAAAA,OAAM,EAANA,EAAQ9I,YAA6B8I,MAAAA,OAAM,EAANA,EAAQ9I,aACjE,WAAjB8I,MAAAA,OAAM,EAANA,EAAQjL,OAAmD,mBAAtBiL,MAAAA,OAAM,EAANA,EAAQ9I,YAA6B8I,MAAAA,OAAM,EAANA,EAAQ9I,aACtFtJ,EAAO6R,aAAarQ,KAAKY,GAAAe,EAAAwM,IAAcE,QACvC7P,EAAO+R,iBAAiBvQ,KAAKY,GAAAe,EAAAwM,IAAcE,UAG3CsC,MAAAA,OAAQ,EAARA,EAAUlT,UACZe,EAAO6R,aAAarQ,KAAKY,GAAAe,EAAAwM,IAAcI,SACvC/P,EAAO+R,iBAAiBvQ,KAAKY,GAAAe,EAAAwM,IAAcI,WAE5B,QAAjBtK,EAAI2G,MAAAA,OAAK,EAALA,EAAOU,cAAM,IAAArH,OAAA,EAAAA,EAAExG,UACjBe,EAAO6R,aAAarQ,KAAKY,GAAAe,EAAAwM,IAAcM,OACvCjQ,EAAO+R,iBAAiBvQ,KAAKY,GAAAe,EAAAwM,IAAcM,QAEvB,QAAtBtJ,EAAApB,MAAAA,OAAa,EAAbA,EAAehC,eAAO,IAAAoD,GAAAA,EAAEC,QAAO,SAAA6K,GAAO,OAACA,EAAIR,aAAWjC,SAAQ,SAAAyC,iBAC5D,GAAIA,EAAID,kBAAmB,CACzBxR,EAAOyG,OAAOgL,EAAIT,OAAOtK,OAAS,CAChCwI,MAAOuC,EAAIvC,OAASuC,EAAIT,OAAO9B,MAC/BE,MAAOqC,EAAIrC,OAASqC,EAAIT,OAAO5B,OAE7BqC,EAAIP,QACNlR,EAAO4R,YAAYH,EAAIT,OAAOtK,OAAS,CACrCwI,MAAOuC,EAAIvC,OAASuC,EAAIT,OAAO9B,MAC/BE,MAAOqC,EAAIrC,OAASqC,EAAIT,OAAO5B,QAGnC,IAAMoD,EAAwC,CAC5CrL,KAAM,WACNT,MAAO+K,EAAIT,OAAOtK,MAClBwI,MAAOuC,EAAIT,OAAO9B,MAClBxD,SAAU,QAEZ,IAAwB,IAAApE,EAAA5F,EAAAiJ,MAAAA,OAAU,EAAVA,EAAYpH,QAAQqD,QAAO,SAAA+E,GAAM,OAAA8F,EAAIgB,iBAAiBC,SAAS/G,EAAGjF,WAAMc,EAAAF,EAAAxH,QAAA0H,EAAAvH,KAAAuH,EAAAF,EAAAxH,OAAG,CAA9F,IAAM6S,EAASnL,EAAA5H,MAClB,GAAuB,aAAnB+S,EAAUxL,MAA0C,iBAAnBwL,EAAUxL,SAC7C,IAA0B,IAAAE,GAAAuL,OAAA,EAAAlR,EAAAiR,EAAUjH,WAAQ7D,EAAAR,EAAAvH,QAAA+H,EAAA5H,KAAA4H,EAAAR,EAAAvH,OAAE,CAAzC,IAAMmP,EAAWpH,EAAAjI,MACpB4S,EAAgB9G,SAASlK,KAAI5D,OAAAiO,OAAAjO,OAAAiO,OAAA,GACxBoD,GAAW,CACd4D,QAAS,4GAIbL,EAAgB9G,SAASlK,KAAI5D,OAAAiO,OAAAjO,OAAAiO,OAAA,GACxB8G,GAAS,CACZE,QAAS,uGAYf,OAPA7S,EAAOqL,aAAa7J,KAAI5D,OAAAiO,OAAAjO,OAAAiO,OAAA,GACnB2G,GAAe,CAClBtD,MAAOuC,EAAIvC,OAASuC,EAAIT,OAAO9B,MAC/BE,MAAOqC,EAAIrC,OAASqC,EAAIT,OAAO5B,SAEjCpP,EAAO6R,aAAarQ,KAAKiQ,EAAIT,OAAOtK,YACpC1G,EAAO+R,iBAAiBvQ,KAAKiQ,EAAIT,OAAOtK,OAG1C,IAAMD,EAASkE,MAAAA,OAAU,EAAVA,EAAYpH,QAAQkI,MAAK,SAAA7M,GAAK,OAAAA,EAAE8H,QAAU+K,EAAIT,OAAOtK,SAChED,IACFzG,EAAOyG,OAAOgL,EAAIT,OAAOtK,OAAS,CAChCwI,MAAOuC,EAAIvC,OAASuC,EAAIT,OAAO9B,MAC/BE,MAAOqC,EAAIrC,OAASqC,EAAIT,OAAO5B,OAE7BqC,EAAIP,QACNlR,EAAO4R,YAAYH,EAAIT,OAAOtK,OAAS,CACrCwI,MAAOuC,EAAIvC,OAASuC,EAAIT,OAAO9B,MAC/BE,MAAOqC,EAAIrC,OAASqC,EAAIT,OAAO5B,QAGnCpP,EAAOqL,aAAa7J,KAAI5D,OAAAiO,OAAAjO,OAAAiO,OAAA,GACnBpF,GAAM,CACTyI,MAAOuC,EAAIvC,OAASuC,EAAIT,OAAO9B,MAC/BE,MAAOqC,EAAIrC,OAASqC,EAAIT,OAAO5B,SAEjCpP,EAAO6R,aAAarQ,KAAKiQ,EAAIT,OAAOtK,OAChB,iBAAhBD,EAAOU,KACM,QAAf1B,EAAAgB,EAAOiF,gBAAQ,IAAAjG,GAAAA,EAAEuJ,SAAQ,SAAAC,GACvBjP,EAAOsL,cAAc9J,KAAKyN,GAC1BjP,EAAO8R,cAActQ,KAAKyN,EAAYvI,OACtC1G,EAAO+R,iBAAiBvQ,KAAKyN,EAAYvI,UAG3C1G,EAAO+R,iBAAiBvQ,KAAKiQ,EAAIT,OAAOtK,YAI1CiL,MAAAA,OAAgB,EAAhBA,EAAkBvU,eACpB4C,EAAO6R,aAAarQ,KAAKY,GAAAe,EAAAwM,IAAcG,gBACvC9P,EAAO+R,iBAAiBvQ,KAAKY,GAAAe,EAAAwM,IAAcG,iBAE7C9P,EAAOiS,eAAiBjS,EAAO8R,cAAc7S,OAAS,EAEtDe,EAAOgS,iBAAmBhS,EAAO+R,iBAAiBnL,QAAO,SAAA7I,GAAO,OAAAA,IAAQqE,GAAAe,EAAAwM,IAAcG,kBAC/E9P,iJAvVV2F,EAAAA,uDARQC,EAAAA,iDAuBJkN,EAAAA,OAAMvV,KAAA,CAACwF,KAAoB,CAAAoE,KAAG4L,EAAAA,qBCtBnC,WAAA,IAAA5P,EAAA9F,KAIE8H,GAAAA,IAAAA,KAAU,wCACV+K,GAAAA,IAAAA,KAII,IACJ7S,KAAA2V,UAAY,SAAOpT,EAAY6G,GAA4B,OAAAtH,EAAAgE,OAAA,OAAA,GAAA,yGACzD,MAAoB,WAAhBsD,EAAOU,OAAmC,QAAd1B,EAACgB,EAAOsI,cAAM,IAAAtJ,OAAA,EAAAA,EAAEoH,SAAuB,QAAdlG,EAACF,EAAOsI,cAAM,IAAApI,OAAA,EAAAA,EAAEsM,cAA4B,QAAdpM,EAACJ,EAAOsI,cAAM,IAAAlI,OAAA,EAAAA,EAAEqM,eAGjGtL,EAA4DnB,EAAOsI,OAAjElC,EAAKjF,EAAkEiF,MAAhEoG,EAAUrL,EAAsDqL,WAApDC,EAAYtL,EAAwCsL,aAAtChB,EAAStK,EAA6BsK,UAAxBiB,EAAMzU,EAAAkJ,EAAvD,CAAA,QAAA,aAAA,eAAA,cACAxC,EAAMM,EAAAA,QAAK,CACfF,OAAMpD,GAAA/E,KAAA+V,IACNH,WAAUA,EACVC,aAAYA,EACZhB,UAASA,EACTiB,OAAMA,EACNvT,MAAKA,IAEDyT,EAAa,CAAC,WAAY,uBAAwB,kBAAmB,+BAA+BX,SAASR,GAC5F,mBAAnB,EAAA,CAAA,EAAA,GACG9P,GAAA/E,KAAAiW,IAAYlO,GAAb,CAAA,EAAA,GACa,CAAA,EAAMyH,EAAMjN,GAAO,KAdpC,CAAA,EAAOA,UAcC2T,EAASzL,EAAAnH,OACXX,EAAS,GAEXA,EADEqT,GAAc/U,MAAMoO,QAAQ9M,IAC4D,QAAjFsH,EAAoD,QAApDJ,EAAAyM,MAAAA,OAAM,EAANA,EAAQ3M,QAAO,SAAAhI,GAAK,OAAAgB,MAAAA,OAAK,EAALA,EAAO8S,SAAS9T,MAAAA,OAAC,EAADA,EAAIqU,cAAY,IAAAnM,OAAA,EAAAA,EAAG8E,KAAI,SAAAhN,GAAK,OAAAA,MAAAA,OAAC,EAADA,EAAIsU,aAAa,IAAAhM,OAAA,EAAAA,EAAGsM,KAAK,SAAS5T,MAAAA,OAAK,EAALA,EAAO4T,KAAK,QAGnE,QAA3CjM,EAAAgM,MAAAA,OAAM,EAANA,EAAQ9H,MAAK,SAAA7M,GAAK,OAAAA,MAAAA,OAAC,EAADA,EAAIqU,MAAgBrT,YAAK,IAAA2H,OAAA,EAAAA,EAAI2L,KAAiBtT,EAE3EwC,GAAA/E,KAAAiW,IAAYlO,GAAO,CACjBpF,OAAMA,uCAILoC,GAAA/E,KAAAiW,IAAYlO,KACXpF,EAAS,GAEXA,EADEqT,GAAc/U,MAAMoO,QAAQ9M,GACuE,QAA/FyH,EAAmF,QAAnFG,EAAsD,QAAtDF,EAAGuF,MAAAA,OAAK,EAALA,EAAOjG,QAAO,SAAAhI,GAAK,OAAAgB,MAAAA,OAAK,EAALA,EAAO8S,SAAS9T,MAAAA,OAAC,EAADA,EAAIqU,cAAY,IAAA3L,OAAA,EAAAA,EAAGsE,KAAI,SAAAhN,GAAK,OAAAA,MAAAA,OAAC,EAADA,EAAIsU,aAAa,IAAA1L,OAAA,EAAAA,EAAGgM,KAAK,aAAI,IAAAnM,EAAAA,EAAKzH,MAAAA,OAAK,EAALA,EAAO4T,KAAK,OAGnE,QAA1C3L,EAAAgF,MAAAA,OAAK,EAALA,EAAOpB,MAAK,SAAA7M,GAAK,OAAAA,MAAAA,OAAC,EAADA,EAAIqU,MAAgBrT,YAAK,IAAAiI,OAAA,EAAAA,EAAIqL,KAAiBtT,EAE1EwC,GAAA/E,KAAAiW,IAAYlO,GAAO,CACjBpF,OAAMA,qBAIZ,MAAA,CAAA,EAAOoC,GAAA/E,KAAAiW,IAAYlO,GAAKpF,oEApD3ByT,EAAAA,KAAIlW,KAAA,CAAC,CACJqP,KAAM,mBCDD,mEAAM8G,GAAgB,SAAClL,GAeZA,EAAImL,KAAJnL,EAAIoL,oBAAJpL,EAAIqL,aAAJrL,EAAIsL,WAAJtL,EAAIuL,YAAJvL,EAAIwL,WAAJxL,EAAIyL,QAAJzL,EAAI0L,WAAJ1L,EAAI2L,QAAJ3L,EAAI4L,eAAJ5L,EAAI6L,WAAJ7L,EAAI8L,mBAAJ9L,EAAI+L,iBAblB,IAaGpB,EAAMzU,EAAK8J,EAdV,CAAA,OAAA,sBAAA,eAAA,aAAA,cAAA,aAAA,UAAA,aAAA,UAAA,iBAAA,aAAA,qBAAA,qBAeJ,OAAO9C,EAAAA,QAAKyN,kBCRd,SAAAqB,EAAoBC,GAAApX,KAAAoX,KAAAA,EACpBC,GAAA/R,IAAAtF,MAAW,SAACoU,EAA2BjJ,GACrC,GAAiB,aAAbiJ,EAAItK,MAAoC,iBAAbsK,EAAItK,KACjC,OAAO,EAGT,GAAIsK,EAAIW,SAC8C,mBAAzBX,EAAIW,OAAe,SAAmBX,EAAIW,OAAO9I,SAASd,GAAQiJ,EAAIW,OAAO9I,UAEtG,OAAO,EAGX,OAAO,YAETkL,EAAA1W,UAAAkV,UAAA,SAAUpT,EAAY4I,EAAcmC,eAC5BvF,EAAMsO,GAAclL,GAC1B,GAAIA,EAAKmL,OAASvO,GAAOoD,EAAKoL,oBAC5B,OAAO,EAETpL,EAAKoL,oBAAsBpL,EAAKoL,qBAAuB,GAC/C,IAAArQ,EAAYoH,EAAUpH,YAC9B,IAAkB,IAAA4H,EAAAzJ,EAAA6B,GAAOoR,EAAAxJ,EAAArL,QAAA6U,EAAA1U,KAAA0U,EAAAxJ,EAAArL,OAAE,CAAtB,IAAM2R,EAAGkD,EAAA/U,MACZ,GAAiB,iBAAb6R,EAAItK,SACN,IAAuB,IAAAN,GAAA+L,OAAA,EAAAlR,EAAA+P,EAAI/F,WAAQ5E,EAAAD,EAAA/G,QAAAgH,EAAA7G,KAAA6G,EAAAD,EAAA/G,OAAE,CAAhC,IAAM8U,EAAQ9N,EAAAlH,MACjB4I,EAAKoL,oBAAoBgB,EAASlO,OAAM9I,OAAAiO,OAAAjO,OAAAiO,OAAA,GACnCrD,EAAKoL,oBAAoBgB,EAASlO,QAAM,CAC3C6L,QAASnQ,GAAA/E,KAAAqX,IAAAjW,KAAApB,KAAcuX,EAAUpM,4GAIrCA,EAAKoL,oBAAoBnC,EAAI/K,OAAM9I,OAAAiO,OAAAjO,OAAAiO,OAAA,GAC9BrD,EAAKoL,oBAAoBnC,EAAI/K,QAAM,CACtC6L,QAASnQ,GAAA/E,KAAAqX,IAAAjW,KAAApB,KAAcoU,EAAKjJ,uGAQlC,OAJAnL,KAAKoX,KAAKI,KAAI,WACZrM,EAAKmL,KAAOD,GAAclL,MAE5BA,EAAKmL,KAAOvO,GACL,4CA7CVqO,EAAAA,KAAIlW,KAAA,CAAC,CACJqP,KAAM,iCAEPjH,EAAAA,uDAToBmP,EAAAA,4BC4LnB,SAAAC,EACUjP,EACyCP,EACzCyP,EACAnL,EACAC,EACAC,EACAkL,EACAC,GARV,IAAA/R,EAAA9F,KACUA,KAAAyI,IAAAA,EACyCzI,KAAAkI,cAAAA,EACzClI,KAAA2X,yBAAAA,EACA3X,KAAAwM,cAAAA,EACAxM,KAAAyM,cAAAA,EACAzM,KAAA0M,iBAAAA,EACA1M,KAAA4X,iBAAAA,EACA5X,KAAA6X,wBAAAA,EAlIV7X,KAAA+H,IAAM+P,EAAAA,KAwCNC,GAAAzS,IAAAtF,KAAqB,IACrBA,KAAAwP,MAAiC,GACjCxP,KAAAgY,cAAqB,GAIrBhY,KAAAiY,WAAY,EAGZjY,KAAAkY,mBAAoB,EACpBC,GAAA7S,IAAAtF,UAAA,GAeAoY,GAAA9S,IAAAtF,UAAA,GAwB6CA,KAAAqY,WAAa,IAAIC,EAAAA,UAC9DtY,KAAAuY,QAEI,GAG2CvY,KAAAwY,aAAe,IAAIF,EAAAA,UAClEtY,KAAAyY,UAEI,GACJzY,KAAA0Y,WAAY,EAGmC1Y,KAAA2Y,aAAe,IAAIL,EAAAA,UAClEtY,KAAAqG,WAA6C,GAG7CrG,KAAAmG,aAEI,GAEJ4C,GAAAA,IAAAA,KAAgB,IAAIC,EAAAA,cACpB4P,GAAAtT,IAAAtF,KAAU,IAAI6Y,EAAAA,gBAGX,CACDC,OAAO,EACPC,OAAQ,gBAEV/Y,KAAAgZ,aAAc,EACdhZ,KAAAiZ,aAAc,EACdjZ,KAAAkZ,YAAc,SACdC,GAAA7T,IAAAtF,MAAiB,GAqDjBoZ,GAAA9T,IAAAtF,MAAe,mBACb8F,EAAKyS,QAAU,OACf,IAAsB,IAAAc,EAAAhV,EAAAyB,EAAKuS,YAAUiB,EAAAD,EAAA5W,QAAA6W,EAAA1W,KAAA0W,EAAAD,EAAA5W,OAAE,CAAlC,IAAM8V,EAAOe,EAAA/W,MACZgW,EAAQgB,oBACVzT,EAAKyS,QAAQA,EAAQgB,mBAAqBhB,yGAKhDiB,GAAAlU,IAAAtF,MAAiB,mBACf8F,EAAKO,WAAa,OAClB,IAAwB,IAAAgT,EAAAhV,EAAAyB,EAAK6S,cAAYW,EAAAD,EAAA5W,QAAA6W,EAAA1W,KAAA0W,EAAAD,EAAA5W,OAAE,CAAtC,IAAM6D,EAASgT,EAAA/W,MAClBuD,EAAKO,WAAWlC,KAAKmC,yGAIzBmT,GAAAnU,IAAAtF,MAAiB,mBACf8F,EAAK2S,UAAY,GACjB3S,EAAK4S,WAAY,MACjB,IAAwB,IAAAW,EAAAhV,EAAAyB,EAAK0S,cAAYc,EAAAD,EAAA5W,QAAA6W,EAAA1W,KAAA0W,EAAAD,EAAA5W,OAAE,CAAtC,IAAMgW,EAASa,EAAA/W,MACdkW,EAAUiB,sBACZ5T,EAAK4S,WAAY,EACjB5S,EAAK2S,UAAUA,EAAUiB,qBAAuBjB,yGAKtDkB,GAAArU,IAAAtF,MAAoB,SAAC4Z,EAAoBpU,qBACvC,MAAO,CACLqU,kBAAyC,QAAvBvQ,EAAe,QAAflB,EAAAtC,EAAKwH,kBAAU,IAAAlF,OAAA,EAAAA,EAAEmB,cAAM,IAAAD,OAAA,EAAAA,EAAElD,cAAeN,EAAKK,aAA8B,QAAlBqD,EAAG1D,EAAKgU,kBAAU,IAAAtQ,OAAA,EAAAA,EAAErD,eAAiB,GAChH4T,mBAAkC,QAAftQ,EAAA3D,EAAKgU,kBAAU,IAAArQ,OAAA,EAAAA,EAAEzD,iBAAkB,GACtDgU,cAA6B,QAAfnQ,EAAA/D,EAAKgU,kBAAU,IAAAjQ,OAAA,EAAAA,EAAEvD,YAAa,GAC5C2T,SAAS,QAAA/P,EAAAnF,GAAAe,EAAAsS,WAAA,IAAAlO,OAAA,EAAAA,EAAYgQ,SAAU,GAC/BC,gBAAgB,QAAAlQ,EAAAlF,GAAAe,EAAAsS,WAAA,IAAAnO,OAAA,EAAAA,EAAYmQ,YAAa,GACzCR,WAAUA,EACVpU,SAAQA,EACR6U,YAAY,MAIhBC,GAAAhV,IAAAtF,MAAqB,SAAC0R,qCAOpB,OANAA,EAAO6I,SAAW,CAChB7G,OAAwB,QAAlBtL,EAAEsJ,MAAAA,OAAM,EAANA,EAAQ6I,gBAAQ,IAAAnS,OAAA,EAAAA,EAAEsL,OAC1BlO,SAA8E,QAAtE0E,EAA4B,QAA5BV,EAAkB,QAAlBF,EAAEoI,MAAAA,OAAM,EAANA,EAAQ6I,gBAAQ,IAAAjR,OAAA,EAAAA,EAAE9D,gBAAQ,IAAAgE,EAAAA,EAAgC,QAAhCK,EAAsB,QAAtBJ,EAAI3D,EAAKoC,qBAAa,IAAAuB,OAAA,EAAAA,EAAE8Q,gBAAQ,IAAA1Q,OAAA,EAAAA,EAAErE,gBAAQ,IAAA0E,EAAAA,EAAyC,QAAzCD,EAAI1E,UAAqC,IAAA0E,OAAA,EAAAA,EAAEzE,SACzHC,MAAqE,QAAhEgF,EAAyB,QAAzBT,EAAkB,QAAlBG,EAAEuH,MAAAA,OAAM,EAANA,EAAQ6I,gBAAQ,IAAApQ,OAAA,EAAAA,EAAE1E,aAAK,IAAAuE,EAAAA,EAAgC,QAAhCO,EAAsB,QAAtBC,EAAI1E,EAAKoC,qBAAa,IAAAsC,OAAA,EAAAA,EAAE+P,gBAAQ,IAAAhQ,OAAA,EAAAA,EAAE9E,aAAK,IAAAgF,EAAAA,EAAyC,QAAzCH,EAAI/E,UAAqC,IAAA+E,OAAA,EAAAA,EAAE7E,MAChH+U,qBAA4D,QAAxC1P,EAAkB,QAAlBJ,EAAEgH,MAAAA,OAAM,EAANA,EAAQ6I,gBAAQ,IAAA7P,OAAA,EAAAA,EAAE8P,4BAAoB,IAAA1P,GAAAA,GAEvD4G,KAGT+I,GAAAnV,IAAAtF,MAAe,SAAC0a,EAAmBC,GACzB,IAAAzU,EAAYJ,EAAKwH,WAAUpH,QAC3B2T,EAAmEc,EAAUd,gBAA5DI,EAAkDU,EAAUV,QAAnDE,EAAyCQ,EAAUR,eAAnC3U,EAAyBmV,EAAUnV,SAAzBoU,EAAee,EAAUf,WAC/EpK,EAAQkL,EAAWnR,QAAO,SAAA4B,uBAC9B,IAAqB,IAAA2C,EAAAzJ,EAAA6B,GAAOoR,EAAAxJ,EAAArL,QAAA6U,EAAA1U,KAAA0U,EAAAxJ,EAAArL,OAAE,CAAzB,IAAM2G,EAAMkO,EAAA/U,MACP8G,EAAgBD,EAAMC,MAAfS,EAASV,EAAMU,KACxB8Q,GAAuBf,EAAgBxQ,IAAU,IAAIwR,WAAWC,OAAOC,cACvEC,GAAuB7P,EAAK9B,IAAU,IAAIwR,WAAWC,OAAOC,cAClE,GAAIH,EAAa,CACf,IAAKI,GAAwB,aAATlR,GAAgC,SAATA,GAA4B,SAATA,EAC5D,OAAO,EAET,GAAa,WAATA,GACF,IAA0C,IAAtCkR,EAAYvZ,QAAQmZ,GACtB,OAAO,OAEJ,GAAa,WAAT9Q,GACT,GAAIkR,IAAgBJ,EAClB,OAAO,OAEJ,GAAa,WAAT9Q,EAAmB,CAC5B,IAAMmR,GAAUL,EAAYM,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,GAAIP,EAAYnZ,QAAQ,OAAS,GAAK0Z,EAASF,EAC7C,OAAO,EACF,GAAIL,EAAYnZ,QAAQ,OAAS,GAAK0Z,EAASF,EACpD,OAAO,EACF,GAAIL,EAAYnZ,QAAQ,MAAQ,GAAK0Z,GAAUF,EACpD,OAAO,EACF,GAAIL,EAAYnZ,QAAQ,MAAQ,GAAK0Z,GAAUF,EACpD,OAAO,EACF,GAAIE,IAAWF,EACpB,OAAO,QAGN,GAAa,SAATnR,EAAiB,CAC1B,GAAoB,MAAhB8Q,GAAuC,MAAhBI,GAAuC,SAAhBA,EAChD,OAAO,EACF,GAAoB,MAAhBJ,GAAuC,MAAhBI,GAAuC,UAAhBA,EACvD,OAAO,OAEJ,GAAa,aAATlR,GAAgC,SAATA,GAA4B,SAATA,EAAiB,CACpE,IAAMC,EAAmC,QAA/BT,EAAyB,QAAzBlB,EAAGyR,EAAgBxQ,UAAM,IAAAjB,OAAA,EAAAA,EAAE2B,YAAI,IAAAT,EAAAA,EAAIuQ,EAAgBxQ,GACvDgB,EAA+B,QAA7BZ,EAAyB,QAAzBD,EAAGqQ,EAAgBxQ,UAAM,IAAAG,OAAA,EAAAA,EAAEa,UAAE,IAAAZ,EAAAA,EAAIoQ,EAAgBxQ,GACnD+R,EAAWC,KAAKC,MAAMvR,GACtBwR,EAASF,KAAKG,IAAInR,GACxB,GAAI+Q,GAAYG,EAAQ,CACtB,IAAKP,EACH,OAAO,EAET,GAAI,IAAIK,KAAKL,GAAaS,UAAYL,EAASK,WAAa,IAAIJ,KAAKL,GAAaS,WAAaF,EAAOE,UACpG,OAAO,uGAMjB,OAAO,KAGT,GAAIxB,GAAWE,EAAgB,CAC7B,IAAM/Q,EAASlD,EAAQkI,MAAK,SAAA7M,GAAK,OAAAA,EAAE8H,QAAU4Q,KAC7C,GAAI7Q,EAAQ,CACF,IAAAsS,EAAgBtS,EAAMU,KAAhB6R,EAAUvS,EAAMC,MAC9BmG,EAAMoM,MAAK,SAACC,EAASpZ,GACnB,GAAa,WAATiZ,EACF,OAAQG,EAAQF,IAAU,IAAMlZ,EAAKkZ,IAAU,GAEjD,GAAa,SAATD,GAA4B,aAATA,GAAgC,SAATA,EAG5C,OAFW,IAAIL,KAAKQ,EAAQF,IAAU,IAAIF,UAC/B,IAAIJ,KAAKQ,EAAQF,IAAU,IAAIF,UAG5C,IAAMK,GAAMD,EAAQF,IAAU,IAAId,WAC5BkB,GAAMtZ,EAAKkZ,IAAU,IAAId,WAC/B,OAAIiB,EAAKC,EACA,EAELD,EAAKC,GACC,EAEH,KAEc,SAAnB5B,GACF3K,EAAMwM,WAIZ,MAAO,CACLxM,MAAOA,EAAMjG,QAAO,SAAC4B,EAAM8Q,GACzB,OAAOA,GAASrC,EAAapU,GACxByW,GAASrC,EAAa,GAAKpU,KAElC0W,MAAO1M,EAAM5N,WAIjBua,GAAA7W,IAAAtF,MAAa,qCAAmC,MAAA,CAC9C6Z,kBAAyC,QAAvBvQ,EAAe,QAAflB,EAAAtC,EAAKwH,kBAAU,IAAAlF,OAAA,EAAAA,EAAEmB,cAAM,IAAAD,OAAA,EAAAA,EAAElD,cAAeN,EAAKK,aAA8B,QAAlBqD,EAAG1D,EAAKgU,kBAAU,IAAAtQ,OAAA,EAAAA,EAAErD,eAAiB,GAChH4T,mBAAkC,QAAftQ,EAAA3D,EAAKgU,kBAAU,IAAArQ,OAAA,EAAAA,EAAEzD,iBAAkB,GACtDgU,cAA6B,QAAfnQ,EAAA/D,EAAKgU,kBAAU,IAAAjQ,OAAA,EAAAA,EAAEvD,YAAa,GAC5C2T,SAAS,QAAA/P,EAAAnF,GAAAe,EAAAsS,WAAA,IAAAlO,OAAA,EAAAA,EAAYgQ,SAAU,GAC/BC,gBAAgB,QAAAlQ,EAAAlF,GAAAe,EAAAsS,WAAA,IAAAnO,OAAA,EAAAA,EAAYmQ,YAAa,GACzCR,YAAY,QAAAzP,EAAApF,GAAAe,EAAAqS,WAAA,IAAAhO,OAAA,EAAAA,EAAiBiS,YAAa,EAC1C5W,UAAU,QAAAwE,EAAAjF,GAAAe,EAAAqS,WAAA,IAAAnO,OAAA,EAAAA,EAAiBxE,YAAqC,QAA7B+E,EAAmB,QAAnBC,EAAI1E,EAAKwH,kBAAU,IAAA9C,OAAA,EAAAA,EAAE+P,gBAAQ,IAAAhQ,OAAA,EAAAA,EAAE/E,WAAY,OAGhFyN,GAAAA,IAAAA,MAAQ,SAAOoJ,EAAwCvD,eAAA,IAAAA,IAAAA,GAAA,mGACrD9Y,KAAKiY,WAAY,kDAEc,WAAzBjY,KAAKsN,WAAWxD,KAAhB,CAAA,EAAA,IACEnH,EAAS3C,KAAKsN,WAAWkC,MAAM6M,GAC/BC,EAAAA,aAAa3Z,KACfA,EAASA,EAAO4Z,aAEL,CAAA,EAAM5Z,WACnB,MAAA,CAAA,EAAO,CACL6M,OAFIf,EAAO6K,EAAAhW,QAECkM,OAAS,GACrB0M,MAAOzN,EAAKyN,OAAS,kBAGnBpD,GACI0D,EAAUxc,KAAKsN,WAAWkC,mBACTrN,SACrBsa,EAAApX,MAAArF,KAAI+X,IAAe,CAAA,EAAMyE,IADvB,CAAA,EAAA,GAFF,CAAA,EAAA,iBAGAC,EAAA3Z,WAAA,EAAAuW,EAAAvU,OAAA,CAAmBwU,EAAAhW,uBAEnB+B,GAAArF,KAAI+X,GAAeyE,oBAGvB,MAAA,CAAA,EAAOzX,GAAA/E,KAAAya,IAAArZ,KAAApB,KAAI+E,GAAA/E,KAAA+X,IAAgCsE,iDAG7Crc,KAAKyM,cAAciQ,OAAO/X,MAAMgY,wBAEhC3c,KAAKiY,WAAY,EACjBjY,KAAKyI,IAAIkF,gDAIbiP,GAAAtX,IAAAtF,MAAU,SAAOE,GAAqC,OAAA4B,EAAAgE,OAAA,OAAA,GAAA,yEAQpD,OAPa,QAAbsC,EAAApI,KAAK6c,gBAAQ,IAAAzU,GAAAA,EAAE0U,YACf9c,KAAKwP,OAAQtP,MAAAA,OAAI,EAAJA,EAAMsP,QAAS,GAC5BxP,KAAKkc,OAAQhc,MAAAA,OAAI,EAAJA,EAAMgc,QAAS,EAE5Blc,KAAKwP,MAAMmC,SAAQ,SAACxG,GAClBA,EAAK6L,WAAUzW,OAAAiO,OAAA,GAAQrD,MAEzB,CAAA,EAAuC,QAAvC1B,EAA6B,QAA7BD,EAAqB,QAArBF,EAAMtJ,KAAKsN,kBAAU,IAAAhE,OAAA,EAAAA,EAAEyT,cAAM,IAAAvT,OAAA,EAAAA,EAAEwT,gBAAQ,IAAAvT,OAAA,EAAAA,EAAArI,KAAAoI,EAAGxJ,KAAKwP,sBAA/CiN,EAAAnZ,OACAtD,KAAKiZ,YAAcjZ,KAAKwP,MAAMyN,OAAM,SAAA1b,GAAK,OAAAA,EAAEoV,cAC3C5R,GAAA/E,KAAAkd,IAAA9b,KAAApB,oBAGFA,KAAA+c,OAAS,SAAOjE,eAAA,IAAAA,IAAAA,GAAA,yFACD,MAAA,CAAA,EAAM/T,GAAA/E,KAAAmd,IAAA/b,KAAApB,KAAW+E,GAAA/E,KAAAmc,IAAA/a,KAAApB,MAAmB8Y,kBAA3CrK,EAAOgO,EAAAnZ,OACbyB,GAAA/E,KAAA4c,IAAAxb,KAAApB,KAAayO,eAGf2O,GAAA9X,IAAAtF,MAAiB,SAAO4Z,EAAwBpU,eAAxB,IAAAoU,IAAAA,EAAA,QAAwB,IAAApU,IAAAA,EAAA,4GACpB,UAAtBxF,KAAKsN,WAAWP,cAAM,IAAAlD,OAAA,EAAAA,EAAE2F,QAEtB7M,EAA+B,QAAzBuH,EAAGlK,KAAKsN,WAAWP,cAAM,IAAA7C,OAAA,EAAAA,EAAEsF,MAAMzK,GAAA/E,KAAA2Z,IAAAvY,KAAApB,KAAuB4Z,EAAYpU,IAC1EvE,MAAMoO,QAAQ1M,GAChB,CAAA,EAAOA,IAEL2Z,EAAAA,aAAoB3Z,KACtBA,EAASA,EAAO4Z,aAEdD,EAAAA,aAA8C3Z,KAChDA,EAASA,EAAO4Z,aAEX,CAAA,EAAM5Z,KAZkB,CAAA,EAAA,UAY/B,MAAA,CAAA,EAAO8Z,EAAAnZ,sBAEDqX,EAAa5V,GAAA/E,KAAA2Z,IAAAvY,KAAApB,KAAuB4Z,EAAYpU,GACzB,WAAzBxF,KAAKsN,WAAWxD,KAAhB,CAAA,EAAA,IACEnH,EAAS3C,KAAKsN,WAAWkC,MAAMmL,GAC/B2B,EAAAA,aAAa3Z,KACfA,EAASA,EAAO4Z,aAEX,CAAA,EAAM5Z,WAAb,MAAA,CAAA,EAAO8Z,EAAAnZ,sBAEH+Z,EAAuB,GACY,mBAA3Brd,KAAKsN,WAAgB,MAA7B,CAAA,EAAA,IACIkP,EAAUxc,KAAKsN,WAAWkC,mBACTrN,QACL,CAAA,EAAMqa,GADpB,CAAA,EAAA,iBACFa,EAAgBZ,EAAAnZ,oBAEhB+Z,EAAgBb,sCAGlBa,EAAgBrd,KAAKsN,WAAWkC,uBAElC,MAAA,CAAA,EAAOzK,GAAA/E,KAAAya,IAAArZ,KAAApB,KAAkBqd,EAAe1C,cAS9C2C,GAAAhY,IAAAtF,MAAc,WACZ,IAAMkG,EAAkC,GAyBxC,OAxBAJ,EAAKwH,WAAWpH,QAAQqD,QAAO,SAAAhI,GAAC,IAAA6G,EAAI,QAAS,QAATA,EAAC7G,EAAEwL,cAAM,IAAA3E,OAAA,EAAAA,EAAE6D,aAAU0F,SAAQ,SAAAvI,WAC3C,UAAhBA,EAAOU,OAGS,aAAhBV,EAAOU,KASS,iBAAhBV,EAAOU,KASX5D,EAAQ/B,KAAKiF,GARI,QAAfE,EAAAF,EAAOiF,gBAAQ,IAAA/E,GAAAA,EAAEC,QAAO,SAAAhI,GAAC,IAAA6G,EAAI,QAAS,QAATA,EAAC7G,EAAEwL,cAAM,IAAA3E,OAAA,EAAAA,EAAE6D,aAAU0F,SAAQ,SAAAC,GAC/B,UAArBA,EAAY9H,MAGhB5D,EAAQ/B,KAAKyN,MAbA,QAAfxJ,EAAAgB,EAAOiF,gBAAQ,IAAAjG,GAAAA,EAAEmB,QAAO,SAAAhI,GAAC,IAAA6G,EAAI,QAAS,QAATA,EAAC7G,EAAEwL,cAAM,IAAA3E,OAAA,EAAAA,EAAE6D,aAAU0F,SAAQ,SAAAC,GAC/B,UAArBA,EAAY9H,MAGhB5D,EAAQ/B,KAAKyN,UAeZ1L,KAGTqX,GAAAjY,IAAAtF,MAAsB,mBACpB,OAAsC,QAA/BsJ,EAAsB,QAAtBlB,EAAAtC,EAAKwH,WAAWP,cAAM,IAAA3E,OAAA,EAAAA,EAAElC,eAAO,IAAAoD,OAAA,EAAAA,EAAEC,QAAO,SAAAhI,GAAC,IAAA6G,EAAI,QAAS,QAATA,EAAC7G,EAAEwL,cAAM,IAAA3E,OAAA,EAAAA,EAAE6D,eAAa,MAG9EuR,GAAAlY,IAAAtF,MAAY,SAAOE,GAAuF,OAAA4B,EAAAgE,OAAA,OAAA,GAAA,oKAE9F4I,EAAuBxO,EAAIwO,KAArBC,EAAiBzO,EAAIyO,MAAdG,EAAU5O,EAAI4O,MAC7B2O,EAAYvd,EAAIgG,QAChBwX,GAAkC,QAAvBvT,EAAe,QAAfF,EAAAjK,KAAKsN,kBAAU,IAAArD,OAAA,EAAAA,EAAE8C,cAAM,IAAA5C,OAAA,EAAAA,EAAEwT,qBAAsB,IAC1DC,GAA+B,QAAvBpT,EAAe,QAAfR,EAAAhK,KAAKsN,kBAAU,IAAAtD,OAAA,EAAAA,EAAE+C,cAAM,IAAAvC,OAAA,EAAAA,EAAEoT,QAAS,EAC5CC,EAAQ7d,KAAKkc,MACb4B,EAAa,EACbC,EAAc,GAClB/d,KAAKgZ,aAAc,EACbgF,EAAe,GACjBC,EAGG,GACDC,EAAa,WAAA,OAAApc,EAAAgE,OAAA,OAAA,GAAA,8GACD,MAAA,CAAA,EAAM3D,QAAQgc,IAAIF,WAA5BzB,EAAUlD,EAAAhW,OAChB2a,EAAW,GACXF,EAAc,OACd,IAAqBK,EAAA/Z,EAAAmY,GAAO6B,EAAAD,EAAA3b,QAAA4b,EAAAzb,KAAAyb,EAAAD,EAAA3b,OACtB,UADKE,EAAM0b,EAAA9b,QAEbwb,EAAWnZ,GAAOmZ,EAAgBpb,EAAO6M,OACzCqO,EAAQlb,EAAOuZ,OAEf6B,EAAWnZ,GAAOmZ,EAAgBpb,2GAGZ,UAAtB3C,KAAKsN,WAAWP,cAAM,IAAA7D,OAAA,EAAAA,EAAEoV,UACpBC,EAAUve,KAAKsN,WAAWP,OAAOuR,QAAQP,cACxB5b,QACP,CAAA,EAAMoc,GADlB,CAAA,EAAA,GAF6B,CAAA,EAAA,iBAG/BR,EAAczE,EAAAhW,oBAEdya,EAAcQ,mBAGZC,EAAYX,EAAQH,EACpBe,EAAUC,KAAKC,MAAyB,KAAlBb,EAAa,GAAaU,GACtDxe,KAAKkZ,YAAc,eAAeuF,EAAO,IACnCG,EAAa7Z,GAAA/E,KAAAsd,IAAAlc,KAAApB,MACb6e,EAAqB9Z,GAAA/E,KAAAud,IAAAnc,KAAApB,iBAChBmL,yEACH2T,EAAW,GACXpC,EAAS,SAAOqC,GAA4B,OAAAjd,EAAAgE,OAAA,OAAA,GAAA,uFAIhD,OAHAgZ,EAAIC,EAAa1V,OAAS8B,EAAK4T,EAAa1V,OACtCD,EAASwV,EAAWxQ,MAAK,SAAA7M,GAAK,OAAAA,EAAE8H,QAAU0V,EAAa1V,UAEzD2V,OADEA,EAAiBH,EAAmBzQ,MAAK,SAAA7M,GAAK,OAAAA,EAAE8H,QAAU0V,EAAa1V,eAC3D,EAAd2V,EAAgBrJ,YAClBmJ,EAAIE,EAAe3V,OAAS2V,EAAerJ,UAAUxK,EAAK6T,EAAe3V,OAAQ8B,GACjF,CAAA,IAEG/B,EAGe,aAAhBA,EAAOU,MAAuC,iBAAhBV,EAAOU,MACvCV,MAAAA,GAAAA,EAAQiF,SAASsD,SAAQ,SAAAC,GAAe,OAAA8K,EAAO9K,MAC/C,CAAA,IAEG6L,EAAQzM,MAAK,SAAAzP,GAAK,OAAAA,EAAE8H,QAAUD,EAAOC,SAGtCD,EAAOuM,WACHA,EAAYvM,EAAOuM,UAAUxK,EAAK/B,EAAOC,OAAQ8B,cAC9BhJ,SACvBsa,EAAAqC,EAAIzF,EAAAjQ,EAAOC,MAAS,CAAA,EAAMsM,IADxB,CAAA,EAAA,GAFF,CAAA,EAAA,GAFF,CAAA,GAPA,CAAA,iBAYE8G,EAAApD,GAAoB4F,EAAA3b,oBAEpBwb,EAAI1V,EAAOC,OAASsM,mDAEUvL,IAAvBe,EAAK/B,EAAOC,QAA+C,OAAvB8B,EAAK/B,EAAOC,QAA0C,KAAvB8B,EAAK/B,EAAOC,OAA/E,CAAA,EAAA,IACTyV,EAAI1V,EAAOC,OAAS,wBACK,WAAhBD,EAAOU,MAAqC,WAAhBV,EAAOU,KAAnC,CAAA,EAAA,IAETgV,EAAI1V,EAAOC,OAAS8B,EAAK/B,EAAOC,4BACP,SAAhBD,EAAOU,KAAP,CAAA,EAAA,IAELqB,EAAK/B,EAAOC,OACdyV,EAAI1V,EAAOC,QAAsB,QAAbF,EAAAC,EAAOsI,cAAM,IAAAvI,OAAA,EAAAA,EAAE+V,gBAAiB,YACrB9U,IAAtB0U,EAAI1V,EAAOC,QAA8C,OAAtByV,EAAI1V,EAAOC,SACvDyV,EAAI1V,EAAOC,QAAsB,QAAbM,EAAAP,EAAOsI,cAAM,IAAA/H,OAAA,EAAAA,EAAEwV,iBAAkB,8BAE9B,SAAhB/V,EAAOU,KAAP,CAAA,EAAA,IACLsV,EAAOjU,EAAK/B,EAAOC,QACfgW,EAAkBjW,EAAMiW,iBAE9BD,EAAOC,EAAcD,EAAMjU,IAG7B2T,EAAI1V,EAAOC,OAASgS,KAAKiE,SAASF,EAAM,mCACf,aAAhBhW,EAAOU,KAAP,CAAA,EAAA,IACLsV,EAAOjU,EAAK/B,EAAOC,QACfgW,EAAkBjW,EAAMiW,iBAE9BD,EAAOC,EAAcD,EAAMjU,IAG7B2T,EAAI1V,EAAOC,OAASgS,KAAKiE,SAASF,EAAM,yCACf,SAAhBhW,EAAOU,KAAP,CAAA,EAAA,KACLsV,EAAOjU,EAAK/B,EAAOC,QACfgW,EAAkBjW,EAAMiW,iBAE9BD,EAAOC,EAAcD,EAAMjU,IAG7B2T,EAAI1V,EAAOC,OAASgS,KAAKiE,SAASF,EAAM,+BACf,WAAhBhW,EAAOU,KAAP,CAAA,EAAA,KAETwP,EAAAwF,EAAIS,EAAAnW,EAAOC,MAAS,CAAA,EAAMrJ,KAAK4X,iBAAiBjC,UAAUxK,EAAK/B,EAAOC,OAAQD,oBAA9EkQ,EAAAiG,GAAoBN,EAAA3b,sBAEpBwb,EAAI1V,EAAOC,OAAS8B,EAAK/B,EAAOC,oFAITmW,OAAA,EAAAC,EAAApb,EAAAoZ,GAAOiC,EAAAD,EAAAhd,6CAAvBsc,EAAYW,EAAAnd,MACrB,CAAA,EAAMma,EAAOqC,YAAb1F,EAAA/V,gNAEF0a,EAAM7Z,KAAK2a,uDA1EMa,EAAAtb,EAAA0Z,GAAW6B,EAAAD,EAAAld,6CAAnB0I,EAAIyU,EAAArd,WAAJ4I,sQA6EN2S,EAAaJ,EAAWG,GAC7BI,EAAS9Z,KAAKY,GAAA/E,KAAAod,IAAAhc,KAAApB,KAAoB8d,EAAYJ,IAC9CI,IACIG,EAASrc,OAASgc,EACpB,CAAA,EAAA,GAEF,CAAA,EAAMM,MAN4B,CAAA,EAAA,iBAMlC2B,EAAAvc,2BAEE2a,EAASrc,OAAS,EACpB,CAAA,EAAMsc,KADJ,CAAA,EAAA,UACF2B,EAAAvc,+BAEGoL,MAAAA,OAAI,EAAJA,EAAM0C,UAAP,CAAA,EAAA,IACEzC,EACF,CAAA,EAAM3O,KAAKwM,cAAcoC,UAAU,CACjC1I,QAAOuX,EACPjO,MAAKwO,EACL7O,SAAiC,QAAzB1E,EAAiB,QAAjBF,EAAEvK,KAAKsN,kBAAU,IAAA/C,OAAA,EAAAA,EAAEwC,cAAM,IAAAtC,OAAA,EAAAA,EAAE0E,YAJnC,CAAA,EAAA,UAMF,OALA0Q,EAAAvc,OAKA,CAAA,iBAEEwL,EACF,CAAA,EAAM9O,KAAKwM,cAAcsT,eAAe,CACtC5Z,QAAOuX,EACPjO,MAAKwO,EACL7O,SAAiC,QAAzBzE,EAAiB,QAAjBJ,EAAEtK,KAAKsN,kBAAU,IAAAhD,OAAA,EAAAA,EAAEyC,cAAM,IAAArC,OAAA,EAAAA,EAAEyE,YAJnC,CAAA,EAAA,UAMF,OALA0Q,EAAAvc,OAKA,CAAA,aAEI8L,EAIA,IACFnO,MAAMoO,QAA+B,QAAxBiB,EAAgB,QAAhBxF,EAAC9K,KAAKsN,kBAAU,IAAAxC,OAAA,EAAAA,EAAEiC,cAAM,IAAAuD,OAAA,EAAAA,EAAElB,QAAvC,MAAA,CAAA,EAAA,kDACkBqN,EAAApY,EAAArE,KAAKsN,WAAWP,OAAOqC,QAAMiK,EAAAoD,EAAAha,gDAAtC6M,EAAK+J,EAAA9W,OACJgN,MAAQD,EAAME,OAASF,EAAMG,OACjCxO,MAAMoO,QAAQC,EAAME,QACtBJ,EAAOjL,KAAK,CACVoL,KAAMD,EAAMC,KACZC,MAAOF,EAAME,MACbC,OAAQH,EAAMG,iBAJd,CAAA,EAAA,IADF,CAAA,EAAA,YAUS,OAFT8P,GAAAjG,EAAAlK,GAAOjL,QACLoL,KAAMD,EAAMC,MACL,CAAA,EAAMD,EAAME,iBAFrB+P,EAAAzc,MAAAwW,EAAA,EAEE2F,EAAAzP,MAAOqQ,EAAAvc,OACP2b,EAAAxP,OAAQH,EAAMG,uNAMxB,MAAA,CAAA,EAAMzP,KAAKwM,cAAcO,OAAO,CAC9B7G,QAAOuX,EACPjO,MAAKwO,EACL7O,SAAiC,QAAzBlE,EAAiB,QAAjBD,EAAEhL,KAAKsN,kBAAU,IAAAtC,OAAA,EAAAA,EAAE+B,cAAM,IAAA9B,OAAA,EAAAA,EAAEkE,SACnCC,OAAMA,aAER,OANAyQ,EAAAvc,OAMA,CAAA,WAEF,MAAA,CAAA,EAAMtD,KAAKwM,cAAcuT,iBAAiB,CACxC3O,SAAU1C,EAAK0C,SACfjC,SAAUT,EAAKS,SACfjJ,QAAOuX,EACPjO,MAAKwO,oBAJP6B,EAAAvc,6BAOAtD,KAAKgZ,aAAc,EACnBhZ,KAAKkZ,YAAc,SACnBlZ,KAAKyI,IAAIkF,gDAIb3N,KAAAmQ,SAAW,SAAOjQ,GAAuF,OAAA4B,EAAAgE,OAAA,OAAA,GAAA,sCAEvG,OADsB9F,KAAK0M,iBAAgBgE,WACtCxQ,EAAKyO,OAAS3O,KAAKsN,WAAWP,OAAOiT,KAAOhgB,KAAKkc,MAAQlc,KAAKsN,WAAWP,OAAOiT,KACnF9f,EAAK4O,OAAQ,EACb/J,GAAA/E,KAAAwd,IAAApc,KAAApB,KAAeE,GAKf,CAAA,KAEF6E,GAAA/E,KAAAwd,IAAApc,KAAApB,KAAeE,eAGjBF,KAAAigB,eAAiB,WACflb,GAAAe,EAAAqS,IAAgBiE,UAAY,EAC5BtW,EAAKiX,QAAO,IAGd/c,KAAAkgB,SAAW,SAAOC,GAA8B,OAAAre,EAAAgE,OAAA,OAAA,GAAA,sDAC9C,OAAkC,QAAlC8D,EAAI5J,KAAKsN,WAAW8S,sBAAc,IAAAxW,OAAA,EAAAA,EAAEyW,SAGhCF,EAAQzJ,YAFV,CAAA,GAKEyJ,EAAQ1J,YACV0J,EAAQ1J,YAAa,EACrB,CAAA,KAEIhI,EAAgD,QAA5CiB,EAAkC,QAAlC9E,EAAkB,QAAlBD,EAAG3K,KAAKsN,kBAAU,IAAA3C,OAAA,EAAAA,EAAEyV,sBAAc,IAAAxV,OAAA,EAAAA,EAAEsV,gBAAQ,IAAAxQ,OAAA,EAAAA,EAAAtO,KAAAwJ,EAAGuV,IACtB,QAA/BxQ,EAAC3P,KAAKsN,WAAW8S,sBAAc,IAAAzQ,OAAA,EAAAA,EAAE2Q,WACnCtgB,KAAKwP,MAAMmC,SAAQ,SAAAxG,GAAQ,OAAAA,EAAKuL,YAAcvL,EAAKsL,YAAa,KAE9DhI,aAAgBtM,SAClBge,EAAQzJ,aAAc,EACtBjI,EAAK5L,MAAK,SAAA0d,GACRJ,EAAQ3J,aAAe+J,EACvBJ,EAAQ1J,YAAa,KACpB1G,SAAQ,WAAM,OAAAoQ,EAAQzJ,aAAc,OAEvCyJ,EAAQ3J,aAAe/H,EACvB0R,EAAQ1J,YAAa,eAIzBzW,KAAAwgB,SAAW,SAACL,uBACV,GAA2B,QAA3B7W,EAAoB,QAApBlB,EAAI+X,MAAAA,OAAO,EAAPA,EAASvJ,eAAO,IAAAxO,OAAA,EAAAA,EAAEoH,aAAK,IAAAlG,OAAA,EAAAA,EAAE1H,OACX,QAAhB4H,EAAA2W,MAAAA,OAAO,EAAPA,EAASvJ,eAAO,IAAApN,GAAAA,EAAEgG,MAAMmC,SAAQ,SAAApQ,GAAK,OAAAA,EAAEoV,WAAawJ,EAAQxJ,cACzB,QAAnC9M,EAAyB,QAAzBJ,EAAA3D,EAAKwH,WAAWuH,iBAAS,IAAApL,OAAA,EAAAA,EAAE+W,gBAAQ,IAAA3W,GAAAA,EAAAzI,KAAAqI,EAAG0W,EAASra,EAAK0J,MAAMjG,QAAO,SAAAhI,GAAK,OAAAA,EAAEoV,eACxE7Q,EAAKmT,YAAcnT,EAAK0J,MAAMyN,OAAM,SAAA1b,GAAK,OAAAA,EAAEoV,cAC3C5R,GAAAe,EAAAoX,IAAA9b,KAAA0E,OACK,CACL,GAA6B,QAA7BoE,EAAIpE,EAAKwH,WAAWuH,iBAAS,IAAA3K,OAAA,EAAAA,EAAEuW,OAG7B,OAFA3a,EAAK0J,MAAMjG,QAAO,SAAAhI,GAAK,OAAAA,IAAM4e,KAASxO,SAAQ,SAAApQ,GAAK,OAAAA,EAAEoV,YAAa,UAClE5R,GAAAe,EAAAoX,IAAA9b,KAAA0E,GAGiC,QAAnCqE,EAAyB,QAAzBF,EAAAnE,EAAKwH,WAAWuH,iBAAS,IAAA5K,OAAA,EAAAA,EAAEuW,gBAAQ,IAAArW,GAAAA,EAAA/I,KAAA6I,EAAGkW,EAASra,EAAK0J,MAAMjG,QAAO,SAAAhI,GAAK,OAAAA,EAAEoV,eACxE7Q,EAAKmT,YAAcnT,EAAK0J,MAAMyN,OAAM,SAAA1b,GAAK,OAAAA,EAAEoV,cAC3C5R,GAAAe,EAAAoX,IAAA9b,KAAA0E,KAIJ9F,KAAA0gB,YAAc,qBACF,QAAVtY,EAAAtC,EAAK0J,aAAK,IAAApH,GAAAA,EAAEuJ,SAAQ,SAAApQ,gBACdA,EAAEsV,aAAmD,QAApCrN,EAA2B,QAA3BF,EAAgB,QAAhBlB,EAACtC,EAAKwH,kBAAU,IAAAlF,OAAA,EAAAA,EAAEyM,iBAAS,IAAAvL,OAAA,EAAAA,EAAEwN,eAAO,IAAAtN,OAAA,EAAAA,EAAE5H,WAAmB,QAAb6H,EAAIlI,EAAEuV,eAAO,IAAArN,OAAA,EAAAA,EAAE7H,UAC9EL,EAAEoV,WAAa7Q,EAAKmT,gBAGc,QAAtCzP,EAAyB,QAAzBF,EAAAxD,EAAKwH,WAAWuH,iBAAS,IAAAvL,OAAA,EAAAA,EAAEoX,mBAAW,IAAAlX,GAAAA,EAAApI,KAAAkI,EAAGxD,EAAK0J,MAAMjG,QAAO,SAAAhI,GAAK,OAAAA,EAAEoV,eAClE5R,GAAAe,EAAAoX,IAAA9b,KAAA0E,IAGF9F,KAAA2gB,iBAAmB,SAACnR,GAClBA,EAAQA,GAAS1J,EAAK0J,MACtB1J,EAAKmT,aAAc,EACnBzJ,MAAAA,GAAAA,EAAOmC,SAAQ,SAAApQ,GAAK,OAAAA,EAAEoV,YAAa,KACnC5R,GAAAe,EAAAoX,IAAA9b,KAAA0E,IAGFoX,GAAA5X,IAAAtF,MAAuB,WACrB8F,EAAKkS,cAAgBlS,EAAK0J,MAAMjG,QAAO,SAAA4B,GAAQ,OAAAA,EAAKwL,cACjDpI,KAAI,SAAApD,GAeCA,EAAIwL,WAAJxL,EAAIsL,WAAJtL,EAAIuL,YAAJvL,EAAIqL,aAAJrL,EAAI8L,mBAAJ9L,EAAIoL,oBAAJpL,EAAI+L,iBAAJ/L,EAAIyV,aAAJzV,EAAI6L,WAAJ7L,EAAImL,KAAJnL,EAAI0V,UACR,OAFWxf,EACP8J,EAdE,CAAA,aAAA,aAAA,cAAA,eAAA,qBAAA,sBAAA,mBAAA,eAAA,aAAA,OAAA,iBAiBVrF,EAAK2C,IAAIkF,mBAGX3N,KAAA0G,YAAc,iBACG,QAAf0B,EAAAtC,EAAKgU,kBAAU,IAAA1R,GAAAA,EAAEmD,iBAGnBvL,KAAAwL,UAAY,SAACtL,SAKI,QAAfkI,EAAAtC,EAAKgU,kBAAU,IAAA1R,GAAAA,EAAEoD,UAAUtL,IAG7BF,KAAA8gB,SAAW,mBACHrE,EAA4B3W,EAAKwH,WAA/BxD,EAAI2S,EAAA3S,KAAEiL,EAAM0H,EAAA1H,OAAE7O,EAAOuW,EAAAvW,QAC7B,GAAK6O,MAAAA,OAAM,EAANA,EAAQC,QAAb,CAGA,IAAM7J,EAA2B,GAEjCjF,EAAQyL,SAAQ,SAAAvI,GACM,WAAhBA,EAAOU,KACTqB,EAAK/B,EAAOC,OAAS,GACI,SAAhBD,EAAOU,KAChBqB,EAAK/B,EAAOC,QAAS,EACI,WAAhBD,EAAOU,OAChBqB,EAAK/B,EAAOC,OAAS,SAGZ,UAATS,EACU,QAAZ1B,EAAA2M,EAAOgM,aAAK,IAAA3Y,GAAAA,EAAAhH,KAAZ2T,EAAe5J,EAAIpG,GAAAe,EAAAiS,KAEP,QAAZzO,EAAAyL,EAAOgM,aAAK,IAAAzX,GAAAA,EAAAlI,KAAZ2T,EAAe5J,EAAMrF,EAAK0J,OAGR,UAAhBuF,EAAOjL,OACLiL,EAAOiM,WACI,UAATlX,GACFzE,GAAAS,EAAIiS,GAAAnT,GAAAG,GAAAe,EAAAiS,IAAmC,CAAE5M,KAE3CrF,EAAK0J,MAAK5K,GAAOkB,EAAK0J,MAAK,CAAErE,MAEhB,UAATrB,GACFzE,GAAAS,EAAIiS,GAAAnT,GAAA,CAAgBuG,GAAIpG,GAAAe,EAAAiS,MAE1BjS,EAAK0J,MAAK5K,GAAA,CAAIuG,GAASrF,EAAK0J,SAGhCrE,EAAKyV,aAAe,SACpBzV,EAAK+L,iBAAmB,CACtB+J,UAAS1gB,OAAAiO,OAAA,GAAOrD,MAGpBnL,KAAAkhB,SAAW,SAAC/V,GACF,IAAA4J,EAAWjP,EAAKwH,WAAUyH,OAClC5J,EAAKyV,aAAe,SACpBzV,EAAK+L,iBAAgB3W,OAAAiO,OAAAjO,OAAAiO,OAAA,GAChBrD,EAAK+L,kBAAgB,CACxB+J,UAAS1gB,OAAAiO,OAAA,GAAOrD,KAGd4J,EAAOjL,KAIXhE,EAAK2C,IAAIkF,iBAEX3N,KAAAmhB,OAAS,SAAOhW,GAA2B,OAAArJ,EAAAgE,OAAA,OAAA,GAAA,yEACzC,GAAIqF,EAAK+L,iBAAiBkK,OACxB,MAAA,CAAA,GAEMrM,EAAW/U,KAAKsN,WAAUyH,sDAEhC5J,EAAK+L,iBAAiBkK,QAAS,EAC3BrM,EAAOsM,UACH1e,EAASoS,EAAOsM,SAASlW,EAAMnL,KAAKwP,MAAM/N,QAAQ0J,eAClChJ,QACJ,CAAA,EAAMQ,GADpB,CAAA,EAAA,GAFF,CAAA,EAAA,UAIA,GADM2e,EAAU7E,EAAAnZ,OAEd,MAAMge,qBAGR,GAAI3e,EACF,MAAMA,0BAIRoS,EAAOoM,SACHxe,EAASoS,EAAOoM,OAAOhW,cACPhJ,QACpB,CAAA,EAAMQ,GAHN,CAAA,EAAA,UAGA8Z,EAAAnZ,8BAIsB,WAAtB6H,EAAKyV,cAA6C,UAAhB7L,EAAOjL,MACd,UAAzB9J,KAAKsN,WAAWxD,MAClB9J,KAAKwP,MAAMoB,OAAO,EAAG,EAAGzF,GAK5BA,EAAKyV,kBAAexW,iCAGpBpK,KAAKyM,cAAcwE,OAAOC,QAAQqQ,uBAElCpW,EAAK+L,iBAAiBkK,QAAS,EAC/BphB,KAAKyI,IAAIkF,6CAGb3N,KAAAwhB,SAAW,SAACrW,WACF4J,EAAWjP,EAAKwH,WAAUyH,OAClC,GAAoB,WAAhBA,EAAOjL,KAAmB,CAC5B,GAA6B,UAAzBhE,EAAKwH,WAAWxD,KAAkB,CACpC,IAAM2X,EAAO1c,GAAAe,EAAAiS,IAAiBtW,QAAQ0J,GACtCpG,GAAAe,EAAAiS,IAAiBnH,OAAO6Q,EAAM,GAC9Bpc,GAAAS,EAAIiS,GAAAnT,GAAAG,GAAAe,EAAAiS,MAEN,IAAM2J,EAAO5b,EAAK0J,MAAM/N,QAAQ0J,GAShC,OARArF,EAAK0J,MAAMoB,OAAO8Q,EAAM,GACxB5b,EAAK0J,MAAK5K,GAAOkB,EAAK0J,OACO,UAAzB1J,EAAKwH,WAAWxD,KACF,QAAhB1B,EAAA2M,MAAAA,OAAM,EAANA,EAAQyM,gBAAQ,IAAApZ,GAAAA,EAAAhH,KAAhB2T,EAAmB5J,EAAIpG,GAAAe,EAAAiS,KAEP,QAAhBzO,EAAAyL,MAAAA,OAAM,EAANA,EAAQyM,gBAAQ,IAAAlY,GAAAA,EAAAlI,KAAhB2T,EAAmB5J,EAAMrF,EAAK0J,YAEhC1J,EAAK2C,IAAIkF,gBAGX,GAAoB,UAAhBoH,EAAOjL,KACT,GAA0B,WAAtBqB,EAAKyV,aAA2B,CAClC,GAA6B,UAAzB9a,EAAKwH,WAAWxD,KAAkB,CAC9B2X,EAAO1c,GAAAe,EAAAiS,IAAiBtW,QAAQ0J,GACtCpG,GAAAe,EAAAiS,IAAiBnH,OAAO6Q,EAAM,GAC9Bpc,GAAAS,EAAIiS,GAAAnT,GAAAG,GAAAe,EAAAiS,MAEA2J,EAAO5b,EAAK0J,MAAM/N,QAAQ0J,GAChCrF,EAAK0J,MAAMoB,OAAO8Q,EAAM,GACxB5b,EAAK0J,MAAK5K,GAAOkB,EAAK0J,YAEtBjP,OAAOiO,OAAOrD,EAAMA,EAAK+L,iBAAiB+J,WAG9C9V,EAAKyV,kBAAexW,EACpBtE,EAAK2C,IAAIkF,iBAEX3N,KAAA2hB,SAAW,SAAOxW,GAA2B,OAAArJ,EAAAgE,OAAA,OAAA,GAAA,oFAEvCiP,OADIA,EAAW/U,KAAKsN,WAAUyH,aACxB,EAANA,EAAQ6M,eACJA,EAAe7M,MAAAA,OAAM,EAANA,EAAQ6M,aAAazW,cACdhJ,QACX,CAAA,EAAMyf,GADnB,CAAA,EAAA,GAFF,CAAA,EAAA,UAIA,OADenF,EAAAnZ,aAEb,CAAA,UAGF,IAAKse,EACH,MAAA,CAAA,oBAIN,MAAoB,WAAhB7M,EAAOjL,MACoB,UAAzB9J,KAAKsN,WAAWxD,OACZ2X,EAAO1c,GAAA/E,KAAA+X,IAAiBtW,QAAQ0J,GACtCpG,GAAA/E,KAAA+X,IAAiBnH,OAAO6Q,EAAM,GAC9Bpc,GAAArF,KAAI+X,GAAAnT,GAAAG,GAAA/E,KAAA+X,OAEA2J,EAAO1hB,KAAKwP,MAAM/N,QAAQ0J,GAChCnL,KAAKwP,MAAMoB,OAAO8Q,EAAM,GACxB1hB,KAAKwP,MAAK5K,GAAO5E,KAAKwP,OACO,UAAzBxP,KAAKsN,WAAWxD,KACF,QAAhB+X,EAAA9M,MAAAA,OAAM,EAANA,EAAQ4M,gBAAQ,IAAAE,GAAAA,EAAAzgB,KAAhB2T,EAAmB5J,EAAIpG,GAAA/E,KAAA+X,KAEP,QAAhBnI,EAAAmF,MAAAA,OAAM,EAANA,EAAQ4M,gBAAQ,IAAA/R,GAAAA,EAAAxO,KAAhB2T,EAAmB5J,EAAMnL,KAAKwP,OAEhCxP,KAAKyI,IAAIkF,gBACT,CAAA,gBAIJ3N,KAAA6L,IAAM,SAAC8E,EAAaxF,GACdrF,EAAK0J,MAAM5N,OAAS+O,GACtB7K,EAAK0J,MAAMoB,OAAOD,EAAK,EAAGxF,GAC1BrF,EAAK0J,MAAK5K,GAAOkB,EAAK0J,QAEtB1J,EAAK0J,MAAK5K,GAAOkB,EAAK0J,MAAK,CAAErE,KAIjCnL,KAAA8hB,OAAS,SAACnR,EAAaxF,GACjBrF,EAAK0J,MAAMmB,KACbpQ,OAAOiO,OAAO1I,EAAK0J,MAAMmB,GAAMxF,GAC/BrF,EAAK0J,MAAK5K,GAAOkB,EAAK0J,SAI1BxP,KAAAoT,OAAS,SAACzC,GACJ7K,EAAK0J,MAAMmB,KACb7K,EAAK0J,MAAMoB,OAAOD,EAAK,GACvB7K,EAAK0J,MAAK5K,GAAOkB,EAAK0J,SAI1BxP,KAAA+hB,YAAc,SAACpR,GACb,IAAMxF,EAAOrF,EAAK0J,MAAMmB,GACxB7K,EAAK+R,wBAAwBlC,UAAUxK,EAAK0V,UAAW1V,EAAMrF,EAAKwH,aA4DpEtN,KAAA2N,cAAgB,WAAM,OAAA7H,EAAK2C,IAAIkF,wBAt/B/BpN,OAAAC,eAA6BkX,EAAAjX,UAAA,cAAW,KAAxC,SAAyCqZ,GAAzC,IAAAhU,EAAA9F,KACM8Z,GAAc9Z,KAAK8Z,aAAeA,IACpC9Z,KAAK8Z,WAAaA,EAClB/U,GAAA/E,KAAAgiB,IAAmBnW,IAAIiO,EAAWhR,aAAagD,KAC7CyC,EAAAA,KAAI,WACFxJ,GAAAe,EAAAqS,IAAgBiE,UAAY,EAC5BrX,GAAAe,EAAA8S,IAAanW,KAAK,CAChBqW,OAAO,EACPC,OAAQ,eAGZ/M,+CAINzL,OAAAC,eAAakX,EAAAjX,UAAA,SAAM,KAAnB,SAAoBiR,GAApB,MAAA5L,EAAA9F,KACE,GAAI0R,EAAQ,CACVA,EAAS3M,GAAA/E,KAAAsa,IAAAlZ,KAAApB,KAAwB0R,GACjC1R,KAAKsN,WAAaoE,EAClBrM,GAAArF,KAAImZ,IAAkB,GACtBpU,GAAA/E,KAAA4Y,IAAanW,KAAK,CAChBqW,OAAO,IAEM,QAAf1Q,EAAAsJ,MAAAA,OAAM,EAANA,EAAQxL,eAAO,IAAAkC,GAAAA,EAAEuJ,SAAQ,SAAAyC,UACT,QAAdhM,EAAIgM,EAAI7K,cAAM,IAAAnB,OAAA,EAAAA,EAAEsB,WACd5D,EAAKK,aAAaiO,EAAI/K,OAAS+K,EAAI7K,OAAOG,YAG9C,IAAMxB,EAAgBlI,KAAK2X,yBAAyB7E,KAAK9S,KAAK+H,IAAK/H,KAAKsN,YACxEtN,KAAKiiB,0BAA4B/Z,EAAcqL,SAC/CrL,EAAc8K,yCAgBlBzS,OAAAC,eAA6BkX,EAAAjX,UAAA,YAAS,KAAtC,SAAuCyhB,GAAvC,IAAApc,EAAA9F,KACMkiB,GAAand,GAAA/E,KAAAmY,MAAoB+J,IACnC7c,GAAArF,KAAImY,GAAc+J,GAClBnd,GAAA/E,KAAAgiB,IAAmBnW,IAAIqW,EAAUC,KAAKrW,KACpCyC,EAAAA,KAAI,WACFxJ,GAAAe,EAAA8S,IAAanW,KAAK,CAChBqW,OAAO,QAGX9M,+CAMNzL,OAAAC,eAAwBkX,EAAAjX,UAAA,OAAI,KAA5B,SAA6Bmb,GAA7B,IAAA9V,EAAA9F,KACM4b,GAAQ7W,GAAA/E,KAAAoY,MAAewD,IACzBvW,GAAArF,KAAIoY,GAASwD,GACb7W,GAAA/E,KAAAgiB,IAAmBnW,IAAI+P,EAAKwG,WAAWtW,KACrCyC,EAAAA,KAAI,WACFxJ,GAAAe,EAAA8S,IAAanW,KAAK,CAChBqW,OAAO,QAGX9M,+CA0DN0L,EAAAjX,UAAAuR,SAAA,WACEjN,GAAA/E,KAAAoZ,IAAAhY,KAAApB,OAGF0X,EAAAjX,UAAAmL,gBAAA,WAAA,IAAA9F,EAAA9F,KACE+E,GAAA/E,KAAAgiB,IAAmBnW,IAAI9G,GAAA/E,KAAA4Y,IAAa9M,KAClCuW,EAAAA,aAAa,KACbtW,EAAAA,UAAUhH,GAAA/E,KAAA4Y,IAAarW,OACvBgH,EAAAA,QAAO,SAAAkF,WACL,QAAA1J,GAAAe,EAAAqT,OAG4B,QAAxB7P,EAAgB,QAAhBlB,EAACtC,EAAKwH,kBAAU,IAAAlF,OAAA,EAAAA,EAAEmB,cAAM,IAAAD,OAAA,EAAAA,EAAE2C,UAGP,eAAhBwC,EAAKsK,OAFa,WAAhBtK,EAAKsK,WAIhBuJ,EAAAA,WAAU,SAAM7T,GAAI,OAAA3M,EAAAgE,OAAA,OAAA,GAAA,qEAEH,OADT6U,EAAa5V,GAAA/E,KAAAmc,IAAA/a,KAAApB,MACJ,CAAA,EAAM+E,GAAA/E,KAAAmd,IAAA/b,KAAApB,KAAW2a,GAAY5V,GAAA/E,KAAAmZ,KAAwB1K,EAAKqK,eAEzE,OAFMnW,EAAS8Z,EAAAnZ,OACf+B,GAAArF,KAAImZ,IAAkB,GACtB,CAAA,EAAOxW,cAETqJ,UAASjH,GAAA/E,KAAA4c,MACX7X,GAAA/E,KAAAgiB,IAAmBnW,IAAI7L,KAAKqY,WAAWkK,QAAQzW,KAAKC,EAAAA,UAAU,KAAKC,UAASjH,GAAA/E,KAAAoZ,MAC5ErU,GAAA/E,KAAAgiB,IAAmBnW,IAAI7L,KAAKwY,aAAa+J,QAAQzW,KAAKC,EAAAA,UAAU,KAAKC,UAASjH,GAAA/E,KAAAyZ,MAC9E1U,GAAA/E,KAAAgiB,IAAmBnW,IAAI7L,KAAK2Y,aAAa4J,QAAQzW,KAAKC,EAAAA,UAAU,KAAKC,UAASjH,GAAA/E,KAAAwZ,MAQ9ExZ,KAAKyI,IAAIkF,iBAGX+J,EAAAjX,UAAAyL,YAAA,WACEnH,GAAA/E,KAAAgiB,IAAmB7V,eA6PrBuL,EAAAjX,UAAA+hB,KAAA,SAAKC,EAA8Bvc,GACjCwc,EAAAA,gBAAgBxc,EAASuc,EAAME,cAAeF,EAAMG,eAyhBtDriB,OAAAC,eAAIkX,EAAAjX,UAAA,cAAW,KAAf,WACE,OAAOT,KAAKwP,MAAMjG,QAAO,SAAA4B,GACvB,OAAKA,EAAK6L,cAGNzW,OAAOsiB,KAAK1X,EAAK6L,YAAYhG,MAAK,SAAAjJ,GAAO,OAAAoD,EAAK6L,WAAWjP,KAASoD,EAAKpD,SAI1EwG,KAAI,SAAApD,GAkBWA,EAAIyV,aAAJzV,EAAI+L,iBAAJ/L,EAAIoL,oBAhBlB,IAGAU,EAac9L,EAAI8L,mBAAftU,GAAWwI,EAAIqL,aAAJrL,EAAIsL,WAAJtL,EAAIuL,YAAJvL,EAAIwL,WAAJxL,EAAI6L,WAAJ7L,EAAImL,KAAJnL,EAAI0V,UAAJ1V,EAAI0L,WAAJ1L,EAAI2L,QAAJ3L,EAAI4L,eAAJ5L,EAAIyL,QAAJzL,EAAI8V,UAAT5f,EAAK8J,EAjBV,CAAA,eAAA,mBAAA,sBAAA,qBAAA,eAAA,aAAA,cAAA,aAAA,aAAA,OAAA,YAAA,aAAA,UAAA,iBAAA,UAAA,eAkBN,OAAO5K,OAAAiO,OAAAjO,OAAAiO,OAAA,GACF7L,GAAM,CACTsU,mBAAkBA,wCAKxB1W,OAAAC,eAAIkX,EAAAjX,UAAA,YAAS,KAAb,WACE,OAAOT,KAAKwP,MAAMjB,KAAI,SAAApD,GAiBJA,EAAIyV,aAAJzV,EAAI+L,iBAAJ/L,EAAIoL,oBAAJpL,EAAIqL,aAAJrL,EAAIsL,WAAJtL,EAAIuL,YAAJvL,EAAIwL,WAAJxL,EAAI6L,WAAJ7L,EAAImL,KAAJnL,EAAI0V,UAAJ1V,EAAI0L,WAAJ1L,EAAI2L,QAAJ3L,EAAI4L,eAAJ5L,EAAIyL,QAAJzL,EAAI8V,UACpB,OADW5f,EAAK8J,EAhBV,CAAA,eAAA,mBAAA,sBAAA,eAAA,aAAA,cAAA,aAAA,aAAA,OAAA,YAAA,aAAA,UAAA,iBAAA,UAAA,kDAsBV5K,OAAAC,eAAIkX,EAAAjX,UAAA,YAAS,KAAb,WACE,OAAOT,KAAKwP,MAAMwB,MAAK,SAAAzP,GAAK,YAAmB6I,IAAnB7I,EAAEqf,uXA5gCjCvZ,EAAAA,UAASnH,KAAA,CAAC,CACTC,SAAU,mBACVmH,SAAA,2rxBAEAwb,WAAY,CACVC,EAAAA,QAAQ,eAAgB,CACtB9d,EAAAA,MAAM,YAAa+d,EAAAA,MAAM,CAAEC,OAAQ,IAAKC,UAAW,IAAKC,WAAY,YACpEle,EAAAA,MAAM,WAAY+d,EAAAA,MAAM,CAAEC,OAAQ,IAAKE,WAAY,aACnDC,EAAAA,WAAW,yBAA0BC,EAAAA,QAAQ,sjKArDjD3b,EAAAA,kDAuLG+N,EAAAA,OAAMvV,KAAA,CAACwF,KAAoB,CAAAoE,KAAG4L,EAAAA,kBAnJ1B4N,UAF8BpR,EAAAA,uBAX9BC,EAAAA,uBAeAC,EAAAA,0BAGAmR,UACApM,yCAgBNxP,EAAAA,UAASzH,KAAA,CAACsjB,EAAAA,wCAGV7b,EAAAA,UAASzH,KAAA,CAACujB,EAAAA,oCAGV9b,EAAAA,UAASzH,KAAA,CAACsI,oBAeVnI,EAAAA,yBA+BAsH,EAAAA,UAASzH,KAAA,CAACwjB,EAAAA,4BAeV/b,EAAAA,UAASzH,KAAA,CAACyjB,EAAAA,gCAcVhc,EAAAA,UAASzH,KAAA,CAACoM,8BAGVsX,EAAAA,aAAY1jB,KAAA,CAAC2jB,wBAGbD,EAAAA,aAAY1jB,KAAA,CAAC4jB,uBAGbC,EAAAA,gBAAe7jB,KAAA,CAAC8jB,yBAMhBD,EAAAA,gBAAe7jB,KAAA,CAAC+jB,yBAOhBF,EAAAA,gBAAe7jB,KAAA,CAACI,wBCnKnB,SAAA4jB,YACQA,EAAAzjB,UAAAkV,UAAA,SAAUxK,EAAW2J,qIAEzB,GADM0H,EAAmC,IACpC1H,EACH,MAAA,CAAA,EAAO0H,8CAEa2H,EAAA9f,EAAAyQ,GAAQsP,EAAAD,EAAA1hB,8CAAnB4hB,EAAOD,EAAA7hB,MACZ+hB,GAAO,OAEIla,KADPsJ,EAAW2Q,EAAO3Q,QACtB,CAAA,EAAA,IACF4Q,GAAO,uBACsB,kBAApB,EAAA,CAAA,EAAA,IACJ5Q,IACH4Q,GAAO,wBAGHC,EAAW7Q,EAAOvI,cACAhJ,QACjB,CAAA,EAAMoiB,GADT,CAAA,EAAA,iBACG1a,EAAAvG,SACHghB,GAAO,gBAGJC,IACHD,GAAO,wBAITA,EAAA,MAAA,CAAA,EAAA,SACE,aAAcD,GAAd,MAAA,CAAA,EAAA,IACIhW,EAA0C,8CACrBmW,OAAA,EAAApc,EAAA/D,EAAAggB,EAAQhW,UAAQ/E,EAAAlB,EAAA3F,8CAAhCgiB,EAAYnb,EAAA/G,WAEN6H,KADPsa,EAAWD,EAAY/Q,QAC3B,CAAA,EAAA,KACFrF,EAASlK,KAAKsgB,0BACe,kBAApB,EAAA,CAAA,EAAA,KACJC,GACHrW,EAASlK,KAAKsgB,0BAGVF,EAAWG,EAAOvZ,cACAhJ,QACjB,CAAA,EAAMoiB,GADT,CAAA,EAAA,mBACG1a,EAAAvG,QACH+K,EAASlK,KAAKsgB,kBAGXF,GACHlW,EAASlK,KAAKsgB,oNAKlBpW,EAASzM,OAAS,GACpB4a,EAAQrY,KAAI5D,OAAAiO,OAAAjO,OAAAiO,OAAA,GAAM6V,GAAO,CAAEhW,SAAQA,oBAGrCmO,EAAQrY,KAAKkgB,6MAInB,MAAA,CAAA,EAAO7H,qCA9DVpG,EAAAA,KAAIlW,KAAA,CAAC,CACJqP,KAAM,sCCER,SAAAoV,YACEA,EAAAlkB,UAAAkV,UAAA,SAAUxK,EAAWkZ,GACnB,SAAKA,MAAAA,OAAO,EAAPA,EAASpY,YAGoB,kBAAtBoY,EAAgB,SACnBA,EAAQpY,SAEVoY,EAAQpY,SAASd,+BAX3BiL,EAAAA,KAAIlW,KAAA,CAAC,CACJqP,KAAM,uCCER,SAAAqV,YACEA,EAAAnkB,UAAAkV,UAAA,SAAU0O,EAAgClZ,GACxC,OAAKkZ,MAAAA,OAAO,EAAPA,EAASQ,MAGgB,iBAAlBR,EAAY,KACfA,EAAQQ,KAEVR,EAAQQ,KAAK1Z,GALX,8BANZiL,EAAAA,KAAIlW,KAAA,CAAC,CACJqP,KAAM,oCCER,SAAAuV,YACEA,EAAArkB,UAAAkV,UAAA,SAAU0O,EAAgClZ,GACxC,OAAKkZ,MAAAA,OAAO,EAAPA,EAASxS,OAGiB,iBAAnBwS,EAAa,MAChBA,EAAQxS,MAEVwS,EAAQxS,MAAM1G,GALZ,8BANZiL,EAAAA,KAAIlW,KAAA,CAAC,CACJqP,KAAM,qCCKN,SAAAwV,EAAYrc,GADJ1I,KAAA0L,kBAAmB,EAEzB1L,KAAK0L,kBAAoBhD,EAAciD,mBAEzCoZ,EAAAtkB,UAAAkV,UAAA,SAAUpT,EAAY4d,EAAc/W,GAClC,MAAsC,mBAA1BA,MAAAA,OAAM,EAANA,EAAQ4b,cACXziB,EAEF6G,MAAAA,OAAM,EAANA,EAAQ4b,aAAaziB,EAAO4d,EAASngB,KAAK0L,6CAZpD0K,EAAAA,KAAIlW,KAAA,CAAC,CACJqP,KAAM,mEAHCnD,EAAAA,gCCeP,kCAZD/E,EAAAA,UAASnH,KAAA,CAAC,CACTC,SAAU,uBACVmH,SAAA,o7EAEAC,gBAAiBC,EAAAA,wBAAwBC,uTAGxCpH,EAAAA,mBACAA,EAAAA,sBACAA,EAAAA,oBACAA,EAAAA,0BACAA,EAAAA,2BCRD,SAAA4kB,EAAoBrN,GAAA5X,KAAA4X,iBAAAA,SACdqN,EAAAxkB,UAAAkV,UAAA,SAAUpT,EAAY4d,EAAc/W,EAA8BrB,qGACtE,OAAIqB,MAAAA,OAAM,EAANA,EAAQuM,WACV,CAAA,EAAOvM,EAAOuM,UAAUpT,EAAO4d,IAEb,WAAhB/W,EAAOU,KAAP,CAAA,EAAA,GACK,CAAA,EAAM9J,KAAK4X,iBAAiBjC,UAAUpT,EAAO6G,WAApD,MAAA,CAAA,EAAOI,EAAAlG,eAET,MAAoB,WAAhB8F,EAAOU,MAAqBob,OAAOC,SAAS5iB,GAC9C,CAAA,EAAO2iB,OAAOE,aAAa7iB,IAET,SAAhB6G,EAAOU,KACT,CAAA,GAAiB,IAAVvH,GAA+B,QAAb6F,EAAAgB,EAAOsI,cAAM,IAAAtJ,OAAA,EAAAA,EAAE8W,gBAAiB,QAAwB,QAAb5V,EAAAF,EAAOsI,cAAM,IAAApI,OAAA,EAAAA,EAAE6V,iBAAkB,SAEvG,CAAA,EAAO5c,qCAlBV6T,EAAAA,KAAIlW,KAAA,CAAC,CACJqP,KAAM,gEAFCgU,wBCGT,SAAA8B,YACEA,EAAA5kB,UAAAkV,UAAA,SAAU5P,EAAiDsD,WACnDmT,EAA0C,GAChD,IAAKzW,EACH,OAAOyW,MAET,IAAqB,IAAA8I,EAAAjhB,EAAA0B,GAAewf,EAAAD,EAAA7iB,QAAA8iB,EAAA3iB,KAAA2iB,EAAAD,EAAA7iB,OAAE,CAAjC,IAAM8G,EAAMgc,EAAAhjB,MACfia,EAAQrY,KAAKoF,qGAEf,OAAOiT,EAAQjT,QAAO,SAAAhI,GAAK,OAAC8H,GAAS9H,EAAE8H,QAAUA,gCAZpD+M,EAAAA,KAAIlW,KAAA,CAAC,CACJqP,KAAM,yCCER,SAAAiW,YACEA,EAAA/kB,UAAAkV,UAAA,SAAUzP,EAAiCmD,mBACnCmT,EAAkC,GACxC,IAAKtW,EACH,OAAOsW,MAET,IAAqB,IAAA1O,EAAAzJ,EAAA6B,GAAOoR,EAAAxJ,EAAArL,QAAA6U,EAAA1U,KAAA0U,EAAAxJ,EAAArL,OAAE,CAAzB,IAAM2G,EAAMkO,EAAA/U,MACf,GAAoB,UAAhB6G,EAAOU,KAGX,GAAoB,aAAhBV,EAAOU,MAQO,QAAdR,EAACF,EAAOG,cAAM,IAAAD,OAAA,EAAAA,EAAE2C,WAClBuQ,EAAQrY,KAAKiF,YARb,IAA6B,IAAAS,GAAA0L,OAAA,EAAAlR,EAAA+E,MAAAA,OAAM,EAANA,EAAQiF,WAAQnE,EAAAL,EAAApH,QAAAyH,EAAAtH,KAAAsH,EAAAL,EAAApH,OAAE,CAA1C,IAAMgjB,EAAcvb,EAAA3H,OACG,QAAtB6F,EAACqd,EAAelc,cAAM,IAAAnB,OAAA,EAAAA,EAAE6D,WAC1BuQ,EAAQrY,KAAKshB,wMASrB,OAAOjJ,EAAQjT,QAAO,SAAAhI,GAAK,OAAC8H,GAAS9H,EAAE8H,QAAUA,gCAzBpD+M,EAAAA,KAAIlW,KAAA,CAAC,CACJqP,KAAM,+BCSN,kCATDlI,EAAAA,UAASnH,KAAA,CAAC,CACTC,SAAU,gCACVmH,SAAA,0sLAICjH,EAAAA,sBACAA,EAAAA,oBACAA,EAAAA,2BCFD,SAAAqlB,EAAYhd,GADZid,GAAArgB,IAAAtF,MAAoB,GAElBqF,GAAArF,KAAI2lB,IAAsBjd,EAAciD,oBAE1C+Z,EAAAjlB,UAAAkV,UAAA,SAAUzP,EAAiCiF,GAA3C,IAAArF,EAAA9F,KACE,OAAOkG,EAAQqD,QAAO,SAAAH,WACd7G,EAAQ4I,MAAAA,OAAI,EAAJA,EAAO/B,EAAOC,OACtBuc,EAAiC,QAAnBxd,EAAGgB,EAAOuM,iBAAS,IAAAvN,OAAA,EAAAA,EAAAhH,KAAhBgI,EAAmB+B,EAAK/B,EAAOC,OAAQ8B,GACxD0a,EAAmC,QAAtBvc,EAAGF,EAAO4b,oBAAY,IAAA1b,OAAA,EAAAA,EAAAlI,KAAnBgI,EAAsB+B,EAAK/B,EAAOC,OAAQ8B,EAAIpG,GAAAe,EAAA6f,KACpE,OAAQpjB,MAAAA,GAAmD,KAAVA,GAC3CqjB,MAAAA,GAA8E,KAAnBA,GAC3DC,MAAAA,GAA2E,KAAlBA,+CAfpEzP,EAAAA,KAAIlW,KAAA,CAAC,CACJqP,KAAM,qEAJCnD,EAAAA,2CCIT,SAAA0Z,YACQA,EAAArlB,UAAAkV,UAAA,SAAUxK,EAAW/B,yGACzB,OAAKA,MAAAA,OAAM,EAANA,EAAQyI,QAGPlP,EAA6B,QAAvByF,EAAGgB,MAAAA,OAAM,EAANA,EAAQ2c,oBAAY,IAAA3d,OAAA,EAAAA,EAAAhH,KAApBgI,EAAuB+B,cAChBhJ,QACZ,CAAA,EAAMQ,GADZ,CAAA,EAAA,GAHF,CAAA,EAAO,WAIP,MAAA,CAAA,EAAQ2G,EAAAhG,SAAiB8F,MAAAA,OAAM,EAANA,EAAQyI,eAEnC,MAAA,CAAA,EAAOlP,IAAUyG,MAAAA,OAAM,EAANA,EAAQyI,0CAZ5BuE,EAAAA,KAAIlW,KAAA,CAAC,CACJqP,KAAM,yBCSN,WADSvP,KAAA8U,SAAoC,yBAR9CzN,EAAAA,UAASnH,KAAA,CAAC,CACTC,SAAU,qBACVmH,SAAA,qsDAEAC,gBAAiBC,EAAAA,wBAAwBC,mLAGxCpH,EAAAA,wBACAA,EAAAA,2BCJD,SAAA2lB,YACAA,EAAAvlB,UAAAkV,UAAA,SAAUpT,EAAY4d,EAAc/W,aAKlC,MAAoB,WAAhBA,EAAOU,OAAqBV,MAAAA,OAAM,EAANA,EAAQ6c,OAC/B,CACLnc,MAAOV,MAAAA,OAAM,EAANA,EAAQ8c,WAAsB9c,EAAO8c,UAAjB,QAC3BC,MAAO/c,EAAO6c,MAAM1jB,EAAO4d,GAC3B0E,KAAuB,QAAnBzc,EAAEgB,MAAAA,OAAM,EAANA,EAAQgd,iBAAS,IAAAhe,OAAA,EAAAA,EAAAhH,KAAjBgI,EAAoB7G,EAAO4d,IAGjB,WAAhB/W,EAAOU,OAAqBV,MAAAA,OAAM,EAANA,EAAQ6c,OAC/B,CACLnc,MAAOV,MAAAA,OAAM,EAANA,EAAQ8c,WAAsB9c,EAAO8c,UAAjB,QAC3BC,MAAO/c,EAAO6c,MAAM1jB,EAAO4d,GAC3B0E,KAAuB,QAAnBvb,EAAEF,MAAAA,OAAM,EAANA,EAAQgd,iBAAS,IAAA9c,OAAA,EAAAA,EAAAlI,KAAjBgI,EAAoB7G,EAAO4d,IAGjB,SAAhB/W,EAAOU,KACF,CACLA,MAAOV,MAAAA,OAAM,EAANA,EAAQ8c,WAAsB9c,EAAO8c,UAAjB,QAC3BC,MAAS5jB,EAAQ,UAAY,SAC7BsiB,KAAM,MAGU,WAAhBzb,EAAOU,OAAqBV,MAAAA,OAAM,EAANA,EAAQ6c,OAC/B,CACLnc,MAAOV,MAAAA,OAAM,EAANA,EAAQ8c,WAAsB9c,EAAO8c,UAAjB,QAC3BC,MAAO/c,EAAO6c,MAAM1jB,EAAO4d,GAC3B0E,KAAuB,QAAnBrb,EAAEJ,MAAAA,OAAM,EAANA,EAAQgd,iBAAS,IAAA5c,OAAA,EAAAA,EAAApI,KAAjBgI,EAAoB7G,EAAO4d,IAG9B,gCAtCV/J,EAAAA,KAAIlW,KAAA,CAAC,CACJqP,KAAM,8ECMN,SAAA8W,EAAoB1O,GAAA3X,KAAA2X,yBAAAA,SACpB0O,EAAA5lB,UAAAkV,UAAA,SAAUzN,EAAoCoF,EAAkCgH,GAC9E,OAAOtU,KAAK2X,yBAAyBtD,4BAA4BnM,EAAeoF,EAAYgH,8BAN/F8B,EAAAA,KAAIlW,KAAA,CAAC,CACJqP,KAAM,0EAJC+T,wBC4BP,SAAAgD,EACU7d,EACAgE,EACAC,EACAiL,GAJV,IAAA7R,EAAA9F,KACUA,KAAAyI,IAAAA,EACAzI,KAAAyM,cAAAA,EACAzM,KAAA0M,iBAAAA,EACA1M,KAAA2X,yBAAAA,EAZD3X,KAAAuiB,QAAU,IAAI9b,EAAAA,aACvBoM,GAAAA,IAAAA,UAAAA,GAEA7S,KAAAumB,kBAAmB,EACnBvmB,KAAA6M,SAEI,GACJ7M,KAAAwmB,cAAe,EAcfxmB,KAAA2G,KAAO,WAAA,OAAA7E,EAAAgE,OAAA,OAAA,GAAA,mEAEgB,OADrBT,GAAArF,KAAIymB,GAAUzmB,KAAK2X,yBAAyB7E,KAAK9S,KAAK+H,IAAK/H,KAAKsN,aAChEhE,EAAAtJ,KAAqB,CAAA,EAAM+E,GAAA/E,KAAAymB,IAAYrhB,qBAAvCkE,EAAKpB,cAAgBsB,EAAAlG,OACrBtD,KAAK+G,MAAMJ,mBAGb3G,KAAAmhB,OAAS,WACPpc,GAAAe,EAAA2gB,IAAYnhB,IAAIQ,EAAKoC,eACrBpC,EAAKiB,MAAME,QACXnB,EAAK2C,IAAIkF,iBAGX3N,KAAAsL,QAAU,WAAA,OAAAxJ,EAAAgE,OAAA,OAAA,GAAA,0DACA4K,EAAc1Q,KAAK0M,iBAAgBgE,UAC3C1Q,KAAKyM,cAAcgE,QAAQC,EAAU,wCAAwC7N,MAAK,WAChFkC,GAAAe,EAAA2gB,IAAYrT,SACZtN,EAAKiB,MAAME,QACXnB,EAAK2C,IAAIkF,8BAIb3N,KAAA0mB,aAAe,WAAA,OAAA5kB,EAAAgE,OAAA,OAAA,GAAA,6CACb9F,KAAK6M,SAAW,GAChB7M,KAAKumB,kBAAmB,aAG1BvmB,KAAAyQ,QAAU,WAAA,OAAA3O,EAAAgE,OAAA,OAAA,GAAA,0DACFqP,EAAyC,CAC7CxB,OAAQ,CACNtK,MAAOyO,EAAAA,KACPjG,MAAO,YACPE,MAAO,SAET8B,OAAO,EACPD,WAAW,EACX/B,MAAO,YACPE,MAAO,QACPoC,mBAAmB,EACnBiB,iBAAkBpV,KAAKkI,cAAchC,QAAQqD,QAAO,SAAAhI,GAAC,IAAA6G,EAAI,OAAAtC,EAAK+G,SAAiB,QAATzE,EAAC7G,EAAEoS,cAAM,IAAAvL,OAAA,EAAAA,EAAEiB,UAAQkF,KAAI,SAAAhN,GAAC,IAAA6G,EAAA,OAAY,QAAZA,EAAI7G,EAAEoS,cAAM,IAAAvL,OAAA,EAAAA,EAAEiB,UAE9GrJ,KAAKkI,cAAchC,QAAQ/B,KAAKgR,GAChCnV,KAAKkI,cAAgBnD,GAAA/E,KAAAymB,IAAYnhB,IAAItF,KAAKkI,eAC1ClI,KAAKumB,kBAAmB,oBAhD1BD,EAAA7lB,UAAAuR,SAAA,aAGAsU,EAAA7lB,UAAAkmB,QAAA,SAAQlE,GACNziB,KAAKwmB,cAAe,GA+CtBF,EAAA7lB,UAAAmmB,UAAA,SAAUnE,GACRC,EAAAA,gBAAgB1iB,KAAKkI,cAAchC,QAASuc,EAAME,cAAeF,EAAMG,cACvE5iB,KAAK6mB,MAAMC,cAGbR,EAAA7lB,UAAAsmB,gBAAA,WACE/mB,KAAKwmB,cAAe,GAGtBF,EAAA7lB,UAAAumB,cAAA,WACEhnB,KAAKwmB,cAAe,4CAtFvBnf,EAAAA,UAASnH,KAAA,CAAC,CACTC,SAAU,8BACVmH,SAAA,g8LAfmDI,EAAAA,yBAE5CyK,EAAAA,uBACAC,EAAAA,0BAGAkR,2CAaNjjB,EAAAA,mBACAA,EAAAA,qBACAsH,EAAAA,UAASzH,KAAA,CAAC,wBACVyH,EAAAA,UAASzH,KAAA,CAAC,0BAkBV+mB,EAAAA,aAAY/mB,KAAA,CAAC,iBAAkB,CAAC,mCClCjC,SAAAgnB,YACAA,EAAAzmB,UAAAkV,UAAA,SAAUpT,EAAY4d,EAAc/W,GAClC,OAAIA,MAAAA,OAAM,EAANA,EAAQ+d,SACH/d,EAAO+d,QAAQ5kB,EAAO4d,GAExB,gCATV/J,EAAAA,KAAIlW,KAAA,CAAC,CACJqP,KAAM,kECCR,WAAA,IAAAzJ,EAAA9F,KAIEonB,GAAA9hB,IAAAtF,MAAW,SAACqnB,GACV,MAAI,aAAcA,EACT,CACLxV,MAAOwV,EAAOxV,MACdgT,KAAMwC,EAAOxC,KACbyC,QAASD,EAAOC,QAChBH,QAASE,EAAOF,QAChBhB,MAAOkB,EAAOlB,MACdrc,KAAMud,EAAOvd,KACbuE,SAAUgZ,EAAOhZ,SAASE,KAAI,SAAAhN,GAAK,MAAA,CACjCsQ,MAAOtQ,EAAEsQ,MACTgT,KAAMtjB,EAAEsjB,KACRsB,MAAOkB,EAAOlB,MACdrc,KAAMud,EAAOvd,KACbwd,QAAS/lB,EAAE+lB,QACXH,QAAS5lB,EAAE4lB,QACXI,MAAOhmB,EAAEgmB,WAIR,CACL1V,MAAOwV,EAAOxV,MACdgT,KAAMwC,EAAOxC,KACbsB,MAAOkB,EAAOlB,MACdrc,KAAMud,EAAOvd,KACbwd,QAASD,EAAOC,QAChBH,QAASE,EAAOF,QAChBI,MAAOF,EAAOE,UAIlBvnB,KAAA2V,UAAY,SAACqC,EAAyBlB,WAC9B0F,EAAkC,GACxC,KAAK1F,MAAAA,OAAO,EAAPA,EAASlV,WAAWoW,MAAAA,OAAa,EAAbA,EAAepW,QACtC,MAAO,kBAEEylB,WACT,GAAI,aAAcA,EAAQ,CACxB,IAAMhZ,EAAyC,cACpCmZ,GACT,IAAMzf,EAAMM,EAAAA,QAAKmf,GACbxP,EAAciF,OAAM,SAAA1b,GAAK,OAAAA,EAAEuV,QAAQzB,SAAStN,OAC9CsG,EAASlK,KAAKqjB,QAHlB,IAA0B,IAAAle,GAAAiM,OAAA,EAAAlR,EAAAgjB,EAAOhZ,WAAQ7E,EAAAF,EAAA7G,QAAA+G,EAAA5G,KAAA4G,EAAAF,EAAA7G,SAAnB+G,EAAAjH,wGAMlB8L,EAASzM,OAAS,GACpB4a,EAAQrY,KAAI5D,OAAAiO,OAAAjO,OAAAiO,OAAA,GAAM6Y,GAAM,CAAEhZ,SAAQA,SAE/B,CACL,IAAMoZ,EAAMpf,EAAAA,QAAKgf,GACbrP,EAAciF,OAAM,SAAA1b,GAAK,OAAAA,EAAEuV,QAAQzB,SAASoS,OAC9CjL,EAAQrY,KAAKkjB,SAfnB,IAAqB,IAAAK,EAAArjB,EAAAyS,GAAO6Q,EAAAD,EAAAjlB,QAAAklB,EAAA/kB,KAAA+kB,EAAAD,EAAAjlB,SAAXklB,EAAAplB,wGAmBjB,OAAOia,EAAQjO,KAAI,SAAA5L,GAAU,OAAAoC,GAAAe,EAAAshB,IAAAhmB,KAAA0E,EAAcnD,4CA3D9CyT,EAAAA,KAAIlW,KAAA,CAAC,CACJqP,KAAM,mCCDR,WAIEvP,KAAA2V,UAAY,SAACqC,EAAyBmI,EAAiBtL,eAC7C5I,EAAsB4I,EAAS5I,SAArB6K,EAAYjC,EAASiC,QACvC,KAAKA,MAAAA,OAAO,EAAPA,EAASlV,QACZ,OAAKqK,GAILkU,EAAQtJ,YAAc5K,EAASkU,EAASnI,IAChCmI,EAAQtJ,aAJdsJ,EAAQtJ,YAAa,GACd,GAMX,IAAM+Q,EAAmB9Q,EAAQvN,QAAO,SAAA8d,WACtC,GAAI,aAAcA,EAAQ,gBACbG,GACT,IAAMzf,EAAMM,EAAAA,QAAKmf,GACjB,GAAIxP,EAAciF,OAAM,SAAA1b,GAAK,OAAAA,EAAEuV,QAAQzB,SAAStN,oBACvC,QAHX,IAA0B,IAAAuB,EAAAjF,EAAAgjB,EAAOhZ,UAAQ7E,EAAAF,EAAA7G,QAAA+G,EAAA5G,KAAA4G,EAAAF,EAAA7G,OAAA,CAApC,QAAiB+G,EAAAjH,8IAMtB,OAAO,EAEP,IAAMklB,EAAMpf,EAAAA,QAAKgf,GACjB,OAAOrP,EAAciF,OAAM,SAAA1b,GAAK,OAAAA,EAAEuV,QAAQzB,SAASoS,aAIvD,IAAqB,IAAAI,EAAAxjB,EAAAujB,GAAgBE,EAAAD,EAAAplB,QAAAqlB,EAAAllB,KAAAklB,EAAAD,EAAAplB,OAAE,CAAlC,IAAM4kB,EAAMS,EAAAvlB,MACf,GAAI,aAAc8kB,MAChB,IAA0B,IAAA7d,GAAA+L,OAAA,EAAAlR,EAAAgjB,EAAOhZ,WAAQ5E,EAAAD,EAAA/G,QAAAgH,EAAA7G,KAAA6G,EAAAD,EAAA/G,OAAE,CAAtC,IAAM+kB,EAAW/d,EAAAlH,MACpB,GAAG4d,EAAQrJ,QAAQzB,SAAShN,EAAAA,QAAKmf,IAC/B,OAAO,yGAIX,GAAGrH,EAAQrJ,QAAQzB,SAAShN,EAAAA,QAAKgf,IAC/B,OAAO,oGAIb,OAAO,yBA3CVjR,EAAAA,KAAIlW,KAAA,CAAC,CACJqP,KAAM,iCCFR,WAAA,IAAAzJ,EAAA9F,KAIEA,KAAA2V,UAAY,SAAOnG,EAAiBqF,GAAkC,OAAA/S,EAAAgE,OAAA,OAAA,GAAA,mFAEpE,OAAKgR,OADGA,EAAYjC,EAASiC,cACjB,EAAPA,EAASlV,QAGT4N,EAAM5N,OAGPkV,EAAQ9F,MAAK,SAAAzP,GAAK,MAAC,aAAcA,GAAKA,EAAE8M,SAAS2C,MAAK,SAAA1C,GAAM,OAAAA,EAAGyZ,cAAexmB,EAAEwmB,aAClF,CAAA,GAAO,GAET,CAAA,EAAM,IAAI5lB,SAAQ,SAAAC,GAAW,OAAA4lB,WAAW5lB,EAAS,SAL/C,CAAA,GAAO,GAHP,CAAA,GAAO,UAUT,GAFAyH,EAAAvG,OACM6K,EAAQqB,EAAMpB,MAAK,SAAA5M,GAAC,IAAA4G,EAAA,OAAa,QAAbA,EAAI5G,EAAEsV,eAAO,IAAA1O,OAAA,EAAAA,EAAExG,UAC9B,YACEylB,GACT,GAAI7X,EAAMjG,QAAO,SAAA/H,GAAC,IAAA4G,EAAA,OAAa,QAAbA,EAAI5G,EAAEsV,eAAO,IAAA1O,OAAA,EAAAA,EAAExG,UAAQqb,OAAM,SAAA1b,GAAK,OAAAA,EAAEuV,QAAQzB,SAASgS,oBAC9D,QAFX,IAAqB/d,EAAAjF,EAAA8J,EAAM2I,SAAOtN,EAAAF,EAAA7G,QAAA+G,EAAA5G,KAAA4G,EAAAF,EAAA7G,UAAvB4kB,EAAM7d,EAAAjH,2BAAN8kB,wHAMb,MAAA,CAAA,GAAO,iCAxBVjR,EAAAA,KAAIlW,KAAA,CAAC,CACJqP,KAAM,0CCQN,SACU1H,GADV,IAAA/B,EAAA9F,KACUA,KAAA6H,eAAAA,EAJVgL,GAAAA,IAAAA,KAEI,IAKJ7S,KAAAgT,KAAO,SAAC9K,GACN,KAAKA,MAAAA,OAAa,EAAbA,EAAeH,KAClB,OAAO,KAET,IAAMA,EAAMM,EAAAA,QAAK,CACfF,OAAQ,uCACRJ,IAAKG,EAAcH,MAgBrB,OAdIhD,GAAAe,EAAAmiB,IAAYlgB,KACgB,YAA3BG,MAAAA,OAAa,EAAbA,EAAe6L,SAChBhP,GAAAe,EAAAmiB,IAAYlgB,GAAOjC,EAAK+B,eAAemM,aAAkCjM,EAAK,CAC5E7H,KAAMgI,MAAAA,OAAa,EAAbA,EAAehI,KACrBwJ,QAAS,KAGX3E,GAAAe,EAAAmiB,IAAYlgB,GAAOjC,EAAK+B,eAAezD,OAA4B2D,EAAK,CACtE+B,KAAM5B,MAAAA,OAAa,EAAbA,EAAe6L,QACrB7T,KAAMgI,MAAAA,OAAa,EAAbA,EAAehI,KACrBwJ,QAAS,MAIR3E,GAAAe,EAAAmiB,IAAYlgB,IAGrB/H,KAAAkoB,WAAa,SAAChgB,WACZ,KAAKA,MAAAA,OAAa,EAAbA,EAAeH,KAClB,OAAO,KAET,KAAKG,MAAAA,OAAa,EAAbA,EAAeigB,cAClB,OAAO,KAET,IAAMpgB,EAAMM,EAAAA,QAAK,CACfF,OAAQ,uCACRJ,IAAKG,EAAcH,MAgBrB,OAdIhD,GAAAe,EAAAmiB,IAAYlgB,KACgB,YAA3BG,MAAAA,OAAa,EAAbA,EAAe6L,SAChBhP,GAAAe,EAAAmiB,IAAYlgB,GAAOjC,EAAK+B,eAAemM,aAAkCjM,EAAK,CAC5E7H,KAAiC,QAA7BkI,EAAEF,MAAAA,OAAa,EAAbA,EAAeigB,oBAAY,IAAA/f,OAAA,EAAAA,EAAElI,KACnCwJ,QAAS,KAGX3E,GAAAe,EAAAmiB,IAAYlgB,GAAOjC,EAAK+B,eAAezD,OAA4B2D,EAAK,CACtE+B,KAAM5B,MAAAA,OAAa,EAAbA,EAAe6L,QACrB7T,KAAiC,QAA7BoJ,EAAEpB,MAAAA,OAAa,EAAbA,EAAeigB,oBAAY,IAAA7e,OAAA,EAAAA,EAAEpJ,KACnCwJ,QAAS,MAIR3E,GAAAe,EAAAmiB,IAAYlgB,yCA3DtBO,EAAAA,uDALmBC,EAAAA,sCC4BlB,SAAA6f,EACU3f,EACA4f,EACA5b,EACAC,EACAiL,GALV,IAAA7R,EAAA9F,KACUA,KAAAyI,IAAAA,EACAzI,KAAAqoB,uBAAAA,EACAroB,KAAAyM,cAAAA,EACAzM,KAAA0M,iBAAAA,EACA1M,KAAA2X,yBAAAA,EAXV5O,GAAAA,IAAAA,KAAgB,IAAIC,EAAAA,cACpBhJ,KAAAsoB,YAAc,CAAC,SAAU,SAAU,OAAQ,OAAQ,WAAY,OAAQ,SAAU,WAAY,gBAC7FtoB,KAAAgN,KAAO,IAAIC,EAAAA,UAAU,IACrBjN,KAAAuoB,UAAW,EAEXvoB,KAAAwoB,cAAwC,GA6BxCxoB,KAAAyoB,SAAW,SAACrf,GACVtD,EAAK4iB,OAAStf,GAAU,CACtBC,MAAOyO,EAAAA,KACPjG,MAAO,GACP/H,KAAM,SACN6e,UAAU,EACVC,aAAa,GAEf9iB,EAAKkH,KAAK6b,kBACV/iB,EAAKkH,KAAK8b,iBACVhjB,EAAKyiB,UAAW,GAGlBvoB,KAAAmhB,OAAS,iBACD4H,EAAgBjjB,EAAKuiB,uBAAuBH,WAAWpiB,EAAKwH,WAAWmG,QACvEuV,EAAUljB,EAAKuiB,uBAAuBrV,KAAoB,QAAhB5K,EAACtC,EAAKwH,kBAAU,IAAAlF,OAAA,EAAAA,EAAEqL,QAC9D3N,EAAK4iB,OAAOC,SACT7iB,EAAK4iB,OAAOO,GAMfF,EAAczjB,IAAGV,GAAKkB,EAAKojB,gBAL3BH,EAAczjB,IAAGV,GAAKkB,EAAKojB,cAAa,CAAA3oB,OAAAiO,OAAAjO,OAAAiO,OAAA,GACnC1I,EAAK4iB,QAAM,CACdO,GAAInR,EAAAA,UAMHhS,EAAK4iB,OAAOO,GAMfD,EAAQ1jB,IAAGV,GAAKkB,EAAKI,UALrB8iB,EAAQ1jB,IAAGV,GAAKkB,EAAKI,QAAO,CAAA3F,OAAAiO,OAAAjO,OAAAiO,OAAA,GACvB1I,EAAK4iB,QAAM,CACdO,GAAInR,EAAAA,kBAjDZsQ,EAAA3nB,UAAAuR,SAAA,WAAA,UAAAlM,EAAA9F,KACQ+oB,EAAgB/oB,KAAKqoB,uBAAuBH,WAAWloB,KAAKsN,WAAWmG,QACvEuV,EAAUhpB,KAAKqoB,uBAAuBrV,KAAoB,QAAhB5K,EAACpI,KAAKsN,kBAAU,IAAAlF,OAAA,EAAAA,EAAEqL,QAC9DsV,IACF,QAAAzf,EAAAvE,GAAA/E,KAAAmpB,WAAA,IAAA7f,GAAAA,EAAoBuC,IAAIkd,EAAcxV,SAASvH,WAAU,SAAA9F,GACvDJ,EAAKojB,cAAgBhjB,OAGrB8iB,IACF,QAAAxf,EAAAzE,GAAA/E,KAAAmpB,WAAA,IAAA3f,GAAAA,EAAoBqC,IAAImd,EAAQzV,SAASvH,WAAU,SAAA9F,GACjDJ,EAAKI,QAAUA,OAGnBlG,KAAKwoB,cAAgBxoB,KAAKsN,WAAWpH,QAAQqD,QAAO,SAAAhI,GAAK,MAAW,aAAXA,EAAEuI,MAAkC,iBAAXvI,EAAEuI,SAGtFse,EAAA3nB,UAAAyL,YAAA,WACEnH,GAAA/E,KAAAmpB,IAAmBhd,wDA1CtB9E,EAAAA,UAASnH,KAAA,CAAC,CACTC,SAAU,oBACVmH,SAAA,woFAEAC,gBAAiBC,EAAAA,wBAAwBC,+RAjBJC,EAAAA,yBAM9B0hB,UALAjX,EAAAA,uBACAC,EAAAA,0BAEAkR,2CAgBN3b,EAAAA,UAASzH,KAAA,CAACmpB,EAAAA,kCACVhpB,EAAAA,gBCAD,WAJSL,KAAAuY,QAEL,yBAdLlR,EAAAA,UAASnH,KAAA,CAAC,CACTC,SAAU,kBACVmH,SAAA,+1CACAC,gBAAiBC,EAAAA,wBAAwBC,iFAGxCpH,EAAAA,qBACAA,EAAAA,mBACAA,EAAAA,sBACAA,EAAAA,oBACAA,EAAAA,0BACAA,EAAAA,uBACAA,EAAAA,mBAGAA,EAAAA,mBCRD,WAAA,IAAAyF,EAAA9F,KAGAA,KAAAspB,SAAW,SAACzc,aACe,aAArB/G,EAAKsD,OAAOU,MAA4C,iBAArBhE,EAAKsD,OAAOU,OAGxB,QAA3BN,EAAmB,QAAnBF,EAAW,QAAXlB,EAAAtC,EAAKsD,cAAM,IAAAhB,OAAA,EAAAA,EAAE2M,cAAM,IAAAzL,OAAA,EAAAA,EAAEigB,cAAM,IAAA/f,GAAAA,EAAApI,KAAAkI,EAAGxD,EAAKqF,KAAM0B,KAG3C7M,KAAAwpB,YAAc,mBACa,aAArB1jB,EAAKsD,OAAOU,MAA4C,iBAArBhE,EAAKsD,OAAOU,MAG1B,WAArBhE,EAAKsD,OAAOU,OACS,QAAvBR,EAAkB,QAAlBlB,EAAAtC,EAAKsD,OAAO2L,cAAM,IAAA3M,OAAA,EAAAA,EAAEyD,WAAG,IAAAvC,GAAAA,EAAAlI,KAAAgH,EAAGtC,EAAKqF,QAInCnL,KAAAypB,aAAe,SAAC/X,WACW,aAArB5L,EAAKsD,OAAOU,MAA4C,iBAArBhE,EAAKsD,OAAOU,MAG1B,WAArBhE,EAAKsD,OAAOU,OACU,QAAxBR,EAAkB,QAAlBlB,EAAAtC,EAAKsD,OAAO2L,cAAM,IAAA3M,OAAA,EAAAA,EAAEshB,YAAI,IAAApgB,GAAAA,EAAAlI,KAAAgH,EAAGsJ,EAAQ5L,EAAKqF,QAI5CnL,KAAA2pB,eAAiB,SAACjY,WACS,aAArB5L,EAAKsD,OAAOU,MAA4C,iBAArBhE,EAAKsD,OAAOU,MAG1B,WAArBhE,EAAKsD,OAAOU,OACY,QAA1BR,EAAkB,QAAlBlB,EAAAtC,EAAKsD,OAAO2L,cAAM,IAAA3M,OAAA,EAAAA,EAAEwhB,cAAM,IAAAtgB,GAAAA,EAAAlI,KAAAgH,EAAGsJ,EAAQ5L,EAAKqF,8BA1C/C9D,EAAAA,UAASnH,KAAA,CAAC,CACTC,SAAU,yBACVmH,SAAA,smIACAC,gBAAiBC,EAAAA,wBAAwBC,iFAGxCpH,EAAAA,sBACAA,EAAAA,oBACAA,EAAAA,iCCFD,SAAAwpB,EAAoBzS,GAAApX,KAAAoX,KAAAA,EACpBC,GAAAA,IAAAA,MAAW,SAACjD,EAA2BjJ,GACrC,GAAiB,aAAbiJ,EAAItK,MAAoC,iBAAbsK,EAAItK,KACjC,OAAO,EAGT,GAAIsK,EAAIW,SAC8C,mBAAzBX,EAAIW,OAAe,SAAmBX,EAAIW,OAAO9I,SAASd,GAAQiJ,EAAIW,OAAO9I,UAEtG,OAAO,EAGX,OAAO,YAET4d,EAAAppB,UAAAkV,UAAA,SAAUmU,EAA6B3e,EAAcmC,eAC3CyH,EAAWzH,EAAUyH,OAC7B,IAAKA,EACH,OAAO,KAET,IAAIgV,GAAa,EAMjB,GAJEA,EADgC,mBAAtBhV,MAAAA,OAAM,EAANA,EAAQ9I,UACL8I,EAAO9I,SAASd,GAEhB4J,MAAAA,OAAM,EAANA,EAAQ9I,SAEH,WAAhB8I,EAAOjL,KAAmB,CAC5B,IAAMmL,EAAYF,EAAOE,UACzB9J,EAAK+L,iBAAgB3W,OAAAiO,OAAAjO,OAAAiO,OAAA,GAChBrD,EAAK+L,kBAAgB,CACxBhC,SAAU6U,EACVC,UAAU,EACV/U,UAAsB,WAAX6U,IAA+C,mBAAvB,EAAoC7U,EAAU9J,GAAQ8J,GACzFgV,SAAS,EACTC,YAAaH,GAAyB,WAAXD,SAExB,GAAoB,UAAhB/U,EAAOjL,KAAkB,CAClC,GAAIigB,EACF,OAAO,KAET5e,EAAK+L,iBAAgB3W,OAAAiO,OAAAjO,OAAAiO,OAAA,GAChBrD,EAAK+L,kBAAgB,CACxBhC,UAAW4U,EACXE,UAAWF,EACX7U,WAAW,EACXgV,UAAWH,EACXI,aAAcJ,SAEX,GAAoB,UAAhB/U,EAAOjL,KAAkB,CAClC,GAAIigB,EACF,OAAO,KAET5e,EAAK+L,iBAAgB3W,OAAAiO,OAAAjO,OAAAiO,OAAA,GAChBrD,EAAK+L,kBAAgB,CACxBhC,SAAS,EACT8U,UAAWF,EACX7U,WAAW,EACXgV,SAAS,EACTC,YAAY,IAGhB/e,EAAKoL,oBAAsBpL,EAAKoL,qBAAuB,GAC/C,IAAArQ,EAAYoH,EAAUpH,YAC9B,IAAkB,IAAA4H,EAAAzJ,EAAA6B,GAAOoR,EAAAxJ,EAAArL,QAAA6U,EAAA1U,KAAA0U,EAAAxJ,EAAArL,OAAE,CAAtB,IAAM2R,EAAGkD,EAAA/U,MACZ,GAAiB,iBAAb6R,EAAItK,SACN,IAAuB,IAAAN,GAAA+L,OAAA,EAAAlR,EAAA+P,EAAI/F,WAAQ5E,EAAAD,EAAA/G,QAAAgH,EAAA7G,KAAA6G,EAAAD,EAAA/G,OAAE,CAAhC,IAAM8U,EAAQ9N,EAAAlH,MACjB4I,EAAKoL,oBAAoBgB,EAASlO,OAAM9I,OAAAiO,OAAAjO,OAAAiO,OAAA,GACnCrD,EAAKoL,oBAAoBgB,EAASlO,QAAM,CAC3C6L,QAASnQ,GAAA/E,KAAAmqB,IAAA/oB,KAAApB,KAAcuX,EAAUpM,4GAIrCA,EAAKoL,oBAAoBnC,EAAI/K,OAAM9I,OAAAiO,OAAAjO,OAAAiO,OAAA,GAC9BrD,EAAKoL,oBAAoBnC,EAAI/K,QAAM,CACtC6L,QAASnQ,GAAA/E,KAAAmqB,IAAA/oB,KAAApB,KAAcoU,EAAKjJ,uGAOlC,OAHAnL,KAAKoX,KAAKI,KAAI,WACZrM,EAAKmL,KAAOD,GAAclL,MAErBA,EAAK+L,2DApFfd,EAAAA,KAAIlW,KAAA,CAAC,CACJqP,KAAM,mEANCkI,EAAAA,4BCGT,SAAA2S,IAIEC,GAAA/kB,IAAAtF,UAAA,GACAsqB,GAAAhlB,IAAAtF,KAAS,YACHoqB,EAAA3pB,UAAAkV,UAAA,SAAUW,EAAcnL,EAAcqE,EAAiBlC,gHAE3D,OADQyH,EAAWzH,EAAUyH,QACjBsM,SAIO,UAAhBtM,EAAOjL,MACRqB,EAAK8L,mBAAqB,KAC1B,CAAA,IAEkB,UAAhBlC,EAAOjL,MAAqBqB,EAAKyV,cAIrCvb,GAAArF,KAAIqqB,GAAa,IAAIhP,MACrB,CAAA,EAAM,IAAIlZ,SAAQ,SAAAC,GAAW,OAAA4lB,WAAW5lB,EAAO2C,GAAAe,EAAAwkB,WAJ7Cnf,EAAK8L,mBAAqB,KAC1B,CAAA,KATA9L,EAAK8L,mBAAqB,KAC1B,CAAA,WAcF,OAHA3N,EAAAhG,OACMinB,EAAM,IAAIlP,KACJkP,EAAI9O,UAAY1W,GAAA/E,KAAAqqB,IAAe5O,UACpC1W,GAAA/E,KAAAsqB,IACL,CAAA,IAEI3nB,EAASoS,EAAOsM,SAASlW,EAAMqE,MAAAA,OAAK,EAALA,EAAO/N,QAAQ0J,eAC9BhJ,SACpBiG,EAAA+C,EAA0B,CAAA,EAAMxI,IAD9B,CAAA,EAAA,UAEF,OADAyF,EAAK6O,mBAAqB3N,EAAAhG,OAC1B,CAAA,UAGA,OADA6H,EAAK8L,mBAAqBtU,EAC1B,CAAA,mEAjCLyT,EAAAA,KAAIlW,KAAA,CAAC,CACJqP,KAAM,yCCCR,SAAAib,YACEA,EAAA/pB,UAAAkV,UAAA,SAAUxK,EAAWmC,WACnB,OAAgC,QAAzBhE,EAAiB,QAAjBlB,EAAAkF,MAAAA,OAAU,EAAVA,EAAY0V,aAAK,IAAA5a,OAAA,EAAAA,EAAEqiB,cAAM,IAAAnhB,OAAA,EAAAA,EAAAlI,KAAAgH,EAAG+C,KAAS,8BAL/CiL,EAAAA,KAAIlW,KAAA,CAAC,CACJqP,KAAM,2BCWN,kCAXDlI,EAAAA,UAASnH,KAAA,CAAC,CACTC,SAAU,+BACVmH,SAAA,iRAEAC,gBAAiBC,EAAAA,wBAAwBC,2WAGxCpH,EAAAA,oBACAA,EAAAA,qBACAA,EAAAA,0BACAA,EAAAA,2BCGD,SAAAqqB,IAAA,IAAA5kB,EAAA9F,KALSA,KAAAmG,aAEL,GAEMnG,KAAA8I,aAAe,IAAIrC,EAAAA,aAe7BzG,KAAAigB,eAAiB,WACfna,EAAKgD,aAAa3B,eAZpBujB,EAAAjqB,UAAAuR,SAAA,mBAC2B,SAArBhS,KAAKoJ,OAAOU,MAAwC,SAArB9J,KAAKoJ,OAAOU,MAAwC,aAArB9J,KAAKoJ,OAAOU,OACpD,QAApBR,EAAY,QAAZlB,EAACpI,KAAKoJ,cAAM,IAAAhB,OAAA,EAAAA,EAAEsJ,cAAM,IAAApI,OAAA,EAAAA,EAAEqhB,iBACxB3qB,KAAKmG,aAAanG,KAAKoJ,OAAOC,OAASrJ,KAAKmG,aAAanG,KAAKoJ,OAAOC,QAAU,CAC7EU,KAAM,KACNM,GAAI,kCArBbhD,EAAAA,UAASnH,KAAA,CAAC,CACTC,SAAU,0BACVmH,SAAA,iuGAEAC,gBAAiBC,EAAAA,wBAAwBC,4OAGxCpH,EAAAA,4BACAA,EAAAA,sBAGAA,EAAAA,4BACAuH,EAAAA,iBCVH,WAIE5H,KAAA2V,UAAY,SAACwK,EAAiBtL,mBACpBiC,EAAYjC,EAASiC,QACvBC,EAA2B,GAEjC,GADAoJ,EAAQrJ,QAAUqJ,EAAQrJ,SAAW,KAChCA,MAAAA,OAAO,EAAPA,EAASlV,QAEZ,OADAue,EAAQtJ,YAAa,EACdsJ,EAAQtJ,eAEjB,IAAqB,IAAA6Q,EAAArjB,EAAAyS,GAAO6Q,EAAAD,EAAAjlB,QAAAklB,EAAA/kB,KAAA+kB,EAAAD,EAAAjlB,OAAE,CAAzB,IAAM4kB,EAAMM,EAAAplB,MACf,GAAI,aAAc8kB,EAAQ,CACxB,IAAI/C,GAAO,EACPsG,GAAW,MACf,IAA0B,IAAA/gB,GAAA0L,OAAA,EAAAlR,EAAAgjB,EAAOhZ,WAAQnE,EAAAL,EAAApH,QAAAyH,EAAAtH,KAAAsH,EAAAL,EAAApH,OAAE,CAAtC,IAAM+kB,EAAWtd,EAAA3H,MACZmR,EAAsB8T,EAAW9T,OAAzBqU,EAAcP,EAAWO,UACnChgB,EAAMM,EAAAA,QAAKmf,GACbO,IACF6C,GAAW,GAEW,mBAApB,EACGlX,EAAOyM,KACVmE,GAAO,EACPnE,EAAQrJ,QAAQ3S,KAAK4D,GACjBggB,GACFhR,EAAe5S,KAAK4D,IAGd2L,IACV4Q,GAAO,EACPnE,EAAQrJ,QAAQ3S,KAAK4D,GACjBggB,GACFhR,EAAe5S,KAAK4D,sGAItBuc,IACFnE,EAAQrJ,QAAQ3S,KAAKkE,EAAAA,QAAKgf,IACtBuD,GACF7T,EAAe5S,KAAKkE,EAAAA,QAAKgf,UAIrB3T,EAAsB2T,EAAM3T,OAApBqU,EAAcV,EAAMU,UAC9BhgB,EAAMM,EAAAA,QAAKgf,GACO,mBAApB,EACG3T,EAAOyM,KACVA,EAAQrJ,QAAQ3S,KAAK4D,GACjBggB,GACFhR,EAAe5S,KAAK4D,IAGd2L,IACVyM,EAAQrJ,QAAQ3S,KAAK4D,GACjBggB,GACFhR,EAAe5S,KAAK4D,sGAM5B,OADAoY,EAAQtJ,aAAesJ,EAAQrJ,QAAQlV,OAClCue,EAAQtJ,YAAeE,EAAenV,UAAiC,QAA3B0H,EAAoB,QAApBlB,EAAI+X,MAAAA,OAAO,EAAPA,EAASvJ,eAAO,IAAAxO,OAAA,EAAAA,EAAEoH,aAAK,IAAAlG,OAAA,EAAAA,EAAE1H,QAKvEue,EAAQrJ,QAAQ9F,MAAK,SAAAqW,GAAU,OAACtQ,EAAe1B,SAASgS,MAJtDlH,EAAQtJ,kCAhEpBT,EAAAA,KAAIlW,KAAA,CAAC,CACJqP,KAAM,gDCON,WAAA,IAAAzJ,EAAA9F,KADUA,KAAA6qB,MAAQ,IAAIpkB,EAAAA,aAGtBzG,KAAAoH,QAAU,WACRtB,EAAK+kB,MAAM1jB,8BAbdE,EAAAA,UAASnH,KAAA,CAAC,CACTC,SAAU,uBACVmH,SAAA,24DAEAC,gBAAiBC,EAAAA,wBAAwBC,iqBAGxCpH,EAAAA,6BACAA,EAAAA,qBACAuH,EAAAA,4BCKD,SAAAkjB,EACEpiB,EACQqiB,EACAnT,GADA5X,KAAA+qB,eAAAA,EACA/qB,KAAA4X,iBAAAA,EATVoT,GAAA1lB,IAAAtF,KAAa,IACbirB,GAAA3lB,IAAAtF,KAA+B,GAAlB+E,GAAA/E,KAAAgrB,KACbE,GAAA5lB,IAAAtF,KAA6B,GAAlB+E,GAAA/E,KAAAirB,KACXE,GAAA7lB,IAAAtF,KAA0B,GAAhB+E,GAAA/E,KAAAkrB,KACVE,GAAA9lB,IAAAtF,KAA4B,IAAhB+E,GAAA/E,KAAAkrB,KACZvF,GAAAA,IAAAA,MAAoB,GAKlBtgB,GAAArF,KAAIqrB,IAAsB3iB,EAAciD,oBAEpCmf,EAAArqB,UAAAkV,UAAA,SACJpT,EACA4d,EACA/W,EACAkE,EACAvF,oJACQujB,EAAmBhe,EAAUge,eAC7BC,EAAmDniB,EAAMmiB,MAAlDhE,EAA4Cne,EAAMme,MAA3CJ,EAAqC/d,EAAM+d,QAAlCnC,EAA4B5b,EAAM4b,aAApBrP,EAAcvM,EAAMuM,UAC3DhT,EAAqB,CACzBsjB,MAAO,KACPkB,QAAS,KACTqE,QAAS,CACPD,MAAOA,IAA0B,WAAhBniB,EAAOU,KAAoB,QAAU,QACtDvH,MAAKA,GAEPglB,MAAO,MAGqB,mBAA1B,EAAA,CAAA,EAAA,IACF5kB,EAAO6oB,QAAQC,SAAU,EACzB9oB,EAAO6oB,QAAQE,KAAO1G,EAAaziB,EAAO4d,EAAOpb,GAAA/E,KAAAqrB,0BAE7B,aAAhBjiB,EAAOU,MAAuC,SAAhBV,EAAOU,MAAmC,SAAhBV,EAAOU,OACzDuV,EAAkBjW,EAAMiW,iBAE9B9c,EAAQ8c,EAAc9c,EAAO4d,IAGN,mBAAvB,EAAA,CAAA,EAAA,IACIzf,EAAMiV,EAAUpT,EAAO4d,cACVhe,SACjBmH,EAAA3G,EAAO6oB,QAAgB,CAAA,EAAM9qB,IAD3B,CAAA,EAAA,iBACF4I,EAAe/G,MAAQkH,EAAAnG,oBAEvBX,EAAO6oB,QAAQjpB,MAAQ7B,4CAGL,SAAhB0I,EAAOU,MAAmC,aAAhBV,EAAOU,OAC3B4H,EAAWtI,EAAMsI,OACnBia,EAAUjN,KAAKC,QAAO,IAAItD,MAAOI,UAAY,IAAIJ,KAAK9Y,GAAOkZ,WAAa,KAClD,WAA1B/J,MAAAA,OAAM,EAANA,EAAQka,gBAA6BD,EAAO5mB,GAAA/E,KAAAorB,KAGX,SAA1B1Z,MAAAA,OAAM,EAANA,EAAQka,gBAA2BD,EAAO5mB,GAAA/E,KAAAmrB,KAGhB,UAA1BzZ,MAAAA,OAAM,EAANA,EAAQka,gBAA4BD,EAAO5mB,GAAA/E,KAAAkrB,KAGjB,YAA1BxZ,MAAAA,OAAM,EAANA,EAAQka,gBAA8BD,EAAO5mB,GAAA/E,KAAAirB,KAGnB,YAA1BvZ,MAAAA,OAAM,EAANA,EAAQka,gBAA8BD,EAAO5mB,GAAA/E,KAAAgrB,KAXtDroB,EAAO6oB,QAAQjpB,MAAQvC,KAAK+qB,eAAec,eAAetpB,GAC1DI,EAAOwkB,QAAU9L,KAAKiE,SAAS/c,EAAuB,SAAhB6G,EAAOU,KAAkB,aAAe,sBAcxEsV,EAAO/D,KAAKiE,SAAS/c,EAAO,cAC5BupB,EAAOzQ,KAAKiE,SAAS/c,EAAO,SAC5BwpB,EAAW1Q,KAAKiE,SAAS/c,EAAO,SAClB,aAAhB6G,EAAOU,MAAuBgiB,GAAiB,UAATA,GACxCnpB,EAAO6oB,QAAQjpB,MAAQwpB,EACvBppB,EAAO6oB,QAAQC,SAAU,EACzB9oB,EAAO6oB,QAAQE,KAAO,4CAA4CrQ,KAAKiE,SAAS/c,EAAO,SAAQ,qCAAqC8Y,KAAKiE,SAAS/c,EAAO,cAAa,WAEtKI,EAAO6oB,QAAQjpB,MAAQ6c,IAIT,SAAhBhW,EAAOU,OACTnH,EAAO6oB,QAAQjpB,MAAQ8Y,KAAKiE,SAAS/c,EAAO,UAE1B,WAAhB6G,EAAOU,KAAP,CAAA,EAAA,IACFN,EAAA7G,EAAO6oB,QAAgB,CAAA,EAAMxrB,KAAK4X,iBAAiBjC,UAAUpT,EAAO6G,mBAApEI,EAAejH,MAAQkH,EAAAnG,oBACE,WAAhB8F,EAAOU,MAAqBob,OAAOC,SAAS5iB,KACrDI,EAAO6oB,QAAQjpB,MAAQ2iB,OAAOE,aAAa7iB,qBAEzB,SAAhB6G,EAAOU,OACD4H,EAAWtI,EAAMsI,OAEvB/O,EAAO6oB,QAAQjpB,MADbA,MAAAA,GAAmD,KAAVA,GACV,IAAVA,GAAkBmP,MAAAA,OAAM,EAANA,EAAQwN,gBAAiB,QAAWxN,MAAAA,OAAM,EAANA,EAAQyN,iBAAkB,QAEhF,uBAIzBmM,IACEpV,EAAS,CAAC,UAAM9L,EAAW,IACC,iBAA5B,GACMohB,EAAyBF,EAAcE,QAA9BQ,EAAgBV,EAAcU,aAC/C9V,EAAMtR,GAAA,CAAI,UAAMwF,EAAW,IAAO4hB,IACvB3W,SAAS1S,EAAO6oB,QAAQjpB,SACR,mBAArB,GACFI,EAAO6oB,QAAQC,SAAU,EACzB9oB,EAAO6oB,QAAQE,KAAOF,EAAQrL,EAAS/W,KAEvCzG,EAAO6oB,QAAQC,SAAU,EACzB9oB,EAAO6oB,QAAQE,KAAO,8CAItBxV,EAAOb,SAAS1S,EAAO6oB,QAAQjpB,SACD,mBAA5B,GACFI,EAAO6oB,QAAQC,SAAU,EACzB9oB,EAAO6oB,QAAQE,KAAOJ,EAAenL,EAAS/W,KAE9CzG,EAAO6oB,QAAQC,SAAU,EACzB9oB,EAAO6oB,QAAQE,KAAO,iEA4BhC,MArBqB,WAAhBtiB,EAAOU,MAAqC,WAAhBV,EAAOU,MAAqC,WAAhBV,EAAOU,OAAsBV,EAAO6c,MAMtE,SAAhB7c,EAAOU,OAChBnH,EAAOsjB,MAAQ,CACbnc,MAAOV,MAAAA,OAAM,EAANA,EAAQ8c,WAAsB9c,EAAO8c,UAAjB,QAC3BC,MAAS5jB,EAAQ,UAAY,SAC7BsiB,KAAM,OATRliB,EAAOsjB,MAAQ,CACbnc,MAAOV,MAAAA,OAAM,EAANA,EAAQ8c,WAAsB9c,EAAO8c,UAAjB,QAC3BC,MAAO/c,EAAO6c,MAAM1jB,EAAO4d,GAC3B0E,KAAuB,QAAnBzc,EAAEgB,MAAAA,OAAM,EAANA,EAAQgd,iBAAS,IAAAhe,OAAA,EAAAA,EAAAhH,KAAjBgI,EAAoB7G,EAAO4d,IAUZ,mBAArB,IACFxd,EAAOwkB,QAAUA,EAAQ5kB,EAAO4d,IAGX,mBAAnB,IACFxd,EAAO4kB,MAAQ,WAAM,OAAAA,EAAMhlB,EAAO4d,KAEpC,CAAA,EAAOxd,+HArJVyT,EAAAA,KAAIlW,KAAA,CAAC,CACJqP,KAAM,yDANCnD,EAAAA,6BADA6f,EAAAA,wBAKA1I,wBCCT,SAAA2I,YACEA,EAAAzrB,UAAAkV,UAAA,SAAUnG,EAAclC,2BACdyB,EAAUzB,EAAUyB,MAC5B,IAAKA,EACH,OAAOS,EAED,IAAAC,EAAyBV,EAAKU,OAAtBuV,EAAiBjW,EAAKiW,aACtC,KAAKvV,MAAAA,OAAM,EAANA,EAAQ7N,QACX,OAAO4N,EAET,IAAM2c,EAEF,OACJ,IAAmB,IAAAnO,EAAA3Z,EAAAmL,GAAK4c,EAAApO,EAAAvb,QAAA2pB,EAAAxpB,KAAAwpB,EAAApO,EAAAvb,OAAE,CAArB,IAAM0I,EAAIihB,EAAA7pB,MACTuc,EAAM,OACV,IAAoB,IAAAuN,GAAA9W,OAAA,EAAAlR,EAAAoL,IAAM6c,EAAAD,EAAA5pB,QAAA6pB,EAAA1pB,KAAA0pB,EAAAD,EAAA5pB,OAAE,CAAvB,IAAM4G,EAAKijB,EAAA/pB,MACduc,EAAGve,OAAAiO,OAAAjO,OAAAiO,OAAA,GACEsQ,GACY,QADT1W,EACF+C,EAAK9B,UAAM,IAAAjB,EAAAA,IAAAqB,EAAA,IAAOJ,GAAQ8B,EAAK9B,GAAMI,sGAIxC0iB,EADCpkB,EAAMM,EAAAA,QAAKyW,MAEfqN,EAAUpkB,GAAO,IAEnBokB,EAAUpkB,GAAK5D,KAAKgH,qGAEtB,IAAMqR,EAAgC,OACtC,IAAkB,IAAAvS,EAAA5F,EAAA9D,OAAOsiB,KAAKsJ,IAAUhiB,EAAAF,EAAAxH,QAAA0H,EAAAvH,KAAAuH,EAAAF,EAAAxH,OAAE,CAArC,IAAMsF,EAAGoC,EAAA5H,MACZia,EAAQrY,KAAK,CACXyS,QAAS,CACPpH,MAAO2c,EAAUpkB,GACjBid,aAAcA,EAAamH,EAAUpkB,WAGzC,IAAmB,IAAAiC,GAAAuiB,OAAA,EAAAloB,EAAA8nB,EAAUpkB,KAAIyC,EAAAR,EAAAvH,QAAA+H,EAAA5H,KAAA4H,EAAAR,EAAAvH,OAAE,CAAxB0I,EAAIX,EAAAjI,MACbia,EAAQrY,KAAKgH,wMAGjB,OAAOqR,6BA1CVpG,EAAAA,KAAIlW,KAAA,CAAC,CACJqP,KAAM,iCCsER,SAAAid,IAAA,IAAA1mB,EAAA2mB,EAAA3pB,MAAA9C,KAAA4E,GAAAC,aAAA7E,YAEE8F,EAAA4mB,eAAiB,YACjB5mB,EAAA6mB,cAAgB,aAChB7mB,EAAA8mB,kBAAoB,mBACpB9mB,EAAA+mB,cAAgB,YAChB/mB,EAAAgnB,kBAAoB,cAEpBhnB,EAAAinB,cAAgB,SAAC5K,EAAc3c,EAAkB5D,GAC/C,GAAe,IAAXA,GAA6B,IAAb4D,EAClB,MAAO,GAET,IAAMuE,EAAOoY,EAAO3c,EAAW,EAE/B,OAAUuE,EAAI,KADHA,GAAQnI,EAASugB,EAAO3c,EAAWA,EAAWA,EAAW5D,EAASugB,EAAO3c,GAAY,GAC5E,SAAS5D,qB5ClEPf,EAAGC,GACzB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAImD,UAAU,uBAAyB+oB,OAAOlsB,GAAK,iCAE7D,SAASmsB,IAAOjtB,KAAKktB,YAAcrsB,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEJ,UAAkB,OAANK,EAAaP,OAAO6D,OAAOtD,IAAMmsB,EAAGxsB,UAAYK,EAAEL,UAAW,IAAIwsB,G4CgD1CE,CAAAX,EAAAC,MAAAW,EAAAA,uCADxC9kB,EAAAA,oBAsHD,kCApGC+kB,EAAAA,SAAQntB,KAAA,CAAC,CACRotB,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,GACAC,GACAC,GACAC,GACA/E,GACAhT,GAEAuM,EACAD,EACA1jB,EACAujB,EACAC,EACAxX,GACAga,GACA9d,GACA5C,GACAwiB,GAGA/B,GACAX,GACAI,GACA5B,GACAS,GACAC,GACAE,GACAvB,GACAwB,GACAE,GACAiC,GACAlB,GACAR,GACAH,GACAqK,GACAC,GACAC,GACAC,GACAhG,GACA1S,GACAiT,GACAI,GACAM,GACAoB,IAEF4D,QAAS,CACPpY,GACAuM,EACAD,EACA1jB,EACAwjB,EACAD,GAEFkM,UAAW,CACTC,EAAAA,SACAC,EAAAA,YACAC,EAAAA,aACA7jB,GACAiX,GACA8F,GACA7F,GACApM,GACA,CACEgZ,QAAS/C,EAAAA,iBAAkBgD,SAAU5D","sourcesContent":["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 { 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, 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 { 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","/*! *****************************************************************************\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\n\r\nexport interface ISdGridMaterialConfiguration {\r\n filter?: {\r\n quickFilter?: boolean;\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_GRID_MATERIAL_CONFIG: ISdGridMaterialConfiguration = {\r\n paginate: {\r\n pageSize: 50,\r\n pages: [50, 100, 200]\r\n }\r\n};\r\n\r\nexport const GRID_MATERIAL_CONFIG = new InjectionToken<ISdGridMaterialConfiguration>('sd-grid-material.configuration');\r\n","import { Component, ViewChild, Output, EventEmitter, Input, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core';\r\nimport { SdModal } from '@sd-angular/core/modal';\r\nimport { SdGridMaterialColumn } from '../../models/grid-column.model';\r\nimport { SdGridMaterialExternalFilter } from '../../models/grid-filter.model';\r\nimport { SdMaterialFilterDefDirective } from '../../directives/sd-material-filter-def.directive';\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('modal') modal: SdModal;\r\n @Input() externalFilters: SdGridMaterialExternalFilter[] = [];\r\n externalFilter: any = {};\r\n inlineExternal: {\r\n [key: string]: boolean\r\n } = {};\r\n @Input() columns: SdGridMaterialColumn[] = [];\r\n columnFilter: any = {};\r\n inlineColumn: {\r\n [key: string]: boolean\r\n } = {};\r\n\r\n @Input() filterDefs: SdMaterialFilterDefDirective[] = [];\r\n filterDef: any = {};\r\n inlineFilterDef: {\r\n [key: string]: boolean;\r\n } = {};\r\n\r\n @Output() changeFilter = new EventEmitter<{\r\n inlineColumn: {\r\n [key: string]: boolean\r\n },\r\n columnFilter: any,\r\n inlineExternal: {\r\n [key: string]: boolean\r\n }\r\n externalFilter: any,\r\n inlineFilterDef: {\r\n [key: string]: boolean\r\n },\r\n filterDef: any\r\n }>();\r\n @Output() clearFilter = new EventEmitter();\r\n constructor(\r\n private cdRef: ChangeDetectorRef\r\n ) {\r\n }\r\n\r\n open = (args: {\r\n inlineColumn: {\r\n [key: string]: boolean\r\n },\r\n columnFilter: any,\r\n inlineExternal: {\r\n [key: string]: boolean\r\n }\r\n externalFilter: any,\r\n inlineFilterDef: {\r\n [key: string]: boolean\r\n },\r\n filterDef: any\r\n }) => {\r\n const { inlineColumn, columnFilter, inlineExternal, externalFilter, inlineFilterDef, filterDef } = args;\r\n this.inlineColumn = JSON.parse(JSON.stringify(inlineColumn || {}));\r\n this.columnFilter = JSON.parse(JSON.stringify(columnFilter || {}));\r\n this.inlineExternal = JSON.parse(JSON.stringify(inlineExternal || {}));\r\n this.externalFilter = JSON.parse(JSON.stringify(externalFilter || {}));\r\n this.inlineFilterDef = JSON.parse(JSON.stringify(inlineFilterDef || {}));\r\n this.filterDef = JSON.parse(JSON.stringify(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.changeFilter.emit({\r\n inlineColumn: this.inlineColumn || {},\r\n columnFilter: this.columnFilter || {},\r\n inlineExternal: this.inlineExternal || {},\r\n externalFilter: this.externalFilter || {},\r\n inlineFilterDef: this.inlineFilterDef || {},\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.clearFilter.emit();\r\n this.modal.close();\r\n this.cdRef.markForCheck();\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 { SdGridMaterialFilterConfiguration } from '../models/grid-filter.model';\r\n\r\n@Injectable()\r\nexport class SdGridFilterService {\r\n #prefix = '61d22e8e-eee8-4aad-8e1c-044a532fea91';\r\n constructor(private settingService: SdSettingService) {\r\n }\r\n get = (key: string): SdGridMaterialFilterConfiguration => {\r\n if (!key) {\r\n return {\r\n selectedQuickFilter: null,\r\n quickFilters: [],\r\n inlineExternal: {},\r\n inlineColumn: {},\r\n inlineFilterDef: {}\r\n };\r\n }\r\n const { get } = this.settingService.create<SdGridMaterialFilterConfiguration>({\r\n prefix: this.#prefix,\r\n key\r\n });\r\n const configuration = get();\r\n return {\r\n selectedQuickFilter: configuration?.selectedQuickFilter ?? null,\r\n quickFilters: configuration?.quickFilters || [],\r\n inlineExternal: configuration?.inlineExternal || {},\r\n inlineColumn: configuration?.inlineColumn || {},\r\n inlineFilterDef: configuration?.inlineFilterDef || {},\r\n };\r\n }\r\n\r\n set = (key: string, configuration: SdGridMaterialFilterConfiguration): SdGridMaterialFilterConfiguration => {\r\n configuration = {\r\n selectedQuickFilter: configuration?.selectedQuickFilter || null,\r\n quickFilters: configuration?.quickFilters || [],\r\n inlineExternal: configuration.inlineExternal || {},\r\n inlineColumn: configuration.inlineColumn || {},\r\n inlineFilterDef: configuration.inlineFilterDef || {}\r\n };\r\n if (!key) {\r\n return configuration;\r\n }\r\n const { set } = this.settingService.create<SdGridMaterialFilterConfiguration>({\r\n prefix: this.#prefix,\r\n key\r\n });\r\n key = hash({\r\n prefix: this.#prefix,\r\n key\r\n });\r\n set(configuration);\r\n return configuration;\r\n }\r\n}\r\n","import { Component, Input, Output, EventEmitter, ViewChild, AfterViewInit, OnDestroy, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core';\r\nimport { SdGridMaterialFilterOption, SdGridMaterialExternalFilter } from '../../models/grid-filter.model';\r\nimport { SdGridMaterialColumn } from '../../models/grid-column.model';\r\nimport { SdPopupFilter } from '../popup-filter/popup-filter.component';\r\nimport { BehaviorSubject, Subject, Subscription } from 'rxjs';\r\nimport { startWith } from 'rxjs/operators';\r\nimport { SdGridFilterService } from '../../services/grid-filter.service';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\nimport { SdMaterialFilterDefDirective } from '../../directives/sd-material-filter-def.directive';\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<SdGridMaterialFilterOption>;\r\n #filterOptionChanges = new Subject<SdGridMaterialFilterOption>();\r\n @Input('filter') set _filter(filter: SdGridMaterialFilterOption) {\r\n this.filter = filter;\r\n this.#filterOptionChanges.next(this.filter);\r\n }\r\n @Input() columns: SdGridMaterialColumn[] = [];\r\n @Input() filterDefs: SdMaterialFilterDefDirective[] = [];\r\n filterChange = new Subject();\r\n\r\n filterDef: any = {};\r\n inlineFilterDef: Record<string, boolean> = {};\r\n columnFilter: any = {};\r\n inlineColumn: Record<string, boolean> = {};\r\n externalFilters: SdGridMaterialExternalFilter[] = [];\r\n externalFilter: any = {};\r\n inlineExternal: Record<string, boolean> = {};\r\n isMobileOrTablet: boolean;\r\n\r\n #subscription = new Subscription();\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n private deviceService: DeviceDetectorService,\r\n private gridFilterService: SdGridFilterService) {\r\n this.isMobileOrTablet = !this.deviceService.isDesktop();\r\n this.ref.markForCheck();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.#subscription.add(this.#filterOptionChanges.pipe(startWith(this.filter)).subscribe(() => {\r\n if (!this.filter?.disabled) {\r\n this.filterChange.next();\r\n return;\r\n }\r\n this.externalFilters = this.filter?.externalFilters || [];\r\n const configuration = this.gridFilterService.get(this.filter?.key);\r\n this.inlineColumn = configuration.inlineColumn;\r\n this.inlineExternal = configuration.inlineExternal;\r\n this.inlineFilterDef = configuration.inlineFilterDef;\r\n this.#loadDefault();\r\n this.filterChange.next();\r\n this.ref.markForCheck();\r\n }));\r\n }\r\n\r\n #loadDefault = () => {\r\n for (const column of this.columns) {\r\n this.inlineColumn[column.field] = this.inlineColumn[column.field] ?? column?.filter?.defaultShowing;\r\n this.columnFilter[column.field] = this.columnFilter[column.field] ?? column?.filter?.default;\r\n }\r\n for (const externalFilter of this.externalFilters) {\r\n this.inlineExternal[externalFilter.field] = this.inlineExternal[externalFilter.field] ?? externalFilter?.defaultShowing;\r\n if (externalFilter.type === 'daterange') {\r\n this.externalFilter[externalFilter.field] = {\r\n from: this.externalFilter[externalFilter.field]?.from ?? externalFilter.default?.from ?? undefined,\r\n to: this.externalFilter[externalFilter.field]?.to ?? externalFilter.default?.to ?? undefined\r\n };\r\n } else {\r\n this.externalFilter[externalFilter.field] = this.externalFilter[externalFilter.field] ?? externalFilter.default;\r\n }\r\n }\r\n for (const filterDef of this.filterDefs) {\r\n this.inlineFilterDef[filterDef.sdMaterialFilterDef] = this.inlineFilterDef[filterDef.sdMaterialFilterDef] ?? filterDef?.defaultShowing;\r\n }\r\n }\r\n\r\n #clearFilter = () => {\r\n this.columnFilter = {};\r\n this.externalFilter = {};\r\n this.filterDef = {};\r\n for (const externalFilter of this.externalFilters) {\r\n if (externalFilter.type === 'daterange') {\r\n this.externalFilter[externalFilter.field] = {\r\n from: undefined,\r\n to: undefined\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?: SdGridMaterialColumn | SdGridMaterialExternalFilter) => {\r\n this.filterChange.next();\r\n }\r\n\r\n open = () => {\r\n this.popupFilter.open({\r\n columnFilter: this.columnFilter,\r\n externalFilter: this.externalFilter,\r\n filterDef: this.filterDef,\r\n inlineColumn: this.inlineColumn,\r\n inlineExternal: this.inlineExternal,\r\n inlineFilterDef: this.inlineFilterDef\r\n });\r\n }\r\n\r\n onChangeFilter = (args: {\r\n inlineColumn: {\r\n [key: string]: boolean\r\n },\r\n columnFilter: any,\r\n inlineExternal: {\r\n [key: string]: boolean\r\n }\r\n externalFilter: any,\r\n inlineFilterDef: {\r\n [key: string]: boolean\r\n },\r\n filterDef: any\r\n }) => {\r\n const { inlineColumn, columnFilter, inlineExternal, externalFilter, inlineFilterDef, filterDef } = args;\r\n this.inlineColumn = inlineColumn;\r\n this.columnFilter = columnFilter;\r\n this.inlineExternal = inlineExternal;\r\n this.externalFilter = externalFilter;\r\n this.inlineFilterDef = inlineFilterDef;\r\n this.filterDef = filterDef;\r\n this.gridFilterService.set(this.filter?.key, {\r\n inlineColumn,\r\n inlineExternal,\r\n quickFilters: [],\r\n inlineFilterDef,\r\n selectedQuickFilter: null\r\n });\r\n this.filterChange.next();\r\n }\r\n\r\n onReset = () => {\r\n this.inlineColumn = {};\r\n this.columnFilter = {};\r\n this.inlineExternal = {};\r\n this.externalFilter = {};\r\n this.inlineFilterDef = {};\r\n this.filterDef = {};\r\n this.#loadDefault();\r\n this.gridFilterService.set(this.filter?.key, {\r\n inlineColumn: this.inlineColumn,\r\n inlineExternal: this.columnFilter,\r\n inlineFilterDef: this.inlineFilterDef,\r\n quickFilters: [],\r\n selectedQuickFilter: null\r\n });\r\n this.filterChange.next();\r\n this.ref.markForCheck();\r\n }\r\n\r\n onClearFilter = () => {\r\n this.#clearFilter();\r\n this.gridFilterService.set(this.filter?.key, {\r\n inlineColumn: this.inlineColumn,\r\n inlineExternal: this.columnFilter,\r\n inlineFilterDef: this.inlineFilterDef,\r\n quickFilters: [],\r\n selectedQuickFilter: null\r\n });\r\n this.filterChange.next();\r\n }\r\n\r\n setFilter = (args: {\r\n columnFilter?: any,\r\n externalFilter?: any,\r\n filterDef?: any\r\n }) => {\r\n const { columnFilter, externalFilter, filterDef } = args;\r\n if (columnFilter) {\r\n this.columnFilter = columnFilter;\r\n }\r\n if (externalFilter) {\r\n this.externalFilter = externalFilter;\r\n }\r\n if (filterDef) {\r\n this.filterDef = filterDef;\r\n }\r\n for (const exFilter of this.externalFilters) {\r\n if (exFilter.type === 'daterange') {\r\n this.externalFilter[exFilter.field] = {\r\n from: this.externalFilter[exFilter.field]?.from ?? undefined,\r\n to: this.externalFilter[exFilter.field]?.to ?? undefined\r\n };\r\n }\r\n }\r\n this.ref.markForCheck();\r\n }\r\n}\r\n","import { Component, OnInit, AfterViewInit, ViewChild, Output, EventEmitter, Input, ChangeDetectorRef, ChangeDetectionStrategy } from '@angular/core';\r\n\r\nimport * as uuid from 'uuid';\r\n\r\nimport {\r\n SdNotifyService\r\n} from '@sd-angular/core/notify';\r\n\r\nimport {\r\n SdLoadingService\r\n} from '@sd-angular/core/loading';\r\n\r\nimport {\r\n SdTranslateService\r\n} from '@sd-angular/core/translate';\r\nimport hash from 'object-hash';\r\nimport { MatSelectionList } from '@angular/material/list';\r\nimport { SdGridMaterialOption } from '../../models/grid-option.model';\r\nimport { SdModal } from '@sd-angular/core/modal';\r\nimport { SdExportFile, SdExportService, SdExportColumn } from '@sd-angular/core/export';\r\nimport { SdGroupExport } from '../../models/grid-export.model';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { SdGridConfigurationResult } from '../../models/grid-config.model';\r\nimport { SdGridMaterialColumn } from '../../models/grid-column.model';\r\n\r\n@Component({\r\n selector: 'sd-popup-export',\r\n templateUrl: './popup-export.component.html',\r\n styleUrls: ['./popup-export.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdPopupExport implements OnInit, AfterViewInit {\r\n gridOption: SdGridMaterialOption;\r\n columns: SdExportColumn[] = [];\r\n groups: SdGroupExport[] = [];\r\n templateName: string;\r\n enableCreating = false;\r\n @ViewChild('modal') modal: SdModal;\r\n @ViewChild('listGroups') listGroups: MatSelectionList;\r\n\r\n selected: {\r\n [key: string]: boolean\r\n } = {};\r\n files: SdExportFile[] = [];\r\n selectedGroup: SdGroupExport;\r\n\r\n @Output() export = new EventEmitter<{ file: SdExportFile, columns: SdExportColumn[], isCSV?: boolean, isRaw?: boolean }>();\r\n form = new FormGroup({});\r\n\r\n @Input('gridOption') set _gridOption(option: SdGridMaterialOption) {\r\n this.gridOption = option;\r\n this.columns = this.#getExportableColumns();\r\n this.groups = this.#getExportableGroups();\r\n }\r\n @Input() configuration: SdGridConfigurationResult;\r\n private get key(): string {\r\n const prefix = '93889e78-f971-4a1d-8c73-fe2321af9233';\r\n if (!this.gridOption?.export?.key) {\r\n return null;\r\n }\r\n return hash({\r\n prefix,\r\n key: this.gridOption?.export?.key\r\n });\r\n }\r\n\r\n private get gridColumns() {\r\n const columns: SdExportColumn[] = [];\r\n this.gridOption.columns.filter(e => !e.export?.disabled).forEach(column => {\r\n if (column.type === 'image') {\r\n return;\r\n }\r\n if (column.type === 'children') {\r\n column.children?.filter(e => !e.export?.disabled).forEach(childColumn => {\r\n if (childColumn.type === 'image') {\r\n return;\r\n }\r\n columns.push(childColumn);\r\n });\r\n return;\r\n }\r\n if (column.type === 'children-col') {\r\n column.children?.filter(e => !e.export?.disabled).forEach(childColumn => {\r\n if (childColumn.type === 'image') {\r\n return;\r\n }\r\n columns.push(childColumn);\r\n });\r\n return;\r\n }\r\n columns.push(column);\r\n });\r\n return columns.map(e => ({\r\n field: e.field,\r\n title: e.title,\r\n description: e.description,\r\n width: e.width\r\n }));\r\n }\r\n private get additionalColumns() {\r\n return (this.gridOption.export?.columns?.filter(e => !e.export?.disabled) || []).map(e => ({\r\n field: e.field,\r\n title: e.title,\r\n description: e.description,\r\n width: e.width\r\n }));\r\n }\r\n\r\n #getExportableColumns = (): SdExportColumn[] => {\r\n return [...this.gridColumns, ...this.additionalColumns];\r\n }\r\n\r\n #getExportableGroups = () => {\r\n return this.gridOption?.export?.groups?.filter(e => {\r\n const permission = e.permission;\r\n if (typeof (permission) === 'function') {\r\n return permission();\r\n }\r\n return permission;\r\n }) || [];\r\n }\r\n\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n private loadingService: SdLoadingService,\r\n private exportService: SdExportService,\r\n private notifyService: SdNotifyService,\r\n private translateService: SdTranslateService\r\n ) { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n ngAfterViewInit() {\r\n }\r\n\r\n open = async () => {\r\n if (!this.key) {\r\n this.exportDefault();\r\n return;\r\n }\r\n if (this.groups.length === 1 && this.gridOption?.export?.hideMyTemplates) {\r\n this.loadFiles(this.groups[0].code);\r\n } else {\r\n this.loadFiles(null);\r\n }\r\n this.selected = {};\r\n this.modal.open();\r\n this.ref.detectChanges();\r\n }\r\n\r\n #getExportColumns = () => {\r\n if (this.configuration) {\r\n const columns = [...this.gridColumns];\r\n const { firstColumns, secondColumns } = this.configuration;\r\n const displayColumns: SdGridMaterialColumn<any>[] = [...firstColumns, ...secondColumns].reduce((first, next) => {\r\n const column = this.gridOption.columns.find(e => e.field === next.field);\r\n if (!column) {\r\n return first;\r\n }\r\n if (column.type !== 'children' && column.type !== 'children-col') {\r\n return [...first, column];\r\n }\r\n const children = column.children.filter(e1 => e1.type !== 'image');\r\n return [...first, ...children];\r\n }, []);\r\n const results = displayColumns.map(e => ({\r\n ...e,\r\n data: columns.find(e1 => e1.field === e.field)\r\n })).filter(e => !!e.data)\r\n .map(e => e.data);\r\n return [...results, ...this.additionalColumns];\r\n } else {\r\n return this.columns;\r\n }\r\n }\r\n\r\n exportDefault = () => {\r\n this.export.emit({\r\n file: null,\r\n columns: this.#getExportColumns(),\r\n isCSV: false\r\n });\r\n }\r\n\r\n exportCSV = () => {\r\n this.export.emit({\r\n file: null,\r\n columns: this.#getExportColumns(),\r\n isCSV: true\r\n });\r\n }\r\n\r\n exportRaw = () => {\r\n this.export.emit({\r\n file: null,\r\n columns: this.#getExportColumns(),\r\n isRaw: true\r\n });\r\n }\r\n\r\n loadFiles = async (group: string = null) => {\r\n this.selectedGroup = this.groups.find(e => e.code === group);\r\n this.files = await this.exportService.filesInFolder({\r\n key: this.key,\r\n group\r\n });\r\n this.ref.markForCheck();\r\n }\r\n\r\n #initTemplate = async (fileName?: string) => {\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 return await this.exportService.generateTemplate({\r\n fileName: fileName || this.gridOption?.export?.fileName,\r\n columns: this.columns,\r\n sheets\r\n });\r\n }\r\n\r\n generateTemplate = async () => {\r\n this.loadingService.start();\r\n await this.#initTemplate().finally(this.loadingService.stop);\r\n }\r\n\r\n generateAndUploadTemplate = async (fileName?: string) => {\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 return await this.exportService.generateUploadTemplate({\r\n key: this.key,\r\n template: {\r\n fileName: fileName || this.gridOption?.export?.fileName,\r\n columns: this.columns.filter(e => this.selected[e.field]),\r\n sheets\r\n },\r\n group: this.selectedGroup?.code\r\n });\r\n }\r\n\r\n onExport = (file: SdExportFile) => {\r\n this.export.emit({\r\n file,\r\n columns: this.columns\r\n });\r\n this.ref.detectChanges();\r\n }\r\n\r\n uploadTemplate = async () => {\r\n const file = await this.exportService.uploadTemplate({\r\n key: this.key,\r\n group: this.selectedGroup?.code,\r\n validator: this.gridOption?.export?.validators\r\n });\r\n if (file) {\r\n this.files = [...this.files, file];\r\n this.ref.detectChanges();\r\n }\r\n }\r\n\r\n removeFile = (file: SdExportFile) => {\r\n this.notifyService.confirm(this.translateService.translate('Remove template')).then(() => {\r\n this.exportService.removeFile({\r\n key: this.key,\r\n fileName: file.fileName,\r\n group: this.selectedGroup?.code || null\r\n });\r\n const idx = this.files.indexOf(file);\r\n this.files.splice(idx, 1);\r\n this.files = [...this.files];\r\n this.ref.detectChanges();\r\n });\r\n }\r\n\r\n createTemplate = async () => {\r\n const { translate } = this.translateService;\r\n if (this.form.invalid) {\r\n this.form.markAllAsTouched();\r\n return;\r\n }\r\n if (!this.columns.some(e => this.selected[e.field])) {\r\n this.notifyService.notify.warning(translate('Please select columns'));\r\n return;\r\n }\r\n this.loadingService.start();\r\n const fileName = this.templateName + '.xlsx';\r\n try {\r\n if (this.gridOption?.export?.validators?.(fileName)) {\r\n this.notifyService.notify.warning(this.gridOption?.export?.validators(fileName));\r\n return;\r\n }\r\n const result = await this.generateAndUploadTemplate(fileName);\r\n if (result?.filePath) {\r\n const file: SdExportFile = {\r\n filePath: result.filePath,\r\n fileName: result.fileName\r\n };\r\n this.onExport(file);\r\n this.templateName = null;\r\n this.enableCreating = false;\r\n this.files = [...this.files, file];\r\n this.ref.detectChanges();\r\n }\r\n } finally {\r\n this.loadingService.stop();\r\n }\r\n }\r\n\r\n onChangeGroup = () => {\r\n this.loadFiles(this.listGroups?.selectedOptions?.selected[0]?.value);\r\n }\r\n\r\n validatorTemplateName = (val: string) => {\r\n const { translate } = this.translateService;\r\n const regex = /^[A-Za-z0-9 _]*[A-Za-z0-9][A-Za-z0-9 _]*$/;\r\n if (!val) {\r\n return translate('Please enter your template name');\r\n }\r\n if (val.length > 50) {\r\n return translate('Template name is too long');\r\n }\r\n if (!regex.test(val)) {\r\n return translate('Template name only contains letters, numbers and spaces');\r\n }\r\n return null;\r\n }\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 { SdGridMaterialOption } from '../models/grid-option.model';\r\nimport { SdColumnConfiguration, SdGridConfiguration, SdGridConfigurationCache, SdGridConfigurationResult } from '../models/grid-config.model';\r\nimport { SdMaterialSubInformationDefDirective } from '../directives/sd-material-sub-information-def.directive';\r\nimport { Subject } from 'rxjs';\r\nimport { SdGridMaterialColumn } from '../models/grid-column.model';\r\nimport { GRID_MATERIAL_CONFIG, ISdGridMaterialConfiguration } from '../models/grid-configuration.model';\r\n\r\n@Injectable()\r\nexport class SdGridConfigurationService {\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(GRID_MATERIAL_CONFIG) @Optional() public gridMaterialConfiguration: ISdGridMaterialConfiguration) {\r\n }\r\n\r\n init = (key: string, gridOption: SdGridMaterialOption) => {\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: SdGridMaterialOption) => {\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: SdGridMaterialOption): SdGridConfiguration => {\r\n const columns: SdColumnConfiguration[] = gridOption?.columns?.filter(e => !e.hidden).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: SdGridMaterialOption, 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: SdGridMaterialOption) => {\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\r\n .filter(column => column.isGeneratedColumn || 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: SdGridMaterialOption, 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: SdGridMaterialOption) => {\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: SdGridMaterialOption,\r\n sdSubInformation: SdMaterialSubInformationDefDirective) => {\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 { selection, commands, editor, group } = gridOption || {};\r\n if (editor?.addable || (editor?.type === 'inline' && (editor?.removable || typeof (editor?.disabled) === 'function' || !editor?.disabled))\r\n || (editor?.type === 'focus' && (typeof (editor?.disabled) === 'function' || !editor?.disabled))) {\r\n result.firstHeaders.push(this.#COLUMNS.EDITORVALIDATION);\r\n result.displayedColumns.push(this.#COLUMNS.EDITORVALIDATION);\r\n }\r\n if (selection?.visible) {\r\n result.firstHeaders.push(this.#COLUMNS.SELECTION);\r\n result.displayedColumns.push(this.#COLUMNS.SELECTION);\r\n }\r\n if (!editor?.hidden) {\r\n if (editor?.addable\r\n || (editor?.type === 'inline' && (editor?.removable || typeof (editor?.disabled) === 'function' || !editor?.disabled))\r\n || (editor?.type === 'focus' && (typeof (editor?.disabled) === 'function' || !editor?.disabled))\r\n || (editor?.type === 'popup' && (typeof (editor?.disabled) === 'function' || !editor?.disabled))) {\r\n result.firstHeaders.push(this.#COLUMNS.EDITOR);\r\n result.displayedColumns.push(this.#COLUMNS.EDITOR);\r\n }\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?.filter(col => !col.invisible).forEach(col => {\r\n if (col.isGeneratedColumn) {\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 const generatedColumn: SdGridMaterialColumn = {\r\n type: 'children',\r\n field: col.origin.field,\r\n title: col.origin.title,\r\n children: []\r\n };\r\n for (const subColumn of gridOption?.columns.filter(e1 => col.generatedColumns.includes(e1.field))) {\r\n if (subColumn.type === 'children' || subColumn.type === 'children-col') {\r\n for (const childColumn of subColumn.children) {\r\n generatedColumn.children.push({\r\n ...childColumn,\r\n colSpan: 2\r\n });\r\n }\r\n } else {\r\n generatedColumn.children.push({\r\n ...subColumn,\r\n colSpan: 2\r\n });\r\n }\r\n\r\n }\r\n result.firstColumns.push({\r\n ...generatedColumn,\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 return;\r\n }\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 if (column.type === 'children-col') {\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 } else {\r\n result.displayedColumns.push(col.origin.field);\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 { Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdGridMaterialColumn } from '../models/grid-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: SdGridMaterialColumn): 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 hash from 'object-hash';\r\nimport { SdItem } from \"../models/grid.model\";\r\n\r\nexport const CalculateSdId = (item: SdItem) => {\r\n const {\r\n sdId,\r\n editorHandlerColumn,\r\n expandDetail,\r\n isExpanded,\r\n isExpanding,\r\n isSelected,\r\n sdGroup,\r\n selectable,\r\n actions,\r\n groupedActions,\r\n originItem,\r\n editorErrorMessage,\r\n editorHandlerRow,\r\n ...remain } = item;\r\n return hash(remain);\r\n}","import { Injectable, NgZone, Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { CalculateSdId } from '../functions/calculate-sd-id';\r\nimport { SdGridMaterialColumn } from '../models/grid-column.model';\r\nimport { SdGridMaterialOption } from '../models/grid-option.model';\r\nimport { SdItem } from '../models/grid.model';\r\n@Pipe({\r\n name: 'sdEditorHandlerColumn'\r\n})\r\n@Injectable()\r\nexport class SdEditorHandlerColumnPipe implements PipeTransform {\r\n constructor(private zone: NgZone) { }\r\n #visible = (col: SdGridMaterialColumn, item: SdItem) => {\r\n if (col.type === 'children' || col.type === 'children-col') {\r\n return false;\r\n }\r\n // Kiểm tra xem có bị disabled hay không?\r\n if (col.editor) {\r\n const isDisabled = typeof (col.editor.disabled) === 'function' ? col.editor.disabled(item) : col.editor.disabled;\r\n if (isDisabled) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n };\r\n transform(value: any, item: SdItem, gridOption: SdGridMaterialOption) {\r\n const key = CalculateSdId(item);\r\n if (item.sdId === key && item.editorHandlerColumn) {\r\n return true;\r\n }\r\n item.editorHandlerColumn = item.editorHandlerColumn || {};\r\n const { columns } = gridOption;\r\n for (const col of columns) {\r\n if (col.type === 'children-col') {\r\n for (const childCol of col.children) {\r\n item.editorHandlerColumn[childCol.field] = {\r\n ...item.editorHandlerColumn[childCol.field],\r\n visible: this.#visible(childCol, item)\r\n }\r\n }\r\n } else {\r\n item.editorHandlerColumn[col.field] = {\r\n ...item.editorHandlerColumn[col.field],\r\n visible: this.#visible(col, item)\r\n }\r\n }\r\n }\r\n this.zone.run(() => {\r\n item.sdId = CalculateSdId(item);\r\n });\r\n item.sdId = key;\r\n return 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} 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 {\r\n SdGridMaterialFilterRequest\r\n} from './models/grid-filter.model';\r\nimport {\r\n SdGridMaterialOption\r\n} from './models/grid-option.model';\r\nimport {\r\n GRID_MATERIAL_CONFIG,\r\n DEFAULT_GRID_MATERIAL_CONFIG,\r\n ISdGridMaterialConfiguration\r\n} from './models/grid-configuration.model';\r\nimport { Subscription, isObservable, Observable, BehaviorSubject } from 'rxjs';\r\nimport { SdNotifyService } from '@sd-angular/core/notify';\r\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport { SdGridMaterialColumn } from './models/grid-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 { SdPopupExport } from './components/popup-export/popup-export.component';\r\nimport { SdExportColumn, SdExportFile, SdExportService } from '@sd-angular/core/export';\r\nimport { SdGridConfiguration } from './models/grid-config.model';\r\nimport { SdGridConfigurationService } from './services/grid-configuration.service';\r\nimport { SdGridMaterialExportColumn } from './models/grid-export.model';\r\nimport { SdTranslateService } from '@sd-angular/core/translate';\r\nimport { SdQuickAction } from '@sd-angular/core/quick-action';\r\nimport { SdGridMaterialItem, SdItem } from './models/grid.model';\r\nimport { SdColumnValuesPipe } from './pipes/column-values.pipe';\r\nimport { SdEditorHandlerColumnPipe } from './pipes/editor-handler-column.pipe';\r\nimport { SdScrollDirective } from '@sd-angular/core/common';\r\n\r\n@Component({\r\n selector: 'sd-grid-material',\r\n templateUrl: './grid-material.component.html',\r\n styleUrls: ['./grid-material.component.scss'],\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 SdGridMaterial<T = any> implements OnInit, AfterViewInit, OnDestroy {\r\n @ViewChild(SdScrollDirective) sdScroll: SdScrollDirective;\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 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: SdGridMaterialOption) {\r\n if (option) {\r\n option = this.#initConfiguration(option);\r\n this.gridOption = option;\r\n this.#loadCompleted = false;\r\n this.#reload.next({\r\n force: true\r\n });\r\n option?.columns?.forEach(col => {\r\n if (col.filter?.default) {\r\n this.columnFilter[col.field] = col.filter.default;\r\n }\r\n });\r\n const configuration = this.gridConfigurationService.init(this.key, this.gridOption);\r\n this.gridConfigurationObserver = configuration.observer;\r\n configuration.load();\r\n }\r\n }\r\n\r\n gridOption: SdGridMaterialOption;\r\n #localItems: any[] = [];\r\n items: SdGridMaterialItem<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(paginator.page.pipe(\r\n map(() => {\r\n this.#reload.next({\r\n force: false\r\n });\r\n }),\r\n ).subscribe());\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(sort.sortChange.pipe(\r\n map(() => {\r\n this.#reload.next({\r\n force: false\r\n });\r\n }),\r\n ).subscribe());\r\n }\r\n }\r\n\r\n // Export\r\n @ViewChild(SdPopupExport) sdPopupExport: SdPopupExport;\r\n\r\n // Sub Information\r\n @ContentChild(SdMaterialSubInformationDefDirective) sdSubInformation: SdMaterialSubInformationDefDirective;\r\n\r\n // Empty Data\r\n @ContentChild(SdMaterialEmptyDataDefDirective) 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 columnFilter: {\r\n [key: string]: any\r\n } = {};\r\n // Subcription\r\n #subscription = new Subscription();\r\n #reload = new BehaviorSubject<{\r\n force: boolean,\r\n source?: 'INITIALIZE' | 'FILTER'\r\n }>({\r\n force: true,\r\n source: 'INITIALIZE'\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(GRID_MATERIAL_CONFIG) @Optional() public configuration: ISdGridMaterialConfiguration,\r\n private gridConfigurationService: SdGridConfigurationService,\r\n private exportService: SdExportService,\r\n private notifyService: SdNotifyService,\r\n private translateService: SdTranslateService,\r\n private columnValuesPipe: SdColumnValuesPipe,\r\n private editorHandlerColumnPipe: SdEditorHandlerColumnPipe) {\r\n }\r\n\r\n ngOnInit() {\r\n this.#initCellDef();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.#subscription.add(this.#reload.pipe(\r\n debounceTime(200),\r\n startWith(this.#reload.value),\r\n filter(data => {\r\n if (this.#loadCompleted) {\r\n return true;\r\n }\r\n if (!this.gridOption?.filter?.disabled) {\r\n return data.source === 'FILTER';\r\n }\r\n return data.source === 'INITIALIZE';\r\n }),\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 ).subscribe(this.#render));\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\r\n // this.#subscription.add(this.#optionChanges.pipe(\r\n // debounceTime(200),\r\n // startWith({}),\r\n // map(this.#getFilter),\r\n // switchMap(filterInfo => this.#load(filterInfo, true))\r\n // ).subscribe(this.#render));\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): SdGridMaterialFilterRequest => {\r\n return {\r\n rawColumnFilter: (this.gridOption?.filter?.inlineColumn ? this.columnFilter : this.gridFilter?.columnFilter) || {},\r\n rawExternalFilter: this.gridFilter?.externalFilter || {},\r\n rawFilterDef: this.gridFilter?.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: SdGridMaterialOption) => {\r\n option.paginate = {\r\n hidden: option?.paginate?.hidden,\r\n pageSize: option?.paginate?.pageSize ?? this.configuration?.paginate?.pageSize ?? DEFAULT_GRID_MATERIAL_CONFIG.paginate?.pageSize,\r\n pages: option?.paginate?.pages ?? this.configuration?.paginate?.pages ?? DEFAULT_GRID_MATERIAL_CONFIG.paginate?.pages,\r\n showFirstLastButtons: option?.paginate?.showFirstLastButtons ?? false\r\n };\r\n return option;\r\n }\r\n\r\n #filterLocal = (localItems: any[], filterInfo: SdGridMaterialFilterRequest) => {\r\n const { columns } = this.gridOption;\r\n const { rawColumnFilter, orderBy, orderDirection, pageSize, pageNumber } = filterInfo;\r\n const items = localItems.filter(item => {\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 if (new Date(columnValue).getTime() < fromDate.getTime() || new Date(columnValue).getTime() >= toDate.getTime()) {\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((current, next) => {\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\r\n && index < (pageNumber + 1) * pageSize;\r\n }),\r\n total: items.length\r\n };\r\n }\r\n\r\n #getFilter = (): SdGridMaterialFilterRequest => ({\r\n rawColumnFilter: (this.gridOption?.filter?.inlineColumn ? this.columnFilter : this.gridFilter?.columnFilter) || {},\r\n rawExternalFilter: this.gridFilter?.externalFilter || {},\r\n rawFilterDef: this.gridFilter?.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 #load = async (filterReq: SdGridMaterialFilterRequest, force: boolean = true) => {\r\n this.isLoading = true;\r\n try {\r\n if (this.gridOption.type === 'server') {\r\n let result = this.gridOption.items(filterReq);\r\n if (isObservable(result)) {\r\n result = result.toPromise();\r\n }\r\n const data = await result;\r\n return {\r\n items: data.items || [],\r\n total: data.total || 0\r\n };\r\n } else {\r\n if (force) {\r\n const results = this.gridOption.items();\r\n if (results instanceof Promise) {\r\n this.#localItems = await results;\r\n } else {\r\n this.#localItems = results;\r\n }\r\n }\r\n return this.#filterLocal(this.#localItems, filterReq);\r\n }\r\n } catch (error) {\r\n this.notifyService.handle.error(error);\r\n } finally {\r\n this.isLoading = false;\r\n this.ref.detectChanges();\r\n }\r\n }\r\n\r\n #render = async (args: { items: any[], total: number }) => {\r\n this.sdScroll?.scrollTop();\r\n this.items = args?.items || [];\r\n this.total = args?.total || 0;\r\n // this.isHiddenPaginator = this.filterInfo.pageNumber === 0 && this.total <= this.filterInfo.pageSize;\r\n this.items.forEach((item: SdItem) => {\r\n item.originItem = { ...item };\r\n });\r\n await this.gridOption?.reload?.onReload?.(this.items);\r\n this.isSelectAll = this.items.every(e => e.isSelected);\r\n this.#updateSelectedItems();\r\n }\r\n\r\n reload = async (force: boolean = true) => {\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 if (isObservable(result)) {\r\n result = result.toPromise();\r\n }\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 drop(event: CdkDragDrop<string[]>, columns: string[]) {\r\n moveItemInArray(columns, event.previousIndex, event.currentIndex);\r\n }\r\n\r\n #allColumns = (): SdGridMaterialColumn[] => {\r\n const columns: SdGridMaterialColumn[] = [];\r\n this.gridOption.columns.filter(e => !e.export?.disabled).forEach(column => {\r\n if (column.type === 'image') {\r\n return;\r\n }\r\n if (column.type === 'children') {\r\n column.children?.filter(e => !e.export?.disabled).forEach(childColumn => {\r\n if (childColumn.type === 'image') {\r\n return;\r\n }\r\n columns.push(childColumn);\r\n });\r\n return;\r\n }\r\n if (column.type === 'children-col') {\r\n column.children?.filter(e => !e.export?.disabled).forEach(childColumn => {\r\n if (childColumn.type === 'image') {\r\n return;\r\n }\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 = (): SdGridMaterialExportColumn[] => {\r\n return this.gridOption.export?.columns?.filter(e => !e.export?.disabled) || [];\r\n }\r\n\r\n #onExport = async (args: { file: SdExportFile, columns: SdExportColumn[], isCSV: boolean, isRaw: boolean }) => {\r\n try {\r\n const { file, isCSV, isRaw } = args;\r\n let { columns } = args;\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<any[] | {\r\n items: any[];\r\n total: number;\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' || column.type === 'children-col') {\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 if (transform instanceof Promise) {\r\n obj[column.field] = await transform;\r\n } else {\r\n obj[column.field] = transform;\r\n }\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 (!file?.filePath) {\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 if (isRaw) {\r\n await this.exportService.exportExcelRaw({\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 }\r\n await this.exportService.exportByTemplate({\r\n filePath: file.filePath,\r\n fileName: file.fileName,\r\n columns,\r\n items\r\n });\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 onExport = async (args: { file: SdExportFile, columns: SdExportColumn[], isCSV: boolean, isRaw: boolean }) => {\r\n const { translate } = this.translateService;\r\n if (!args.isCSV && this.gridOption.export.max && this.total > this.gridOption.export.max) {\r\n args.isRaw = true;\r\n this.#onExport(args);\r\n // this.notifyService.confirm(translate(`Total rows reach limit, do you want to export CSV`)).then(() => {\r\n // args.isCSV = true;\r\n // this.#onExport(args);\r\n // });\r\n return;\r\n }\r\n this.#onExport(args);\r\n }\r\n\r\n onFilterChange = () => {\r\n this.#paginator.pageIndex = 0;\r\n this.reload(false);\r\n }\r\n\r\n onExpand = async (rowData: SdGridMaterialItem<T>) => {\r\n if (this.gridOption.subInformation?.always) {\r\n return;\r\n }\r\n if (rowData.isExpanding) {\r\n return;\r\n }\r\n if (rowData.isExpanded) {\r\n rowData.isExpanded = false;\r\n return;\r\n }\r\n const data = this.gridOption?.subInformation?.onExpand?.(rowData);\r\n if (!this.gridOption.subInformation?.multiple) {\r\n this.items.forEach(item => item.isExpanding = item.isExpanded = false);\r\n }\r\n if (data instanceof Promise) {\r\n rowData.isExpanding = true;\r\n data.then(res => {\r\n rowData.expandDetail = res;\r\n rowData.isExpanded = true;\r\n }).finally(() => rowData.isExpanding = false);\r\n } else {\r\n rowData.expandDetail = data;\r\n rowData.isExpanded = true;\r\n }\r\n }\r\n\r\n onSelect = (rowData: SdGridMaterialItem<T>) => {\r\n if (rowData?.sdGroup?.items?.length) {\r\n rowData?.sdGroup?.items.forEach(e => e.isSelected = rowData.isSelected);\r\n this.gridOption.selection?.onSelect?.(rowData, this.items.filter(e => e.isSelected));\r\n this.isSelectAll = this.items.every(e => e.isSelected);\r\n this.#updateSelectedItems();\r\n } else {\r\n if (this.gridOption.selection?.single) {\r\n this.items.filter(e => e !== rowData).forEach(e => e.isSelected = false);\r\n this.#updateSelectedItems();\r\n return;\r\n }\r\n this.gridOption.selection?.onSelect?.(rowData, this.items.filter(e => e.isSelected));\r\n this.isSelectAll = this.items.every(e => e.isSelected);\r\n this.#updateSelectedItems();\r\n }\r\n }\r\n\r\n onSelectAll = () => {\r\n this.items?.forEach(e => {\r\n if (e.selectable && (!this.gridOption?.selection?.actions?.length || e.actions?.length)) {\r\n e.isSelected = this.isSelectAll;\r\n }\r\n });\r\n this.gridOption.selection?.onSelectAll?.(this.items.filter(e => e.isSelected));\r\n this.#updateSelectedItems();\r\n }\r\n\r\n onClearSelection = (items?: SdGridMaterialItem<T>[]) => {\r\n items = items || this.items;\r\n this.isSelectAll = false;\r\n items?.forEach(e => e.isSelected = false);\r\n this.#updateSelectedItems();\r\n }\r\n\r\n #updateSelectedItems = () => {\r\n this.selectedItems = this.items.filter(item => item.isSelected)\r\n .map(item => {\r\n const {\r\n isSelected,\r\n isExpanded,\r\n isExpanding,\r\n expandDetail,\r\n editorErrorMessage,\r\n editorHandlerColumn,\r\n editorHandlerRow,\r\n editorStatus,\r\n originItem,\r\n sdId,\r\n sdVersion,\r\n // Giữ lại các trường thông tin cho selectable (action, groupedAction, sdGroup, selectable)\r\n ...result\r\n } = item;\r\n return result;\r\n }) as T[];\r\n this.ref.detectChanges();\r\n }\r\n\r\n clearFilter = () => {\r\n this.gridFilter?.onClearFilter();\r\n }\r\n\r\n setFilter = (args: {\r\n columnFilter: any,\r\n externalFilter: any,\r\n filterDef: any\r\n }) => {\r\n this.gridFilter?.setFilter(args);\r\n }\r\n\r\n onCreate = () => {\r\n const { type, editor, columns } = this.gridOption;\r\n if (!editor?.addable) {\r\n return;\r\n }\r\n const item: SdGridMaterialItem = {};\r\n // Gán giá trị mặc định\r\n columns.forEach(column => {\r\n if (column.type === 'values') {\r\n item[column.field] = '';\r\n } else if (column.type === 'bool') {\r\n item[column.field] = true;\r\n } else if (column.type === 'number') {\r\n item[column.field] = null;\r\n }\r\n });\r\n if (type === 'local') {\r\n editor.onAdd?.(item, this.#localItems);\r\n } else {\r\n editor.onAdd?.(item, this.items);\r\n }\r\n // Đưa item lên dòng đầu tiên nếu type khác popup\r\n if (editor.type !== 'popup') {\r\n if (editor.addToLast) {\r\n if (type === 'local') {\r\n this.#localItems = [...this.#localItems, item];\r\n }\r\n this.items = [...this.items, item];\r\n } else {\r\n if (type === 'local') {\r\n this.#localItems = [item, ...this.#localItems];\r\n }\r\n this.items = [item, ...this.items];\r\n }\r\n }\r\n item.editorStatus = 'create';\r\n item.editorHandlerRow = {\r\n temporary: { ...item }\r\n };\r\n }\r\n onUpdate = (item: SdItem) => {\r\n const { editor } = this.gridOption;\r\n item.editorStatus = 'update';\r\n item.editorHandlerRow = {\r\n ...item.editorHandlerRow,\r\n temporary: { ...item }\r\n };\r\n // this.generateEditorHanlder(item);\r\n if (editor.type === 'popup') {\r\n // Xử lý case popup\r\n // this.sdGridPopupEditor.open(item, columns, isModified);\r\n }\r\n this.ref.detectChanges();\r\n }\r\n onSave = async (item: SdGridMaterialItem<T>) => {\r\n if (item.editorHandlerRow.saving) {\r\n return;\r\n }\r\n const { editor } = this.gridOption;\r\n try {\r\n item.editorHandlerRow.saving = true;\r\n if (editor.validate) {\r\n const result = editor.validate(item, this.items.indexOf(item));\r\n if (result instanceof Promise) {\r\n const message = await result;\r\n if (message) {\r\n throw message;\r\n }\r\n } else {\r\n if (result) {\r\n throw result;\r\n }\r\n }\r\n }\r\n if (editor.onSave) {\r\n const result = editor.onSave(item);\r\n if (result instanceof Promise) {\r\n await result;\r\n }\r\n }\r\n\r\n if (item.editorStatus === 'create' && editor.type === 'popup') {\r\n if (this.gridOption.type === 'local') {\r\n this.items.splice(0, 0, item);\r\n }\r\n // this.viewItems.splice(0, 0, item);\r\n }\r\n\r\n item.editorStatus = undefined;\r\n // this.generateEditorHanlder(item);\r\n } catch (err) {\r\n this.notifyService.notify.warning(err);\r\n } finally {\r\n item.editorHandlerRow.saving = false;\r\n this.ref.detectChanges();\r\n }\r\n }\r\n onCancel = (item: SdGridMaterialItem<T>) => {\r\n const { editor } = this.gridOption;\r\n if (editor.type === 'inline') {\r\n if (this.gridOption.type === 'local') {\r\n const idx2 = this.#localItems.indexOf(item);\r\n this.#localItems.splice(idx2, 1);\r\n this.#localItems = [...this.#localItems];\r\n }\r\n const idx1 = this.items.indexOf(item);\r\n this.items.splice(idx1, 1);\r\n this.items = [...this.items];\r\n if (this.gridOption.type === 'local') {\r\n editor?.onCancel?.(item, this.#localItems);\r\n } else {\r\n editor?.onCancel?.(item, this.items);\r\n }\r\n this.ref.detectChanges();\r\n return;\r\n }\r\n if (editor.type === 'focus') {\r\n if (item.editorStatus === 'create') {\r\n if (this.gridOption.type === 'local') {\r\n const idx2 = this.#localItems.indexOf(item);\r\n this.#localItems.splice(idx2, 1);\r\n this.#localItems = [...this.#localItems];\r\n }\r\n const idx1 = this.items.indexOf(item);\r\n this.items.splice(idx1, 1);\r\n this.items = [...this.items];\r\n } else {\r\n Object.assign(item, item.editorHandlerRow.temporary);\r\n }\r\n }\r\n item.editorStatus = undefined;\r\n this.ref.detectChanges();\r\n }\r\n onRemove = async (item: SdGridMaterialItem<T>) => {\r\n const { editor } = this.gridOption;\r\n if (editor?.beforeRemove) {\r\n const beforeRemove = editor?.beforeRemove(item);\r\n if (beforeRemove instanceof Promise) {\r\n const result = await beforeRemove;\r\n if (!result) {\r\n return;\r\n }\r\n } else {\r\n if (!beforeRemove) {\r\n return;\r\n }\r\n }\r\n }\r\n if (editor.type === 'inline') {\r\n if (this.gridOption.type === 'local') {\r\n const idx2 = this.#localItems.indexOf(item);\r\n this.#localItems.splice(idx2, 1);\r\n this.#localItems = [...this.#localItems];\r\n }\r\n const idx1 = this.items.indexOf(item);\r\n this.items.splice(idx1, 1);\r\n this.items = [...this.items];\r\n if (this.gridOption.type === 'local') {\r\n editor?.onRemove?.(item, this.#localItems);\r\n } else {\r\n editor?.onRemove?.(item, this.items);\r\n }\r\n this.ref.detectChanges();\r\n return;\r\n }\r\n }\r\n\r\n add = (idx: number, item: T) => {\r\n if (this.items.length > idx) {\r\n this.items.splice(idx, 0, item);\r\n this.items = [...this.items];\r\n } else {\r\n this.items = [...this.items, item];\r\n }\r\n }\r\n\r\n update = (idx: number, item: T) => {\r\n if (this.items[idx]) {\r\n Object.assign(this.items[idx], item);\r\n this.items = [...this.items];\r\n }\r\n }\r\n\r\n remove = (idx: number) => {\r\n if (this.items[idx]) {\r\n this.items.splice(idx, 1);\r\n this.items = [...this.items];\r\n }\r\n }\r\n\r\n refreshItem = (idx: number) => {\r\n const item = this.items[idx];\r\n this.editorHandlerColumnPipe.transform(item.sdVersion, item, this.gridOption);\r\n }\r\n\r\n get editedItems(): (T & { editorErrorMessage: string })[] {\r\n return this.items.filter(item => {\r\n if (!item.originItem) {\r\n return true;\r\n }\r\n if (Object.keys(item.originItem).some(key => item.originItem[key] !== item[key])) {\r\n return true;\r\n }\r\n return false;\r\n }).map(item => {\r\n const {\r\n editorStatus,\r\n editorHandlerRow,\r\n editorHandlerColumn,\r\n editorErrorMessage,\r\n expandDetail,\r\n isExpanded,\r\n isExpanding,\r\n isSelected,\r\n originItem,\r\n sdId,\r\n sdVersion,\r\n selectable,\r\n actions,\r\n groupedActions,\r\n sdGroup,\r\n temporary,\r\n ...result } = item;\r\n return {\r\n ...result,\r\n editorErrorMessage\r\n } as any;\r\n });\r\n }\r\n\r\n get gridItems(): T[] {\r\n return this.items.map(item => {\r\n const {\r\n editorStatus,\r\n editorHandlerRow,\r\n editorHandlerColumn,\r\n expandDetail,\r\n isExpanded,\r\n isExpanding,\r\n isSelected,\r\n originItem,\r\n sdId,\r\n sdVersion,\r\n selectable,\r\n actions,\r\n groupedActions,\r\n sdGroup,\r\n temporary,\r\n ...result } = item;\r\n return result as T;\r\n });\r\n }\r\n detectChanges = () => this.ref.detectChanges();\r\n\r\n get isEditing() {\r\n return this.items.some(e => e.editorStatus !== undefined);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialCommand, SdGridMaterialCommandNormal } from '../models/grid-command.model';\r\n@Pipe({\r\n name: 'commandFilter'\r\n})\r\nexport class SdCommandFilterPipe implements PipeTransform {\r\n async transform(item: any, commands: SdGridMaterialCommand[]): Promise<SdGridMaterialCommand[]> {\r\n const results: SdGridMaterialCommand[] = [];\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: SdGridMaterialCommandNormal[] = [];\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 { SdGridMaterialCommand } from '../models/grid-command.model';\r\n@Pipe({\r\n name: 'commandDisable'\r\n})\r\nexport class SdCommandDisablePipe implements PipeTransform {\r\n transform(item: any, command: SdGridMaterialCommand): 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 { SdGridMaterialCommand } from '../models/grid-command.model';\r\n@Pipe({\r\n name: 'commandIcon'\r\n})\r\nexport class SdCommandIconPipe implements PipeTransform {\r\n transform(command: SdGridMaterialCommand, 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 { SdGridMaterialCommand } from '../models/grid-command.model';\r\n@Pipe({\r\n name: 'commandTitle'\r\n})\r\nexport class SdCommandTitlePipe implements PipeTransform {\r\n transform(command: SdGridMaterialCommand, 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 { SdGridMaterialColumn } from '../models/grid-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: SdGridMaterialColumn): 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 { SdGridMaterialColumn } from '../../models/grid-column.model';\r\nimport { SdGridMaterialOption } from '../../models/grid-option.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: SdGridMaterialColumn;\r\n @Input() item: any;\r\n @Input() gridOption: SdGridMaterialOption;\r\n constructor(\r\n ) { }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialColumn } from '../models/grid-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: SdGridMaterialColumn, 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 { SdGridMaterialExternalFilter } from '../models/grid-filter.model';\r\n@Pipe({\r\n name: 'sdFilterExternal'\r\n})\r\nexport class SdFilterExternalPipe implements PipeTransform {\r\n transform(externalFilters: SdGridMaterialExternalFilter[], field?: string): SdGridMaterialExternalFilter[] {\r\n const results: SdGridMaterialExternalFilter[] = [];\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 { SdGridMaterialColumn } from '../models/grid-column.model';\r\n@Pipe({\r\n name: 'sdFilterColumn'\r\n})\r\nexport class SdFilterColumnPipe implements PipeTransform {\r\n transform(columns: SdGridMaterialColumn[], field?: string): SdGridMaterialColumn[] {\r\n const results: SdGridMaterialColumn[] = [];\r\n if (!columns) {\r\n return results;\r\n }\r\n for (const column of columns) {\r\n if (column.type === 'image') {\r\n continue;\r\n }\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 { Component, Input } from '@angular/core';\r\nimport { SdGridMaterialColumnChildren } from '../../models/grid-column.model';\r\n\r\n@Component({\r\n selector: 'sd-desktop-cell-children-view',\r\n templateUrl: './desktop-cell-children-view.component.html',\r\n styleUrls: ['./desktop-cell-children-view.component.scss']\r\n})\r\nexport class SdDesktopCellChildrenView {\r\n @Input() key: string;\r\n @Input() column: SdGridMaterialColumnChildren;\r\n @Input() item: any;\r\n constructor(\r\n ) { }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\nimport { SdGridMaterialColumn } from '../models/grid-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: SdGridMaterialColumn[], item: any): SdGridMaterialColumn[] {\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 { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialChildColumn } from '../models/grid-column.model';\r\n@Pipe({\r\n name: 'columnTitle'\r\n})\r\nexport class SdColumnTitlePipe implements PipeTransform {\r\n async transform(item: any, column: SdGridMaterialChildColumn): Promise<string> {\r\n if (!column?.title) {\r\n return '';\r\n }\r\n const result = column?.dynamicTitle?.(item);\r\n if (result instanceof Promise) {\r\n return (await result) || column?.title;\r\n }\r\n return result || column?.title;\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\nimport { SdGridMaterialCommand } from '../../models/grid-command.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: any;\r\n @Input() commands: SdGridMaterialCommand[] = [];\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 { SdGridMaterialColumn } from '../models/grid-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: SdGridMaterialColumn): {\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 { SdGridMaterialOption } from '../models/grid-option.model';\r\nimport { SdGridConfiguration, SdGridConfigurationResult } from '../models/grid-config.model';\r\nimport { SdGridConfigurationService } from '../services/grid-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: SdGridConfigurationService) { }\r\n transform(configuration: SdGridConfiguration, gridOption: SdGridMaterialOption, sdSubInformation: SdMaterialSubInformationDefDirective): SdGridConfigurationResult {\r\n return this.gridConfigurationService.generateConfigurationResult(configuration, gridOption, sdSubInformation);\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 { SdGridMaterialOption } from '../../models/grid-option.model';\r\nimport { SdGridConfigurationResult, SdGridConfiguration, SdGridConfigurationCache, SdColumnConfiguration } from '../../models/grid-config.model';\r\nimport { SdGridConfigurationService } from '../../services/grid-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 { SdGridMaterialColumn } from '../../models/grid-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: SdGridMaterialOption;\r\n @Input() key: string;\r\n @ViewChild('modal') modal: SdModal;\r\n @ViewChild('table') table: MatTable<SdGridMaterialColumn>;\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: SdGridConfigurationService) {\r\n }\r\n\r\n ngOnInit() {\r\n }\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 isGeneratedColumn: true,\r\n generatedColumns: this.configuration.columns.filter(e => this.selected[e.origin?.field]).map(e => e.origin?.field)\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<SdGridMaterialColumn[]>) {\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 { SdGridMaterialColumn } from '../models/grid-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: SdGridMaterialColumn): 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 { SdGridMaterialAction, SdGridMaterialActionNormal, SdGridMaterialActionSimple } from '../models/grid-action.model';\r\nimport { SdItem } from '../models/grid.model';\r\n@Pipe({\r\n name: 'selectionActionFilter'\r\n})\r\nexport class SdSelectionActionFilterPipe implements PipeTransform {\r\n #convert = (action: SdGridMaterialAction): SdGridMaterialActionSimple => {\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: SdItem[], actions: SdGridMaterialAction[]): SdGridMaterialActionSimple[] => {\r\n const results: SdGridMaterialAction[] = [];\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: SdGridMaterialActionNormal[] = [];\r\n for (const childAction of action.children) {\r\n const key = hash(childAction);\r\n if (selectedItems.every(e => e.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.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 { SdGridMaterialSelection } from '../models/grid-selection.model';\r\nimport { SdItem } from '../models/grid.model';\r\n@Pipe({\r\n name: 'selectionDisable'\r\n})\r\nexport class SdSelectionDisablePipe implements PipeTransform {\r\n transform = (selectedItems: SdItem[], rowData: SdItem, selection: SdGridMaterialSelection): boolean => {\r\n const { disabled, actions } = selection;\r\n if (!actions?.length) {\r\n if (!disabled) {\r\n rowData.selectable = true;\r\n return false;\r\n }\r\n rowData.selectable = !disabled(rowData, selectedItems);\r\n return !rowData.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.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.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.actions.includes(hash(childAction))) {\r\n return false;\r\n }\r\n }\r\n } else {\r\n if(rowData.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 { SdGridMaterialSelection } from '../models/grid-selection.model';\r\nimport { SdItem } from '../models/grid.model';\r\n@Pipe({\r\n name: 'selectionVisibleSelectAll'\r\n})\r\nexport class SdSelectionVisibleSelectAllPipe implements PipeTransform {\r\n transform = async (items: SdItem[], selection: SdGridMaterialSelection): 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.actions?.length);\r\n if (first) {\r\n for (const action of first.actions) {\r\n if (items.filter(t => t.actions?.length).every(e => e.actions.includes(action))) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n }\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 { SdGridMaterialConfigOption } from '../../models/grid-config.model';\r\nimport { SdGeneratedColumn } from './generated-column.model';\r\nimport { SdSettingServer } from '@sd-angular/core/setting';\r\n\r\n@Injectable()\r\nexport class SdGeneratedColumnService {\r\n #cache: {\r\n [key: string]: SdSetting<SdGeneratedColumn[]> | SdSettingServer<SdGeneratedColumn[]>\r\n } = {};\r\n constructor(\r\n private settingService: SdSettingService) {\r\n }\r\n\r\n load = (configuration: SdGridMaterialConfigOption) => {\r\n if (!configuration?.key) {\r\n return null;\r\n }\r\n const key = hash({\r\n prefix: '260f5e94-5865-4425-8ced-b9c083c390dd',\r\n key: configuration.key\r\n });\r\n if(!this.#cache[key]) {\r\n if(configuration?.storage === 'server') {\r\n this.#cache[key] = this.settingService.createServer<SdGeneratedColumn[]>(key, {\r\n args: configuration?.args,\r\n default: []\r\n });\r\n } else {\r\n this.#cache[key] = this.settingService.create<SdGeneratedColumn[]>(key, {\r\n type: configuration?.storage,\r\n args: configuration?.args,\r\n default: []\r\n });\r\n }\r\n }\r\n return this.#cache[key];\r\n }\r\n\r\n loadSystem = (configuration: SdGridMaterialConfigOption) => {\r\n if (!configuration?.key) {\r\n return null;\r\n }\r\n if (!configuration?.systemColumn) {\r\n return null;\r\n }\r\n const key = hash({\r\n prefix: '8b8050ca-1f44-4860-bad3-20e646c0d68f',\r\n key: configuration.key\r\n });\r\n if(!this.#cache[key]) {\r\n if(configuration?.storage === 'server') {\r\n this.#cache[key] = this.settingService.createServer<SdGeneratedColumn[]>(key, {\r\n args: configuration?.systemColumn?.args,\r\n default: []\r\n });\r\n } else {\r\n this.#cache[key] = this.settingService.create<SdGeneratedColumn[]>(key, {\r\n type: configuration?.storage,\r\n args: configuration?.systemColumn?.args,\r\n default: []\r\n });\r\n }\r\n }\r\n return this.#cache[key];\r\n }\r\n}\r\n","import { Component, OnInit, ViewChild, ChangeDetectorRef, Input, ChangeDetectionStrategy, OnDestroy } from '@angular/core';\r\nimport { SdNotifyService } from '@sd-angular/core/notify';\r\nimport { SdTranslateService } from '@sd-angular/core/translate';\r\nimport { SdGridMaterialOption } from '../../models/grid-option.model';\r\nimport { SdGridConfigurationService } from '../../services/grid-configuration.service';\r\nimport * as uuid from 'uuid';\r\nimport { SdGeneratedColumnService } from '../../services/generated-column/generated-column.service';\r\nimport { Subscription } from 'rxjs';\r\nimport { SdGeneratedColumn } from '../../services/generated-column/generated-column.model';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { SdSideDrawer } from '@sd-angular/core/side-drawer';\r\nimport { SdGridMaterialColumn } from '../../models/grid-column.model';\r\n\r\n@Component({\r\n selector: 'sd-dynamic-column',\r\n templateUrl: './dynamic-column.component.html',\r\n styleUrls: ['./dynamic-column.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdDynamicColumn implements OnInit, OnDestroy {\r\n @ViewChild(SdSideDrawer) sideDrawer: SdSideDrawer;\r\n @Input() gridOption: SdGridMaterialOption;\r\n systemColumns: SdGeneratedColumn[];\r\n columns: SdGeneratedColumn[];\r\n #subscription = new Subscription();\r\n columnTypes = ['string', 'number', 'bool', 'date', 'datetime', 'time', 'values', 'children', 'children-col'];\r\n form = new FormGroup({});\r\n isDetail = false;\r\n detail: SdGeneratedColumn;\r\n originColumns: SdGridMaterialColumn[] = [];\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n private generatedColumnService: SdGeneratedColumnService,\r\n private notifyService: SdNotifyService,\r\n private translateService: SdTranslateService,\r\n private gridConfigurationService: SdGridConfigurationService) {\r\n }\r\n\r\n ngOnInit() {\r\n const systemSetting = this.generatedColumnService.loadSystem(this.gridOption.config);\r\n const setting = this.generatedColumnService.load(this.gridOption?.config);\r\n if (systemSetting) {\r\n this.#subscription?.add(systemSetting.observer.subscribe(columns => {\r\n this.systemColumns = columns;\r\n }));\r\n }\r\n if (setting) {\r\n this.#subscription?.add(setting.observer.subscribe(columns => {\r\n this.columns = columns;\r\n }));\r\n }\r\n this.originColumns = this.gridOption.columns.filter(e => e.type !== 'children' && e.type !== 'children-col');\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.#subscription.unsubscribe();\r\n }\r\n\r\n onDetail = (column?: SdGeneratedColumn) => {\r\n this.detail = column || {\r\n field: uuid.v4(),\r\n title: '',\r\n type: 'string',\r\n isSystem: false,\r\n useTemplate: false\r\n };\r\n this.form.markAsUntouched();\r\n this.form.markAsPristine();\r\n this.isDetail = true;\r\n }\r\n\r\n onSave = () => {\r\n const systemSetting = this.generatedColumnService.loadSystem(this.gridOption.config);\r\n const setting = this.generatedColumnService.load(this.gridOption?.config);\r\n if (this.detail.isSystem) {\r\n if (!this.detail.id) {\r\n systemSetting.set([...this.systemColumns, {\r\n ...this.detail,\r\n id: uuid.v4()\r\n }]);\r\n } else {\r\n systemSetting.set([...this.systemColumns]);\r\n }\r\n } else {\r\n if (!this.detail.id) {\r\n setting.set([...this.columns, {\r\n ...this.detail,\r\n id: uuid.v4()\r\n }]);\r\n } else {\r\n setting.set([...this.columns]);\r\n }\r\n }\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 { SdGridMaterialColumn } from '../../models/grid-column.model';\r\nimport { SdGridMaterialOption } from '../../models/grid-option.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: SdGridMaterialColumn;\r\n @Input() item: any;\r\n @Input() gridOption: SdGridMaterialOption;\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 { ChangeDetectionStrategy, Component, Input, QueryList } from '@angular/core';\r\nimport { SdGridMaterialColumn, SdGridMaterialColumnValues } from '../../models/grid-column.model';\r\n\r\n@Component({\r\n selector: 'sd-desktop-cell-editor',\r\n templateUrl: './desktop-cell-editor.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdDesktopCellEditor {\r\n @Input() sdId: string;\r\n @Input() column: SdGridMaterialColumn;\r\n @Input() item: any;\r\n constructor(\r\n ) { }\r\n\r\n onChange = (selected: any) => {\r\n if (this.column.type === 'children' || this.column.type === 'children-col') {\r\n return;\r\n }\r\n this.column?.editor?.change?.(this.item, selected);\r\n }\r\n\r\n editorOnAdd = () => {\r\n if (this.column.type === 'children' || this.column.type === 'children-col') {\r\n return;\r\n }\r\n if (this.column.type === 'values') {\r\n this.column.editor?.add?.(this.item);\r\n }\r\n }\r\n\r\n editorOnEdit = (option: any) => {\r\n if (this.column.type === 'children' || this.column.type === 'children-col') {\r\n return;\r\n }\r\n if (this.column.type === 'values') {\r\n this.column.editor?.edit?.(option, this.item);\r\n }\r\n }\r\n\r\n editorOnDelete = (option: any) => {\r\n if (this.column.type === 'children' || this.column.type === 'children-col') {\r\n return;\r\n }\r\n if (this.column.type === 'values') {\r\n this.column.editor?.delete?.(option, this.item);\r\n }\r\n }\r\n}\r\n","import { NgZone, Pipe, PipeTransform } from '@angular/core';\r\nimport { CalculateSdId } from '../functions/calculate-sd-id';\r\nimport { SdGridMaterialColumn } from '../models/grid-column.model';\r\nimport { SdGridMaterialOption } from '../models/grid-option.model';\r\nimport { EditorHandlerRow, SdItem } from '../models/grid.model';\r\n@Pipe({\r\n name: 'sdEditorHandlerRow'\r\n})\r\nexport class SdEditorHandlerRowPipe implements PipeTransform {\r\n constructor(private zone: NgZone) { }\r\n #visible = (col: SdGridMaterialColumn, item: SdItem) => {\r\n if (col.type === 'children' || col.type === 'children-col') {\r\n return false;\r\n }\r\n // Kiểm tra xem có bị disabled hay không?\r\n if (col.editor) {\r\n const isDisabled = typeof (col.editor.disabled) === 'function' ? col.editor.disabled(item) : col.editor.disabled;\r\n if (isDisabled) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n };\r\n transform(status: 'create' | 'update', item: SdItem, gridOption: SdGridMaterialOption): EditorHandlerRow {\r\n const { editor } = gridOption;\r\n if (!editor) {\r\n return null;\r\n }\r\n let isDisabled = false;\r\n if (typeof (editor?.disabled) === 'function') {\r\n isDisabled = editor.disabled(item);\r\n } else {\r\n isDisabled = editor?.disabled;\r\n }\r\n if (editor.type === 'inline') {\r\n const removable = editor.removable;\r\n item.editorHandlerRow = {\r\n ...item.editorHandlerRow,\r\n visible: !isDisabled,\r\n editable: false,\r\n removable: status !== 'create' && (typeof (removable) === 'function' ? removable(item) : removable),\r\n savable: false,\r\n cancelable: !isDisabled && status === 'create'\r\n }\r\n } else if (editor.type === 'focus') {\r\n if (isDisabled) {\r\n return null;\r\n }\r\n item.editorHandlerRow = {\r\n ...item.editorHandlerRow,\r\n visible: !!status,\r\n editable: !status,\r\n removable: false,\r\n savable: !!status,\r\n cancelable: !!status\r\n }\r\n } else if (editor.type === 'popup') {\r\n if (isDisabled) {\r\n return null;\r\n }\r\n item.editorHandlerRow = {\r\n ...item.editorHandlerRow,\r\n visible: false,\r\n editable: !status,\r\n removable: false,\r\n savable: false,\r\n cancelable: false\r\n }\r\n }\r\n item.editorHandlerColumn = item.editorHandlerColumn || {};\r\n const { columns } = gridOption;\r\n for (const col of columns) {\r\n if (col.type === 'children-col') {\r\n for (const childCol of col.children) {\r\n item.editorHandlerColumn[childCol.field] = {\r\n ...item.editorHandlerColumn[childCol.field],\r\n visible: this.#visible(childCol, item)\r\n }\r\n }\r\n } else {\r\n item.editorHandlerColumn[col.field] = {\r\n ...item.editorHandlerColumn[col.field],\r\n visible: this.#visible(col, item)\r\n }\r\n }\r\n }\r\n this.zone.run(() => {\r\n item.sdId = CalculateSdId(item);\r\n });\r\n return item.editorHandlerRow;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialOption } from '../models/grid-option.model';\r\nimport { SdItem } from '../models/grid.model';\r\n@Pipe({\r\n name: 'sdEditorValidate'\r\n})\r\nexport class SdEditorValidatePipe implements PipeTransform {\r\n #previous: Date;\r\n #delay = 200; // Sau khoảng thời gian delay nếu không có thay đổi thì thì mới bắt đầu thực hiện validate\r\n async transform(sdId: string, item: SdItem, items: SdItem[], gridOption: SdGridMaterialOption): Promise<string> {\r\n const { editor } = gridOption;\r\n if (!editor.validate) {\r\n item.editorErrorMessage = null;\r\n return;\r\n }\r\n if(editor.type === 'popup') {\r\n item.editorErrorMessage = null;\r\n return;\r\n }\r\n if (editor.type === 'focus' && !item.editorStatus) {\r\n item.editorErrorMessage = null;\r\n return;\r\n }\r\n this.#previous = new Date();\r\n await new Promise(resolve => setTimeout(resolve, this.#delay));\r\n const now = new Date();\r\n const dif = now.getTime() - this.#previous.getTime();\r\n if (dif < this.#delay) {\r\n return;\r\n }\r\n const result = editor.validate(item, items?.indexOf(item));\r\n if (result instanceof Promise) {\r\n item.editorErrorMessage = await result;\r\n return;\r\n } else {\r\n item.editorErrorMessage = result;\r\n return;\r\n }\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialOption } from '../models/grid-option.model';\r\n@Pipe({\r\n name: 'sdStyleRowCss'\r\n})\r\nexport class SdStyleRowCss implements PipeTransform {\r\n transform(item: any, gridOption: SdGridMaterialOption) {\r\n return gridOption?.style?.rowCss?.(item) || {};\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\nimport { SdGridMaterialOption } from '../../models/grid-option.model';\r\n\r\n@Component({\r\n selector: 'sd-desktop-editor-validation',\r\n templateUrl: './desktop-editor-validation.component.html',\r\n styleUrls: ['./desktop-editor-validation.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdDesktopEditorValidation {\r\n @Input() sdId: string;\r\n @Input() item: any;\r\n @Input() items: any[];\r\n @Input() gridOption: SdGridMaterialOption;\r\n constructor(\r\n ) { }\r\n}\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output, QueryList } from '@angular/core';\r\nimport { SdGridMaterialColumn } from '../../models/grid-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 @Input() value: any;\r\n @Input() columnFilter: {\r\n [key: string]: any\r\n } = {};\r\n @Input() column: SdGridMaterialColumn;\r\n @Output() filterChange = new EventEmitter();\r\n constructor(\r\n ) { }\r\n\r\n ngOnInit() {\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 onFilterChange = () => {\r\n this.filterChange.emit();\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdGridMaterialSelection } from '../models/grid-selection.model';\r\nimport { SdItem } from '../models/grid.model';\r\n\r\n@Pipe({\r\n name: 'selectionVisible'\r\n})\r\nexport class SdSelectionVisiblePipe implements PipeTransform {\r\n transform = (rowData: SdItem, selection: SdGridMaterialSelection): boolean => {\r\n const { actions } = selection;\r\n const groupedActions: string[] = [];\r\n rowData.actions = rowData.actions || [];\r\n if (!actions?.length) {\r\n rowData.selectable = true;\r\n return rowData.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.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.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.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.actions.push(key);\r\n if (isGrouped) {\r\n groupedActions.push(key);\r\n }\r\n }\r\n } else if (!hidden) {\r\n rowData.actions.push(key);\r\n if (isGrouped) {\r\n groupedActions.push(key);\r\n }\r\n }\r\n }\r\n }\r\n rowData.selectable = !!rowData.actions.length;\r\n if (!rowData.selectable || !groupedActions.length || rowData?.sdGroup?.items?.length) {\r\n return rowData.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.actions.some(action => !groupedActions.includes(action));\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { SdGridMaterialOption } from '../../models/grid-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: SdGridMaterialOption;\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 { SdGridMaterialColumn } from '../models/grid-column.model';\r\nimport { SdGridMaterialOption } from '../models/grid-option.model';\r\nimport { SdColumnValuesPipe } from './column-values.pipe';\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 rowData: any,\r\n column: SdGridMaterialColumn,\r\n gridOption: SdGridMaterialOption,\r\n key: string): Promise<SdCellView> {\r\n const { displayOnEmpty } = gridOption;\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 { SdGridMaterialOption } from '../models/grid-option.model';\r\nimport { SdGridMaterialItem } from '../models/grid.model';\r\n@Pipe({\r\n name: 'sdGroup'\r\n})\r\nexport class SdGroupPipe implements PipeTransform {\r\n transform(items: any[], gridOption: SdGridMaterialOption): SdGridMaterialItem[] {\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]: SdGridMaterialItem[]\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: SdGridMaterialItem[] = [];\r\n for (const key of Object.keys(groupItem)) {\r\n results.push({\r\n sdGroup: {\r\n items: groupItem[key],\r\n htmlTemplate: htmlTemplate(groupItem[key])\r\n }\r\n });\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 { SdGridMaterial } from './grid-material.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 { SdGridFilterService } from './services/grid-filter.service';\r\nimport { SdDesktopCellChildrenView } from './components/desktop-cell-children-view/desktop-cell-children-view.component';\r\nimport { SdColumnChildrenFilterPipe } from './pipes/column-children-filter.pipe';\r\nimport { SdColumnTitlePipe } from './pipes/column-title.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 { SdPopupExport } from './components/popup-export/popup-export.component';\r\nimport { SdPopupGridConfiguration } from './components/popup-grid-configuration/popup-grid-configuration.component';\r\nimport { SdGridConfigurationService } from './services/grid-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 { SdDynamicColumn } from './components/dynamic-column/dynamic-column.component';\r\nimport { SdGeneratedColumnService } from './services/generated-column/generated-column.service';\r\nimport { SdDesktopCell } from './components/desktop-cell/desktop-cell.component';\r\nimport { SdDesktopCellEditor } from './components/desktop-cell-editor/desktop-cell-editor.component';\r\nimport { SdEditorHandlerRowPipe } from './pipes/editor-handler-row.pipe';\r\nimport { SdEditorHandlerColumnPipe } from './pipes/editor-handler-column.pipe';\r\nimport { SdEditorValidatePipe } from './pipes/editor-validate.pipe';\r\nimport { SdStyleRowCss } from './pipes/style-row-css.pipe';\r\nimport { SdDesktopEditorValidation } from './components/desktop-editor-validation/desktop-editor-validation.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 SdDesktopCellEditor,\r\n SdDesktopEditorValidation,\r\n SdDesktopCellView,\r\n SdDesktopCellChildrenView,\r\n SdDesktopCommand,\r\n SdColumnInlineFilter,\r\n SdGridMaterial,\r\n\r\n SdMaterialFooterDefDirective,\r\n SdMaterialCellDefDirective,\r\n SdMaterialFilterDefDirective,\r\n SdMaterialSubInformationDefDirective,\r\n SdMaterialEmptyDataDefDirective,\r\n SdPopupExport,\r\n SdPopupGridConfiguration,\r\n SdGridFilter,\r\n SdPopupFilter,\r\n SdDynamicColumn,\r\n\r\n // Pipes\r\n SdGridConfigurationResultPipe,\r\n SdColumnChildrenFilterPipe,\r\n SdColumnTitlePipe,\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 SdEditorHandlerRowPipe,\r\n SdEditorHandlerColumnPipe,\r\n SdEditorValidatePipe,\r\n SdStyleRowCss,\r\n SdCellViewPipe,\r\n SdGroupPipe\r\n ],\r\n exports: [\r\n SdGridMaterial,\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 SdGridFilterService,\r\n SdGridConfigurationService,\r\n SdGeneratedColumnService,\r\n SdColumnValuesPipe,\r\n SdEditorHandlerColumnPipe,\r\n {\r\n provide: MatPaginatorIntl, useClass: MatPaginatorIntlCro\r\n }\r\n ]\r\n})\r\nexport class SdGridMaterialModule {\r\n}\r\n"]}
1
+ {"version":3,"sources":["../../../../projects/sd-core/grid-material/src/lib/directives/sd-material-cell-def.directive.ts","../../../../projects/sd-core/grid-material/src/lib/directives/sd-material-filter-def.directive.ts","../../../../projects/sd-core/grid-material/src/lib/directives/sd-material-footer-def.directive.ts","../../../../projects/sd-core/grid-material/src/lib/directives/sd-material-empty-data-def.directive.ts","../../../../projects/sd-core/grid-material/src/lib/directives/sd-material-sub-information-def.directive.ts","../../../../node_modules/tslib/tslib.es6.js","../../../../projects/sd-core/grid-material/src/lib/models/grid-configuration.model.ts","../../../../projects/sd-core/grid-material/src/lib/components/popup-filter/popup-filter.component.ts","../../../../projects/sd-core/grid-material/src/lib/services/grid-filter.service.ts","../../../../projects/sd-core/grid-material/src/lib/components/grid-filter/grid-filter.component.ts","../../../../projects/sd-core/grid-material/src/lib/components/popup-export/popup-export.component.ts","../../../../projects/sd-core/grid-material/src/lib/services/grid-configuration.service.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/column-values.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/functions/calculate-sd-id.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/editor-handler-column.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/grid-material.component.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/command-filter.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/command-disable.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/command-icon.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/command-title.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/column-html-template.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/components/desktop-cell-view/desktop-cell-view.component.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/column-transform.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/filter-external.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/filter-column.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/components/desktop-cell-children-view/desktop-cell-children-view.component.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/column-children-filter.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/column-title.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/components/desktop-command/desktop-command.component.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/column-badge.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/grid-configuration-result.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/components/popup-grid-configuration/popup-grid-configuration.component.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/column-tooltip.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/selection-action-filter.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/selection-disable.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/selection-visible-select-all.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/services/generated-column/generated-column.service.ts","../../../../projects/sd-core/grid-material/src/lib/components/dynamic-column/dynamic-column.component.ts","../../../../projects/sd-core/grid-material/src/lib/components/desktop-cell/desktop-cell.component.ts","../../../../projects/sd-core/grid-material/src/lib/components/desktop-cell-editor/desktop-cell-editor.component.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/editor-handler-row.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/editor-validate.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/style-row-css.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/components/desktop-editor-validation/desktop-editor-validation.component.ts","../../../../projects/sd-core/grid-material/src/lib/components/column-inline-filter/column-inline-filter.component.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/selection-visible.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/components/quick-action/quick-action.component.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/cell-view.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/pipes/sd-group.pipe.ts","../../../../projects/sd-core/grid-material/src/lib/grid-material.module.ts"],"names":["templateRef","this","Directive","args","selector","TemplateRef","Input","SdMaterialFilterDefDirective","Object","defineProperty","prototype","val","defaultShowing","extendStatics","d","b","setPrototypeOf","__proto__","Array","p","hasOwnProperty","call","__rest","s","e","t","indexOf","getOwnPropertySymbols","i","length","propertyIsEnumerable","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","rejected","result","done","then","apply","__generator","body","f","y","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","n","v","op","TypeError","pop","push","create","__values","o","m","__read","r","ar","error","__spread","arguments","concat","__classPrivateFieldGet","receiver","state","kind","has","get","__classPrivateFieldSet","set","DEFAULT_GRID_MATERIAL_CONFIG","pageSize","pages","GRID_MATERIAL_CONFIG","InjectionToken","SdPopupFilter","cdRef","_this","externalFilters","externalFilter","inlineExternal","columns","columnFilter","inlineColumn","filterDefs","filterDef","inlineFilterDef","changeFilter","EventEmitter","clearFilter","open","JSON","parse","stringify","modal","markForCheck","close","onApply","emit","onClear","Component","template","changeDetection","ChangeDetectionStrategy","OnPush","ChangeDetectorRef","ViewChild","Output","settingService","_prefix","key","selectedQuickFilter","quickFilters","configuration","prefix","_a","hash","Injectable","SdSettingService","SdGridFilter","ref","deviceService","gridFilterService","_filterOptionChanges","Subject","filterChange","BehaviorSubject","_subscription","Subscription","_loadDefault","_u","_v","column","field","_b","filter","_c","_d","default","_w","_x","_e","type","from","_j","_g","_f","_h","undefined","to","_o","_l","_k","_m","_p","_y","_z","sdMaterialFilterDef","_q","_clearFilter","_s","_t","onFilter","item","popupFilter","onChangeFilter","console","log","onReset","onClearFilter","setFilter","exFilter","isMobileOrTablet","isDesktop","ngAfterViewInit","add","pipe","startWith","subscribe","disabled","ngOnDestroy","unsubscribe","DeviceDetectorService","SdGridFilterService","SdPopupExport","loadingService","exportService","notifyService","translateService","groups","enableCreating","selected","files","export","form","FormGroup","_getExportableColumns","gridColumns","additionalColumns","_getExportableGroups","gridOption","permission","hideMyTemplates","loadFiles","code","detectChanges","exportDefault","_getExportColumns","columns_1","displayColumns","firstColumns","secondColumns","reduce","first","find","children","e1","map","assign","data","file","isCSV","exportCSV","exportRaw","isRaw","group","selectedGroup","filesInFolder","_initTemplate","fileName","sheets","isArray","sheet","name","items","fields","_0","_1","_3","generateTemplate","start","finally","stop","generateAndUploadTemplate","generateUploadTemplate","onExport","uploadTemplate","validator","_r","validators","removeFile","confirm","translate","idx","splice","createTemplate","invalid","markAllAsTouched","some","notify","warning","templateName","filePath","onChangeGroup","listGroups","selectedOptions","validatorTemplateName","test","option","forEach","childColumn","title","description","width","ngOnInit","SdLoadingService","SdExportService","SdNotifyService","SdTranslateService","gridMaterialConfiguration","_COLUMNS","EDITORVALIDATION","EDITOR","SUBINFORMATION","COMMAND","SELECTION","GROUP","_cache","init","subject_1","load","_load","_get","_set","remove","_remove","_default","observer","_getKey","config","hidden","origin","invisible","fixed","subject","storage","createServer","catch","isGeneratedColumn","col","generateConfigurationResult","sdSubInformation","fixedColumn","firstHeaders","secondHeaders","displayedColumns","displayedFooters","multipleHeader","selection","commands","editor","addable","removable","visible","generatedColumn","generatedColumns","includes","subColumn","e_2","colSpan","Inject","Optional","transform","valueField","displayField","remain","_prefix$1","isMultible","_cache$1","values","join","Pipe","CalculateSdId","sdId","editorHandlerColumn","expandDetail","isExpanded","isExpanding","isSelected","sdGroup","selectable","actions","groupedActions","originItem","editorErrorMessage","editorHandlerRow","SdEditorHandlerColumnPipe","zone","_visible","columns_1_1","childCol","run","NgZone","SdGridMaterial","gridConfigurationService","columnValuesPipe","editorHandlerColumnPipe","uuid.v4","_localItems","selectedItems","isLoading","isHiddenPaginator","_paginator","_sort","sdCellDefs","QueryList","cellDef","sdFooterDefs","footerDef","hasFooter","sdFilterDefs","_reload","force","isExporting","isSelectAll","exportTitle","_loadCompleted","_initCellDef","_5","_6","sdMaterialCellDef","_initFilterDef","_initFooterDef","sdMaterialFooterDef","_filterExportInfo","pageNumber","rawColumnFilter","gridFilter","rawExternalFilter","rawFilterDef","orderBy","active","orderDirection","direction","isExported","_initConfiguration","paginate","showFirstLastButtons","_filterLocal","localItems","filterInfo","filterValue","toString","trim","toLowerCase","columnValue","fValue","replace","cValue","fromDate","Date","begin","toDate","end","getTime","type_1","field_1","sort","current","s1","s2","reverse","index","total","_getFilter","pageIndex","filterReq","isObservable","toPromise","results","_4","handle","error_1","_render","sdScroll","scrollTop","reload","onReload","every","_updateSelectedItems","_load$1","_exportedItems","exportedItems","_allColumns","_allExportedColumns","_onExport","columns_2","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","exportColumn","exportedColumn","_8","displayOnTrue","displayOnFalse","date","transformDate","toFormat","_7","e_8","columns_3","columns_3_1","exportItems_2","exportItems_2_1","_10","exportExcelRaw","exportByTemplate","max","onFilterChange","onExpand","rowData","subInformation","always","multiple","res","onSelect","single","onSelectAll","onClearSelection","editorStatus","sdVersion","onCreate","onAdd","addToLast","temporary","onUpdate","onSave","saving","validate","message","err_1","onCancel","idx2","idx1","onRemove","beforeRemove","_2","update","refreshItem","_subscription$1","debounceTime","source","gridConfigurationObserver","paginator","page","sortChange","switchMap","changes","drop","event","moveItemInArray","previousIndex","currentIndex","keys","animations","trigger","style","height","minHeight","visibility","transition","animate","SdGridConfigurationService","SdColumnValuesPipe","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","columnChildren","SdColumnChildrenFilterPipe","_isMobileOrTablet","transformValue","templateValue","SdColumnTitlePipe","dynamicTitle","SdColumnBadgePipe","badge","badgeType","color","badgeIcon","SdGridConfigurationResultPipe","SdPopupGridConfiguration","isCreatingColumn","disabledDrag","_cache$2","createColumn","mouseUp","dropTable","table","renderRows","handleMouseDown","handleMouseUp","HostListener","SdColumnTooltipPipe","tooltip","_convert","action","fontSet","click","childAction","key_1","actions_1","actions_1_1","availableActions","availableActions_1","availableActions_1_1","isGrouped","setTimeout","_cache$3","loadSystem","systemColumn","SdDynamicColumn","generatedColumnService","columnTypes","isDetail","originColumns","onDetail","detail","isSystem","useTemplate","markAsUntouched","markAsPristine","systemSetting","setting","id","systemColumns","_subscription$2","SdGeneratedColumnService","SdSideDrawer","onChange","change","editorOnAdd","editorOnEdit","edit","editorOnDelete","delete","SdEditorHandlerRowPipe","status","isDisabled","editable","savable","cancelable","_visible$1","SdEditorValidatePipe","_previous","_delay","now","SdStyleRowCss","rowCss","SdColumnInlineFilter","useFilterDate","hasGroup","clear","SdCellViewPipe","utilityService","_maxSecond","_maxMinute","_maxHour","_maxDay","_maxMonth","_isMobileOrTablet$1","displayOnEmpty","align","display","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","SdDesktopCellEditor","SdDesktopEditorValidation","SdDesktopCellView","SdDesktopCellChildrenView","SdDesktopCommand","SdSelectionActionFilterPipe","SdSelectionVisiblePipe","SdSelectionDisablePipe","SdSelectionVisibleSelectAllPipe","exports","providers","DatePipe","DecimalPipe","CdkColumnDef","provide","useClass"],"mappings":"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","sourcesContent":["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 { 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, 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 { 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","/*! *****************************************************************************\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\n\r\nexport interface ISdGridMaterialConfiguration {\r\n filter?: {\r\n quickFilter?: boolean;\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_GRID_MATERIAL_CONFIG: ISdGridMaterialConfiguration = {\r\n paginate: {\r\n pageSize: 50,\r\n pages: [50, 100, 200]\r\n }\r\n};\r\n\r\nexport const GRID_MATERIAL_CONFIG = new InjectionToken<ISdGridMaterialConfiguration>('sd-grid-material.configuration');\r\n","import { Component, ViewChild, Output, EventEmitter, Input, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core';\r\nimport { SdModal } from '@sd-angular/core/modal';\r\nimport { SdGridMaterialColumn } from '../../models/grid-column.model';\r\nimport { SdGridMaterialExternalFilter } from '../../models/grid-filter.model';\r\nimport { SdMaterialFilterDefDirective } from '../../directives/sd-material-filter-def.directive';\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('modal') modal: SdModal;\r\n @Input() externalFilters: SdGridMaterialExternalFilter[] = [];\r\n externalFilter: any = {};\r\n inlineExternal: {\r\n [key: string]: boolean\r\n } = {};\r\n @Input() columns: SdGridMaterialColumn[] = [];\r\n columnFilter: any = {};\r\n inlineColumn: {\r\n [key: string]: boolean\r\n } = {};\r\n\r\n @Input() filterDefs: SdMaterialFilterDefDirective[] = [];\r\n filterDef: any = {};\r\n inlineFilterDef: {\r\n [key: string]: boolean;\r\n } = {};\r\n\r\n @Output() changeFilter = new EventEmitter<{\r\n inlineColumn: {\r\n [key: string]: boolean\r\n },\r\n columnFilter: any,\r\n inlineExternal: {\r\n [key: string]: boolean\r\n }\r\n externalFilter: any,\r\n inlineFilterDef: {\r\n [key: string]: boolean\r\n },\r\n filterDef: any\r\n }>();\r\n @Output() clearFilter = new EventEmitter();\r\n constructor(\r\n private cdRef: ChangeDetectorRef\r\n ) {\r\n }\r\n\r\n open = (args: {\r\n inlineColumn: {\r\n [key: string]: boolean\r\n },\r\n columnFilter: any,\r\n inlineExternal: {\r\n [key: string]: boolean\r\n }\r\n externalFilter: any,\r\n inlineFilterDef: {\r\n [key: string]: boolean\r\n },\r\n filterDef: any\r\n }) => {\r\n const { inlineColumn, columnFilter, inlineExternal, externalFilter, inlineFilterDef, filterDef } = args;\r\n this.inlineColumn = JSON.parse(JSON.stringify(inlineColumn || {}));\r\n this.columnFilter = JSON.parse(JSON.stringify(columnFilter || {}));\r\n this.inlineExternal = JSON.parse(JSON.stringify(inlineExternal || {}));\r\n this.externalFilter = JSON.parse(JSON.stringify(externalFilter || {}));\r\n this.inlineFilterDef = JSON.parse(JSON.stringify(inlineFilterDef || {}));\r\n this.filterDef = JSON.parse(JSON.stringify(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.changeFilter.emit({\r\n inlineColumn: this.inlineColumn || {},\r\n columnFilter: this.columnFilter || {},\r\n inlineExternal: this.inlineExternal || {},\r\n externalFilter: this.externalFilter || {},\r\n inlineFilterDef: this.inlineFilterDef || {},\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.clearFilter.emit();\r\n this.modal.close();\r\n this.cdRef.markForCheck();\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 { SdGridMaterialFilterConfiguration } from '../models/grid-filter.model';\r\n\r\n@Injectable()\r\nexport class SdGridFilterService {\r\n #prefix = '61d22e8e-eee8-4aad-8e1c-044a532fea91';\r\n constructor(private settingService: SdSettingService) {\r\n }\r\n get = (key: string): SdGridMaterialFilterConfiguration => {\r\n if (!key) {\r\n return {\r\n selectedQuickFilter: null,\r\n quickFilters: [],\r\n inlineExternal: {},\r\n inlineColumn: {},\r\n inlineFilterDef: {}\r\n };\r\n }\r\n const { get } = this.settingService.create<SdGridMaterialFilterConfiguration>({\r\n prefix: this.#prefix,\r\n key\r\n });\r\n const configuration = get();\r\n return {\r\n selectedQuickFilter: configuration?.selectedQuickFilter ?? null,\r\n quickFilters: configuration?.quickFilters || [],\r\n inlineExternal: configuration?.inlineExternal || {},\r\n inlineColumn: configuration?.inlineColumn || {},\r\n inlineFilterDef: configuration?.inlineFilterDef || {},\r\n };\r\n }\r\n\r\n set = (key: string, configuration: SdGridMaterialFilterConfiguration): SdGridMaterialFilterConfiguration => {\r\n configuration = {\r\n selectedQuickFilter: configuration?.selectedQuickFilter || null,\r\n quickFilters: configuration?.quickFilters || [],\r\n inlineExternal: configuration.inlineExternal || {},\r\n inlineColumn: configuration.inlineColumn || {},\r\n inlineFilterDef: configuration.inlineFilterDef || {}\r\n };\r\n if (!key) {\r\n return configuration;\r\n }\r\n const { set } = this.settingService.create<SdGridMaterialFilterConfiguration>({\r\n prefix: this.#prefix,\r\n key\r\n });\r\n key = hash({\r\n prefix: this.#prefix,\r\n key\r\n });\r\n set(configuration);\r\n return configuration;\r\n }\r\n}\r\n","import { Component, Input, Output, EventEmitter, ViewChild, AfterViewInit, OnDestroy, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core';\r\nimport { SdGridMaterialFilterOption, SdGridMaterialExternalFilter } from '../../models/grid-filter.model';\r\nimport { SdGridMaterialColumn } from '../../models/grid-column.model';\r\nimport { SdPopupFilter } from '../popup-filter/popup-filter.component';\r\nimport { BehaviorSubject, Subject, Subscription } from 'rxjs';\r\nimport { startWith } from 'rxjs/operators';\r\nimport { SdGridFilterService } from '../../services/grid-filter.service';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\nimport { SdMaterialFilterDefDirective } from '../../directives/sd-material-filter-def.directive';\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<SdGridMaterialFilterOption>;\r\n #filterOptionChanges = new Subject<SdGridMaterialFilterOption>();\r\n @Input('filter') set _filter(filter: SdGridMaterialFilterOption) {\r\n this.filter = filter;\r\n this.#filterOptionChanges.next(this.filter);\r\n }\r\n @Input() columns: SdGridMaterialColumn[] = [];\r\n @Input() filterDefs: SdMaterialFilterDefDirective[] = [];\r\n filterChange = new BehaviorSubject<boolean>(false);\r\n\r\n filterDef: any = {};\r\n inlineFilterDef: Record<string, boolean> = {};\r\n columnFilter: any = {};\r\n inlineColumn: Record<string, boolean> = {};\r\n externalFilters: SdGridMaterialExternalFilter[] = [];\r\n externalFilter: any = {};\r\n inlineExternal: Record<string, boolean> = {};\r\n isMobileOrTablet: boolean;\r\n\r\n #subscription = new Subscription();\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n private deviceService: DeviceDetectorService,\r\n private gridFilterService: SdGridFilterService) {\r\n this.isMobileOrTablet = !this.deviceService.isDesktop();\r\n this.ref.markForCheck();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.#subscription.add(this.#filterOptionChanges.pipe(startWith(this.filter)).subscribe(() => {\r\n if (this.filter?.disabled) {\r\n this.filterChange.next(true);\r\n return;\r\n }\r\n this.externalFilters = this.filter?.externalFilters || [];\r\n const configuration = this.gridFilterService.get(this.filter?.key);\r\n this.inlineColumn = configuration.inlineColumn;\r\n this.inlineExternal = configuration.inlineExternal;\r\n this.inlineFilterDef = configuration.inlineFilterDef;\r\n this.#loadDefault();\r\n this.filterChange.next(true);\r\n this.ref.markForCheck();\r\n }));\r\n }\r\n\r\n #loadDefault = () => {\r\n for (const column of this.columns) {\r\n this.inlineColumn[column.field] = this.inlineColumn[column.field] ?? column?.filter?.defaultShowing;\r\n this.columnFilter[column.field] = this.columnFilter[column.field] ?? column?.filter?.default;\r\n }\r\n for (const externalFilter of this.externalFilters) {\r\n this.inlineExternal[externalFilter.field] = this.inlineExternal[externalFilter.field] ?? externalFilter?.defaultShowing;\r\n if (externalFilter.type === 'daterange') {\r\n this.externalFilter[externalFilter.field] = {\r\n from: this.externalFilter[externalFilter.field]?.from ?? externalFilter.default?.from ?? undefined,\r\n to: this.externalFilter[externalFilter.field]?.to ?? externalFilter.default?.to ?? undefined\r\n };\r\n } else {\r\n this.externalFilter[externalFilter.field] = this.externalFilter[externalFilter.field] ?? externalFilter.default;\r\n }\r\n }\r\n for (const filterDef of this.filterDefs) {\r\n this.inlineFilterDef[filterDef.sdMaterialFilterDef] =\r\n this.inlineFilterDef[filterDef.sdMaterialFilterDef] ?? filterDef?.defaultShowing;\r\n }\r\n }\r\n\r\n #clearFilter = () => {\r\n this.columnFilter = {};\r\n this.externalFilter = {};\r\n this.filterDef = {};\r\n for (const externalFilter of this.externalFilters) {\r\n if (externalFilter.type === 'daterange') {\r\n this.externalFilter[externalFilter.field] = {\r\n from: undefined,\r\n to: undefined\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?: SdGridMaterialColumn | SdGridMaterialExternalFilter) => {\r\n this.filterChange.next(true);\r\n }\r\n\r\n open = () => {\r\n this.popupFilter.open({\r\n columnFilter: this.columnFilter,\r\n externalFilter: this.externalFilter,\r\n filterDef: this.filterDef,\r\n inlineColumn: this.inlineColumn,\r\n inlineExternal: this.inlineExternal,\r\n inlineFilterDef: this.inlineFilterDef\r\n });\r\n }\r\n\r\n onChangeFilter = (args: {\r\n inlineColumn: {\r\n [key: string]: boolean\r\n },\r\n columnFilter: any,\r\n inlineExternal: {\r\n [key: string]: boolean\r\n }\r\n externalFilter: any,\r\n inlineFilterDef: {\r\n [key: string]: boolean\r\n },\r\n filterDef: any\r\n }) => {\r\n const { inlineColumn, columnFilter, inlineExternal, externalFilter, inlineFilterDef, filterDef } = args;\r\n this.inlineColumn = inlineColumn;\r\n this.columnFilter = columnFilter;\r\n this.inlineExternal = inlineExternal;\r\n this.externalFilter = externalFilter;\r\n this.inlineFilterDef = inlineFilterDef;\r\n this.filterDef = filterDef;\r\n this.gridFilterService.set(this.filter?.key, {\r\n inlineColumn,\r\n inlineExternal,\r\n quickFilters: [],\r\n inlineFilterDef,\r\n selectedQuickFilter: null\r\n });\r\n console.log({\r\n inlineColumn,\r\n inlineExternal,\r\n quickFilters: [],\r\n inlineFilterDef,\r\n selectedQuickFilter: null\r\n });\r\n this.filterChange.next(true);\r\n }\r\n\r\n onReset = () => {\r\n this.inlineColumn = {};\r\n this.columnFilter = {};\r\n this.inlineExternal = {};\r\n this.externalFilter = {};\r\n this.inlineFilterDef = {};\r\n this.filterDef = {};\r\n this.#loadDefault();\r\n this.gridFilterService.set(this.filter?.key, {\r\n inlineColumn: this.inlineColumn,\r\n inlineExternal: this.columnFilter,\r\n inlineFilterDef: this.inlineFilterDef,\r\n quickFilters: [],\r\n selectedQuickFilter: null\r\n });\r\n this.filterChange.next(true);\r\n this.ref.markForCheck();\r\n }\r\n\r\n onClearFilter = () => {\r\n this.#clearFilter();\r\n this.gridFilterService.set(this.filter?.key, {\r\n inlineColumn: this.inlineColumn,\r\n inlineExternal: this.columnFilter,\r\n inlineFilterDef: this.inlineFilterDef,\r\n quickFilters: [],\r\n selectedQuickFilter: null\r\n });\r\n this.filterChange.next(true);\r\n }\r\n\r\n setFilter = (args: {\r\n columnFilter?: any,\r\n externalFilter?: any,\r\n filterDef?: any\r\n }) => {\r\n const { columnFilter, externalFilter, filterDef } = args;\r\n if (columnFilter) {\r\n this.columnFilter = columnFilter;\r\n }\r\n if (externalFilter) {\r\n this.externalFilter = externalFilter;\r\n }\r\n if (filterDef) {\r\n this.filterDef = filterDef;\r\n }\r\n for (const exFilter of this.externalFilters) {\r\n if (exFilter.type === 'daterange') {\r\n this.externalFilter[exFilter.field] = {\r\n from: this.externalFilter[exFilter.field]?.from ?? undefined,\r\n to: this.externalFilter[exFilter.field]?.to ?? undefined\r\n };\r\n }\r\n }\r\n this.ref.markForCheck();\r\n }\r\n}\r\n","import { Component, OnInit, AfterViewInit, ViewChild, Output, EventEmitter, Input, ChangeDetectorRef, ChangeDetectionStrategy } from '@angular/core';\r\n\r\nimport * as uuid from 'uuid';\r\n\r\nimport {\r\n SdNotifyService\r\n} from '@sd-angular/core/notify';\r\n\r\nimport {\r\n SdLoadingService\r\n} from '@sd-angular/core/loading';\r\n\r\nimport {\r\n SdTranslateService\r\n} from '@sd-angular/core/translate';\r\nimport hash from 'object-hash';\r\nimport { MatSelectionList } from '@angular/material/list';\r\nimport { SdGridMaterialOption } from '../../models/grid-option.model';\r\nimport { SdModal } from '@sd-angular/core/modal';\r\nimport { SdExportFile, SdExportService, SdExportColumn } from '@sd-angular/core/export';\r\nimport { SdGroupExport } from '../../models/grid-export.model';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { SdGridConfigurationResult } from '../../models/grid-config.model';\r\nimport { SdGridMaterialColumn } from '../../models/grid-column.model';\r\n\r\n@Component({\r\n selector: 'sd-popup-export',\r\n templateUrl: './popup-export.component.html',\r\n styleUrls: ['./popup-export.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdPopupExport implements OnInit, AfterViewInit {\r\n gridOption: SdGridMaterialOption;\r\n columns: SdExportColumn[] = [];\r\n groups: SdGroupExport[] = [];\r\n templateName: string;\r\n enableCreating = false;\r\n @ViewChild('modal') modal: SdModal;\r\n @ViewChild('listGroups') listGroups: MatSelectionList;\r\n\r\n selected: {\r\n [key: string]: boolean\r\n } = {};\r\n files: SdExportFile[] = [];\r\n selectedGroup: SdGroupExport;\r\n\r\n @Output() export = new EventEmitter<{ file: SdExportFile, columns: SdExportColumn[], isCSV?: boolean, isRaw?: boolean }>();\r\n form = new FormGroup({});\r\n\r\n @Input('gridOption') set _gridOption(option: SdGridMaterialOption) {\r\n this.gridOption = option;\r\n this.columns = this.#getExportableColumns();\r\n this.groups = this.#getExportableGroups();\r\n }\r\n @Input() configuration: SdGridConfigurationResult;\r\n private get key(): string {\r\n const prefix = '93889e78-f971-4a1d-8c73-fe2321af9233';\r\n if (!this.gridOption?.export?.key) {\r\n return null;\r\n }\r\n return hash({\r\n prefix,\r\n key: this.gridOption?.export?.key\r\n });\r\n }\r\n\r\n private get gridColumns() {\r\n const columns: SdExportColumn[] = [];\r\n this.gridOption.columns.filter(e => !e.export?.disabled).forEach(column => {\r\n if (column.type === 'image') {\r\n return;\r\n }\r\n if (column.type === 'children') {\r\n column.children?.filter(e => !e.export?.disabled).forEach(childColumn => {\r\n if (childColumn.type === 'image') {\r\n return;\r\n }\r\n columns.push(childColumn);\r\n });\r\n return;\r\n }\r\n if (column.type === 'children-col') {\r\n column.children?.filter(e => !e.export?.disabled).forEach(childColumn => {\r\n if (childColumn.type === 'image') {\r\n return;\r\n }\r\n columns.push(childColumn);\r\n });\r\n return;\r\n }\r\n columns.push(column);\r\n });\r\n return columns.map(e => ({\r\n field: e.field,\r\n title: e.title,\r\n description: e.description,\r\n width: e.width\r\n }));\r\n }\r\n private get additionalColumns() {\r\n return (this.gridOption.export?.columns?.filter(e => !e.export?.disabled) || []).map(e => ({\r\n field: e.field,\r\n title: e.title,\r\n description: e.description,\r\n width: e.width\r\n }));\r\n }\r\n\r\n #getExportableColumns = (): SdExportColumn[] => {\r\n return [...this.gridColumns, ...this.additionalColumns];\r\n }\r\n\r\n #getExportableGroups = () => {\r\n return this.gridOption?.export?.groups?.filter(e => {\r\n const permission = e.permission;\r\n if (typeof (permission) === 'function') {\r\n return permission();\r\n }\r\n return permission;\r\n }) || [];\r\n }\r\n\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n private loadingService: SdLoadingService,\r\n private exportService: SdExportService,\r\n private notifyService: SdNotifyService,\r\n private translateService: SdTranslateService\r\n ) { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n ngAfterViewInit() {\r\n }\r\n\r\n open = async () => {\r\n if (!this.key) {\r\n this.exportDefault();\r\n return;\r\n }\r\n if (this.groups.length === 1 && this.gridOption?.export?.hideMyTemplates) {\r\n this.loadFiles(this.groups[0].code);\r\n } else {\r\n this.loadFiles(null);\r\n }\r\n this.selected = {};\r\n this.modal.open();\r\n this.ref.detectChanges();\r\n }\r\n\r\n #getExportColumns = () => {\r\n if (this.configuration) {\r\n const columns = [...this.gridColumns];\r\n const { firstColumns, secondColumns } = this.configuration;\r\n const displayColumns: SdGridMaterialColumn<any>[] = [...firstColumns, ...secondColumns].reduce((first, next) => {\r\n const column = this.gridOption.columns.find(e => e.field === next.field);\r\n if (!column) {\r\n return first;\r\n }\r\n if (column.type !== 'children' && column.type !== 'children-col') {\r\n return [...first, column];\r\n }\r\n const children = column.children.filter(e1 => e1.type !== 'image');\r\n return [...first, ...children];\r\n }, []);\r\n const results = displayColumns.map(e => ({\r\n ...e,\r\n data: columns.find(e1 => e1.field === e.field)\r\n })).filter(e => !!e.data)\r\n .map(e => e.data);\r\n return [...results, ...this.additionalColumns];\r\n } else {\r\n return this.columns;\r\n }\r\n }\r\n\r\n exportDefault = () => {\r\n this.export.emit({\r\n file: null,\r\n columns: this.#getExportColumns(),\r\n isCSV: false\r\n });\r\n }\r\n\r\n exportCSV = () => {\r\n this.export.emit({\r\n file: null,\r\n columns: this.#getExportColumns(),\r\n isCSV: true\r\n });\r\n }\r\n\r\n exportRaw = () => {\r\n this.export.emit({\r\n file: null,\r\n columns: this.#getExportColumns(),\r\n isRaw: true\r\n });\r\n }\r\n\r\n loadFiles = async (group: string = null) => {\r\n this.selectedGroup = this.groups.find(e => e.code === group);\r\n this.files = await this.exportService.filesInFolder({\r\n key: this.key,\r\n group\r\n });\r\n this.ref.markForCheck();\r\n }\r\n\r\n #initTemplate = async (fileName?: string) => {\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 return await this.exportService.generateTemplate({\r\n fileName: fileName || this.gridOption?.export?.fileName,\r\n columns: this.columns,\r\n sheets\r\n });\r\n }\r\n\r\n generateTemplate = async () => {\r\n this.loadingService.start();\r\n await this.#initTemplate().finally(this.loadingService.stop);\r\n }\r\n\r\n generateAndUploadTemplate = async (fileName?: string) => {\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 return await this.exportService.generateUploadTemplate({\r\n key: this.key,\r\n template: {\r\n fileName: fileName || this.gridOption?.export?.fileName,\r\n columns: this.columns.filter(e => this.selected[e.field]),\r\n sheets\r\n },\r\n group: this.selectedGroup?.code\r\n });\r\n }\r\n\r\n onExport = (file: SdExportFile) => {\r\n this.export.emit({\r\n file,\r\n columns: this.columns\r\n });\r\n this.ref.detectChanges();\r\n }\r\n\r\n uploadTemplate = async () => {\r\n const file = await this.exportService.uploadTemplate({\r\n key: this.key,\r\n group: this.selectedGroup?.code,\r\n validator: this.gridOption?.export?.validators\r\n });\r\n if (file) {\r\n this.files = [...this.files, file];\r\n this.ref.detectChanges();\r\n }\r\n }\r\n\r\n removeFile = (file: SdExportFile) => {\r\n this.notifyService.confirm(this.translateService.translate('Remove template')).then(() => {\r\n this.exportService.removeFile({\r\n key: this.key,\r\n fileName: file.fileName,\r\n group: this.selectedGroup?.code || null\r\n });\r\n const idx = this.files.indexOf(file);\r\n this.files.splice(idx, 1);\r\n this.files = [...this.files];\r\n this.ref.detectChanges();\r\n });\r\n }\r\n\r\n createTemplate = async () => {\r\n const { translate } = this.translateService;\r\n if (this.form.invalid) {\r\n this.form.markAllAsTouched();\r\n return;\r\n }\r\n if (!this.columns.some(e => this.selected[e.field])) {\r\n this.notifyService.notify.warning(translate('Please select columns'));\r\n return;\r\n }\r\n this.loadingService.start();\r\n const fileName = this.templateName + '.xlsx';\r\n try {\r\n if (this.gridOption?.export?.validators?.(fileName)) {\r\n this.notifyService.notify.warning(this.gridOption?.export?.validators(fileName));\r\n return;\r\n }\r\n const result = await this.generateAndUploadTemplate(fileName);\r\n if (result?.filePath) {\r\n const file: SdExportFile = {\r\n filePath: result.filePath,\r\n fileName: result.fileName\r\n };\r\n this.onExport(file);\r\n this.templateName = null;\r\n this.enableCreating = false;\r\n this.files = [...this.files, file];\r\n this.ref.detectChanges();\r\n }\r\n } finally {\r\n this.loadingService.stop();\r\n }\r\n }\r\n\r\n onChangeGroup = () => {\r\n this.loadFiles(this.listGroups?.selectedOptions?.selected[0]?.value);\r\n }\r\n\r\n validatorTemplateName = (val: string) => {\r\n const { translate } = this.translateService;\r\n const regex = /^[A-Za-z0-9 _]*[A-Za-z0-9][A-Za-z0-9 _]*$/;\r\n if (!val) {\r\n return translate('Please enter your template name');\r\n }\r\n if (val.length > 50) {\r\n return translate('Template name is too long');\r\n }\r\n if (!regex.test(val)) {\r\n return translate('Template name only contains letters, numbers and spaces');\r\n }\r\n return null;\r\n }\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 { SdGridMaterialOption } from '../models/grid-option.model';\r\nimport { SdColumnConfiguration, SdGridConfiguration, SdGridConfigurationCache, SdGridConfigurationResult } from '../models/grid-config.model';\r\nimport { SdMaterialSubInformationDefDirective } from '../directives/sd-material-sub-information-def.directive';\r\nimport { Subject } from 'rxjs';\r\nimport { SdGridMaterialColumn } from '../models/grid-column.model';\r\nimport { GRID_MATERIAL_CONFIG, ISdGridMaterialConfiguration } from '../models/grid-configuration.model';\r\n\r\n@Injectable()\r\nexport class SdGridConfigurationService {\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(GRID_MATERIAL_CONFIG) @Optional() public gridMaterialConfiguration: ISdGridMaterialConfiguration) {\r\n }\r\n\r\n init = (key: string, gridOption: SdGridMaterialOption) => {\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: SdGridMaterialOption) => {\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: SdGridMaterialOption): SdGridConfiguration => {\r\n const columns: SdColumnConfiguration[] = gridOption?.columns?.filter(e => !e.hidden).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: SdGridMaterialOption, 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: SdGridMaterialOption) => {\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\r\n .filter(column => column.isGeneratedColumn || 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: SdGridMaterialOption, 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: SdGridMaterialOption) => {\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: SdGridMaterialOption,\r\n sdSubInformation: SdMaterialSubInformationDefDirective) => {\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 { selection, commands, editor, group } = gridOption || {};\r\n if (editor?.addable || (editor?.type === 'inline' && (editor?.removable || typeof (editor?.disabled) === 'function' || !editor?.disabled))\r\n || (editor?.type === 'focus' && (typeof (editor?.disabled) === 'function' || !editor?.disabled))) {\r\n result.firstHeaders.push(this.#COLUMNS.EDITORVALIDATION);\r\n result.displayedColumns.push(this.#COLUMNS.EDITORVALIDATION);\r\n }\r\n if (selection?.visible) {\r\n result.firstHeaders.push(this.#COLUMNS.SELECTION);\r\n result.displayedColumns.push(this.#COLUMNS.SELECTION);\r\n }\r\n if (!editor?.hidden) {\r\n if (editor?.addable\r\n || (editor?.type === 'inline' && (editor?.removable || typeof (editor?.disabled) === 'function' || !editor?.disabled))\r\n || (editor?.type === 'focus' && (typeof (editor?.disabled) === 'function' || !editor?.disabled))\r\n || (editor?.type === 'popup' && (typeof (editor?.disabled) === 'function' || !editor?.disabled))) {\r\n result.firstHeaders.push(this.#COLUMNS.EDITOR);\r\n result.displayedColumns.push(this.#COLUMNS.EDITOR);\r\n }\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?.filter(col => !col.invisible).forEach(col => {\r\n if (col.isGeneratedColumn) {\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 const generatedColumn: SdGridMaterialColumn = {\r\n type: 'children',\r\n field: col.origin.field,\r\n title: col.origin.title,\r\n children: []\r\n };\r\n for (const subColumn of gridOption?.columns.filter(e1 => col.generatedColumns.includes(e1.field))) {\r\n if (subColumn.type === 'children' || subColumn.type === 'children-col') {\r\n for (const childColumn of subColumn.children) {\r\n generatedColumn.children.push({\r\n ...childColumn,\r\n colSpan: 2\r\n });\r\n }\r\n } else {\r\n generatedColumn.children.push({\r\n ...subColumn,\r\n colSpan: 2\r\n });\r\n }\r\n\r\n }\r\n result.firstColumns.push({\r\n ...generatedColumn,\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 return;\r\n }\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 if (column.type === 'children-col') {\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 } else {\r\n result.displayedColumns.push(col.origin.field);\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 { Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdGridMaterialColumn } from '../models/grid-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: SdGridMaterialColumn): 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 hash from 'object-hash';\r\nimport { SdItem } from \"../models/grid.model\";\r\n\r\nexport const CalculateSdId = (item: SdItem) => {\r\n const {\r\n sdId,\r\n editorHandlerColumn,\r\n expandDetail,\r\n isExpanded,\r\n isExpanding,\r\n isSelected,\r\n sdGroup,\r\n selectable,\r\n actions,\r\n groupedActions,\r\n originItem,\r\n editorErrorMessage,\r\n editorHandlerRow,\r\n ...remain } = item;\r\n return hash(remain);\r\n}","import { Injectable, NgZone, Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { CalculateSdId } from '../functions/calculate-sd-id';\r\nimport { SdGridMaterialColumn } from '../models/grid-column.model';\r\nimport { SdGridMaterialOption } from '../models/grid-option.model';\r\nimport { SdItem } from '../models/grid.model';\r\n@Pipe({\r\n name: 'sdEditorHandlerColumn'\r\n})\r\n@Injectable()\r\nexport class SdEditorHandlerColumnPipe implements PipeTransform {\r\n constructor(private zone: NgZone) { }\r\n #visible = (col: SdGridMaterialColumn, item: SdItem) => {\r\n if (col.type === 'children' || col.type === 'children-col') {\r\n return false;\r\n }\r\n // Kiểm tra xem có bị disabled hay không?\r\n if (col.editor) {\r\n const isDisabled = typeof (col.editor.disabled) === 'function' ? col.editor.disabled(item) : col.editor.disabled;\r\n if (isDisabled) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n };\r\n transform(value: any, item: SdItem, gridOption: SdGridMaterialOption) {\r\n const key = CalculateSdId(item);\r\n if (item.sdId === key && item.editorHandlerColumn) {\r\n return true;\r\n }\r\n item.editorHandlerColumn = item.editorHandlerColumn || {};\r\n const { columns } = gridOption;\r\n for (const col of columns) {\r\n if (col.type === 'children-col') {\r\n for (const childCol of col.children) {\r\n item.editorHandlerColumn[childCol.field] = {\r\n ...item.editorHandlerColumn[childCol.field],\r\n visible: this.#visible(childCol, item)\r\n }\r\n }\r\n } else {\r\n item.editorHandlerColumn[col.field] = {\r\n ...item.editorHandlerColumn[col.field],\r\n visible: this.#visible(col, item)\r\n }\r\n }\r\n }\r\n this.zone.run(() => {\r\n item.sdId = CalculateSdId(item);\r\n });\r\n item.sdId = key;\r\n return 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} 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 {\r\n SdGridMaterialFilterRequest\r\n} from './models/grid-filter.model';\r\nimport {\r\n SdGridMaterialOption\r\n} from './models/grid-option.model';\r\nimport {\r\n GRID_MATERIAL_CONFIG,\r\n DEFAULT_GRID_MATERIAL_CONFIG,\r\n ISdGridMaterialConfiguration\r\n} from './models/grid-configuration.model';\r\nimport { Subscription, isObservable, Observable, BehaviorSubject } from 'rxjs';\r\nimport { SdNotifyService } from '@sd-angular/core/notify';\r\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport { SdGridMaterialColumn } from './models/grid-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 { SdPopupExport } from './components/popup-export/popup-export.component';\r\nimport { SdExportColumn, SdExportFile, SdExportService } from '@sd-angular/core/export';\r\nimport { SdGridConfiguration } from './models/grid-config.model';\r\nimport { SdGridConfigurationService } from './services/grid-configuration.service';\r\nimport { SdGridMaterialExportColumn } from './models/grid-export.model';\r\nimport { SdTranslateService } from '@sd-angular/core/translate';\r\nimport { SdQuickAction } from '@sd-angular/core/quick-action';\r\nimport { SdGridMaterialItem, SdItem } from './models/grid.model';\r\nimport { SdColumnValuesPipe } from './pipes/column-values.pipe';\r\nimport { SdEditorHandlerColumnPipe } from './pipes/editor-handler-column.pipe';\r\nimport { SdScrollDirective } from '@sd-angular/core/common';\r\n\r\n@Component({\r\n selector: 'sd-grid-material',\r\n templateUrl: './grid-material.component.html',\r\n styleUrls: ['./grid-material.component.scss'],\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 SdGridMaterial<T = any> implements OnInit, AfterViewInit, OnDestroy {\r\n @ViewChild(SdScrollDirective) sdScroll: SdScrollDirective;\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: SdGridMaterialOption) {\r\n if (option) {\r\n option = this.#initConfiguration(option);\r\n this.gridOption = option;\r\n this.#loadCompleted = false;\r\n this.#reload.next({\r\n force: true,\r\n source: 'INITIALIZE'\r\n });\r\n option?.columns?.forEach(col => {\r\n if (col.filter?.default) {\r\n this.columnFilter[col.field] = col.filter.default;\r\n }\r\n });\r\n const configuration = this.gridConfigurationService.init(this.key, this.gridOption);\r\n this.gridConfigurationObserver = configuration.observer;\r\n configuration.load();\r\n }\r\n }\r\n\r\n gridOption: SdGridMaterialOption;\r\n #localItems: any[] = [];\r\n items: SdGridMaterialItem<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(paginator.page.pipe(\r\n map(() => {\r\n this.#reload.next({\r\n force: false\r\n });\r\n }),\r\n ).subscribe());\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(sort.sortChange.pipe(\r\n map(() => {\r\n this.#reload.next({\r\n force: false\r\n });\r\n }),\r\n ).subscribe());\r\n }\r\n }\r\n\r\n // Export\r\n @ViewChild(SdPopupExport) sdPopupExport: SdPopupExport;\r\n\r\n // Sub Information\r\n @ContentChild(SdMaterialSubInformationDefDirective) sdSubInformation: SdMaterialSubInformationDefDirective;\r\n\r\n // Empty Data\r\n @ContentChild(SdMaterialEmptyDataDefDirective) 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 columnFilter: {\r\n [key: string]: any\r\n } = {};\r\n // Subcription\r\n #subscription = new Subscription();\r\n #reload = new BehaviorSubject<{\r\n force: boolean,\r\n source?: 'INITIALIZE' | 'FILTER'\r\n }>({\r\n force: true\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(GRID_MATERIAL_CONFIG) @Optional() public configuration: ISdGridMaterialConfiguration,\r\n private gridConfigurationService: SdGridConfigurationService,\r\n private exportService: SdExportService,\r\n private notifyService: SdNotifyService,\r\n private translateService: SdTranslateService,\r\n private columnValuesPipe: SdColumnValuesPipe,\r\n private editorHandlerColumnPipe: SdEditorHandlerColumnPipe) {\r\n }\r\n\r\n ngOnInit() {\r\n this.#initCellDef();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.#subscription.add(this.#reload.pipe(\r\n debounceTime(200),\r\n // startWith(this.#reload.value),\r\n filter(data => {\r\n if (this.#loadCompleted) {\r\n return true;\r\n }\r\n if (!this.gridOption?.filter?.disabled) {\r\n return data.source === 'FILTER';\r\n }\r\n return data.source === 'INITIALIZE';\r\n }),\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 ).subscribe(this.#render));\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\r\n // this.#subscription.add(this.#optionChanges.pipe(\r\n // debounceTime(200),\r\n // startWith({}),\r\n // map(this.#getFilter),\r\n // switchMap(filterInfo => this.#load(filterInfo, true))\r\n // ).subscribe(this.#render));\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): SdGridMaterialFilterRequest => {\r\n return {\r\n rawColumnFilter: (this.gridOption?.filter?.inlineColumn ? this.columnFilter : this.gridFilter?.columnFilter) || {},\r\n rawExternalFilter: this.gridFilter?.externalFilter || {},\r\n rawFilterDef: this.gridFilter?.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: SdGridMaterialOption) => {\r\n option.paginate = {\r\n hidden: option?.paginate?.hidden,\r\n pageSize: option?.paginate?.pageSize ?? this.configuration?.paginate?.pageSize ?? DEFAULT_GRID_MATERIAL_CONFIG.paginate?.pageSize,\r\n pages: option?.paginate?.pages ?? this.configuration?.paginate?.pages ?? DEFAULT_GRID_MATERIAL_CONFIG.paginate?.pages,\r\n showFirstLastButtons: option?.paginate?.showFirstLastButtons ?? false\r\n };\r\n return option;\r\n }\r\n\r\n #filterLocal = (localItems: any[], filterInfo: SdGridMaterialFilterRequest) => {\r\n const { columns } = this.gridOption;\r\n const { rawColumnFilter, orderBy, orderDirection, pageSize, pageNumber } = filterInfo;\r\n const items = localItems.filter(item => {\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 if (new Date(columnValue).getTime() < fromDate.getTime() || new Date(columnValue).getTime() >= toDate.getTime()) {\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((current, next) => {\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\r\n && index < (pageNumber + 1) * pageSize;\r\n }),\r\n total: items.length\r\n };\r\n }\r\n\r\n #getFilter = (): SdGridMaterialFilterRequest => ({\r\n rawColumnFilter: (this.gridOption?.filter?.inlineColumn ? this.columnFilter : this.gridFilter?.columnFilter) || {},\r\n rawExternalFilter: this.gridFilter?.externalFilter || {},\r\n rawFilterDef: this.gridFilter?.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 #load = async (filterReq: SdGridMaterialFilterRequest, force: boolean = true) => {\r\n this.isLoading = true;\r\n try {\r\n if (this.gridOption.type === 'server') {\r\n let result = this.gridOption.items(filterReq);\r\n if (isObservable(result)) {\r\n result = result.toPromise();\r\n }\r\n const data = await result;\r\n return {\r\n items: data.items || [],\r\n total: data.total || 0\r\n };\r\n } else {\r\n if (force) {\r\n const results = this.gridOption.items();\r\n if (results instanceof Promise) {\r\n this.#localItems = await results;\r\n } else {\r\n this.#localItems = results;\r\n }\r\n }\r\n return this.#filterLocal(this.#localItems, filterReq);\r\n }\r\n } catch (error) {\r\n this.notifyService.handle.error(error);\r\n } finally {\r\n this.isLoading = false;\r\n this.ref.detectChanges();\r\n }\r\n }\r\n\r\n #render = async (args: { items: any[], total: number }) => {\r\n this.sdScroll?.scrollTop();\r\n this.items = args?.items || [];\r\n this.total = args?.total || 0;\r\n // this.isHiddenPaginator = this.filterInfo.pageNumber === 0 && this.total <= this.filterInfo.pageSize;\r\n this.items.forEach((item: SdItem) => {\r\n item.originItem = { ...item };\r\n });\r\n await this.gridOption?.reload?.onReload?.(this.items);\r\n this.isSelectAll = this.items.every(e => e.isSelected);\r\n this.#updateSelectedItems();\r\n }\r\n\r\n reload = async (force: boolean = true) => {\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 if (isObservable(result)) {\r\n result = result.toPromise();\r\n }\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 drop(event: CdkDragDrop<string[]>, columns: string[]) {\r\n moveItemInArray(columns, event.previousIndex, event.currentIndex);\r\n }\r\n\r\n #allColumns = (): SdGridMaterialColumn[] => {\r\n const columns: SdGridMaterialColumn[] = [];\r\n this.gridOption.columns.filter(e => !e.export?.disabled).forEach(column => {\r\n if (column.type === 'image') {\r\n return;\r\n }\r\n if (column.type === 'children') {\r\n column.children?.filter(e => !e.export?.disabled).forEach(childColumn => {\r\n if (childColumn.type === 'image') {\r\n return;\r\n }\r\n columns.push(childColumn);\r\n });\r\n return;\r\n }\r\n if (column.type === 'children-col') {\r\n column.children?.filter(e => !e.export?.disabled).forEach(childColumn => {\r\n if (childColumn.type === 'image') {\r\n return;\r\n }\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 = (): SdGridMaterialExportColumn[] => {\r\n return this.gridOption.export?.columns?.filter(e => !e.export?.disabled) || [];\r\n }\r\n\r\n #onExport = async (args: { file: SdExportFile, columns: SdExportColumn[], isCSV: boolean, isRaw: boolean }) => {\r\n try {\r\n const { file, isCSV, isRaw } = args;\r\n let { columns } = args;\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<any[] | {\r\n items: any[];\r\n total: number;\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' || column.type === 'children-col') {\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 if (transform instanceof Promise) {\r\n obj[column.field] = await transform;\r\n } else {\r\n obj[column.field] = transform;\r\n }\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 (!file?.filePath) {\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 if (isRaw) {\r\n await this.exportService.exportExcelRaw({\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 }\r\n await this.exportService.exportByTemplate({\r\n filePath: file.filePath,\r\n fileName: file.fileName,\r\n columns,\r\n items\r\n });\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 onExport = async (args: { file: SdExportFile, columns: SdExportColumn[], isCSV: boolean, isRaw: boolean }) => {\r\n const { translate } = this.translateService;\r\n if (!args.isCSV && this.gridOption.export.max && this.total > this.gridOption.export.max) {\r\n args.isRaw = true;\r\n this.#onExport(args);\r\n // this.notifyService.confirm(translate(`Total rows reach limit, do you want to export CSV`)).then(() => {\r\n // args.isCSV = true;\r\n // this.#onExport(args);\r\n // });\r\n return;\r\n }\r\n this.#onExport(args);\r\n }\r\n\r\n onFilterChange = () => {\r\n this.#paginator.pageIndex = 0;\r\n this.reload(false);\r\n }\r\n\r\n onExpand = async (rowData: SdGridMaterialItem<T>) => {\r\n if (this.gridOption.subInformation?.always) {\r\n return;\r\n }\r\n if (rowData.isExpanding) {\r\n return;\r\n }\r\n if (rowData.isExpanded) {\r\n rowData.isExpanded = false;\r\n return;\r\n }\r\n const data = this.gridOption?.subInformation?.onExpand?.(rowData);\r\n if (!this.gridOption.subInformation?.multiple) {\r\n this.items.forEach(item => item.isExpanding = item.isExpanded = false);\r\n }\r\n if (data instanceof Promise) {\r\n rowData.isExpanding = true;\r\n data.then(res => {\r\n rowData.expandDetail = res;\r\n rowData.isExpanded = true;\r\n }).finally(() => rowData.isExpanding = false);\r\n } else {\r\n rowData.expandDetail = data;\r\n rowData.isExpanded = true;\r\n }\r\n }\r\n\r\n onSelect = (rowData: SdGridMaterialItem<T>) => {\r\n if (rowData?.sdGroup?.items?.length) {\r\n rowData?.sdGroup?.items.forEach(e => e.isSelected = rowData.isSelected);\r\n this.gridOption.selection?.onSelect?.(rowData, this.items.filter(e => e.isSelected));\r\n this.isSelectAll = this.items.every(e => e.isSelected);\r\n this.#updateSelectedItems();\r\n } else {\r\n if (this.gridOption.selection?.single) {\r\n this.items.filter(e => e !== rowData).forEach(e => e.isSelected = false);\r\n this.#updateSelectedItems();\r\n return;\r\n }\r\n this.gridOption.selection?.onSelect?.(rowData, this.items.filter(e => e.isSelected));\r\n this.isSelectAll = this.items.every(e => e.isSelected);\r\n this.#updateSelectedItems();\r\n }\r\n }\r\n\r\n onSelectAll = () => {\r\n this.items?.forEach(e => {\r\n if (e.selectable && (!this.gridOption?.selection?.actions?.length || e.actions?.length)) {\r\n e.isSelected = this.isSelectAll;\r\n }\r\n });\r\n this.gridOption.selection?.onSelectAll?.(this.items.filter(e => e.isSelected));\r\n this.#updateSelectedItems();\r\n }\r\n\r\n onClearSelection = (items?: SdGridMaterialItem<T>[]) => {\r\n items = items || this.items;\r\n this.isSelectAll = false;\r\n items?.forEach(e => e.isSelected = false);\r\n this.#updateSelectedItems();\r\n }\r\n\r\n #updateSelectedItems = () => {\r\n this.selectedItems = this.items.filter(item => item.isSelected)\r\n .map(item => {\r\n const {\r\n isSelected,\r\n isExpanded,\r\n isExpanding,\r\n expandDetail,\r\n editorErrorMessage,\r\n editorHandlerColumn,\r\n editorHandlerRow,\r\n editorStatus,\r\n originItem,\r\n sdId,\r\n sdVersion,\r\n // Giữ lại các trường thông tin cho selectable (action, groupedAction, sdGroup, selectable)\r\n ...result\r\n } = item;\r\n return result;\r\n }) as T[];\r\n this.ref.detectChanges();\r\n }\r\n\r\n clearFilter = () => {\r\n this.gridFilter?.onClearFilter();\r\n }\r\n\r\n setFilter = (args: {\r\n columnFilter: any,\r\n externalFilter: any,\r\n filterDef: any\r\n }) => {\r\n this.gridFilter?.setFilter(args);\r\n }\r\n\r\n onCreate = () => {\r\n const { type, editor, columns } = this.gridOption;\r\n if (!editor?.addable) {\r\n return;\r\n }\r\n const item: SdGridMaterialItem = {};\r\n // Gán giá trị mặc định\r\n columns.forEach(column => {\r\n if (column.type === 'values') {\r\n item[column.field] = '';\r\n } else if (column.type === 'bool') {\r\n item[column.field] = true;\r\n } else if (column.type === 'number') {\r\n item[column.field] = null;\r\n }\r\n });\r\n if (type === 'local') {\r\n editor.onAdd?.(item, this.#localItems);\r\n } else {\r\n editor.onAdd?.(item, this.items);\r\n }\r\n // Đưa item lên dòng đầu tiên nếu type khác popup\r\n if (editor.type !== 'popup') {\r\n if (editor.addToLast) {\r\n if (type === 'local') {\r\n this.#localItems = [...this.#localItems, item];\r\n }\r\n this.items = [...this.items, item];\r\n } else {\r\n if (type === 'local') {\r\n this.#localItems = [item, ...this.#localItems];\r\n }\r\n this.items = [item, ...this.items];\r\n }\r\n }\r\n item.editorStatus = 'create';\r\n item.editorHandlerRow = {\r\n temporary: { ...item }\r\n };\r\n }\r\n onUpdate = (item: SdItem) => {\r\n const { editor } = this.gridOption;\r\n item.editorStatus = 'update';\r\n item.editorHandlerRow = {\r\n ...item.editorHandlerRow,\r\n temporary: { ...item }\r\n };\r\n // this.generateEditorHanlder(item);\r\n if (editor.type === 'popup') {\r\n // Xử lý case popup\r\n // this.sdGridPopupEditor.open(item, columns, isModified);\r\n }\r\n this.ref.detectChanges();\r\n }\r\n onSave = async (item: SdGridMaterialItem<T>) => {\r\n if (item.editorHandlerRow.saving) {\r\n return;\r\n }\r\n const { editor } = this.gridOption;\r\n try {\r\n item.editorHandlerRow.saving = true;\r\n if (editor.validate) {\r\n const result = editor.validate(item, this.items.indexOf(item));\r\n if (result instanceof Promise) {\r\n const message = await result;\r\n if (message) {\r\n throw message;\r\n }\r\n } else {\r\n if (result) {\r\n throw result;\r\n }\r\n }\r\n }\r\n if (editor.onSave) {\r\n const result = editor.onSave(item);\r\n if (result instanceof Promise) {\r\n await result;\r\n }\r\n }\r\n\r\n if (item.editorStatus === 'create' && editor.type === 'popup') {\r\n if (this.gridOption.type === 'local') {\r\n this.items.splice(0, 0, item);\r\n }\r\n // this.viewItems.splice(0, 0, item);\r\n }\r\n\r\n item.editorStatus = undefined;\r\n // this.generateEditorHanlder(item);\r\n } catch (err) {\r\n this.notifyService.notify.warning(err);\r\n } finally {\r\n item.editorHandlerRow.saving = false;\r\n this.ref.detectChanges();\r\n }\r\n }\r\n onCancel = (item: SdGridMaterialItem<T>) => {\r\n const { editor } = this.gridOption;\r\n if (editor.type === 'inline') {\r\n if (this.gridOption.type === 'local') {\r\n const idx2 = this.#localItems.indexOf(item);\r\n this.#localItems.splice(idx2, 1);\r\n this.#localItems = [...this.#localItems];\r\n }\r\n const idx1 = this.items.indexOf(item);\r\n this.items.splice(idx1, 1);\r\n this.items = [...this.items];\r\n if (this.gridOption.type === 'local') {\r\n editor?.onCancel?.(item, this.#localItems);\r\n } else {\r\n editor?.onCancel?.(item, this.items);\r\n }\r\n this.ref.detectChanges();\r\n return;\r\n }\r\n if (editor.type === 'focus') {\r\n if (item.editorStatus === 'create') {\r\n if (this.gridOption.type === 'local') {\r\n const idx2 = this.#localItems.indexOf(item);\r\n this.#localItems.splice(idx2, 1);\r\n this.#localItems = [...this.#localItems];\r\n }\r\n const idx1 = this.items.indexOf(item);\r\n this.items.splice(idx1, 1);\r\n this.items = [...this.items];\r\n } else {\r\n Object.assign(item, item.editorHandlerRow.temporary);\r\n }\r\n }\r\n item.editorStatus = undefined;\r\n this.ref.detectChanges();\r\n }\r\n onRemove = async (item: SdGridMaterialItem<T>) => {\r\n const { editor } = this.gridOption;\r\n if (editor?.beforeRemove) {\r\n const beforeRemove = editor?.beforeRemove(item);\r\n if (beforeRemove instanceof Promise) {\r\n const result = await beforeRemove;\r\n if (!result) {\r\n return;\r\n }\r\n } else {\r\n if (!beforeRemove) {\r\n return;\r\n }\r\n }\r\n }\r\n if (editor.type === 'inline') {\r\n if (this.gridOption.type === 'local') {\r\n const idx2 = this.#localItems.indexOf(item);\r\n this.#localItems.splice(idx2, 1);\r\n this.#localItems = [...this.#localItems];\r\n }\r\n const idx1 = this.items.indexOf(item);\r\n this.items.splice(idx1, 1);\r\n this.items = [...this.items];\r\n if (this.gridOption.type === 'local') {\r\n editor?.onRemove?.(item, this.#localItems);\r\n } else {\r\n editor?.onRemove?.(item, this.items);\r\n }\r\n this.ref.detectChanges();\r\n return;\r\n }\r\n }\r\n\r\n add = (idx: number, item: T) => {\r\n if (this.items.length > idx) {\r\n this.items.splice(idx, 0, item);\r\n this.items = [...this.items];\r\n } else {\r\n this.items = [...this.items, item];\r\n }\r\n }\r\n\r\n update = (idx: number, item: T) => {\r\n if (this.items[idx]) {\r\n Object.assign(this.items[idx], item);\r\n this.items = [...this.items];\r\n }\r\n }\r\n\r\n remove = (idx: number) => {\r\n if (this.items[idx]) {\r\n this.items.splice(idx, 1);\r\n this.items = [...this.items];\r\n }\r\n }\r\n\r\n refreshItem = (idx: number) => {\r\n const item = this.items[idx];\r\n this.editorHandlerColumnPipe.transform(item.sdVersion, item, this.gridOption);\r\n }\r\n\r\n get editedItems(): (T & { editorErrorMessage: string })[] {\r\n return this.items.filter(item => {\r\n if (!item.originItem) {\r\n return true;\r\n }\r\n if (Object.keys(item.originItem).some(key => item.originItem[key] !== item[key])) {\r\n return true;\r\n }\r\n return false;\r\n }).map(item => {\r\n const {\r\n editorStatus,\r\n editorHandlerRow,\r\n editorHandlerColumn,\r\n editorErrorMessage,\r\n expandDetail,\r\n isExpanded,\r\n isExpanding,\r\n isSelected,\r\n originItem,\r\n sdId,\r\n sdVersion,\r\n selectable,\r\n actions,\r\n groupedActions,\r\n sdGroup,\r\n temporary,\r\n ...result } = item;\r\n return {\r\n ...result,\r\n editorErrorMessage\r\n } as any;\r\n });\r\n }\r\n\r\n get gridItems(): T[] {\r\n return this.items.map(item => {\r\n const {\r\n editorStatus,\r\n editorHandlerRow,\r\n editorHandlerColumn,\r\n expandDetail,\r\n isExpanded,\r\n isExpanding,\r\n isSelected,\r\n originItem,\r\n sdId,\r\n sdVersion,\r\n selectable,\r\n actions,\r\n groupedActions,\r\n sdGroup,\r\n temporary,\r\n ...result } = item;\r\n return result as T;\r\n });\r\n }\r\n detectChanges = () => this.ref.detectChanges();\r\n\r\n get isEditing() {\r\n return this.items.some(e => e.editorStatus !== undefined);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialCommand, SdGridMaterialCommandNormal } from '../models/grid-command.model';\r\n@Pipe({\r\n name: 'commandFilter'\r\n})\r\nexport class SdCommandFilterPipe implements PipeTransform {\r\n async transform(item: any, commands: SdGridMaterialCommand[]): Promise<SdGridMaterialCommand[]> {\r\n const results: SdGridMaterialCommand[] = [];\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: SdGridMaterialCommandNormal[] = [];\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 { SdGridMaterialCommand } from '../models/grid-command.model';\r\n@Pipe({\r\n name: 'commandDisable'\r\n})\r\nexport class SdCommandDisablePipe implements PipeTransform {\r\n transform(item: any, command: SdGridMaterialCommand): 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 { SdGridMaterialCommand } from '../models/grid-command.model';\r\n@Pipe({\r\n name: 'commandIcon'\r\n})\r\nexport class SdCommandIconPipe implements PipeTransform {\r\n transform(command: SdGridMaterialCommand, 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 { SdGridMaterialCommand } from '../models/grid-command.model';\r\n@Pipe({\r\n name: 'commandTitle'\r\n})\r\nexport class SdCommandTitlePipe implements PipeTransform {\r\n transform(command: SdGridMaterialCommand, 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 { SdGridMaterialColumn } from '../models/grid-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: SdGridMaterialColumn): 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 { SdGridMaterialColumn } from '../../models/grid-column.model';\r\nimport { SdGridMaterialOption } from '../../models/grid-option.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: SdGridMaterialColumn;\r\n @Input() item: any;\r\n @Input() gridOption: SdGridMaterialOption;\r\n constructor(\r\n ) { }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialColumn } from '../models/grid-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: SdGridMaterialColumn, 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 { SdGridMaterialExternalFilter } from '../models/grid-filter.model';\r\n@Pipe({\r\n name: 'sdFilterExternal'\r\n})\r\nexport class SdFilterExternalPipe implements PipeTransform {\r\n transform(externalFilters: SdGridMaterialExternalFilter[], field?: string): SdGridMaterialExternalFilter[] {\r\n const results: SdGridMaterialExternalFilter[] = [];\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 { SdGridMaterialColumn } from '../models/grid-column.model';\r\n@Pipe({\r\n name: 'sdFilterColumn'\r\n})\r\nexport class SdFilterColumnPipe implements PipeTransform {\r\n transform(columns: SdGridMaterialColumn[], field?: string): SdGridMaterialColumn[] {\r\n const results: SdGridMaterialColumn[] = [];\r\n if (!columns) {\r\n return results;\r\n }\r\n for (const column of columns) {\r\n if (column.type === 'image') {\r\n continue;\r\n }\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 { Component, Input } from '@angular/core';\r\nimport { SdGridMaterialColumnChildren } from '../../models/grid-column.model';\r\n\r\n@Component({\r\n selector: 'sd-desktop-cell-children-view',\r\n templateUrl: './desktop-cell-children-view.component.html',\r\n styleUrls: ['./desktop-cell-children-view.component.scss']\r\n})\r\nexport class SdDesktopCellChildrenView {\r\n @Input() key: string;\r\n @Input() column: SdGridMaterialColumnChildren;\r\n @Input() item: any;\r\n constructor(\r\n ) { }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\nimport { SdGridMaterialColumn } from '../models/grid-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: SdGridMaterialColumn[], item: any): SdGridMaterialColumn[] {\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 { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialChildColumn } from '../models/grid-column.model';\r\n@Pipe({\r\n name: 'columnTitle'\r\n})\r\nexport class SdColumnTitlePipe implements PipeTransform {\r\n async transform(item: any, column: SdGridMaterialChildColumn): Promise<string> {\r\n if (!column?.title) {\r\n return '';\r\n }\r\n const result = column?.dynamicTitle?.(item);\r\n if (result instanceof Promise) {\r\n return (await result) || column?.title;\r\n }\r\n return result || column?.title;\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\nimport { SdGridMaterialCommand } from '../../models/grid-command.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: any;\r\n @Input() commands: SdGridMaterialCommand[] = [];\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 { SdGridMaterialColumn } from '../models/grid-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: SdGridMaterialColumn): {\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 { SdGridMaterialOption } from '../models/grid-option.model';\r\nimport { SdGridConfiguration, SdGridConfigurationResult } from '../models/grid-config.model';\r\nimport { SdGridConfigurationService } from '../services/grid-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: SdGridConfigurationService) { }\r\n transform(configuration: SdGridConfiguration, gridOption: SdGridMaterialOption, sdSubInformation: SdMaterialSubInformationDefDirective): SdGridConfigurationResult {\r\n return this.gridConfigurationService.generateConfigurationResult(configuration, gridOption, sdSubInformation);\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 { SdGridMaterialOption } from '../../models/grid-option.model';\r\nimport { SdGridConfigurationResult, SdGridConfiguration, SdGridConfigurationCache, SdColumnConfiguration } from '../../models/grid-config.model';\r\nimport { SdGridConfigurationService } from '../../services/grid-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 { SdGridMaterialColumn } from '../../models/grid-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: SdGridMaterialOption;\r\n @Input() key: string;\r\n @ViewChild('modal') modal: SdModal;\r\n @ViewChild('table') table: MatTable<SdGridMaterialColumn>;\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: SdGridConfigurationService) {\r\n }\r\n\r\n ngOnInit() {\r\n }\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 isGeneratedColumn: true,\r\n generatedColumns: this.configuration.columns.filter(e => this.selected[e.origin?.field]).map(e => e.origin?.field)\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<SdGridMaterialColumn[]>) {\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 { SdGridMaterialColumn } from '../models/grid-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: SdGridMaterialColumn): 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 { SdGridMaterialAction, SdGridMaterialActionNormal, SdGridMaterialActionSimple } from '../models/grid-action.model';\r\nimport { SdItem } from '../models/grid.model';\r\n@Pipe({\r\n name: 'selectionActionFilter'\r\n})\r\nexport class SdSelectionActionFilterPipe implements PipeTransform {\r\n #convert = (action: SdGridMaterialAction): SdGridMaterialActionSimple => {\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: SdItem[], actions: SdGridMaterialAction[]): SdGridMaterialActionSimple[] => {\r\n const results: SdGridMaterialAction[] = [];\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: SdGridMaterialActionNormal[] = [];\r\n for (const childAction of action.children) {\r\n const key = hash(childAction);\r\n if (selectedItems.every(e => e.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.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 { SdGridMaterialSelection } from '../models/grid-selection.model';\r\nimport { SdItem } from '../models/grid.model';\r\n@Pipe({\r\n name: 'selectionDisable'\r\n})\r\nexport class SdSelectionDisablePipe implements PipeTransform {\r\n transform = (selectedItems: SdItem[], rowData: SdItem, selection: SdGridMaterialSelection): boolean => {\r\n const { disabled, actions } = selection;\r\n if (!actions?.length) {\r\n if (!disabled) {\r\n rowData.selectable = true;\r\n return false;\r\n }\r\n rowData.selectable = !disabled(rowData, selectedItems);\r\n return !rowData.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.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.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.actions.includes(hash(childAction))) {\r\n return false;\r\n }\r\n }\r\n } else {\r\n if(rowData.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 { SdGridMaterialSelection } from '../models/grid-selection.model';\r\nimport { SdItem } from '../models/grid.model';\r\n@Pipe({\r\n name: 'selectionVisibleSelectAll'\r\n})\r\nexport class SdSelectionVisibleSelectAllPipe implements PipeTransform {\r\n transform = async (items: SdItem[], selection: SdGridMaterialSelection): 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.actions?.length);\r\n if (first) {\r\n for (const action of first.actions) {\r\n if (items.filter(t => t.actions?.length).every(e => e.actions.includes(action))) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n }\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 { SdGridMaterialConfigOption } from '../../models/grid-config.model';\r\nimport { SdGeneratedColumn } from './generated-column.model';\r\nimport { SdSettingServer } from '@sd-angular/core/setting';\r\n\r\n@Injectable()\r\nexport class SdGeneratedColumnService {\r\n #cache: {\r\n [key: string]: SdSetting<SdGeneratedColumn[]> | SdSettingServer<SdGeneratedColumn[]>\r\n } = {};\r\n constructor(\r\n private settingService: SdSettingService) {\r\n }\r\n\r\n load = (configuration: SdGridMaterialConfigOption) => {\r\n if (!configuration?.key) {\r\n return null;\r\n }\r\n const key = hash({\r\n prefix: '260f5e94-5865-4425-8ced-b9c083c390dd',\r\n key: configuration.key\r\n });\r\n if(!this.#cache[key]) {\r\n if(configuration?.storage === 'server') {\r\n this.#cache[key] = this.settingService.createServer<SdGeneratedColumn[]>(key, {\r\n args: configuration?.args,\r\n default: []\r\n });\r\n } else {\r\n this.#cache[key] = this.settingService.create<SdGeneratedColumn[]>(key, {\r\n type: configuration?.storage,\r\n args: configuration?.args,\r\n default: []\r\n });\r\n }\r\n }\r\n return this.#cache[key];\r\n }\r\n\r\n loadSystem = (configuration: SdGridMaterialConfigOption) => {\r\n if (!configuration?.key) {\r\n return null;\r\n }\r\n if (!configuration?.systemColumn) {\r\n return null;\r\n }\r\n const key = hash({\r\n prefix: '8b8050ca-1f44-4860-bad3-20e646c0d68f',\r\n key: configuration.key\r\n });\r\n if(!this.#cache[key]) {\r\n if(configuration?.storage === 'server') {\r\n this.#cache[key] = this.settingService.createServer<SdGeneratedColumn[]>(key, {\r\n args: configuration?.systemColumn?.args,\r\n default: []\r\n });\r\n } else {\r\n this.#cache[key] = this.settingService.create<SdGeneratedColumn[]>(key, {\r\n type: configuration?.storage,\r\n args: configuration?.systemColumn?.args,\r\n default: []\r\n });\r\n }\r\n }\r\n return this.#cache[key];\r\n }\r\n}\r\n","import { Component, OnInit, ViewChild, ChangeDetectorRef, Input, ChangeDetectionStrategy, OnDestroy } from '@angular/core';\r\nimport { SdNotifyService } from '@sd-angular/core/notify';\r\nimport { SdTranslateService } from '@sd-angular/core/translate';\r\nimport { SdGridMaterialOption } from '../../models/grid-option.model';\r\nimport { SdGridConfigurationService } from '../../services/grid-configuration.service';\r\nimport * as uuid from 'uuid';\r\nimport { SdGeneratedColumnService } from '../../services/generated-column/generated-column.service';\r\nimport { Subscription } from 'rxjs';\r\nimport { SdGeneratedColumn } from '../../services/generated-column/generated-column.model';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { SdSideDrawer } from '@sd-angular/core/side-drawer';\r\nimport { SdGridMaterialColumn } from '../../models/grid-column.model';\r\n\r\n@Component({\r\n selector: 'sd-dynamic-column',\r\n templateUrl: './dynamic-column.component.html',\r\n styleUrls: ['./dynamic-column.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdDynamicColumn implements OnInit, OnDestroy {\r\n @ViewChild(SdSideDrawer) sideDrawer: SdSideDrawer;\r\n @Input() gridOption: SdGridMaterialOption;\r\n systemColumns: SdGeneratedColumn[];\r\n columns: SdGeneratedColumn[];\r\n #subscription = new Subscription();\r\n columnTypes = ['string', 'number', 'bool', 'date', 'datetime', 'time', 'values', 'children', 'children-col'];\r\n form = new FormGroup({});\r\n isDetail = false;\r\n detail: SdGeneratedColumn;\r\n originColumns: SdGridMaterialColumn[] = [];\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n private generatedColumnService: SdGeneratedColumnService,\r\n private notifyService: SdNotifyService,\r\n private translateService: SdTranslateService,\r\n private gridConfigurationService: SdGridConfigurationService) {\r\n }\r\n\r\n ngOnInit() {\r\n const systemSetting = this.generatedColumnService.loadSystem(this.gridOption.config);\r\n const setting = this.generatedColumnService.load(this.gridOption?.config);\r\n if (systemSetting) {\r\n this.#subscription?.add(systemSetting.observer.subscribe(columns => {\r\n this.systemColumns = columns;\r\n }));\r\n }\r\n if (setting) {\r\n this.#subscription?.add(setting.observer.subscribe(columns => {\r\n this.columns = columns;\r\n }));\r\n }\r\n this.originColumns = this.gridOption.columns.filter(e => e.type !== 'children' && e.type !== 'children-col');\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.#subscription.unsubscribe();\r\n }\r\n\r\n onDetail = (column?: SdGeneratedColumn) => {\r\n this.detail = column || {\r\n field: uuid.v4(),\r\n title: '',\r\n type: 'string',\r\n isSystem: false,\r\n useTemplate: false\r\n };\r\n this.form.markAsUntouched();\r\n this.form.markAsPristine();\r\n this.isDetail = true;\r\n }\r\n\r\n onSave = () => {\r\n const systemSetting = this.generatedColumnService.loadSystem(this.gridOption.config);\r\n const setting = this.generatedColumnService.load(this.gridOption?.config);\r\n if (this.detail.isSystem) {\r\n if (!this.detail.id) {\r\n systemSetting.set([...this.systemColumns, {\r\n ...this.detail,\r\n id: uuid.v4()\r\n }]);\r\n } else {\r\n systemSetting.set([...this.systemColumns]);\r\n }\r\n } else {\r\n if (!this.detail.id) {\r\n setting.set([...this.columns, {\r\n ...this.detail,\r\n id: uuid.v4()\r\n }]);\r\n } else {\r\n setting.set([...this.columns]);\r\n }\r\n }\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 { SdGridMaterialColumn } from '../../models/grid-column.model';\r\nimport { SdGridMaterialOption } from '../../models/grid-option.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: SdGridMaterialColumn;\r\n @Input() item: any;\r\n @Input() gridOption: SdGridMaterialOption;\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 { ChangeDetectionStrategy, Component, Input, QueryList } from '@angular/core';\r\nimport { SdGridMaterialColumn, SdGridMaterialColumnValues } from '../../models/grid-column.model';\r\n\r\n@Component({\r\n selector: 'sd-desktop-cell-editor',\r\n templateUrl: './desktop-cell-editor.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdDesktopCellEditor {\r\n @Input() sdId: string;\r\n @Input() column: SdGridMaterialColumn;\r\n @Input() item: any;\r\n constructor(\r\n ) { }\r\n\r\n onChange = (selected: any) => {\r\n if (this.column.type === 'children' || this.column.type === 'children-col') {\r\n return;\r\n }\r\n this.column?.editor?.change?.(this.item, selected);\r\n }\r\n\r\n editorOnAdd = () => {\r\n if (this.column.type === 'children' || this.column.type === 'children-col') {\r\n return;\r\n }\r\n if (this.column.type === 'values') {\r\n this.column.editor?.add?.(this.item);\r\n }\r\n }\r\n\r\n editorOnEdit = (option: any) => {\r\n if (this.column.type === 'children' || this.column.type === 'children-col') {\r\n return;\r\n }\r\n if (this.column.type === 'values') {\r\n this.column.editor?.edit?.(option, this.item);\r\n }\r\n }\r\n\r\n editorOnDelete = (option: any) => {\r\n if (this.column.type === 'children' || this.column.type === 'children-col') {\r\n return;\r\n }\r\n if (this.column.type === 'values') {\r\n this.column.editor?.delete?.(option, this.item);\r\n }\r\n }\r\n}\r\n","import { NgZone, Pipe, PipeTransform } from '@angular/core';\r\nimport { CalculateSdId } from '../functions/calculate-sd-id';\r\nimport { SdGridMaterialColumn } from '../models/grid-column.model';\r\nimport { SdGridMaterialOption } from '../models/grid-option.model';\r\nimport { EditorHandlerRow, SdItem } from '../models/grid.model';\r\n@Pipe({\r\n name: 'sdEditorHandlerRow'\r\n})\r\nexport class SdEditorHandlerRowPipe implements PipeTransform {\r\n constructor(private zone: NgZone) { }\r\n #visible = (col: SdGridMaterialColumn, item: SdItem) => {\r\n if (col.type === 'children' || col.type === 'children-col') {\r\n return false;\r\n }\r\n // Kiểm tra xem có bị disabled hay không?\r\n if (col.editor) {\r\n const isDisabled = typeof (col.editor.disabled) === 'function' ? col.editor.disabled(item) : col.editor.disabled;\r\n if (isDisabled) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n };\r\n transform(status: 'create' | 'update', item: SdItem, gridOption: SdGridMaterialOption): EditorHandlerRow {\r\n const { editor } = gridOption;\r\n if (!editor) {\r\n return null;\r\n }\r\n let isDisabled = false;\r\n if (typeof (editor?.disabled) === 'function') {\r\n isDisabled = editor.disabled(item);\r\n } else {\r\n isDisabled = editor?.disabled;\r\n }\r\n if (editor.type === 'inline') {\r\n const removable = editor.removable;\r\n item.editorHandlerRow = {\r\n ...item.editorHandlerRow,\r\n visible: !isDisabled,\r\n editable: false,\r\n removable: status !== 'create' && (typeof (removable) === 'function' ? removable(item) : removable),\r\n savable: false,\r\n cancelable: !isDisabled && status === 'create'\r\n }\r\n } else if (editor.type === 'focus') {\r\n if (isDisabled) {\r\n return null;\r\n }\r\n item.editorHandlerRow = {\r\n ...item.editorHandlerRow,\r\n visible: !!status,\r\n editable: !status,\r\n removable: false,\r\n savable: !!status,\r\n cancelable: !!status\r\n }\r\n } else if (editor.type === 'popup') {\r\n if (isDisabled) {\r\n return null;\r\n }\r\n item.editorHandlerRow = {\r\n ...item.editorHandlerRow,\r\n visible: false,\r\n editable: !status,\r\n removable: false,\r\n savable: false,\r\n cancelable: false\r\n }\r\n }\r\n item.editorHandlerColumn = item.editorHandlerColumn || {};\r\n const { columns } = gridOption;\r\n for (const col of columns) {\r\n if (col.type === 'children-col') {\r\n for (const childCol of col.children) {\r\n item.editorHandlerColumn[childCol.field] = {\r\n ...item.editorHandlerColumn[childCol.field],\r\n visible: this.#visible(childCol, item)\r\n }\r\n }\r\n } else {\r\n item.editorHandlerColumn[col.field] = {\r\n ...item.editorHandlerColumn[col.field],\r\n visible: this.#visible(col, item)\r\n }\r\n }\r\n }\r\n this.zone.run(() => {\r\n item.sdId = CalculateSdId(item);\r\n });\r\n return item.editorHandlerRow;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialOption } from '../models/grid-option.model';\r\nimport { SdItem } from '../models/grid.model';\r\n@Pipe({\r\n name: 'sdEditorValidate'\r\n})\r\nexport class SdEditorValidatePipe implements PipeTransform {\r\n #previous: Date;\r\n #delay = 200; // Sau khoảng thời gian delay nếu không có thay đổi thì thì mới bắt đầu thực hiện validate\r\n async transform(sdId: string, item: SdItem, items: SdItem[], gridOption: SdGridMaterialOption): Promise<string> {\r\n const { editor } = gridOption;\r\n if (!editor.validate) {\r\n item.editorErrorMessage = null;\r\n return;\r\n }\r\n if(editor.type === 'popup') {\r\n item.editorErrorMessage = null;\r\n return;\r\n }\r\n if (editor.type === 'focus' && !item.editorStatus) {\r\n item.editorErrorMessage = null;\r\n return;\r\n }\r\n this.#previous = new Date();\r\n await new Promise(resolve => setTimeout(resolve, this.#delay));\r\n const now = new Date();\r\n const dif = now.getTime() - this.#previous.getTime();\r\n if (dif < this.#delay) {\r\n return;\r\n }\r\n const result = editor.validate(item, items?.indexOf(item));\r\n if (result instanceof Promise) {\r\n item.editorErrorMessage = await result;\r\n return;\r\n } else {\r\n item.editorErrorMessage = result;\r\n return;\r\n }\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SdGridMaterialOption } from '../models/grid-option.model';\r\n@Pipe({\r\n name: 'sdStyleRowCss'\r\n})\r\nexport class SdStyleRowCss implements PipeTransform {\r\n transform(item: any, gridOption: SdGridMaterialOption) {\r\n return gridOption?.style?.rowCss?.(item) || {};\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\nimport { SdGridMaterialOption } from '../../models/grid-option.model';\r\n\r\n@Component({\r\n selector: 'sd-desktop-editor-validation',\r\n templateUrl: './desktop-editor-validation.component.html',\r\n styleUrls: ['./desktop-editor-validation.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdDesktopEditorValidation {\r\n @Input() sdId: string;\r\n @Input() item: any;\r\n @Input() items: any[];\r\n @Input() gridOption: SdGridMaterialOption;\r\n constructor(\r\n ) { }\r\n}\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output, QueryList } from '@angular/core';\r\nimport { SdGridMaterialColumn } from '../../models/grid-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 @Input() value: any;\r\n @Input() columnFilter: {\r\n [key: string]: any\r\n } = {};\r\n @Input() column: SdGridMaterialColumn;\r\n @Output() filterChange = new EventEmitter();\r\n constructor(\r\n ) { }\r\n\r\n ngOnInit() {\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 onFilterChange = () => {\r\n this.filterChange.emit();\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { SdGridMaterialSelection } from '../models/grid-selection.model';\r\nimport { SdItem } from '../models/grid.model';\r\n\r\n@Pipe({\r\n name: 'selectionVisible'\r\n})\r\nexport class SdSelectionVisiblePipe implements PipeTransform {\r\n transform = (rowData: SdItem, selection: SdGridMaterialSelection): boolean => {\r\n const { actions } = selection;\r\n const groupedActions: string[] = [];\r\n rowData.actions = rowData.actions || [];\r\n if (!actions?.length) {\r\n rowData.selectable = true;\r\n return rowData.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.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.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.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.actions.push(key);\r\n if (isGrouped) {\r\n groupedActions.push(key);\r\n }\r\n }\r\n } else if (!hidden) {\r\n rowData.actions.push(key);\r\n if (isGrouped) {\r\n groupedActions.push(key);\r\n }\r\n }\r\n }\r\n }\r\n rowData.selectable = !!rowData.actions.length;\r\n if (!rowData.selectable || !groupedActions.length || rowData?.sdGroup?.items?.length) {\r\n return rowData.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.actions.some(action => !groupedActions.includes(action));\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { SdGridMaterialOption } from '../../models/grid-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: SdGridMaterialOption;\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 { SdGridMaterialColumn } from '../models/grid-column.model';\r\nimport { SdGridMaterialOption } from '../models/grid-option.model';\r\nimport { SdColumnValuesPipe } from './column-values.pipe';\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 rowData: any,\r\n column: SdGridMaterialColumn,\r\n gridOption: SdGridMaterialOption,\r\n key: string): Promise<SdCellView> {\r\n const { displayOnEmpty } = gridOption;\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 { SdGridMaterialOption } from '../models/grid-option.model';\r\nimport { SdGridMaterialItem } from '../models/grid.model';\r\n@Pipe({\r\n name: 'sdGroup'\r\n})\r\nexport class SdGroupPipe implements PipeTransform {\r\n transform(items: any[], gridOption: SdGridMaterialOption): SdGridMaterialItem[] {\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]: SdGridMaterialItem[]\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: SdGridMaterialItem[] = [];\r\n for (const key of Object.keys(groupItem)) {\r\n results.push({\r\n sdGroup: {\r\n items: groupItem[key],\r\n htmlTemplate: htmlTemplate(groupItem[key])\r\n }\r\n });\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 { SdGridMaterial } from './grid-material.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 { SdGridFilterService } from './services/grid-filter.service';\r\nimport { SdDesktopCellChildrenView } from './components/desktop-cell-children-view/desktop-cell-children-view.component';\r\nimport { SdColumnChildrenFilterPipe } from './pipes/column-children-filter.pipe';\r\nimport { SdColumnTitlePipe } from './pipes/column-title.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 { SdPopupExport } from './components/popup-export/popup-export.component';\r\nimport { SdPopupGridConfiguration } from './components/popup-grid-configuration/popup-grid-configuration.component';\r\nimport { SdGridConfigurationService } from './services/grid-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 { SdDynamicColumn } from './components/dynamic-column/dynamic-column.component';\r\nimport { SdGeneratedColumnService } from './services/generated-column/generated-column.service';\r\nimport { SdDesktopCell } from './components/desktop-cell/desktop-cell.component';\r\nimport { SdDesktopCellEditor } from './components/desktop-cell-editor/desktop-cell-editor.component';\r\nimport { SdEditorHandlerRowPipe } from './pipes/editor-handler-row.pipe';\r\nimport { SdEditorHandlerColumnPipe } from './pipes/editor-handler-column.pipe';\r\nimport { SdEditorValidatePipe } from './pipes/editor-validate.pipe';\r\nimport { SdStyleRowCss } from './pipes/style-row-css.pipe';\r\nimport { SdDesktopEditorValidation } from './components/desktop-editor-validation/desktop-editor-validation.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 SdDesktopCellEditor,\r\n SdDesktopEditorValidation,\r\n SdDesktopCellView,\r\n SdDesktopCellChildrenView,\r\n SdDesktopCommand,\r\n SdColumnInlineFilter,\r\n SdGridMaterial,\r\n\r\n SdMaterialFooterDefDirective,\r\n SdMaterialCellDefDirective,\r\n SdMaterialFilterDefDirective,\r\n SdMaterialSubInformationDefDirective,\r\n SdMaterialEmptyDataDefDirective,\r\n SdPopupExport,\r\n SdPopupGridConfiguration,\r\n SdGridFilter,\r\n SdPopupFilter,\r\n SdDynamicColumn,\r\n\r\n // Pipes\r\n SdGridConfigurationResultPipe,\r\n SdColumnChildrenFilterPipe,\r\n SdColumnTitlePipe,\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 SdEditorHandlerRowPipe,\r\n SdEditorHandlerColumnPipe,\r\n SdEditorValidatePipe,\r\n SdStyleRowCss,\r\n SdCellViewPipe,\r\n SdGroupPipe\r\n ],\r\n exports: [\r\n SdGridMaterial,\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 SdGridFilterService,\r\n SdGridConfigurationService,\r\n SdGeneratedColumnService,\r\n SdColumnValuesPipe,\r\n SdEditorHandlerColumnPipe,\r\n {\r\n provide: MatPaginatorIntl, useClass: MatPaginatorIntlCro\r\n }\r\n ]\r\n})\r\nexport class SdGridMaterialModule {\r\n}\r\n"]}