@sd-angular/core 1.3.126 → 1.3.128

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 (552) 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-chip.umd.js +4 -2
  52. package/bundles/sd-angular-core-chip.umd.js.map +1 -1
  53. package/bundles/sd-angular-core-chip.umd.min.js +1 -1
  54. package/bundles/sd-angular-core-chip.umd.min.js.map +1 -1
  55. package/bundles/sd-angular-core-pdf.umd.js +35 -18
  56. package/bundles/sd-angular-core-pdf.umd.js.map +1 -1
  57. package/bundles/sd-angular-core-pdf.umd.min.js +2 -2
  58. package/bundles/sd-angular-core-pdf.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 +5 -3
  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/others/detectIncognito.js +1 -1
  126. package/esm2015/common/src/lib/services/browser.service.js +1 -1
  127. package/esm2015/common/src/lib/typings/array.extension.js +1 -1
  128. package/esm2015/common/src/lib/typings/date.extension.js +1 -1
  129. package/esm2015/common/src/lib/typings/index.js +1 -1
  130. package/esm2015/common/src/lib/typings/number.extension.js +1 -1
  131. package/esm2015/common/src/lib/typings/string.extension.js +1 -1
  132. package/esm2015/common/src/lib/typings/utility.extension.js +1 -1
  133. package/esm2015/common/src/public-api.js +1 -1
  134. package/esm2015/confirm/index.js +1 -1
  135. package/esm2015/confirm/sd-angular-core-confirm.js +1 -1
  136. package/esm2015/confirm/src/lib/components/dialog-confirm/dialog-confirm.component.js +1 -1
  137. package/esm2015/confirm/src/lib/confirm.module.js +1 -1
  138. package/esm2015/confirm/src/lib/confirm.service.js +1 -1
  139. package/esm2015/confirm/src/public-api.js +1 -1
  140. package/esm2015/date-month/index.js +1 -1
  141. package/esm2015/date-month/sd-angular-core-date-month.js +1 -1
  142. package/esm2015/date-month/src/lib/date-month.component.js +1 -1
  143. package/esm2015/date-month/src/lib/date-month.module.js +1 -1
  144. package/esm2015/date-month/src/public-api.js +1 -1
  145. package/esm2015/date-range/index.js +1 -1
  146. package/esm2015/date-range/sd-angular-core-date-range.js +1 -1
  147. package/esm2015/date-range/src/lib/date-range.component.js +1 -1
  148. package/esm2015/date-range/src/lib/date-range.module.js +1 -1
  149. package/esm2015/date-range/src/public-api.js +1 -1
  150. package/esm2015/date-time/index.js +1 -1
  151. package/esm2015/date-time/sd-angular-core-date-time.js +1 -1
  152. package/esm2015/date-time/src/lib/date-time.component.js +1 -1
  153. package/esm2015/date-time/src/lib/date-time.module.js +1 -1
  154. package/esm2015/date-time/src/public-api.js +1 -1
  155. package/esm2015/db/index.js +1 -1
  156. package/esm2015/db/sd-angular-core-db.js +1 -1
  157. package/esm2015/db/src/lib/db.model.js +1 -1
  158. package/esm2015/db/src/lib/db.service.js +1 -1
  159. package/esm2015/db/src/public-api.js +1 -1
  160. package/esm2015/dynamic-report/index.js +1 -1
  161. package/esm2015/dynamic-report/sd-angular-core-dynamic-report.js +1 -1
  162. package/esm2015/dynamic-report/src/lib/dynamic-report.component.js +1 -1
  163. package/esm2015/dynamic-report/src/lib/dynamic-report.module.js +1 -1
  164. package/esm2015/dynamic-report/src/public-api.js +1 -1
  165. package/esm2015/editor/index.js +1 -1
  166. package/esm2015/editor/sd-angular-core-editor.js +1 -1
  167. package/esm2015/editor/src/lib/constant.js +1 -1
  168. package/esm2015/editor/src/lib/editor.component.js +1 -1
  169. package/esm2015/editor/src/lib/editor.model.js +1 -1
  170. package/esm2015/editor/src/lib/editor.module.js +1 -1
  171. package/esm2015/editor/src/public-api.js +1 -1
  172. package/esm2015/export/index.js +1 -1
  173. package/esm2015/export/sd-angular-core-export.js +1 -1
  174. package/esm2015/export/src/lib/excel.model.js +1 -1
  175. package/esm2015/export/src/lib/export.model.js +1 -1
  176. package/esm2015/export/src/lib/export.service.js +1 -1
  177. package/esm2015/export/src/public-api.js +1 -1
  178. package/esm2015/filter/index.js +1 -1
  179. package/esm2015/filter/sd-angular-core-filter.js +1 -1
  180. package/esm2015/filter/src/lib/directives/sd-filter-def.directive.js +1 -1
  181. package/esm2015/filter/src/lib/filter.component.js +1 -1
  182. package/esm2015/filter/src/lib/filter.model.js +1 -1
  183. package/esm2015/filter/src/lib/filter.module.js +1 -1
  184. package/esm2015/filter/src/lib/filter.service.js +1 -1
  185. package/esm2015/filter/src/lib/pipes/values-local.pipe.js +1 -1
  186. package/esm2015/filter/src/lib/pipes/values-server.pipe.js +1 -1
  187. package/esm2015/filter/src/public-api.js +1 -1
  188. package/esm2015/form/index.js +1 -1
  189. package/esm2015/form/sd-angular-core-form.js +1 -1
  190. package/esm2015/form/src/lib/form.module.js +1 -1
  191. package/esm2015/form/src/public-api.js +1 -1
  192. package/esm2015/grid/index.js +1 -1
  193. package/esm2015/grid/sd-angular-core-grid.js +1 -1
  194. package/esm2015/grid/src/lib/components/grid-config/grid-config.component.js +1 -1
  195. package/esm2015/grid/src/lib/components/grid-config/grid-config.model.js +1 -1
  196. package/esm2015/grid/src/lib/components/grid-desktop-column-children-view/grid-desktop-column-children-view.component.js +1 -1
  197. package/esm2015/grid/src/lib/components/grid-desktop-column-edit/grid-desktop-column-edit.component.js +1 -1
  198. package/esm2015/grid/src/lib/components/grid-desktop-column-view/grid-desktop-column-view.component.js +1 -1
  199. package/esm2015/grid/src/lib/components/grid-desktop-inline-filter/grid-desktop-inline-filter.component.js +1 -1
  200. package/esm2015/grid/src/lib/components/grid-import-excel/grid-import-excel.component.js +1 -1
  201. package/esm2015/grid/src/lib/components/grid-mobile-item-view/grid-mobile-item-view.component.js +1 -1
  202. package/esm2015/grid/src/lib/components/grid-popup-editor/grid-popup-editor.component.js +1 -1
  203. package/esm2015/grid/src/lib/components/grid-popup-export-excel/grid-popup-export-excel.component.js +1 -1
  204. package/esm2015/grid/src/lib/components/grid-popup-export-excel/grid-popup-export-excel.model.js +1 -1
  205. package/esm2015/grid/src/lib/components/grid-popup-filter/grid-popup-filter.component.js +1 -1
  206. package/esm2015/grid/src/lib/components/grid-popup-filter/grid-popup-filter.model.js +1 -1
  207. package/esm2015/grid/src/lib/components/grid-popup-quick-filter-detail/grid-popup-quick-filter-detail.component.js +1 -1
  208. package/esm2015/grid/src/lib/components/grid-sub-information/grid-sub-information.component.js +1 -1
  209. package/esm2015/grid/src/lib/directives/cell-def.directive.js +1 -1
  210. package/esm2015/grid/src/lib/directives/cell-editor-def.directive.js +1 -1
  211. package/esm2015/grid/src/lib/directives/cell-footer-def.directive.js +1 -1
  212. package/esm2015/grid/src/lib/directives/sub-information-header-def.directive.js +1 -1
  213. package/esm2015/grid/src/lib/grid.component.js +1 -1
  214. package/esm2015/grid/src/lib/grid.model.js +1 -1
  215. package/esm2015/grid/src/lib/grid.module.js +1 -1
  216. package/esm2015/grid/src/lib/models/filter-info.model.js +1 -1
  217. package/esm2015/grid/src/lib/models/grid-configuration.model.js +1 -1
  218. package/esm2015/grid/src/lib/models/handler-dotnet.js +1 -1
  219. package/esm2015/grid/src/lib/models/handler-local.js +1 -1
  220. package/esm2015/grid/src/lib/models/handler.js +1 -1
  221. package/esm2015/grid/src/lib/pipes/cell-desktop-class-name.pipe.js +1 -1
  222. package/esm2015/grid/src/lib/pipes/cell-mobile-class-name.pipe.js +1 -1
  223. package/esm2015/grid/src/lib/pipes/column-command-filter.pipe.js +1 -1
  224. package/esm2015/grid/src/lib/pipes/column-html-template.pipe.js +1 -1
  225. package/esm2015/grid/src/lib/pipes/column-title.pipe.js +1 -1
  226. package/esm2015/grid/src/lib/pipes/column-values.pipe.js +1 -1
  227. package/esm2015/grid/src/lib/pipes/command-disabled.pipe.js +1 -1
  228. package/esm2015/grid/src/lib/pipes/command-filter.pipe.js +1 -1
  229. package/esm2015/grid/src/lib/pipes/command-hidden.pipe.js +1 -1
  230. package/esm2015/grid/src/lib/pipes/command-icon.pipe.js +1 -1
  231. package/esm2015/grid/src/lib/pipes/command-title.pipe.js +1 -1
  232. package/esm2015/grid/src/lib/pipes/dynamic-items.pipe.js +1 -1
  233. package/esm2015/grid/src/lib/pipes/editor-dynamic-item.pipe.js +1 -1
  234. package/esm2015/grid/src/lib/pipes/editor-handler.pipe.js +1 -1
  235. package/esm2015/grid/src/lib/pipes/editor-popup-visible.pipe.js +1 -1
  236. package/esm2015/grid/src/lib/pipes/editor-sub-information-handler.pipe.js +1 -1
  237. package/esm2015/grid/src/lib/pipes/editor-validate.pipe.js +1 -1
  238. package/esm2015/grid/src/lib/pipes/filter-mobile.pipe.js +1 -1
  239. package/esm2015/grid/src/lib/pipes/mobile-command-filter.js +1 -1
  240. package/esm2015/grid/src/lib/pipes/mobile-view-html-template.pipe.js +1 -1
  241. package/esm2015/grid/src/lib/pipes/value-transform.pipe.js +1 -1
  242. package/esm2015/grid/src/public-api.js +1 -1
  243. package/esm2015/grid-material/index.js +1 -1
  244. package/esm2015/grid-material/sd-angular-core-grid-material.js +1 -1
  245. package/esm2015/grid-material/src/lib/components/column-inline-filter/column-inline-filter.component.js +1 -1
  246. package/esm2015/grid-material/src/lib/components/desktop-cell/desktop-cell.component.js +1 -1
  247. package/esm2015/grid-material/src/lib/components/desktop-cell-children-view/desktop-cell-children-view.component.js +1 -1
  248. package/esm2015/grid-material/src/lib/components/desktop-cell-editor/desktop-cell-editor.component.js +1 -1
  249. package/esm2015/grid-material/src/lib/components/desktop-cell-view/desktop-cell-view.component.js +1 -1
  250. package/esm2015/grid-material/src/lib/components/desktop-command/desktop-command.component.js +1 -1
  251. package/esm2015/grid-material/src/lib/components/desktop-editor-validation/desktop-editor-validation.component.js +1 -1
  252. package/esm2015/grid-material/src/lib/components/dynamic-column/dynamic-column.component.js +1 -1
  253. package/esm2015/grid-material/src/lib/components/grid-filter/grid-filter.component.js +1 -1
  254. package/esm2015/grid-material/src/lib/components/popup-export/popup-export.component.js +1 -1
  255. package/esm2015/grid-material/src/lib/components/popup-filter/popup-filter.component.js +1 -1
  256. package/esm2015/grid-material/src/lib/components/popup-grid-configuration/popup-grid-configuration.component.js +1 -1
  257. package/esm2015/grid-material/src/lib/components/quick-action/quick-action.component.js +1 -1
  258. package/esm2015/grid-material/src/lib/directives/sd-material-cell-def.directive.js +1 -1
  259. package/esm2015/grid-material/src/lib/directives/sd-material-empty-data-def.directive.js +1 -1
  260. package/esm2015/grid-material/src/lib/directives/sd-material-filter-def.directive.js +1 -1
  261. package/esm2015/grid-material/src/lib/directives/sd-material-footer-def.directive.js +1 -1
  262. package/esm2015/grid-material/src/lib/directives/sd-material-sub-information-def.directive.js +1 -1
  263. package/esm2015/grid-material/src/lib/functions/calculate-sd-id.js +1 -1
  264. package/esm2015/grid-material/src/lib/grid-material.component.js +1 -1
  265. package/esm2015/grid-material/src/lib/grid-material.module.js +1 -1
  266. package/esm2015/grid-material/src/lib/models/grid-action.model.js +1 -1
  267. package/esm2015/grid-material/src/lib/models/grid-cell.model.js +1 -1
  268. package/esm2015/grid-material/src/lib/models/grid-column.model.js +1 -1
  269. package/esm2015/grid-material/src/lib/models/grid-command.model.js +1 -1
  270. package/esm2015/grid-material/src/lib/models/grid-config.model.js +1 -1
  271. package/esm2015/grid-material/src/lib/models/grid-configuration.model.js +1 -1
  272. package/esm2015/grid-material/src/lib/models/grid-editor.model.js +1 -1
  273. package/esm2015/grid-material/src/lib/models/grid-export.model.js +1 -1
  274. package/esm2015/grid-material/src/lib/models/grid-group.model.js +1 -1
  275. package/esm2015/grid-material/src/lib/models/grid-option.model.js +1 -1
  276. package/esm2015/grid-material/src/lib/models/grid-reload.model.js +1 -1
  277. package/esm2015/grid-material/src/lib/models/grid-selection.model.js +1 -1
  278. package/esm2015/grid-material/src/lib/models/grid-style.model.js +1 -1
  279. package/esm2015/grid-material/src/lib/models/grid-sub-information.model.js +1 -1
  280. package/esm2015/grid-material/src/lib/models/grid.model.js +1 -1
  281. package/esm2015/grid-material/src/lib/pipes/cell-view.pipe.js +1 -1
  282. package/esm2015/grid-material/src/lib/pipes/column-badge.pipe.js +1 -1
  283. package/esm2015/grid-material/src/lib/pipes/column-children-filter.pipe.js +1 -1
  284. package/esm2015/grid-material/src/lib/pipes/column-html-template.pipe.js +1 -1
  285. package/esm2015/grid-material/src/lib/pipes/column-title.pipe.js +1 -1
  286. package/esm2015/grid-material/src/lib/pipes/column-tooltip.pipe.js +1 -1
  287. package/esm2015/grid-material/src/lib/pipes/column-transform.pipe.js +1 -1
  288. package/esm2015/grid-material/src/lib/pipes/column-values.pipe.js +1 -1
  289. package/esm2015/grid-material/src/lib/pipes/command-disable.pipe.js +1 -1
  290. package/esm2015/grid-material/src/lib/pipes/command-filter.pipe.js +1 -1
  291. package/esm2015/grid-material/src/lib/pipes/command-icon.pipe.js +1 -1
  292. package/esm2015/grid-material/src/lib/pipes/command-title.pipe.js +1 -1
  293. package/esm2015/grid-material/src/lib/pipes/editor-handler-column.pipe.js +1 -1
  294. package/esm2015/grid-material/src/lib/pipes/editor-handler-row.pipe.js +1 -1
  295. package/esm2015/grid-material/src/lib/pipes/editor-validate.pipe.js +1 -1
  296. package/esm2015/grid-material/src/lib/pipes/filter-column.pipe.js +1 -1
  297. package/esm2015/grid-material/src/lib/pipes/filter-external.pipe.js +1 -1
  298. package/esm2015/grid-material/src/lib/pipes/grid-configuration-result.pipe.js +1 -1
  299. package/esm2015/grid-material/src/lib/pipes/sd-group.pipe.js +1 -1
  300. package/esm2015/grid-material/src/lib/pipes/selection-action-filter.pipe.js +1 -1
  301. package/esm2015/grid-material/src/lib/pipes/selection-disable.pipe.js +1 -1
  302. package/esm2015/grid-material/src/lib/pipes/selection-visible-select-all.pipe.js +1 -1
  303. package/esm2015/grid-material/src/lib/pipes/selection-visible.pipe.js +1 -1
  304. package/esm2015/grid-material/src/lib/pipes/style-row-css.pipe.js +1 -1
  305. package/esm2015/grid-material/src/lib/services/generated-column/generated-column.model.js +1 -1
  306. package/esm2015/grid-material/src/lib/services/generated-column/generated-column.service.js +1 -1
  307. package/esm2015/grid-material/src/lib/services/grid-configuration.service.js +1 -1
  308. package/esm2015/grid-material/src/lib/services/grid-filter/grid-filter.model.js +1 -1
  309. package/esm2015/grid-material/src/lib/services/grid-filter/grid-filter.service.js +1 -1
  310. package/esm2015/grid-material/src/public-api.js +1 -1
  311. package/esm2015/group/index.js +1 -1
  312. package/esm2015/group/sd-angular-core-group.js +1 -1
  313. package/esm2015/group/src/lib/group.component.js +1 -1
  314. package/esm2015/group/src/lib/group.module.js +1 -1
  315. package/esm2015/group/src/public-api.js +1 -1
  316. package/esm2015/header-title/index.js +1 -1
  317. package/esm2015/header-title/sd-angular-core-header-title.js +1 -1
  318. package/esm2015/header-title/src/lib/header-title.component.js +1 -1
  319. package/esm2015/header-title/src/lib/header-title.module.js +1 -1
  320. package/esm2015/header-title/src/public-api.js +1 -1
  321. package/esm2015/image-preview/index.js +1 -1
  322. package/esm2015/image-preview/sd-angular-core-image-preview.js +1 -1
  323. package/esm2015/image-preview/src/lib/directives/image-preview.directive.js +1 -1
  324. package/esm2015/image-preview/src/lib/image-preview/image-preview-sdmodal.component.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/pdf/index.js +1 -1
  405. package/esm2015/pdf/sd-angular-core-pdf.js +1 -1
  406. package/esm2015/pdf/src/lib/pdf.module.js +1 -1
  407. package/esm2015/pdf/src/lib/pdf.service.js +20 -4
  408. package/esm2015/pdf/src/public-api.js +1 -1
  409. package/esm2015/popover/index.js +1 -1
  410. package/esm2015/popover/sd-angular-core-popover.js +1 -1
  411. package/esm2015/popover/src/lib/directives/popover-content.directive.js +1 -1
  412. package/esm2015/popover/src/lib/directives/popover-trigger.directive.js +1 -1
  413. package/esm2015/popover/src/lib/popover/popover.component.js +1 -1
  414. package/esm2015/popover/src/lib/popover.model.js +1 -1
  415. package/esm2015/popover/src/lib/popover.module.js +1 -1
  416. package/esm2015/popover/src/public-api.js +1 -1
  417. package/esm2015/print/index.js +1 -1
  418. package/esm2015/print/sd-angular-core-print.js +1 -1
  419. package/esm2015/print/src/lib/fonts/times/bold-italic.js +1 -1
  420. package/esm2015/print/src/lib/fonts/times/bold.js +1 -1
  421. package/esm2015/print/src/lib/fonts/times/italic.js +1 -1
  422. package/esm2015/print/src/lib/fonts/times/normal.js +1 -1
  423. package/esm2015/print/src/lib/print.component.js +1 -1
  424. package/esm2015/print/src/lib/print.module.js +1 -1
  425. package/esm2015/print/src/public-api.js +1 -1
  426. package/esm2015/public-api.js +1 -1
  427. package/esm2015/quick-action/index.js +1 -1
  428. package/esm2015/quick-action/sd-angular-core-quick-action.js +1 -1
  429. package/esm2015/quick-action/src/lib/quick-action.component.js +1 -1
  430. package/esm2015/quick-action/src/lib/quick-action.module.js +1 -1
  431. package/esm2015/quick-action/src/public-api.js +1 -1
  432. package/esm2015/radio/index.js +1 -1
  433. package/esm2015/radio/sd-angular-core-radio.js +1 -1
  434. package/esm2015/radio/src/lib/radio.component.js +1 -1
  435. package/esm2015/radio/src/lib/radio.module.js +1 -1
  436. package/esm2015/radio/src/public-api.js +1 -1
  437. package/esm2015/sd-angular-core.js +1 -1
  438. package/esm2015/select/index.js +1 -1
  439. package/esm2015/select/sd-angular-core-select.js +1 -1
  440. package/esm2015/select/src/lib/select-display-def.directive.js +1 -1
  441. package/esm2015/select/src/lib/select.component.js +1 -1
  442. package/esm2015/select/src/lib/select.module.js +1 -1
  443. package/esm2015/select/src/public-api.js +1 -1
  444. package/esm2015/select-badge/index.js +1 -1
  445. package/esm2015/select-badge/sd-angular-core-select-badge.js +1 -1
  446. package/esm2015/select-badge/src/lib/select-badge-display-def.directive.js +1 -1
  447. package/esm2015/select-badge/src/lib/select-badge.component.js +1 -1
  448. package/esm2015/select-badge/src/lib/select-badge.module.js +1 -1
  449. package/esm2015/select-badge/src/public-api.js +1 -1
  450. package/esm2015/select-editor/index.js +1 -1
  451. package/esm2015/select-editor/sd-angular-core-select-editor.js +1 -1
  452. package/esm2015/select-editor/src/lib/select-editor.component.js +1 -1
  453. package/esm2015/select-editor/src/lib/select-editor.module.js +1 -1
  454. package/esm2015/select-editor/src/public-api.js +1 -1
  455. package/esm2015/service/index.js +1 -1
  456. package/esm2015/service/sd-angular-core-service.js +1 -1
  457. package/esm2015/service/src/lib/service.module.js +1 -1
  458. package/esm2015/service/src/public-api.js +1 -1
  459. package/esm2015/setting/index.js +1 -1
  460. package/esm2015/setting/sd-angular-core-setting.js +1 -1
  461. package/esm2015/setting/src/lib/setting.model.js +1 -1
  462. package/esm2015/setting/src/lib/setting.service.js +1 -1
  463. package/esm2015/setting/src/public-api.js +1 -1
  464. package/esm2015/side-drawer/index.js +1 -1
  465. package/esm2015/side-drawer/sd-angular-core-side-drawer.js +1 -1
  466. package/esm2015/side-drawer/src/lib/side-drawer/side-drawer.component.js +1 -1
  467. package/esm2015/side-drawer/src/lib/side-drawer.module.js +1 -1
  468. package/esm2015/side-drawer/src/public-api.js +1 -1
  469. package/esm2015/switch/index.js +1 -1
  470. package/esm2015/switch/sd-angular-core-switch.js +1 -1
  471. package/esm2015/switch/src/lib/switch.component.js +1 -1
  472. package/esm2015/switch/src/lib/switch.module.js +1 -1
  473. package/esm2015/switch/src/public-api.js +1 -1
  474. package/esm2015/tab-router/index.js +1 -1
  475. package/esm2015/tab-router/sd-angular-core-tab-router.js +1 -1
  476. package/esm2015/tab-router/src/lib/actions/tab-router.action.js +1 -1
  477. package/esm2015/tab-router/src/lib/components/tab-router-item/tab-router-item.component.js +1 -1
  478. package/esm2015/tab-router/src/lib/components/tab-router-nav/tab-router-nav.component.js +1 -1
  479. package/esm2015/tab-router/src/lib/components/tab-router-outlet/tab-router-outlet.component.js +1 -1
  480. package/esm2015/tab-router/src/lib/decorators/tab.decorator.js +1 -1
  481. package/esm2015/tab-router/src/lib/directives/router-link-mouse-down.directive.js +1 -1
  482. package/esm2015/tab-router/src/lib/events/tab-router.event.js +1 -1
  483. package/esm2015/tab-router/src/lib/models/tab-router.model.js +1 -1
  484. package/esm2015/tab-router/src/lib/pipes/tab-info.pipe.js +1 -1
  485. package/esm2015/tab-router/src/lib/services/tab-decorator.service.js +1 -1
  486. package/esm2015/tab-router/src/lib/services/tab-router.service.js +1 -1
  487. package/esm2015/tab-router/src/lib/tab-router.module.js +1 -1
  488. package/esm2015/tab-router/src/public-api.js +1 -1
  489. package/esm2015/textarea/index.js +1 -1
  490. package/esm2015/textarea/sd-angular-core-textarea.js +1 -1
  491. package/esm2015/textarea/src/lib/textarea.component.js +1 -1
  492. package/esm2015/textarea/src/lib/textarea.module.js +1 -1
  493. package/esm2015/textarea/src/public-api.js +1 -1
  494. package/esm2015/time/index.js +1 -1
  495. package/esm2015/time/sd-angular-core-time.js +1 -1
  496. package/esm2015/time/src/lib/time.component.js +1 -1
  497. package/esm2015/time/src/lib/time.module.js +1 -1
  498. package/esm2015/time/src/public-api.js +1 -1
  499. package/esm2015/timeline/index.js +1 -1
  500. package/esm2015/timeline/sd-angular-core-timeline.js +1 -1
  501. package/esm2015/timeline/src/lib/components/timeline.component.js +1 -1
  502. package/esm2015/timeline/src/lib/directives/timeline-def.directive.js +1 -1
  503. package/esm2015/timeline/src/lib/timeline.module.js +1 -1
  504. package/esm2015/timeline/src/public-api.js +1 -1
  505. package/esm2015/translate/index.js +1 -1
  506. package/esm2015/translate/sd-angular-core-translate.js +1 -1
  507. package/esm2015/translate/src/lib/translate.model.js +1 -1
  508. package/esm2015/translate/src/lib/translate.module.js +1 -1
  509. package/esm2015/translate/src/lib/translate.pipe.js +1 -1
  510. package/esm2015/translate/src/lib/translate.service.js +1 -1
  511. package/esm2015/upload-excel/index.js +1 -1
  512. package/esm2015/upload-excel/sd-angular-core-upload-excel.js +1 -1
  513. package/esm2015/upload-excel/src/lib/pipes/columm-hidden.pipe.js +1 -1
  514. package/esm2015/upload-excel/src/lib/pipes/column-transform.pipe.js +1 -1
  515. package/esm2015/upload-excel/src/lib/upload-excel.component.js +1 -1
  516. package/esm2015/upload-excel/src/lib/upload-excel.model.js +1 -1
  517. package/esm2015/upload-excel/src/lib/upload-excel.module.js +1 -1
  518. package/esm2015/upload-excel/src/public-api.js +1 -1
  519. package/esm2015/upload-file/index.js +1 -1
  520. package/esm2015/upload-file/sd-angular-core-upload-file.js +1 -1
  521. package/esm2015/upload-file/src/lib/upload-file.component.js +1 -1
  522. package/esm2015/upload-file/src/lib/upload-file.module.js +1 -1
  523. package/esm2015/upload-file/src/public-api.js +1 -1
  524. package/esm2015/utility/index.js +1 -1
  525. package/esm2015/utility/sd-angular-core-utility.js +1 -1
  526. package/esm2015/utility/src/lib/directives/desktop.directive.js +1 -1
  527. package/esm2015/utility/src/lib/directives/mobile-tablet.directive.js +1 -1
  528. package/esm2015/utility/src/lib/directives/mobile.directive.js +1 -1
  529. package/esm2015/utility/src/lib/directives/tablet.directive.js +1 -1
  530. package/esm2015/utility/src/lib/pipes/currency.pipe.js +1 -1
  531. package/esm2015/utility/src/lib/pipes/safe-html.pipe.js +1 -1
  532. package/esm2015/utility/src/lib/pipes/time-different.pipe.js +1 -1
  533. package/esm2015/utility/src/lib/utility.module.js +1 -1
  534. package/esm2015/utility/src/lib/utility.service.js +1 -1
  535. package/esm2015/utility/src/public-api.js +1 -1
  536. package/esm2015/view/index.js +1 -1
  537. package/esm2015/view/sd-angular-core-view.js +1 -1
  538. package/esm2015/view/src/lib/view.module.js +1 -1
  539. package/esm2015/view/src/public-api.js +1 -1
  540. package/esm2015/zip/index.js +1 -1
  541. package/esm2015/zip/sd-angular-core-zip.js +1 -1
  542. package/esm2015/zip/src/lib/zip.module.js +1 -1
  543. package/esm2015/zip/src/lib/zip.service.js +1 -1
  544. package/esm2015/zip/src/public-api.js +1 -1
  545. package/fesm2015/sd-angular-core-chip.js +4 -2
  546. package/fesm2015/sd-angular-core-chip.js.map +1 -1
  547. package/fesm2015/sd-angular-core-pdf.js +19 -3
  548. package/fesm2015/sd-angular-core-pdf.js.map +1 -1
  549. package/package.json +1 -1
  550. package/pdf/sd-angular-core-pdf.metadata.json +1 -1
  551. package/pdf/src/lib/pdf.service.d.ts +13 -1
  552. package/{sd-angular-core-1.3.126.tgz → sd-angular-core-1.3.128.tgz} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"sd-angular-core-chip.js","sources":["../../../../projects/sd-core/chip/src/lib/directives/sd-chip-display-def.directive.ts","../../../../projects/sd-core/chip/src/lib/chip.component.ts","../../../../projects/sd-core/chip/src/lib/pipes/removable-chip.pipe.ts","../../../../projects/sd-core/chip/src/lib/chip.module.ts","../../../../projects/sd-core/chip/src/public-api.ts","../../../../projects/sd-core/chip/sd-angular-core-chip.ts"],"sourcesContent":["import { Directive, Input, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdChipDisplayDef]'\r\n})\r\nexport class SdChipDisplayDef {\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n ViewChild,\r\n Output,\r\n EventEmitter,\r\n OnInit, OnDestroy,\r\n AfterViewInit,\r\n ChangeDetectorRef,\r\n ElementRef,\r\n ContentChild,\r\n ChangeDetectionStrategy,\r\n Inject,\r\n Optional\r\n} from '@angular/core';\r\nimport { COMMA, ENTER } from '@angular/cdk/keycodes';\r\nimport { debounceTime, map, startWith, switchMap } from 'rxjs/operators';\r\n\r\nimport * as uuid from 'uuid';\r\nimport hash from 'object-hash';\r\nimport { NgForm, FormControl, FormGroup, ValidatorFn, AsyncValidatorFn, Validators, FormGroupDirective } from '@angular/forms';\r\nimport { Observable, Subscription, BehaviorSubject, combineLatest } from 'rxjs';\r\nimport { MatChipInputEvent, MatChipList } from '@angular/material/chips';\r\nimport { MatAutocomplete, MatAutocompleteSelectedEvent, MatAutocompleteTrigger } from '@angular/material/autocomplete';\r\nimport { SdChipUpdate } from './chip.model';\r\nimport { ErrorStateMatcher } from '@angular/material/core';\r\nimport { SdChipDisplayDef } from './directives/sd-chip-display-def.directive';\r\nimport { FORM_CONFIG, IFormConfiguration, SdFormControl, SdViewDefDirective } from '@sd-angular/core/common';\r\nimport { MatFormFieldAppearance } from '@angular/material/form-field';\r\nimport { SdLabelDefDirective } from '@sd-angular/core/common';\r\n\r\nclass SdChipErrotStateMatcher implements ErrorStateMatcher {\r\n constructor(private formControl: FormControl) { }\r\n isErrorState(control: FormControl | null, form: FormGroupDirective | NgForm | null): boolean {\r\n const isSubmitted = form && form.submitted;\r\n return !!(this.formControl?.invalid && (this.formControl?.dirty || this.formControl?.touched || isSubmitted));\r\n }\r\n}\r\n\r\n@Component({\r\n selector: 'sd-chip',\r\n templateUrl: './chip.component.html',\r\n styleUrls: ['./chip.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdChip implements OnInit, OnDestroy, AfterViewInit {\r\n #name = uuid.v4();\r\n @Input() set name(val: string) {\r\n if (val) {\r\n this.#name = val;\r\n }\r\n }\r\n @Input() appearance: MatFormFieldAppearance;\r\n separatorKeysCodes: number[] = [ENTER, COMMA];\r\n selectable = true;\r\n @Input() size: 'sm' | 'lg';\r\n #form: FormGroup;\r\n @Input() set form(val: NgForm | FormGroup) {\r\n if (val) {\r\n if (val instanceof NgForm) {\r\n this.#form = val.form;\r\n } else {\r\n this.#form = val;\r\n }\r\n }\r\n }\r\n #addable: boolean;\r\n @Input() set addable(val: '' | boolean) {\r\n this.#addable = (val === '') || val;\r\n }\r\n @Input() label: string;\r\n @Input() valueField: string;\r\n @Input() displayField: string;\r\n @Input() placeholder: string;\r\n removable: boolean | ((item: any) => boolean) = true;\r\n @Input('removable') set _removable(val: '' | boolean | ((item: any) => boolean)) {\r\n this.removable = (val === '') || val;\r\n }\r\n disableErrorMessage = false;\r\n @Input('disableErrorMessage') set _disableErrorMessage(val: boolean | '') {\r\n this.disableErrorMessage = (val === '') || val;\r\n }\r\n // Server search\r\n loading = false;\r\n #allItems: Observable<any[]>;\r\n #allItem: {\r\n [key: string]: any\r\n } = {};\r\n #cache: {\r\n [key: string]: any[]\r\n } = {};\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 gọi hàm\r\n #itemsChanges = new BehaviorSubject<any[] | SearchFunc>([]);\r\n @Input() set items(items: undefined | any[] | SearchFunc) {\r\n this.#delay = 0;\r\n if (!items) {\r\n this.#itemsChanges.next([]);\r\n } else if (Array.isArray(items)) {\r\n this.#itemsChanges.next(items.filter(e => e !== null && e !== undefined));\r\n } else {\r\n this.#delay = 500;\r\n this.#itemsChanges.next(items);\r\n }\r\n this.formControl.updateValueAndValidity();\r\n }\r\n @Input() limit = 50;\r\n selectedItems: Observable<any[]>;\r\n #selectedItems: any[] = [];\r\n filteredItems: Observable<any[]>;\r\n #filteredItems: any[];\r\n @Input() cacheChecksum: any;\r\n ipt: any;\r\n\r\n // model\r\n @Input() set model(values: undefined | (string | number)[]) {\r\n if (!Array.isArray(values)) {\r\n values = [];\r\n }\r\n this.formControl.setValue(values);\r\n }\r\n // Validator\r\n required = false;\r\n @Input('required') set _required(val: boolean | '') {\r\n this.required = (val === '') || val;\r\n this.#updateValidator();\r\n }\r\n\r\n min: number;\r\n @Input('min') set pMin(val: number | string) {\r\n this.min = +val || 0;\r\n this.#updateValidator();\r\n }\r\n max: number;\r\n @Input('max') set pMax(val: number | string) {\r\n this.max = +val || 0;\r\n this.#updateValidator();\r\n }\r\n @Output() modelChange = new EventEmitter();\r\n\r\n // Optional\r\n @Input() set disabled(val: boolean | '') {\r\n val = (val === '') || val;\r\n if (val) {\r\n this.formControl.disable();\r\n this.inputControl.disable();\r\n } else {\r\n this.formControl.enable();\r\n this.inputControl.enable();\r\n }\r\n }\r\n\r\n @Output() sdChange = new EventEmitter<any[]>();\r\n @Output() sdUpdate = new EventEmitter<SdChipUpdate>();\r\n @Output() chipSelected = new EventEmitter<any>();\r\n\r\n @ViewChild('input') input: ElementRef<HTMLInputElement>;\r\n @ViewChild('auto') matAutocomplete: MatAutocomplete;\r\n @ViewChild('chipList', { static: true }) chipList: MatChipList;\r\n @ViewChild(MatAutocompleteTrigger, { read: MatAutocompleteTrigger }) autocompleteTrigger: MatAutocompleteTrigger;\r\n @ContentChild(SdViewDefDirective) sdView: SdViewDefDirective;\r\n @ContentChild(SdChipDisplayDef) sdChipDisplay: SdChipDisplayDef;\r\n @ContentChild(SdLabelDefDirective) sdLabelDef: SdLabelDefDirective;\r\n isBluring = false;\r\n isFocused = false;\r\n inputControl = new FormControl();\r\n formControl = new SdFormControl();\r\n matcher = new SdChipErrotStateMatcher(this.formControl);\r\n #subscription = new Subscription();\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n @Inject(FORM_CONFIG) @Optional() private formConfig: IFormConfiguration) {\r\n }\r\n\r\n ngOnInit() {\r\n this.appearance = this.appearance || this.formConfig?.appearance;\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.#subscription.add(this.formControl.sdChanges.subscribe(() => {\r\n this.ref.markForCheck();\r\n }));\r\n this.#allItems = combineLatest([\r\n this.#itemsChanges.asObservable(),\r\n this.inputControl.valueChanges.pipe(startWith(''), debounceTime(this.#delay)),\r\n this.formControl.valueChanges.pipe(startWith(this.formControl.value))]).pipe(\r\n switchMap(async ([items]) => {\r\n const val = this.inputControl.value;\r\n const values = this.formControl.value || [];\r\n if (typeof (items) === 'function') {\r\n return await this.#loadItems(val, items);\r\n }\r\n this.#allItem = items.toObject(this.valueField);\r\n const hasFields = !!this.valueField && !!this.displayField;\r\n this.#filteredItems = items.filter(item => {\r\n const value = hasFields ? item[this.valueField] : item;\r\n const display = hasFields ? item[this.displayField] : item;\r\n if (String.aliasIncludes(value, val) || String.aliasIncludes(display, val)) {\r\n return true;\r\n }\r\n return values.some(e => e === value);\r\n });\r\n return this.#filteredItems;\r\n }));\r\n this.selectedItems = combineLatest([\r\n this.#itemsChanges.asObservable(),\r\n this.formControl.valueChanges.pipe(startWith(this.formControl.value))])\r\n .pipe(\r\n switchMap(async ([items, val]) => {\r\n // Vì một số lý do chưa xác định mà khi sử dụng sdViewDef thì khi chuyển sang dạng view sẽ trigger val = null\r\n // Nhưng formControl.value vẫn có giá trị đúng nên thực hiện gán val = this.formControl.value;\r\n val = this.formControl.value;\r\n if (!this.valueField) {\r\n this.#selectedItems = this.formControl.value;\r\n return this.#selectedItems;\r\n }\r\n if (typeof (items) === 'function') {\r\n this.#selectedItems = await this.#loadSelectedItems(val, items);\r\n return this.#selectedItems;\r\n }\r\n this.#selectedItems = (this.formControl.value || [])?.map(value => {\r\n return items?.find(item => item[this.valueField] === value) || {\r\n [this.valueField]: value,\r\n [this.displayField]: value\r\n };\r\n });\r\n return this.#selectedItems;\r\n })\r\n );\r\n this.filteredItems = this.#allItems.pipe(map(allItems => allItems.filter(item => {\r\n const values = this.formControl.value || [];\r\n if (this.valueField) {\r\n return !values.includes(item?.[this.valueField]);\r\n }\r\n return !values.includes(item);\r\n }).paging(this.limit)));\r\n // this.display = this.selectedItems.pipe(\r\n // map(selectedItems => selectedItems?.map(item => this.displayField ? item[this.displayField] : item)?.join(', ')));\r\n // this.#subscription.add(this.formControl.valueChanges.subscribe(() => {\r\n // const values: (string | number)[] = this.formControl.value || [];\r\n // this.selectedItems = this.#items.filter(item => values.findIndex(value => value === item?.[this.valueField]) !== -1);\r\n // this.modelChange.emit(values);\r\n // this.sdChange.emit(values);\r\n // setTimeout(() => {\r\n // this.#form?.markAsDirty();\r\n // }, 0);\r\n // }));\r\n // this.#subscription.add(this.#itemChanges.pipe(startWith(this.#items)).subscribe(() => {\r\n // const values: (string | number)[] = this.formControl.value || [];\r\n // this.selectedItems = [];\r\n // for (const value of values) {\r\n // const item = this.#items.find(e => e?.[this.valueField] === value) || {};\r\n // this.selectedItems.push({\r\n // ...item,\r\n // [this.valueField]: value\r\n // });\r\n // }\r\n // }));\r\n this.#form?.addControl(this.#name, this.formControl);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#form?.removeControl(this.#name);\r\n this.#subscription.unsubscribe();\r\n }\r\n\r\n #updateValidator = () => {\r\n this.formControl.clearValidators();\r\n this.formControl.clearAsyncValidators();\r\n const validators: ValidatorFn[] = [];\r\n const asyncValidators: AsyncValidatorFn[] = [];\r\n if (this.required) {\r\n validators.push(Validators.required);\r\n }\r\n if (this.min > 0) {\r\n validators.push(Validators.minLength(this.min));\r\n }\r\n if (this.max > 0) {\r\n validators.push(Validators.maxLength(this.max));\r\n }\r\n this.formControl.setValidators(validators);\r\n this.formControl.setAsyncValidators(asyncValidators);\r\n this.formControl.updateValueAndValidity();\r\n }\r\n\r\n #loadItems = async (searchText: string, items: SearchFunc) => {\r\n searchText = searchText?.toString() || '';\r\n const key = hash({\r\n checksum: this.cacheChecksum || null,\r\n searchText\r\n })\r\n if (this.#cache[key] === undefined) {\r\n this.loading = true;\r\n const results = await items(searchText).catch(() => []).finally(() => this.loading = false);\r\n const objItem = Array.toObject(results, this.valueField);\r\n this.#allItem = {\r\n ...this.#allItem,\r\n ...objItem\r\n };\r\n this.#cache[key] = results.union(this.valueField);\r\n }\r\n // if (!this.multiple) {\r\n // return this.#cache[searchText];\r\n // }\r\n const selectedItems = await this.#loadSelectedItems(this.formControl.value, items);\r\n // Đưa những selectedItems lên đầu nếu không mat-select-trigger sẽ không work\r\n return [...selectedItems, ...this.#cache[key]].union(this.valueField);\r\n }\r\n\r\n #loadSelectedItems = async (value: string | string[], items: SearchFunc) => {\r\n if (!value?.toString()) {\r\n return [];\r\n }\r\n const values = Array.isArray(value) ? value : [value];\r\n if (!this.valueField && !this.displayField) {\r\n return values;\r\n }\r\n this.loading = true;\r\n if (values.some(val => this.#allItem[val] === undefined)) {\r\n const results = await items(value, true).catch(() => []).finally(() => this.loading = false);\r\n const objItem = Array.toObject(results, this.valueField);\r\n const objValue = Array.toObject(\r\n values.map(val => ({ [val?.toString()]: { [this.valueField]: val, [this.displayField]: val } })), this.valueField);\r\n this.#allItem = {\r\n ...objValue,\r\n ...this.#allItem,\r\n ...objItem\r\n };\r\n }\r\n return values.map(val => this.#allItem[val?.toString()] ?? { [this.valueField]: val, [this.displayField]: val });\r\n }\r\n\r\n onAdd = (event: MatChipInputEvent): void => {\r\n // Add item only when MatAutocomplete is not open\r\n // To make sure this does not conflict with OptionSelected Event\r\n // if (!this.matAutocomplete.isOpen) {\r\n // const value = (event.value ?? '').toString().trim();\r\n // if (value) {\r\n // if (this.valueField && this.displayField) {\r\n // const item = this.#filteredItems.find(e => e[this.displayField] === value);\r\n // if (item) {\r\n // const values: (string | number)[] = this.formControl.value ?? [];\r\n // values.push(item[this.valueField]);\r\n // this.formControl.setValue(values);\r\n // } else if (this.#addable) {\r\n // const values: (string | number)[] = this.formControl.value ?? [];\r\n // values.push(value);\r\n // this.formControl.setValue(values);\r\n // }\r\n // } else {\r\n // console.log(value);\r\n // console.log(this.#filteredItems);\r\n // const item = this.#filteredItems.find(item => item === value);\r\n // if (item) {\r\n // const values: (string | number)[] = this.formControl.value ?? [];\r\n // values.push(item);\r\n // this.formControl.setValue(values);\r\n // } else if (this.#addable) {\r\n // const values: (string | number)[] = this.formControl.value ?? [];\r\n // values.push(value);\r\n // this.formControl.setValue(values);\r\n // }\r\n // }\r\n // }\r\n // this.inputControl.setValue('');\r\n // }\r\n const value = (event.value ?? '').toString().trim();\r\n if (value) {\r\n if (this.valueField && this.displayField) {\r\n const item = this.#filteredItems.find(e => e[this.displayField] === value);\r\n if (item) {\r\n const values: (string | number)[] = this.formControl.value ?? [];\r\n values.push(item[this.valueField]);\r\n this.formControl.setValue(values);\r\n this.modelChange.emit(this.formControl.value);\r\n this.sdChange.emit(this.formControl.value);\r\n } else if (this.#addable) {\r\n const values: (string | number)[] = this.formControl.value ?? [];\r\n values.push(value);\r\n this.formControl.setValue(values);\r\n this.modelChange.emit(this.formControl.value);\r\n this.sdChange.emit(this.formControl.value);\r\n }\r\n } else {\r\n const item = this.#filteredItems.find(item => item === value);\r\n if (item) {\r\n const values: (string | number)[] = this.formControl.value ?? [];\r\n values.push(item);\r\n this.formControl.setValue(values);\r\n this.modelChange.emit(this.formControl.value);\r\n this.sdChange.emit(this.formControl.value);\r\n } else if (this.#addable) {\r\n const values: (string | number)[] = this.formControl.value ?? [];\r\n values.push(value);\r\n this.formControl.setValue(values);\r\n this.modelChange.emit(this.formControl.value);\r\n this.sdChange.emit(this.formControl.value);\r\n }\r\n }\r\n }\r\n this.input.nativeElement.value = '';\r\n this.inputControl.setValue('');\r\n }\r\n\r\n // andn1 viết để xử lý tạm us B2B1D-18289 ở S69\r\n onAdd2 = (event: MatChipInputEvent): void => {\r\n\r\n const value = (event.value ?? '').toString().toLowerCase().trim();\r\n if (value) {\r\n const item = this.#filteredItems.find(e => e[this.valueField]\r\n && e[this.valueField].toString().toLowerCase().trim() === value);\r\n\r\n if (item) {\r\n const values: (string | number)[] = this.formControl.value ?? [];\r\n if (!values.includes(item[this.valueField])) {\r\n values.push(item[this.valueField]);\r\n }\r\n this.formControl.setValue(values);\r\n }\r\n }\r\n this.inputControl.setValue('');\r\n }\r\n\r\n onClickChip = ($event: Event, item: any) => {\r\n $event.stopPropagation();\r\n $event.stopImmediatePropagation();\r\n item.isSelected = !item.isSelected;\r\n this.focus();\r\n }\r\n\r\n onRemove = (item: any): void => {\r\n const values: (string | number)[] = this.formControl.value ?? [];\r\n if (typeof (item) === 'string' || typeof (item) === 'number') {\r\n this.formControl.setValue(values.filter(value => item !== value));\r\n this.modelChange.emit(this.formControl.value);\r\n this.sdChange.emit(this.formControl.value);\r\n } else if (this.valueField) {\r\n this.formControl.setValue(values.filter(value => item?.[this.valueField] !== value));\r\n this.modelChange.emit(this.formControl.value);\r\n this.sdChange.emit(this.formControl.value);\r\n }\r\n this.inputControl.setValue('');\r\n this.focus();\r\n }\r\n\r\n select = (item: any): void => {\r\n this.chipSelected.emit(item);\r\n this.focus();\r\n }\r\n\r\n // onSelect = (event: MatAutocompleteSelectedEvent) => {\r\n // const value = (event.option.value?.[this.valueField] ?? '').toString().trim();\r\n // if (value) {\r\n // const item = this.#items.find(e => e[this.valueField]\r\n // && e[this.valueField].toString().trim() === value);\r\n // if (item) {\r\n // const values: (string | number)[] = this.formControl.value ?? [];\r\n // values.push(item[this.valueField]);\r\n // this.formControl.setValue(values);\r\n // this.input.nativeElement.value = '';\r\n // this.inputControl.setValue('');\r\n // setTimeout(() => {\r\n // this.autocompleteTrigger?.openPanel();\r\n // }, 0);\r\n // }\r\n // }\r\n // }\r\n\r\n onSelect = (event: MatAutocompleteSelectedEvent) => {\r\n const item = event.option.value;\r\n const values: (string | number)[] = this.formControl.value ?? [];\r\n if (item) {\r\n if (typeof (item) === 'string' || typeof (item) === 'number') {\r\n if (!values.includes(item)) {\r\n values.push(item);\r\n this.formControl.setValue(values);\r\n this.modelChange.emit(this.formControl.value);\r\n this.sdChange.emit(this.formControl.value);\r\n setTimeout(() => {\r\n this.autocompleteTrigger?.openPanel();\r\n }, 0);\r\n }\r\n } else if (this.valueField) {\r\n const val = item?.[this.valueField] || null;\r\n if (!values.includes(val)) {\r\n values.push(val);\r\n this.formControl.setValue(values);\r\n this.modelChange.emit(this.formControl.value);\r\n this.sdChange.emit(this.formControl.value);\r\n setTimeout(() => {\r\n this.autocompleteTrigger?.openPanel();\r\n }, 0);\r\n }\r\n }\r\n this.input.nativeElement.value = '';\r\n this.inputControl.setValue('', {\r\n emitEvent: false\r\n });\r\n }\r\n }\r\n\r\n // displayFn = (value: string | { [key: string]: string }): string | undefined => {\r\n // if (typeof value === 'string') {\r\n // if (!this.#items) {\r\n // return undefined;\r\n // }\r\n // const selectedItem = this.#items.find(item => item[this.valueField] === value);\r\n // if (selectedItem) {\r\n // return selectedItem[this.displayField];\r\n // }\r\n // if (this.#items.some(item => item[this.displayField].toLowerCase().indexOf(value.toLowerCase()) !== -1)) {\r\n // return value;\r\n // } else {\r\n // return undefined;\r\n // }\r\n // } else {\r\n // return value ? value[this.displayField] : undefined;\r\n // }\r\n // }\r\n\r\n onFocus = () => {\r\n this.isFocused = true;\r\n this.isBluring = false;\r\n this.inputControl.setValue('');\r\n // this.inputControl.updateValueAndValidity();\r\n }\r\n\r\n onBlur = () => {\r\n this.isBluring = true;\r\n setTimeout(() => {\r\n if(this.isBluring) {\r\n this.isFocused = false;\r\n this.inputControl.setValue('', {\r\n emitEvent: false\r\n });\r\n }\r\n }, 100);\r\n }\r\n\r\n onClick = () => {\r\n if (this.sdView?.templateRef) {\r\n if (!this.formControl.disabled && !this.isFocused) {\r\n this.focus();\r\n }\r\n }\r\n }\r\n\r\n focus = () => {\r\n this.isFocused = true;\r\n this.isBluring = false;\r\n setTimeout(() => {\r\n this.autocompleteTrigger?.openPanel();\r\n this.input?.nativeElement?.focus();\r\n }, 100);\r\n }\r\n\r\n onClear = ($event?: any) => {\r\n $event?.stopPropagation();\r\n this.inputControl.setValue('');\r\n this.formControl.setValue([]);\r\n this.modelChange.emit(this.formControl.value);\r\n this.sdChange.emit(this.formControl.value);\r\n this.autocompleteTrigger?.openPanel();\r\n this.ref.detectChanges();\r\n }\r\n\r\n getSelectedItems = () => this.#selectedItems;\r\n}\r\n\r\ntype SearchFunc = (searchText?: string | string[], isFormValue?: boolean) => Promise<any[]>;","import { Pipe, PipeTransform } from '@angular/core';\r\n@Pipe({\r\n name: 'sdRemovableChip'\r\n})\r\nexport class SdRemovableChipPipe implements PipeTransform {\r\n constructor() { }\r\n transform(item: any, removable: boolean | ((item: any) => boolean)): boolean {\r\n if(typeof(removable) === 'boolean') {\r\n return removable;\r\n }\r\n return removable(item);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { SdChip } from './chip.component';\r\nimport { SdChipDisplayDef } from './directives/sd-chip-display-def.directive';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { SdTranslateModule } from '@sd-angular/core/translate';\r\nimport { MatChipsModule } from '@angular/material/chips';\r\nimport { SdRemovableChipPipe } from './pipes/removable-chip.pipe';\r\nimport { SdCommonModule } from '@sd-angular/core/common';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MatInputModule,\r\n MatTooltipModule,\r\n MatFormFieldModule,\r\n MatAutocompleteModule,\r\n MatIconModule,\r\n MatProgressSpinnerModule,\r\n MatChipsModule,\r\n SdTranslateModule,\r\n SdCommonModule\r\n ],\r\n declarations: [\r\n SdChip,\r\n SdChipDisplayDef,\r\n SdRemovableChipPipe\r\n ],\r\n exports: [\r\n SdCommonModule,\r\n SdChip,\r\n SdChipDisplayDef,\r\n ]\r\n})\r\nexport class SdChipModule { }\r\n","/*\r\n * Public API Surface of superdev-angular-core\r\n */\r\n\r\nexport * from './lib/chip.module';\r\nexport * from './lib/chip.component';\r\nexport * from './lib/chip.model';\r\nexport * from './lib/directives/sd-chip-display-def.directive';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n\nexport {SdRemovableChipPipe as ɵa} from './src/lib/pipes/removable-chip.pipe';"],"names":["uuid.v4"],"mappings":";;;;;;;;;;;;;;;;;;;MAKa,gBAAgB;IAC3B,YAAmB,WAA6B;QAA7B,gBAAW,GAAX,WAAW,CAAkB;KAAK;;;YAJtD,SAAS,SAAC;gBACT,QAAQ,EAAE,oBAAoB;aAC/B;;;YAJ0B,WAAW;;;;AC+BtC,MAAM,uBAAuB;IAC3B,YAAoB,WAAwB;QAAxB,gBAAW,GAAX,WAAW,CAAa;KAAK;IACjD,YAAY,CAAC,OAA2B,EAAE,IAAwC;;QAChF,MAAM,WAAW,GAAG,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC;QAC3C,OAAO,CAAC,EAAE,OAAA,IAAI,CAAC,WAAW,0CAAE,OAAO,MAAK,OAAA,IAAI,CAAC,WAAW,0CAAE,KAAK,YAAI,IAAI,CAAC,WAAW,0CAAE,OAAO,CAAA,IAAI,WAAW,CAAC,CAAC,CAAC;KAC/G;CACF;MAQY,MAAM;IA2HjB,YACU,GAAsB,EACW,UAA8B;QAD/D,QAAG,GAAH,GAAG,CAAmB;QACW,eAAU,GAAV,UAAU,CAAoB;QA5HzE,gBAAQA,EAAO,EAAE,EAAC;QAOlB,uBAAkB,GAAa,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC9C,eAAU,GAAG,IAAI,CAAC;QAElB,wBAAiB;QAUjB,2BAAkB;QAQlB,cAAS,GAAuC,IAAI,CAAC;QAIrD,wBAAmB,GAAG,KAAK,CAAC;;QAK5B,YAAO,GAAG,KAAK,CAAC;QAChB,4BAA6B;QAC7B,mBAEI,EAAE,EAAC;QACP,iBAEI,EAAE,EAAC;QACP,iBAAS,GAAG,EAAC;QACb,wBAAgB,IAAI,eAAe,CAAqB,EAAE,CAAC,EAAC;QAanD,UAAK,GAAG,EAAE,CAAC;QAEpB,yBAAwB,EAAE,EAAC;QAE3B,iCAAsB;;QAYtB,aAAQ,GAAG,KAAK,CAAC;QAgBP,gBAAW,GAAG,IAAI,YAAY,EAAE,CAAC;QAcjC,aAAQ,GAAG,IAAI,YAAY,EAAS,CAAC;QACrC,aAAQ,GAAG,IAAI,YAAY,EAAgB,CAAC;QAC5C,iBAAY,GAAG,IAAI,YAAY,EAAO,CAAC;QASjD,cAAS,GAAG,KAAK,CAAC;QAClB,cAAS,GAAG,KAAK,CAAC;QAClB,iBAAY,GAAG,IAAI,WAAW,EAAE,CAAC;QACjC,gBAAW,GAAG,IAAI,aAAa,EAAE,CAAC;QAClC,YAAO,GAAG,IAAI,uBAAuB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACxD,wBAAgB,IAAI,YAAY,EAAE,EAAC;QAkGnC,2BAAmB;YACjB,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,CAAC;YACnC,IAAI,CAAC,WAAW,CAAC,oBAAoB,EAAE,CAAC;YACxC,MAAM,UAAU,GAAkB,EAAE,CAAC;YACrC,MAAM,eAAe,GAAuB,EAAE,CAAC;YAC/C,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACjB,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;aACtC;YACD,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE;gBAChB,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;aACjD;YACD,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE;gBAChB,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;aACjD;YACD,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;YAC3C,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC;YACrD,IAAI,CAAC,WAAW,CAAC,sBAAsB,EAAE,CAAC;SAC3C,EAAA;QAED,qBAAa,CAAO,UAAkB,EAAE,KAAiB;YACvD,UAAU,GAAG,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,QAAQ,OAAM,EAAE,CAAC;YAC1C,MAAM,GAAG,GAAG,IAAI,CAAC;gBACf,QAAQ,EAAE,IAAI,CAAC,aAAa,IAAI,IAAI;gBACpC,UAAU;aACX,CAAC,CAAA;YACF,IAAI,qCAAY,GAAG,CAAC,KAAK,SAAS,EAAE;gBAClC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;gBACpB,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC;gBAC5F,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;gBACzD,uBAAA,IAAI,qFAEC,OAAO,GACV;gBACF,qCAAY,GAAG,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aACnD;;;;YAID,MAAM,aAAa,GAAG,MAAM,sDAAA,IAAI,EAAoB,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;;YAEnF,OAAO,CAAC,GAAG,aAAa,EAAE,GAAG,qCAAY,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SACvE,CAAA,EAAA;QAED,6BAAqB,CAAO,KAAwB,EAAE,KAAiB;YACrE,IAAI,EAAC,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,QAAQ,GAAE,EAAE;gBACtB,OAAO,EAAE,CAAC;aACX;YACD,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC;YACtD,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;gBAC1C,OAAO,MAAM,CAAC;aACf;YACD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACpB,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,uCAAc,GAAG,CAAC,KAAK,SAAS,CAAC,EAAE;gBACxD,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC;gBAC7F,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;gBACzD,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAC7B,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,QAAQ,KAAK,EAAE,CAAC,IAAI,CAAC,UAAU,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,GAAG,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;gBACrH,uBAAA,IAAI,0DACC,QAAQ,4CAER,OAAO,GACV;aACH;YACD,OAAO,MAAM,CAAC,GAAG,CAAC,GAAG,2BAAI,uCAAc,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,QAAQ,GAAG,mCAAI,EAAE,CAAC,IAAI,CAAC,UAAU,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,GAAG,GAAG,EAAE,GAAA,CAAC,CAAC;SAClH,CAAA,EAAA;QAED,UAAK,GAAG,CAAC,KAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAkC/B,MAAM,KAAK,GAAG,OAAC,KAAK,CAAC,KAAK,mCAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;YACpD,IAAI,KAAK,EAAE;gBACT,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,YAAY,EAAE;oBACxC,MAAM,IAAI,GAAG,6CAAoB,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,KAAK,CAAC,CAAC;oBAC3E,IAAI,IAAI,EAAE;wBACR,MAAM,MAAM,SAAwB,IAAI,CAAC,WAAW,CAAC,KAAK,mCAAI,EAAE,CAAC;wBACjE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;wBACnC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;wBAClC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;wBAC9C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;qBAC5C;yBAAM,4CAAmB;wBACxB,MAAM,MAAM,SAAwB,IAAI,CAAC,WAAW,CAAC,KAAK,mCAAI,EAAE,CAAC;wBACjE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;wBACnB,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;wBAClC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;wBAC9C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;qBAC5C;iBACF;qBAAM;oBACL,MAAM,IAAI,GAAG,6CAAoB,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,KAAK,CAAC,CAAC;oBAC9D,IAAI,IAAI,EAAE;wBACR,MAAM,MAAM,SAAwB,IAAI,CAAC,WAAW,CAAC,KAAK,mCAAI,EAAE,CAAC;wBACjE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBAClB,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;wBAClC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;wBAC9C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;qBAC5C;yBAAM,4CAAmB;wBACxB,MAAM,MAAM,SAAwB,IAAI,CAAC,WAAW,CAAC,KAAK,mCAAI,EAAE,CAAC;wBACjE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;wBACnB,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;wBAClC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;wBAC9C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;qBAC5C;iBACF;aACF;YACD,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE,CAAC;YACpC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;SAChC,CAAA;;QAGD,WAAM,GAAG,CAAC,KAAwB;;YAEhC,MAAM,KAAK,GAAG,OAAC,KAAK,CAAC,KAAK,mCAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;YAClE,IAAI,KAAK,EAAE;gBACT,MAAM,IAAI,GAAG,6CAAoB,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;uBACxD,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,CAAC,CAAC;gBAEnE,IAAI,IAAI,EAAE;oBACR,MAAM,MAAM,SAAwB,IAAI,CAAC,WAAW,CAAC,KAAK,mCAAI,EAAE,CAAC;oBACjE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE;wBAC3C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;qBACpC;oBACD,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;iBACnC;aACF;YACD,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;SAChC,CAAA;QAED,gBAAW,GAAG,CAAC,MAAa,EAAE,IAAS;YACrC,MAAM,CAAC,eAAe,EAAE,CAAC;YACzB,MAAM,CAAC,wBAAwB,EAAE,CAAC;YAClC,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;YACnC,IAAI,CAAC,KAAK,EAAE,CAAC;SACd,CAAA;QAED,aAAQ,GAAG,CAAC,IAAS;;YACnB,MAAM,MAAM,SAAwB,IAAI,CAAC,WAAW,CAAC,KAAK,mCAAI,EAAE,CAAC;YACjE,IAAI,QAAQ,IAAI,CAAC,KAAK,QAAQ,IAAI,QAAQ,IAAI,CAAC,KAAK,QAAQ,EAAE;gBAC5D,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC;gBAClE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;gBAC9C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;aAC5C;iBAAM,IAAI,IAAI,CAAC,UAAU,EAAE;gBAC1B,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAG,IAAI,CAAC,UAAU,OAAM,KAAK,CAAC,CAAC,CAAC;gBACrF,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;gBAC9C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;aAC5C;YACD,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAC/B,IAAI,CAAC,KAAK,EAAE,CAAC;SACd,CAAA;QAED,WAAM,GAAG,CAAC,IAAS;YACjB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7B,IAAI,CAAC,KAAK,EAAE,CAAC;SACd,CAAA;;;;;;;;;;;;;;;;;;QAoBD,aAAQ,GAAG,CAAC,KAAmC;;YAC7C,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;YAChC,MAAM,MAAM,SAAwB,IAAI,CAAC,WAAW,CAAC,KAAK,mCAAI,EAAE,CAAC;YACjE,IAAI,IAAI,EAAE;gBACR,IAAI,QAAQ,IAAI,CAAC,KAAK,QAAQ,IAAI,QAAQ,IAAI,CAAC,KAAK,QAAQ,EAAE;oBAC5D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;wBAC1B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBAClB,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;wBAClC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;wBAC9C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;wBAC3C,UAAU,CAAC;;4BACT,MAAA,IAAI,CAAC,mBAAmB,0CAAE,SAAS,GAAG;yBACvC,EAAE,CAAC,CAAC,CAAC;qBACP;iBACF;qBAAM,IAAI,IAAI,CAAC,UAAU,EAAE;oBAC1B,MAAM,GAAG,GAAG,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAG,IAAI,CAAC,UAAU,MAAK,IAAI,CAAC;oBAC5C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;wBACzB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;wBACjB,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;wBAClC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;wBAC9C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;wBAC3C,UAAU,CAAC;;4BACT,MAAA,IAAI,CAAC,mBAAmB,0CAAE,SAAS,GAAG;yBACvC,EAAE,CAAC,CAAC,CAAC;qBACP;iBACF;gBACD,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE,CAAC;gBACpC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,EAAE;oBAC7B,SAAS,EAAE,KAAK;iBACjB,CAAC,CAAC;aACJ;SACF,CAAA;;;;;;;;;;;;;;;;;;;QAqBD,YAAO,GAAG;YACR,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;;SAEhC,CAAA;QAED,WAAM,GAAG;YACP,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,UAAU,CAAC;gBACT,IAAG,IAAI,CAAC,SAAS,EAAE;oBACjB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;oBACvB,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,EAAE;wBAC7B,SAAS,EAAE,KAAK;qBACjB,CAAC,CAAC;iBACJ;aACF,EAAE,GAAG,CAAC,CAAC;SACT,CAAA;QAED,YAAO,GAAG;;YACR,UAAI,IAAI,CAAC,MAAM,0CAAE,WAAW,EAAE;gBAC5B,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;oBACjD,IAAI,CAAC,KAAK,EAAE,CAAC;iBACd;aACF;SACF,CAAA;QAED,UAAK,GAAG;YACN,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,UAAU,CAAC;;gBACT,MAAA,IAAI,CAAC,mBAAmB,0CAAE,SAAS,GAAG;gBACtC,YAAA,IAAI,CAAC,KAAK,0CAAE,aAAa,0CAAE,KAAK,GAAG;aACpC,EAAE,GAAG,CAAC,CAAC;SACT,CAAA;QAED,YAAO,GAAG,CAAC,MAAY;;YACrB,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,eAAe,GAAG;YAC1B,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAC/B,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAC9B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YAC9C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YAC3C,MAAA,IAAI,CAAC,mBAAmB,0CAAE,SAAS,GAAG;YACtC,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;SAC1B,CAAA;QAED,qBAAgB,GAAG,kDAAyB,CAAC;KA1Y5C;IA5HD,IAAa,IAAI,CAAC,GAAW;QAC3B,IAAI,GAAG,EAAE;YACP,uBAAA,IAAI,SAAS,GAAG,EAAC;SAClB;KACF;IAMD,IAAa,IAAI,CAAC,GAAuB;QACvC,IAAI,GAAG,EAAE;YACP,IAAI,GAAG,YAAY,MAAM,EAAE;gBACzB,uBAAA,IAAI,SAAS,GAAG,CAAC,IAAI,EAAC;aACvB;iBAAM;gBACL,uBAAA,IAAI,SAAS,GAAG,EAAC;aAClB;SACF;KACF;IAED,IAAa,OAAO,CAAC,GAAiB;QACpC,uBAAA,IAAI,YAAY,CAAC,GAAG,KAAK,EAAE,KAAK,GAAG,EAAC;KACrC;IAMD,IAAwB,UAAU,CAAC,GAA4C;QAC7E,IAAI,CAAC,SAAS,GAAG,CAAC,GAAG,KAAK,EAAE,KAAK,GAAG,CAAC;KACtC;IAED,IAAkC,oBAAoB,CAAC,GAAiB;QACtE,IAAI,CAAC,mBAAmB,GAAG,CAAC,GAAG,KAAK,EAAE,KAAK,GAAG,CAAC;KAChD;IAYD,IAAa,KAAK,CAAC,KAAqC;QACtD,uBAAA,IAAI,UAAU,CAAC,EAAC;QAChB,IAAI,CAAC,KAAK,EAAE;YACV,4CAAmB,IAAI,CAAC,EAAE,CAAC,CAAC;SAC7B;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAC/B,4CAAmB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC;SAC3E;aAAM;YACL,uBAAA,IAAI,UAAU,GAAG,EAAC;YAClB,4CAAmB,IAAI,CAAC,KAAK,CAAC,CAAC;SAChC;QACD,IAAI,CAAC,WAAW,CAAC,sBAAsB,EAAE,CAAC;KAC3C;;IAUD,IAAa,KAAK,CAAC,MAAuC;QACxD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YAC1B,MAAM,GAAG,EAAE,CAAC;SACb;QACD,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;KACnC;IAGD,IAAuB,SAAS,CAAC,GAAiB;QAChD,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAG,KAAK,EAAE,KAAK,GAAG,CAAC;QACpC,oDAAA,IAAI,CAAmB,CAAC;KACzB;IAGD,IAAkB,IAAI,CAAC,GAAoB;QACzC,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;QACrB,oDAAA,IAAI,CAAmB,CAAC;KACzB;IAED,IAAkB,IAAI,CAAC,GAAoB;QACzC,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;QACrB,oDAAA,IAAI,CAAmB,CAAC;KACzB;;IAID,IAAa,QAAQ,CAAC,GAAiB;QACrC,GAAG,GAAG,CAAC,GAAG,KAAK,EAAE,KAAK,GAAG,CAAC;QAC1B,IAAI,GAAG,EAAE;YACP,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;YAC3B,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;SAC7B;aAAM;YACL,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;YAC1B,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;SAC5B;KACF;IAwBD,QAAQ;;QACN,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,WAAI,IAAI,CAAC,UAAU,0CAAE,UAAU,CAAA,CAAC;KAClE;IAED,eAAe;;QACb,4CAAmB,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,SAAS,CAAC;YAC1D,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;SACzB,CAAC,CAAC,CAAC;QACJ,uBAAA,IAAI,aAAa,aAAa,CAAC;YAC7B,4CAAmB,YAAY,EAAE;YACjC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,YAAY,sCAAa,CAAC;YAC7E,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;SAAC,CAAC,CAAC,IAAI,CAC1E,SAAS,CAAC,CAAO,CAAC,KAAK,CAAC;YACtB,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;YACpC,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,IAAI,EAAE,CAAC;YAC5C,IAAI,QAAQ,KAAK,CAAC,KAAK,UAAU,EAAE;gBACjC,OAAO,MAAM,8CAAA,IAAI,EAAY,GAAG,EAAE,KAAK,CAAC,CAAC;aAC1C;YACD,uBAAA,IAAI,YAAY,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,EAAC;YAChD,MAAM,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC;YAC3D,uBAAA,IAAI,kBAAkB,KAAK,CAAC,MAAM,CAAC,IAAI;gBACrC,MAAM,KAAK,GAAG,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;gBACvD,MAAM,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC;gBAC3D,IAAI,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE;oBAC1E,OAAO,IAAI,CAAC;iBACb;gBACD,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC;aACtC,CAAC,EAAC;YACH,oDAA2B;SAC5B,CAAA,CAAC,CAAC,EAAC;QACR,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;YACjC,4CAAmB,YAAY,EAAE;YACjC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;SAAC,CAAC;aACtE,IAAI,CACH,SAAS,CAAC,CAAO,CAAC,KAAK,EAAE,GAAG,CAAC;;;;YAG3B,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;YAC7B,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;gBACpB,uBAAA,IAAI,kBAAkB,IAAI,CAAC,WAAW,CAAC,KAAK,EAAC;gBAC7C,oDAA2B;aAC5B;YACD,IAAI,QAAQ,KAAK,CAAC,KAAK,UAAU,EAAE;gBACjC,uBAAA,IAAI,kBAAkB,MAAM,sDAAA,IAAI,EAAoB,GAAG,EAAE,KAAK,CAAC,EAAC;gBAChE,oDAA2B;aAC5B;YACD,uBAAA,IAAI,yBAAmB,IAAI,CAAC,WAAW,CAAC,KAAK,IAAI,EAAE,CAAC,0CAAE,GAAG,CAAC,KAAK;gBAC7D,OAAO,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,KAAK,MAAK;oBAC7D,CAAC,IAAI,CAAC,UAAU,GAAG,KAAK;oBACxB,CAAC,IAAI,CAAC,YAAY,GAAG,KAAK;iBAC3B,CAAC;aACH,GAAE;YACH,oDAA2B;SAC5B,CAAA,CAAC,CACH,CAAC;QACJ,IAAI,CAAC,aAAa,GAAG,wCAAe,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI;YAC3E,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,IAAI,EAAE,CAAC;YAC5C,IAAI,IAAI,CAAC,UAAU,EAAE;gBACnB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAG,IAAI,CAAC,UAAU,EAAE,CAAC;aAClD;YACD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;SAC/B,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;QAuBxB,mFAAY,UAAU,sCAAa,IAAI,CAAC,WAAW,EAAE;KACtD;IAED,WAAW;;QACT,mFAAY,aAAa,sCAAa;QACtC,4CAAmB,WAAW,EAAE,CAAC;KAClC;;;;YAhOF,SAAS,SAAC;gBACT,QAAQ,EAAE,SAAS;gBACnB,q8FAAoC;gBAEpC,eAAe,EAAE,uBAAuB,CAAC,MAAM;;aAChD;;;YApCC,iBAAiB;4CAkKd,MAAM,SAAC,WAAW,cAAG,QAAQ;;;mBA3H/B,KAAK;yBAKL,KAAK;mBAGL,KAAK;mBAEL,KAAK;sBAUL,KAAK;oBAGL,KAAK;yBACL,KAAK;2BACL,KAAK;0BACL,KAAK;yBAEL,KAAK,SAAC,WAAW;mCAIjB,KAAK,SAAC,qBAAqB;oBAc3B,KAAK;oBAYL,KAAK;4BAKL,KAAK;oBAIL,KAAK;wBAQL,KAAK,SAAC,UAAU;mBAMhB,KAAK,SAAC,KAAK;mBAKX,KAAK,SAAC,KAAK;0BAIX,MAAM;uBAGN,KAAK;uBAWL,MAAM;uBACN,MAAM;2BACN,MAAM;oBAEN,SAAS,SAAC,OAAO;8BACjB,SAAS,SAAC,MAAM;uBAChB,SAAS,SAAC,UAAU,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;kCACtC,SAAS,SAAC,sBAAsB,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE;qBAClE,YAAY,SAAC,kBAAkB;4BAC/B,YAAY,SAAC,gBAAgB;yBAC7B,YAAY,SAAC,mBAAmB;;;MC7JtB,mBAAmB;IAC9B,iBAAiB;IACjB,SAAS,CAAC,IAAS,EAAE,SAA6C;QAChE,IAAG,QAAO,SAAS,CAAC,KAAK,SAAS,EAAE;YAClC,OAAO,SAAS,CAAC;SAClB;QACD,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC;KACxB;;;YAVF,IAAI,SAAC;gBACJ,IAAI,EAAE,iBAAiB;aACxB;;;;MCuCY,YAAY;;;YA1BxB,QAAQ,SAAC;gBACR,OAAO,EAAE;oBACP,YAAY;oBACZ,WAAW;oBACX,mBAAmB;oBACnB,cAAc;oBACd,gBAAgB;oBAChB,kBAAkB;oBAClB,qBAAqB;oBACrB,aAAa;oBACb,wBAAwB;oBACxB,cAAc;oBACd,iBAAiB;oBACjB,cAAc;iBACf;gBACD,YAAY,EAAE;oBACZ,MAAM;oBACN,gBAAgB;oBAChB,mBAAmB;iBACpB;gBACD,OAAO,EAAE;oBACP,cAAc;oBACd,MAAM;oBACN,gBAAgB;iBACjB;aACF;;;ACzCD;;;;ACAA;;;;;;"}
1
+ {"version":3,"file":"sd-angular-core-chip.js","sources":["../../../../projects/sd-core/chip/src/lib/directives/sd-chip-display-def.directive.ts","../../../../projects/sd-core/chip/src/lib/chip.component.ts","../../../../projects/sd-core/chip/src/lib/pipes/removable-chip.pipe.ts","../../../../projects/sd-core/chip/src/lib/chip.module.ts","../../../../projects/sd-core/chip/src/public-api.ts","../../../../projects/sd-core/chip/sd-angular-core-chip.ts"],"sourcesContent":["import { Directive, Input, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdChipDisplayDef]'\r\n})\r\nexport class SdChipDisplayDef {\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n ViewChild,\r\n Output,\r\n EventEmitter,\r\n OnInit, OnDestroy,\r\n AfterViewInit,\r\n ChangeDetectorRef,\r\n ElementRef,\r\n ContentChild,\r\n ChangeDetectionStrategy,\r\n Inject,\r\n Optional\r\n} from '@angular/core';\r\nimport { COMMA, ENTER } from '@angular/cdk/keycodes';\r\nimport { debounceTime, map, startWith, switchMap } from 'rxjs/operators';\r\n\r\nimport * as uuid from 'uuid';\r\nimport hash from 'object-hash';\r\nimport { NgForm, FormControl, FormGroup, ValidatorFn, AsyncValidatorFn, Validators, FormGroupDirective } from '@angular/forms';\r\nimport { Observable, Subscription, BehaviorSubject, combineLatest } from 'rxjs';\r\nimport { MatChipInputEvent, MatChipList } from '@angular/material/chips';\r\nimport { MatAutocomplete, MatAutocompleteSelectedEvent, MatAutocompleteTrigger } from '@angular/material/autocomplete';\r\nimport { SdChipUpdate } from './chip.model';\r\nimport { ErrorStateMatcher } from '@angular/material/core';\r\nimport { SdChipDisplayDef } from './directives/sd-chip-display-def.directive';\r\nimport { FORM_CONFIG, IFormConfiguration, SdFormControl, SdViewDefDirective } from '@sd-angular/core/common';\r\nimport { MatFormFieldAppearance } from '@angular/material/form-field';\r\nimport { SdLabelDefDirective } from '@sd-angular/core/common';\r\n\r\nclass SdChipErrotStateMatcher implements ErrorStateMatcher {\r\n constructor(private formControl: FormControl) { }\r\n isErrorState(control: FormControl | null, form: FormGroupDirective | NgForm | null): boolean {\r\n const isSubmitted = form && form.submitted;\r\n return !!(this.formControl?.invalid && (this.formControl?.dirty || this.formControl?.touched || isSubmitted));\r\n }\r\n}\r\n\r\n@Component({\r\n selector: 'sd-chip',\r\n templateUrl: './chip.component.html',\r\n styleUrls: ['./chip.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdChip implements OnInit, OnDestroy, AfterViewInit {\r\n #name = uuid.v4();\r\n @Input() set name(val: string) {\r\n if (val) {\r\n this.#name = val;\r\n }\r\n }\r\n @Input() appearance: MatFormFieldAppearance;\r\n separatorKeysCodes: number[] = [ENTER, COMMA];\r\n selectable = true;\r\n @Input() size: 'sm' | 'lg';\r\n #form: FormGroup;\r\n @Input() set form(val: NgForm | FormGroup) {\r\n if (val) {\r\n if (val instanceof NgForm) {\r\n this.#form = val.form;\r\n } else {\r\n this.#form = val;\r\n }\r\n }\r\n }\r\n #addable: boolean;\r\n @Input() set addable(val: '' | boolean) {\r\n this.#addable = (val === '') || val;\r\n }\r\n @Input() label: string;\r\n @Input() valueField: string;\r\n @Input() displayField: string;\r\n @Input() placeholder: string;\r\n removable: boolean | ((item: any) => boolean) = true;\r\n @Input('removable') set _removable(val: '' | boolean | ((item: any) => boolean)) {\r\n this.removable = (val === '') || val;\r\n }\r\n disableErrorMessage = false;\r\n @Input('disableErrorMessage') set _disableErrorMessage(val: boolean | '') {\r\n this.disableErrorMessage = (val === '') || val;\r\n }\r\n // Server search\r\n loading = false;\r\n #allItems: Observable<any[]>;\r\n #allItem: {\r\n [key: string]: any\r\n } = {};\r\n #cache: {\r\n [key: string]: any[]\r\n } = {};\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 gọi hàm\r\n #itemsChanges = new BehaviorSubject<any[] | SearchFunc>([]);\r\n @Input() set items(items: undefined | any[] | SearchFunc) {\r\n this.#delay = 0;\r\n if (!items) {\r\n this.#itemsChanges.next([]);\r\n } else if (Array.isArray(items)) {\r\n this.#itemsChanges.next(items.filter(e => e !== null && e !== undefined));\r\n } else {\r\n this.#delay = 500;\r\n this.#itemsChanges.next(items);\r\n }\r\n this.formControl.updateValueAndValidity();\r\n }\r\n @Input() limit = 50;\r\n selectedItems: Observable<any[]>;\r\n #selectedItems: any[] = [];\r\n filteredItems: Observable<any[]>;\r\n #filteredItems: any[];\r\n @Input() cacheChecksum: any;\r\n ipt: any;\r\n\r\n // model\r\n @Input() set model(values: undefined | (string | number)[]) {\r\n if (!Array.isArray(values)) {\r\n values = [];\r\n }\r\n this.formControl.setValue(values);\r\n }\r\n // Validator\r\n required = false;\r\n @Input('required') set _required(val: boolean | '') {\r\n this.required = (val === '') || val;\r\n this.#updateValidator();\r\n }\r\n\r\n min: number;\r\n @Input('min') set pMin(val: number | string) {\r\n this.min = +val || 0;\r\n this.#updateValidator();\r\n }\r\n max: number;\r\n @Input('max') set pMax(val: number | string) {\r\n this.max = +val || 0;\r\n this.#updateValidator();\r\n }\r\n @Output() modelChange = new EventEmitter();\r\n\r\n // Optional\r\n @Input() set disabled(val: boolean | '') {\r\n val = (val === '') || val;\r\n if (val) {\r\n this.formControl.disable();\r\n this.inputControl.disable();\r\n } else {\r\n this.formControl.enable();\r\n this.inputControl.enable();\r\n }\r\n }\r\n\r\n @Output() sdChange = new EventEmitter<any[]>();\r\n @Output() sdUpdate = new EventEmitter<SdChipUpdate>();\r\n @Output() chipSelected = new EventEmitter<any>();\r\n\r\n @ViewChild('input') input: ElementRef<HTMLInputElement>;\r\n @ViewChild('auto') matAutocomplete: MatAutocomplete;\r\n @ViewChild('chipList', { static: true }) chipList: MatChipList;\r\n @ViewChild(MatAutocompleteTrigger, { read: MatAutocompleteTrigger }) autocompleteTrigger: MatAutocompleteTrigger;\r\n @ContentChild(SdViewDefDirective) sdView: SdViewDefDirective;\r\n @ContentChild(SdChipDisplayDef) sdChipDisplay: SdChipDisplayDef;\r\n @ContentChild(SdLabelDefDirective) sdLabelDef: SdLabelDefDirective;\r\n isBluring = false;\r\n isFocused = false;\r\n inputControl = new FormControl();\r\n formControl = new SdFormControl();\r\n matcher = new SdChipErrotStateMatcher(this.formControl);\r\n #subscription = new Subscription();\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n @Inject(FORM_CONFIG) @Optional() private formConfig: IFormConfiguration) {\r\n }\r\n\r\n ngOnInit() {\r\n this.appearance = this.appearance || this.formConfig?.appearance;\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.#subscription.add(this.formControl.sdChanges.subscribe(() => {\r\n this.ref.markForCheck();\r\n }));\r\n this.#allItems = combineLatest([\r\n this.#itemsChanges.asObservable(),\r\n this.inputControl.valueChanges.pipe(startWith(''), debounceTime(this.#delay)),\r\n this.formControl.valueChanges.pipe(startWith(this.formControl.value))]).pipe(\r\n switchMap(async ([items]) => {\r\n const val = this.inputControl.value;\r\n const values = this.formControl.value || [];\r\n if (typeof (items) === 'function') {\r\n return await this.#loadItems(val, items);\r\n }\r\n this.#allItem = items.toObject(this.valueField);\r\n const hasFields = !!this.valueField && !!this.displayField;\r\n this.#filteredItems = items.filter(item => {\r\n const value = hasFields ? item[this.valueField] : item;\r\n const display = hasFields ? item[this.displayField] : item;\r\n if (String.aliasIncludes(value, val) || String.aliasIncludes(display, val)) {\r\n return true;\r\n }\r\n return values.some(e => e === value);\r\n });\r\n return this.#filteredItems;\r\n }));\r\n this.selectedItems = combineLatest([\r\n this.#itemsChanges.asObservable(),\r\n this.formControl.valueChanges.pipe(startWith(this.formControl.value))])\r\n .pipe(\r\n switchMap(async ([items, val]) => {\r\n // Vì một số lý do chưa xác định mà khi sử dụng sdViewDef thì khi chuyển sang dạng view sẽ trigger val = null\r\n // Nhưng formControl.value vẫn có giá trị đúng nên thực hiện gán val = this.formControl.value;\r\n val = this.formControl.value;\r\n if (!this.valueField) {\r\n this.#selectedItems = this.formControl.value;\r\n return this.#selectedItems;\r\n }\r\n if (typeof (items) === 'function') {\r\n this.#selectedItems = await this.#loadSelectedItems(val, items);\r\n return this.#selectedItems;\r\n }\r\n this.#selectedItems = (this.formControl.value || [])?.map(value => {\r\n return items?.find(item => item[this.valueField] === value) || {\r\n [this.valueField]: value,\r\n [this.displayField]: value\r\n };\r\n });\r\n return this.#selectedItems;\r\n })\r\n );\r\n this.filteredItems = this.#allItems.pipe(map(allItems => allItems.filter(item => {\r\n const values = this.formControl.value || [];\r\n if (this.valueField) {\r\n return !values.includes(item?.[this.valueField]);\r\n }\r\n return !values.includes(item);\r\n }).paging(this.limit)));\r\n // this.display = this.selectedItems.pipe(\r\n // map(selectedItems => selectedItems?.map(item => this.displayField ? item[this.displayField] : item)?.join(', ')));\r\n // this.#subscription.add(this.formControl.valueChanges.subscribe(() => {\r\n // const values: (string | number)[] = this.formControl.value || [];\r\n // this.selectedItems = this.#items.filter(item => values.findIndex(value => value === item?.[this.valueField]) !== -1);\r\n // this.modelChange.emit(values);\r\n // this.sdChange.emit(values);\r\n // setTimeout(() => {\r\n // this.#form?.markAsDirty();\r\n // }, 0);\r\n // }));\r\n // this.#subscription.add(this.#itemChanges.pipe(startWith(this.#items)).subscribe(() => {\r\n // const values: (string | number)[] = this.formControl.value || [];\r\n // this.selectedItems = [];\r\n // for (const value of values) {\r\n // const item = this.#items.find(e => e?.[this.valueField] === value) || {};\r\n // this.selectedItems.push({\r\n // ...item,\r\n // [this.valueField]: value\r\n // });\r\n // }\r\n // }));\r\n this.#form?.addControl(this.#name, this.formControl);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#form?.removeControl(this.#name);\r\n this.#subscription.unsubscribe();\r\n }\r\n\r\n #updateValidator = () => {\r\n this.formControl.clearValidators();\r\n this.formControl.clearAsyncValidators();\r\n const validators: ValidatorFn[] = [];\r\n const asyncValidators: AsyncValidatorFn[] = [];\r\n if (this.required) {\r\n validators.push(Validators.required);\r\n }\r\n if (this.min > 0) {\r\n validators.push(Validators.minLength(this.min));\r\n }\r\n if (this.max > 0) {\r\n validators.push(Validators.maxLength(this.max));\r\n }\r\n this.formControl.setValidators(validators);\r\n this.formControl.setAsyncValidators(asyncValidators);\r\n this.formControl.updateValueAndValidity();\r\n }\r\n\r\n #loadItems = async (searchText: string, items: SearchFunc) => {\r\n searchText = searchText?.toString() || '';\r\n const key = hash({\r\n checksum: this.cacheChecksum || null,\r\n searchText\r\n })\r\n if (this.#cache[key] === undefined) {\r\n this.loading = true;\r\n const results = await items(searchText).catch(() => []).finally(() => this.loading = false);\r\n const objItem = Array.toObject(results, this.valueField);\r\n this.#allItem = {\r\n ...this.#allItem,\r\n ...objItem\r\n };\r\n this.#cache[key] = results.union(this.valueField);\r\n }\r\n // if (!this.multiple) {\r\n // return this.#cache[searchText];\r\n // }\r\n const selectedItems = await this.#loadSelectedItems(this.formControl.value, items);\r\n // Đưa những selectedItems lên đầu nếu không mat-select-trigger sẽ không work\r\n return [...selectedItems, ...this.#cache[key]].union(this.valueField);\r\n }\r\n\r\n #loadSelectedItems = async (value: string | string[], items: SearchFunc) => {\r\n if (!value?.toString()) {\r\n return [];\r\n }\r\n const values = Array.isArray(value) ? value : [value];\r\n if (!this.valueField && !this.displayField) {\r\n return values;\r\n }\r\n this.loading = true;\r\n if (values.some(val => this.#allItem[val] === undefined)) {\r\n const results = await items(value, true).catch(() => []).finally(() => this.loading = false);\r\n const objItem = Array.toObject(results, this.valueField);\r\n const objValue = Array.toObject(\r\n values.map(val => ({ [val?.toString()]: { [this.valueField]: val, [this.displayField]: val } })), this.valueField);\r\n this.#allItem = {\r\n ...objValue,\r\n ...this.#allItem,\r\n ...objItem\r\n };\r\n }\r\n return values.map(val => this.#allItem[val?.toString()] ?? { [this.valueField]: val, [this.displayField]: val });\r\n }\r\n\r\n onAdd = (event: MatChipInputEvent): void => {\r\n // Add item only when MatAutocomplete is not open\r\n // To make sure this does not conflict with OptionSelected Event\r\n // if (!this.matAutocomplete.isOpen) {\r\n // const value = (event.value ?? '').toString().trim();\r\n // if (value) {\r\n // if (this.valueField && this.displayField) {\r\n // const item = this.#filteredItems.find(e => e[this.displayField] === value);\r\n // if (item) {\r\n // const values: (string | number)[] = this.formControl.value ?? [];\r\n // values.push(item[this.valueField]);\r\n // this.formControl.setValue(values);\r\n // } else if (this.#addable) {\r\n // const values: (string | number)[] = this.formControl.value ?? [];\r\n // values.push(value);\r\n // this.formControl.setValue(values);\r\n // }\r\n // } else {\r\n // console.log(value);\r\n // console.log(this.#filteredItems);\r\n // const item = this.#filteredItems.find(item => item === value);\r\n // if (item) {\r\n // const values: (string | number)[] = this.formControl.value ?? [];\r\n // values.push(item);\r\n // this.formControl.setValue(values);\r\n // } else if (this.#addable) {\r\n // const values: (string | number)[] = this.formControl.value ?? [];\r\n // values.push(value);\r\n // this.formControl.setValue(values);\r\n // }\r\n // }\r\n // }\r\n // this.inputControl.setValue('');\r\n // }\r\n const value = (event.value ?? '').toString().trim();\r\n if (value) {\r\n if (this.valueField && this.displayField) {\r\n const item = this.#filteredItems.find(e => e[this.displayField] === value);\r\n if (item) {\r\n const values: (string | number)[] = this.formControl.value ?? [];\r\n values.push(item[this.valueField]);\r\n this.formControl.setValue(values);\r\n this.modelChange.emit(this.formControl.value);\r\n this.sdChange.emit(this.formControl.value);\r\n } else if (this.#addable) {\r\n const values: (string | number)[] = this.formControl.value ?? [];\r\n values.push(value);\r\n this.formControl.setValue(values);\r\n this.modelChange.emit(this.formControl.value);\r\n this.sdChange.emit(this.formControl.value);\r\n }\r\n } else {\r\n const item = this.#filteredItems.find(item => item === value);\r\n if (item) {\r\n const values: (string | number)[] = this.formControl.value ?? [];\r\n values.push(item);\r\n this.formControl.setValue(values);\r\n this.modelChange.emit(this.formControl.value);\r\n this.sdChange.emit(this.formControl.value);\r\n } else if (this.#addable) {\r\n const values: (string | number)[] = this.formControl.value ?? [];\r\n values.push(value);\r\n this.formControl.setValue(values);\r\n this.modelChange.emit(this.formControl.value);\r\n this.sdChange.emit(this.formControl.value);\r\n }\r\n }\r\n }\r\n this.input.nativeElement.value = '';\r\n this.inputControl.setValue('');\r\n }\r\n\r\n // andn1 viết để xử lý tạm us B2B1D-18289 ở S69\r\n onAdd2 = (event: MatChipInputEvent): void => {\r\n\r\n const value = (event.value ?? '').toString().toLowerCase().trim();\r\n if (value) {\r\n const item = this.#filteredItems.find(e => e[this.valueField]\r\n && e[this.valueField].toString().toLowerCase().trim() === value);\r\n\r\n if (item) {\r\n const values: (string | number)[] = this.formControl.value ?? [];\r\n if (!values.includes(item[this.valueField])) {\r\n values.push(item[this.valueField]);\r\n }\r\n this.formControl.setValue(values);\r\n }\r\n }\r\n this.inputControl.setValue('');\r\n }\r\n\r\n onClickChip = ($event: Event, item: any) => {\r\n $event.stopPropagation();\r\n $event.stopImmediatePropagation();\r\n if (!this.formControl.disabled) {\r\n item.isSelected = !item.isSelected;\r\n this.focus();\r\n }\r\n }\r\n\r\n onRemove = (item: any): void => {\r\n const values: (string | number)[] = this.formControl.value ?? [];\r\n if (typeof (item) === 'string' || typeof (item) === 'number') {\r\n this.formControl.setValue(values.filter(value => item !== value));\r\n this.modelChange.emit(this.formControl.value);\r\n this.sdChange.emit(this.formControl.value);\r\n } else if (this.valueField) {\r\n this.formControl.setValue(values.filter(value => item?.[this.valueField] !== value));\r\n this.modelChange.emit(this.formControl.value);\r\n this.sdChange.emit(this.formControl.value);\r\n }\r\n this.inputControl.setValue('');\r\n this.focus();\r\n }\r\n\r\n select = (item: any): void => {\r\n this.chipSelected.emit(item);\r\n this.focus();\r\n }\r\n\r\n // onSelect = (event: MatAutocompleteSelectedEvent) => {\r\n // const value = (event.option.value?.[this.valueField] ?? '').toString().trim();\r\n // if (value) {\r\n // const item = this.#items.find(e => e[this.valueField]\r\n // && e[this.valueField].toString().trim() === value);\r\n // if (item) {\r\n // const values: (string | number)[] = this.formControl.value ?? [];\r\n // values.push(item[this.valueField]);\r\n // this.formControl.setValue(values);\r\n // this.input.nativeElement.value = '';\r\n // this.inputControl.setValue('');\r\n // setTimeout(() => {\r\n // this.autocompleteTrigger?.openPanel();\r\n // }, 0);\r\n // }\r\n // }\r\n // }\r\n\r\n onSelect = (event: MatAutocompleteSelectedEvent) => {\r\n const item = event.option.value;\r\n const values: (string | number)[] = this.formControl.value ?? [];\r\n if (item) {\r\n if (typeof (item) === 'string' || typeof (item) === 'number') {\r\n if (!values.includes(item)) {\r\n values.push(item);\r\n this.formControl.setValue(values);\r\n this.modelChange.emit(this.formControl.value);\r\n this.sdChange.emit(this.formControl.value);\r\n setTimeout(() => {\r\n this.autocompleteTrigger?.openPanel();\r\n }, 0);\r\n }\r\n } else if (this.valueField) {\r\n const val = item?.[this.valueField] || null;\r\n if (!values.includes(val)) {\r\n values.push(val);\r\n this.formControl.setValue(values);\r\n this.modelChange.emit(this.formControl.value);\r\n this.sdChange.emit(this.formControl.value);\r\n setTimeout(() => {\r\n this.autocompleteTrigger?.openPanel();\r\n }, 0);\r\n }\r\n }\r\n this.input.nativeElement.value = '';\r\n this.inputControl.setValue('', {\r\n emitEvent: false\r\n });\r\n }\r\n }\r\n\r\n // displayFn = (value: string | { [key: string]: string }): string | undefined => {\r\n // if (typeof value === 'string') {\r\n // if (!this.#items) {\r\n // return undefined;\r\n // }\r\n // const selectedItem = this.#items.find(item => item[this.valueField] === value);\r\n // if (selectedItem) {\r\n // return selectedItem[this.displayField];\r\n // }\r\n // if (this.#items.some(item => item[this.displayField].toLowerCase().indexOf(value.toLowerCase()) !== -1)) {\r\n // return value;\r\n // } else {\r\n // return undefined;\r\n // }\r\n // } else {\r\n // return value ? value[this.displayField] : undefined;\r\n // }\r\n // }\r\n\r\n onFocus = () => {\r\n this.isFocused = true;\r\n this.isBluring = false;\r\n this.inputControl.setValue('');\r\n // this.inputControl.updateValueAndValidity();\r\n }\r\n\r\n onBlur = () => {\r\n this.isBluring = true;\r\n setTimeout(() => {\r\n if(this.isBluring) {\r\n this.isFocused = false;\r\n this.inputControl.setValue('', {\r\n emitEvent: false\r\n });\r\n }\r\n }, 100);\r\n }\r\n\r\n onClick = () => {\r\n if (this.sdView?.templateRef) {\r\n if (!this.formControl.disabled && !this.isFocused) {\r\n this.focus();\r\n }\r\n }\r\n }\r\n\r\n focus = () => {\r\n this.isFocused = true;\r\n this.isBluring = false;\r\n setTimeout(() => {\r\n this.autocompleteTrigger?.openPanel();\r\n this.input?.nativeElement?.focus();\r\n }, 100);\r\n }\r\n\r\n onClear = ($event?: any) => {\r\n $event?.stopPropagation();\r\n this.inputControl.setValue('');\r\n this.formControl.setValue([]);\r\n this.modelChange.emit(this.formControl.value);\r\n this.sdChange.emit(this.formControl.value);\r\n this.autocompleteTrigger?.openPanel();\r\n this.ref.detectChanges();\r\n }\r\n\r\n getSelectedItems = () => this.#selectedItems;\r\n}\r\n\r\ntype SearchFunc = (searchText?: string | string[], isFormValue?: boolean) => Promise<any[]>;","import { Pipe, PipeTransform } from '@angular/core';\r\n@Pipe({\r\n name: 'sdRemovableChip'\r\n})\r\nexport class SdRemovableChipPipe implements PipeTransform {\r\n constructor() { }\r\n transform(item: any, removable: boolean | ((item: any) => boolean)): boolean {\r\n if(typeof(removable) === 'boolean') {\r\n return removable;\r\n }\r\n return removable(item);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { SdChip } from './chip.component';\r\nimport { SdChipDisplayDef } from './directives/sd-chip-display-def.directive';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { SdTranslateModule } from '@sd-angular/core/translate';\r\nimport { MatChipsModule } from '@angular/material/chips';\r\nimport { SdRemovableChipPipe } from './pipes/removable-chip.pipe';\r\nimport { SdCommonModule } from '@sd-angular/core/common';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MatInputModule,\r\n MatTooltipModule,\r\n MatFormFieldModule,\r\n MatAutocompleteModule,\r\n MatIconModule,\r\n MatProgressSpinnerModule,\r\n MatChipsModule,\r\n SdTranslateModule,\r\n SdCommonModule\r\n ],\r\n declarations: [\r\n SdChip,\r\n SdChipDisplayDef,\r\n SdRemovableChipPipe\r\n ],\r\n exports: [\r\n SdCommonModule,\r\n SdChip,\r\n SdChipDisplayDef,\r\n ]\r\n})\r\nexport class SdChipModule { }\r\n","/*\r\n * Public API Surface of superdev-angular-core\r\n */\r\n\r\nexport * from './lib/chip.module';\r\nexport * from './lib/chip.component';\r\nexport * from './lib/chip.model';\r\nexport * from './lib/directives/sd-chip-display-def.directive';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n\nexport {SdRemovableChipPipe as ɵa} from './src/lib/pipes/removable-chip.pipe';"],"names":["uuid.v4"],"mappings":"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"}
@@ -1,13 +1,14 @@
1
1
  import { SdCommonModule } from '@sd-angular/core/common';
2
- import { __awaiter } from 'tslib';
2
+ import { __awaiter, __classPrivateFieldGet } from 'tslib';
3
3
  import { Injectable, NgModule } from '@angular/core';
4
4
  import { v4 } from 'uuid';
5
5
  import { PDFDocument } from 'pdf-lib';
6
6
  import { CommonModule } from '@angular/common';
7
7
 
8
+ var _drawPageFooter;
8
9
  class SdPdfService {
9
10
  constructor() {
10
- this.merge = (urls, download = true) => __awaiter(this, void 0, void 0, function* () {
11
+ this.merge = (urls, option = { download: true }) => __awaiter(this, void 0, void 0, function* () {
11
12
  const mergedPdf = yield PDFDocument.create();
12
13
  for (const url of urls) {
13
14
  const existingPdfBytes = yield fetch(url).then(res => res.arrayBuffer());
@@ -15,15 +16,30 @@ class SdPdfService {
15
16
  const copied = yield mergedPdf.copyPages(file, file.getPageIndices());
16
17
  copied.forEach((page) => mergedPdf.addPage(page));
17
18
  }
19
+ if ((option === null || option === void 0 ? void 0 : option.isInsertFooter) && (option === null || option === void 0 ? void 0 : option.footerOption)) {
20
+ __classPrivateFieldGet(this, _drawPageFooter).call(this, mergedPdf, option.footerOption);
21
+ }
18
22
  const mergedPdfFile = yield mergedPdf.save();
19
23
  const blob = new Blob([mergedPdfFile], { type: 'application/pdf' });
20
- if (download) {
24
+ if (option === null || option === void 0 ? void 0 : option.download) {
21
25
  SdUtility.downloadBlob(blob, v4());
22
26
  }
23
27
  return blob;
24
28
  });
29
+ _drawPageFooter.set(this, (pdf, option) => {
30
+ const numberOfPages = pdf.getPageCount();
31
+ pdf.getPages().forEach((page, idx) => {
32
+ var _a, _b, _c;
33
+ page.drawText(`${idx + 1}/${numberOfPages}`, {
34
+ x: (_a = option === null || option === void 0 ? void 0 : option.offsetX) !== null && _a !== void 0 ? _a : 15,
35
+ y: (_b = option === null || option === void 0 ? void 0 : option.offsetY) !== null && _b !== void 0 ? _b : 15,
36
+ size: (_c = option === null || option === void 0 ? void 0 : option.size) !== null && _c !== void 0 ? _c : 9,
37
+ });
38
+ });
39
+ });
25
40
  }
26
41
  }
42
+ _drawPageFooter = new WeakMap();
27
43
  SdPdfService.decorators = [
28
44
  { type: Injectable }
29
45
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"sd-angular-core-pdf.js","sources":["../../../../projects/sd-core/pdf/src/lib/pdf.service.ts","../../../../projects/sd-core/pdf/src/lib/pdf.module.ts","../../../../projects/sd-core/pdf/sd-angular-core-pdf.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport * as uuid from 'uuid';\r\nimport { PDFDocument } from 'pdf-lib';\r\n\r\n@Injectable()\r\nexport class SdPdfService {\r\n constructor() {\r\n }\r\n\r\n merge = async (urls: string[], download: boolean = true) => {\r\n const mergedPdf = await PDFDocument.create();\r\n for (const url of urls) {\r\n const existingPdfBytes = await fetch(url).then(res => res.arrayBuffer())\r\n const file = await PDFDocument.load(existingPdfBytes);\r\n const copied = await mergedPdf.copyPages(file, file.getPageIndices());\r\n copied.forEach((page) => mergedPdf.addPage(page));\r\n }\r\n const mergedPdfFile = await mergedPdf.save();\r\n const blob = new Blob([mergedPdfFile], { type: 'application/pdf' });\r\n if (download) {\r\n SdUtility.downloadBlob(blob, uuid.v4());\r\n }\r\n return blob;\r\n }\r\n}\r\n\r\nexport interface IExportInfo {\r\n data: any[];\r\n sheetName?: string;\r\n fileName?: string;\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SdPdfService } from './pdf.service';\r\nimport { SdCommonModule } from '@sd-angular/core/common';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n SdCommonModule\r\n ],\r\n declarations: [\r\n ],\r\n exports: [\r\n ],\r\n providers: [\r\n SdPdfService\r\n ]\r\n})\r\nexport class SdPdfModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["uuid.v4"],"mappings":";;;;;;;MAKa,YAAY;IACvB;QAGA,UAAK,GAAG,CAAO,IAAc,EAAE,WAAoB,IAAI;YACrD,MAAM,SAAS,GAAG,MAAM,WAAW,CAAC,MAAM,EAAE,CAAC;YAC7C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;gBACtB,MAAM,gBAAgB,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC,CAAA;gBACxE,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;gBACtD,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;gBACtE,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;aACnD;YACD,MAAM,aAAa,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,CAAC;YAC7C,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,aAAa,CAAC,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;YACpE,IAAI,QAAQ,EAAE;gBACZ,SAAS,CAAC,YAAY,CAAC,IAAI,EAAEA,EAAO,EAAE,CAAC,CAAC;aACzC;YACD,OAAO,IAAI,CAAC;SACb,CAAA,CAAA;KAhBA;;;YAHF,UAAU;;;;MCcE,WAAW;;;YAbvB,QAAQ,SAAC;gBACR,OAAO,EAAE;oBACP,YAAY;oBACZ,cAAc;iBACf;gBACD,YAAY,EAAE,EACb;gBACD,OAAO,EAAE,EACR;gBACD,SAAS,EAAE;oBACT,YAAY;iBACb;aACF;;;ACjBD;;;;;;"}
1
+ {"version":3,"file":"sd-angular-core-pdf.js","sources":["../../../../projects/sd-core/pdf/src/lib/pdf.service.ts","../../../../projects/sd-core/pdf/src/lib/pdf.module.ts","../../../../projects/sd-core/pdf/sd-angular-core-pdf.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport * as uuid from 'uuid';\r\nimport { PDFDocument } from 'pdf-lib';\r\n\r\n@Injectable()\r\nexport class SdPdfService {\r\n constructor() {\r\n }\r\n\r\n merge = async (urls: string[], option:PDFMergeOption = {download:true}) => {\r\n const mergedPdf = await PDFDocument.create();\r\n for (const url of urls) {\r\n const existingPdfBytes = await fetch(url).then(res => res.arrayBuffer())\r\n const file = await PDFDocument.load(existingPdfBytes);\r\n \r\n const copied = await mergedPdf.copyPages(file, file.getPageIndices());\r\n copied.forEach((page) => mergedPdf.addPage(page));\r\n }\r\n if (option?.isInsertFooter && option?.footerOption){\r\n this.#drawPageFooter(mergedPdf,option.footerOption); \r\n }\r\n const mergedPdfFile = await mergedPdf.save();\r\n const blob = new Blob([mergedPdfFile], { type: 'application/pdf' });\r\n if (option?.download) {\r\n SdUtility.downloadBlob(blob, uuid.v4());\r\n }\r\n return blob;\r\n }\r\n\r\n #drawPageFooter = (pdf:PDFDocument,option:FooterOption) => {\r\n const numberOfPages = pdf.getPageCount()\r\n pdf.getPages().forEach( (page,idx) => {\r\n page.drawText(`${idx+1}/${numberOfPages}`,{\r\n x:option?.offsetX ?? 15,\r\n y:option?.offsetY ?? 15,\r\n size:option?.size ?? 9,\r\n })\r\n })\r\n }\r\n}\r\n\r\nexport interface IExportInfo {\r\n data: any[];\r\n sheetName?: string;\r\n fileName?: string;\r\n}\r\nexport interface PDFMergeOption{\r\n download?:boolean,\r\n isInsertFooter?:boolean\r\n footerOption?:FooterOption,\r\n}\r\n\r\nexport interface FooterOption{\r\n \r\n offsetX?:number,\r\n offsetY?:number,\r\n size?:number,\r\n font?:string,\r\n}","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SdPdfService } from './pdf.service';\r\nimport { SdCommonModule } from '@sd-angular/core/common';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n SdCommonModule\r\n ],\r\n declarations: [\r\n ],\r\n exports: [\r\n ],\r\n providers: [\r\n SdPdfService\r\n ]\r\n})\r\nexport class SdPdfModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["uuid.v4"],"mappings":";;;;;;;;MAKa,YAAY;IACvB;QAGA,UAAK,GAAG,CAAO,IAAc,EAAE,SAAwB,EAAC,QAAQ,EAAC,IAAI,EAAC;YACpE,MAAM,SAAS,GAAG,MAAM,WAAW,CAAC,MAAM,EAAE,CAAC;YAC7C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;gBACtB,MAAM,gBAAgB,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC,CAAA;gBACxE,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;gBAEtD,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;gBACtE,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;aACnD;YACD,IAAI,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,cAAc,MAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,YAAY,CAAA,EAAC;gBAClD,mDAAA,IAAI,EAAiB,SAAS,EAAC,MAAM,CAAC,YAAY,CAAC,CAAC;aACpD;YACD,MAAM,aAAa,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,CAAC;YAC7C,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,aAAa,CAAC,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;YACpE,IAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,QAAQ,EAAE;gBACpB,SAAS,CAAC,YAAY,CAAC,IAAI,EAAEA,EAAO,EAAE,CAAC,CAAC;aACzC;YACD,OAAO,IAAI,CAAC;SACb,CAAA,CAAA;QAED,0BAAkB,CAAC,GAAe,EAAC,MAAmB;YACpD,MAAM,aAAa,GAAG,GAAG,CAAC,YAAY,EAAE,CAAA;YACxC,GAAG,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAE,CAAC,IAAI,EAAC,GAAG;;gBAC/B,IAAI,CAAC,QAAQ,CAAC,GAAG,GAAG,GAAC,CAAC,IAAI,aAAa,EAAE,EAAC;oBACxC,CAAC,QAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,mCAAI,EAAE;oBACvB,CAAC,QAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,mCAAI,EAAE;oBACvB,IAAI,QAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,mCAAI,CAAC;iBACvB,CAAC,CAAA;aACH,CAAC,CAAA;SACH,EAAA;KA/BA;;;;YAHF,UAAU;;;;MCcE,WAAW;;;YAbvB,QAAQ,SAAC;gBACR,OAAO,EAAE;oBACP,YAAY;oBACZ,cAAc;iBACf;gBACD,YAAY,EAAE,EACb;gBACD,OAAO,EAAE,EACR;gBACD,SAAS,EAAE;oBACT,YAAY;iBACb;aACF;;;ACjBD;;;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sd-angular/core",
3
- "version": "1.3.126",
3
+ "version": "1.3.128",
4
4
  "homepage": "https://www.facebook.com/DarkP3ter",
5
5
  "author": {
6
6
  "name": "darkpeter",
@@ -1 +1 @@
1
- {"__symbolic":"module","version":4,"metadata":{"SdPdfService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":4,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor"}]}},"IExportInfo":{"__symbolic":"interface"},"SdPdfModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":5,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":7,"character":4},{"__symbolic":"reference","module":"@sd-angular/core/common","name":"SdCommonModule","line":8,"character":4}],"declarations":[],"exports":[],"providers":[{"__symbolic":"reference","name":"SdPdfService"}]}]}],"members":{}}},"origins":{"SdPdfService":"./src/lib/pdf.service","IExportInfo":"./src/lib/pdf.service","SdPdfModule":"./src/lib/pdf.module"},"importAs":"@sd-angular/core/pdf"}
1
+ {"__symbolic":"module","version":4,"metadata":{"SdPdfService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":4,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor"}]}},"IExportInfo":{"__symbolic":"interface"},"PDFMergeOption":{"__symbolic":"interface"},"FooterOption":{"__symbolic":"interface"},"SdPdfModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":5,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":7,"character":4},{"__symbolic":"reference","module":"@sd-angular/core/common","name":"SdCommonModule","line":8,"character":4}],"declarations":[],"exports":[],"providers":[{"__symbolic":"reference","name":"SdPdfService"}]}]}],"members":{}}},"origins":{"SdPdfService":"./src/lib/pdf.service","IExportInfo":"./src/lib/pdf.service","PDFMergeOption":"./src/lib/pdf.service","FooterOption":"./src/lib/pdf.service","SdPdfModule":"./src/lib/pdf.module"},"importAs":"@sd-angular/core/pdf"}
@@ -1,9 +1,21 @@
1
1
  export declare class SdPdfService {
2
+ #private;
2
3
  constructor();
3
- merge: (urls: string[], download?: boolean) => Promise<Blob>;
4
+ merge: (urls: string[], option?: PDFMergeOption) => Promise<Blob>;
4
5
  }
5
6
  export interface IExportInfo {
6
7
  data: any[];
7
8
  sheetName?: string;
8
9
  fileName?: string;
9
10
  }
11
+ export interface PDFMergeOption {
12
+ download?: boolean;
13
+ isInsertFooter?: boolean;
14
+ footerOption?: FooterOption;
15
+ }
16
+ export interface FooterOption {
17
+ offsetX?: number;
18
+ offsetY?: number;
19
+ size?: number;
20
+ font?: string;
21
+ }
index 076371f..7df5f93 100644
Binary file