@sd-angular/core 0.0.1006 → 0.0.1010

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 (303) hide show
  1. package/api/sd-angular-core-api.metadata.json +1 -1
  2. package/api/src/lib/token.service.d.ts +1 -2
  3. package/autocomplete/sd-angular-core-autocomplete.metadata.json +1 -1
  4. package/autocomplete/src/lib/autocomplete.component.d.ts +14 -9
  5. package/autocomplete/src/lib/autocomplete.module.d.ts +0 -1
  6. package/bundles/sd-angular-core-api.umd.js.map +1 -1
  7. package/bundles/sd-angular-core-api.umd.min.js.map +1 -1
  8. package/bundles/sd-angular-core-autocomplete.umd.js +121 -117
  9. package/bundles/sd-angular-core-autocomplete.umd.js.map +1 -1
  10. package/bundles/sd-angular-core-autocomplete.umd.min.js +2 -2
  11. package/bundles/sd-angular-core-autocomplete.umd.min.js.map +1 -1
  12. package/bundles/sd-angular-core-cache.umd.js +4 -4
  13. package/bundles/sd-angular-core-cache.umd.js.map +1 -1
  14. package/bundles/sd-angular-core-cache.umd.min.js +2 -2
  15. package/bundles/sd-angular-core-cache.umd.min.js.map +1 -1
  16. package/bundles/sd-angular-core-chart.umd.js +4 -8
  17. package/bundles/sd-angular-core-chart.umd.js.map +1 -1
  18. package/bundles/sd-angular-core-chart.umd.min.js +1 -1
  19. package/bundles/sd-angular-core-chart.umd.min.js.map +1 -1
  20. package/bundles/sd-angular-core-common.umd.js +378 -4
  21. package/bundles/sd-angular-core-common.umd.js.map +1 -1
  22. package/bundles/sd-angular-core-common.umd.min.js +2 -2
  23. package/bundles/sd-angular-core-common.umd.min.js.map +1 -1
  24. package/bundles/sd-angular-core-date-range.umd.js +4 -4
  25. package/bundles/sd-angular-core-date-range.umd.js.map +1 -1
  26. package/bundles/sd-angular-core-date-range.umd.min.js +2 -2
  27. package/bundles/sd-angular-core-date-range.umd.min.js.map +1 -1
  28. package/bundles/sd-angular-core-date-time.umd.js +57 -35
  29. package/bundles/sd-angular-core-date-time.umd.js.map +1 -1
  30. package/bundles/sd-angular-core-date-time.umd.min.js +2 -2
  31. package/bundles/sd-angular-core-date-time.umd.min.js.map +1 -1
  32. package/bundles/sd-angular-core-export.umd.js +4 -4
  33. package/bundles/sd-angular-core-export.umd.js.map +1 -1
  34. package/bundles/sd-angular-core-export.umd.min.js +1 -1
  35. package/bundles/sd-angular-core-export.umd.min.js.map +1 -1
  36. package/bundles/sd-angular-core-form.umd.js +4 -4
  37. package/bundles/sd-angular-core-form.umd.min.js +1 -1
  38. package/bundles/sd-angular-core-form.umd.min.js.map +1 -1
  39. package/bundles/sd-angular-core-grid-material.umd.js +32 -70
  40. package/bundles/sd-angular-core-grid-material.umd.js.map +1 -1
  41. package/bundles/sd-angular-core-grid-material.umd.min.js +2 -2
  42. package/bundles/sd-angular-core-grid-material.umd.min.js.map +1 -1
  43. package/bundles/sd-angular-core-grid.umd.js +5 -4
  44. package/bundles/sd-angular-core-grid.umd.js.map +1 -1
  45. package/bundles/sd-angular-core-grid.umd.min.js +1 -1
  46. package/bundles/sd-angular-core-grid.umd.min.js.map +1 -1
  47. package/bundles/sd-angular-core-input-upload-file.umd.js +4 -4
  48. package/bundles/sd-angular-core-input-upload-file.umd.js.map +1 -1
  49. package/bundles/sd-angular-core-input-upload-file.umd.min.js +2 -2
  50. package/bundles/sd-angular-core-input-upload-file.umd.min.js.map +1 -1
  51. package/bundles/sd-angular-core-input.umd.js +35 -17
  52. package/bundles/sd-angular-core-input.umd.js.map +1 -1
  53. package/bundles/sd-angular-core-input.umd.min.js +2 -2
  54. package/bundles/sd-angular-core-input.umd.min.js.map +1 -1
  55. package/bundles/sd-angular-core-modal.umd.js +4 -4
  56. package/bundles/sd-angular-core-modal.umd.js.map +1 -1
  57. package/bundles/sd-angular-core-modal.umd.min.js +1 -1
  58. package/bundles/sd-angular-core-modal.umd.min.js.map +1 -1
  59. package/bundles/sd-angular-core-radio.umd.js +4 -8
  60. package/bundles/sd-angular-core-radio.umd.js.map +1 -1
  61. package/bundles/sd-angular-core-radio.umd.min.js +2 -2
  62. package/bundles/sd-angular-core-radio.umd.min.js.map +1 -1
  63. package/bundles/sd-angular-core-select-editor.umd.js +4 -4
  64. package/bundles/sd-angular-core-select-editor.umd.js.map +1 -1
  65. package/bundles/sd-angular-core-select-editor.umd.min.js +2 -2
  66. package/bundles/sd-angular-core-select-editor.umd.min.js.map +1 -1
  67. package/bundles/sd-angular-core-select.umd.js +116 -129
  68. package/bundles/sd-angular-core-select.umd.js.map +1 -1
  69. package/bundles/sd-angular-core-select.umd.min.js +2 -2
  70. package/bundles/sd-angular-core-select.umd.min.js.map +1 -1
  71. package/bundles/sd-angular-core-service.umd.js +8 -202
  72. package/bundles/sd-angular-core-service.umd.js.map +1 -1
  73. package/bundles/sd-angular-core-service.umd.min.js +1 -1
  74. package/bundles/sd-angular-core-service.umd.min.js.map +1 -1
  75. package/bundles/sd-angular-core-side-drawer.umd.js +4 -4
  76. package/bundles/sd-angular-core-side-drawer.umd.js.map +1 -1
  77. package/bundles/sd-angular-core-side-drawer.umd.min.js +2 -2
  78. package/bundles/sd-angular-core-side-drawer.umd.min.js.map +1 -1
  79. package/bundles/sd-angular-core-time.umd.js +4 -4
  80. package/bundles/sd-angular-core-time.umd.js.map +1 -1
  81. package/bundles/sd-angular-core-time.umd.min.js +2 -2
  82. package/bundles/sd-angular-core-time.umd.min.js.map +1 -1
  83. package/bundles/sd-angular-core-upload-excel.umd.js +4 -4
  84. package/bundles/sd-angular-core-upload-excel.umd.js.map +1 -1
  85. package/bundles/sd-angular-core-upload-excel.umd.min.js +1 -1
  86. package/bundles/sd-angular-core-upload-excel.umd.min.js.map +1 -1
  87. package/bundles/sd-angular-core-upload-file.umd.js +4 -4
  88. package/bundles/sd-angular-core-upload-file.umd.js.map +1 -1
  89. package/bundles/sd-angular-core-upload-file.umd.min.js +2 -2
  90. package/bundles/sd-angular-core-upload-file.umd.min.js.map +1 -1
  91. package/bundles/sd-angular-core-utility.umd.js +4 -4
  92. package/bundles/sd-angular-core-utility.umd.js.map +1 -1
  93. package/bundles/sd-angular-core-utility.umd.min.js +1 -1
  94. package/bundles/sd-angular-core-utility.umd.min.js.map +1 -1
  95. package/bundles/sd-angular-core.umd.js +4 -8
  96. package/bundles/sd-angular-core.umd.js.map +1 -1
  97. package/bundles/sd-angular-core.umd.min.js +1 -1
  98. package/bundles/sd-angular-core.umd.min.js.map +1 -1
  99. package/cache/sd-angular-core-cache.metadata.json +1 -1
  100. package/cache/src/lib/cache.service.d.ts +0 -1
  101. package/cache/src/public-api.d.ts +1 -0
  102. package/chart/sd-angular-core-chart.metadata.json +1 -1
  103. package/chart/src/lib/chart.component.d.ts +0 -1
  104. package/chart/src/public-api.d.ts +1 -0
  105. package/common/sd-angular-core-common.metadata.json +1 -1
  106. package/common/src/lib/common.module.d.ts +2 -0
  107. package/{grid-material → common}/src/lib/directives/sd-let.directive.d.ts +0 -0
  108. package/common/src/lib/directives/view-def.directive.d.ts +5 -0
  109. package/common/src/lib/typings/array.extension.d.ts +20 -0
  110. package/{service → common}/src/lib/typings/date.extension.d.ts +0 -0
  111. package/{service → common}/src/lib/typings/number.extension.d.ts +0 -0
  112. package/{typing/src/lib/typing → common/src/lib/typings}/string.extension.d.ts +2 -0
  113. package/common/src/public-api.d.ts +7 -0
  114. package/date-range/index.d.ts +0 -1
  115. package/date-range/sd-angular-core-date-range.metadata.json +1 -1
  116. package/date-range/src/lib/date-range.component.d.ts +0 -1
  117. package/date-range/src/lib/date-range.module.d.ts +0 -1
  118. package/date-range/src/public-api.d.ts +1 -1
  119. package/date-time/sd-angular-core-date-time.metadata.json +1 -1
  120. package/date-time/src/lib/date-time.component.d.ts +14 -7
  121. package/date-time/src/lib/date-time.module.d.ts +0 -1
  122. package/date-time/src/public-api.d.ts +0 -1
  123. package/esm2015/api/src/lib/token.service.js +1 -1
  124. package/esm2015/autocomplete/src/lib/autocomplete.component.js +111 -89
  125. package/esm2015/autocomplete/src/lib/autocomplete.module.js +6 -4
  126. package/esm2015/cache/src/lib/cache.service.js +1 -2
  127. package/esm2015/cache/src/public-api.js +2 -1
  128. package/esm2015/chart/src/lib/chart.component.js +1 -2
  129. package/esm2015/chart/src/public-api.js +2 -4
  130. package/esm2015/common/src/lib/common.module.js +24 -0
  131. package/esm2015/common/src/lib/directives/sd-let.directive.js +29 -0
  132. package/esm2015/common/src/lib/directives/view-def.directive.js +16 -0
  133. package/esm2015/common/src/lib/typings/array.extension.js +65 -0
  134. package/esm2015/common/src/lib/typings/date.extension.js +143 -0
  135. package/esm2015/common/src/lib/typings/number.extension.js +33 -0
  136. package/esm2015/common/src/lib/typings/string.extension.js +42 -0
  137. package/esm2015/common/src/public-api.js +8 -1
  138. package/esm2015/date-range/index.js +1 -2
  139. package/esm2015/date-range/src/lib/date-range.component.js +1 -2
  140. package/esm2015/date-range/src/lib/date-range.module.js +1 -2
  141. package/esm2015/date-range/src/public-api.js +2 -2
  142. package/esm2015/date-time/src/lib/date-time.component.js +55 -35
  143. package/esm2015/date-time/src/lib/date-time.module.js +5 -3
  144. package/esm2015/date-time/src/public-api.js +1 -2
  145. package/esm2015/export/src/lib/export.service.js +1 -2
  146. package/esm2015/form/src/public-api.js +2 -1
  147. package/esm2015/grid/src/lib/components/grid-date-picker-control/grid-date-picker-control.component.js +1 -2
  148. package/esm2015/grid/src/lib/grid.module.js +1 -2
  149. package/esm2015/grid/src/lib/models/handler-dotnet.js +1 -2
  150. package/esm2015/grid-material/sd-angular-core-grid-material.js +27 -28
  151. package/esm2015/grid-material/src/lib/grid-material.module.js +4 -5
  152. package/esm2015/grid-material/src/public-api.js +2 -4
  153. package/esm2015/input/src/lib/input.component.js +26 -6
  154. package/esm2015/input/src/lib/input.module.js +6 -3
  155. package/esm2015/input-upload-file/src/lib/input-upload-file.component.js +2 -2
  156. package/esm2015/input-upload-file/src/lib/input-upload-file.module.js +1 -2
  157. package/esm2015/lib/controls/date-picker-control/date-picker-control.component.js +1 -2
  158. package/esm2015/lib/pipes/sd-date.pipe.js +1 -2
  159. package/esm2015/modal/src/lib/modal.module.js +1 -2
  160. package/esm2015/public-api.js +11 -14
  161. package/esm2015/radio/src/lib/radio.module.js +1 -2
  162. package/esm2015/radio/src/public-api.js +2 -4
  163. package/esm2015/select/src/lib/select.component.js +78 -100
  164. package/esm2015/select/src/lib/select.module.js +6 -4
  165. package/esm2015/select-editor/src/lib/select-editor.module.js +1 -2
  166. package/esm2015/service/src/lib/service.module.js +6 -4
  167. package/esm2015/service/src/public-api.js +2 -2
  168. package/esm2015/side-drawer/src/lib/side-drawer.module.js +1 -2
  169. package/esm2015/time/src/lib/time.component.js +1 -2
  170. package/esm2015/time/src/public-api.js +2 -1
  171. package/esm2015/upload-excel/src/lib/upload-excel.component.js +1 -2
  172. package/esm2015/upload-excel/src/lib/upload-excel.module.js +1 -2
  173. package/esm2015/upload-file/src/lib/upload-file.module.js +1 -2
  174. package/esm2015/utility/src/lib/pipes/currency.pipe.js +1 -2
  175. package/esm2015/utility/src/lib/pipes/time-different.pipe.js +1 -2
  176. package/esm2015/utility/src/lib/utility.service.js +1 -2
  177. package/esm2015/utility/src/public-api.js +2 -1
  178. package/export/sd-angular-core-export.metadata.json +1 -1
  179. package/export/src/lib/export.service.d.ts +0 -1
  180. package/fesm2015/sd-angular-core-api.js.map +1 -1
  181. package/fesm2015/sd-angular-core-autocomplete.js +114 -91
  182. package/fesm2015/sd-angular-core-autocomplete.js.map +1 -1
  183. package/fesm2015/sd-angular-core-cache.js +1 -1
  184. package/fesm2015/sd-angular-core-cache.js.map +1 -1
  185. package/fesm2015/sd-angular-core-chart.js +1 -5
  186. package/fesm2015/sd-angular-core-chart.js.map +1 -1
  187. package/fesm2015/sd-angular-core-common.js +346 -2
  188. package/fesm2015/sd-angular-core-common.js.map +1 -1
  189. package/fesm2015/sd-angular-core-date-range.js +1 -1
  190. package/fesm2015/sd-angular-core-date-range.js.map +1 -1
  191. package/fesm2015/sd-angular-core-date-time.js +57 -36
  192. package/fesm2015/sd-angular-core-date-time.js.map +1 -1
  193. package/fesm2015/sd-angular-core-export.js +0 -1
  194. package/fesm2015/sd-angular-core-export.js.map +1 -1
  195. package/fesm2015/sd-angular-core-form.js +1 -0
  196. package/fesm2015/sd-angular-core-form.js.map +1 -1
  197. package/fesm2015/sd-angular-core-grid-material.js +5 -37
  198. package/fesm2015/sd-angular-core-grid-material.js.map +1 -1
  199. package/fesm2015/sd-angular-core-grid.js +1 -1
  200. package/fesm2015/sd-angular-core-grid.js.map +1 -1
  201. package/fesm2015/sd-angular-core-input-upload-file.js +0 -1
  202. package/fesm2015/sd-angular-core-input-upload-file.js.map +1 -1
  203. package/fesm2015/sd-angular-core-input.js +29 -8
  204. package/fesm2015/sd-angular-core-input.js.map +1 -1
  205. package/fesm2015/sd-angular-core-modal.js +0 -1
  206. package/fesm2015/sd-angular-core-modal.js.map +1 -1
  207. package/fesm2015/sd-angular-core-radio.js +1 -5
  208. package/fesm2015/sd-angular-core-radio.js.map +1 -1
  209. package/fesm2015/sd-angular-core-select-editor.js +0 -1
  210. package/fesm2015/sd-angular-core-select-editor.js.map +1 -1
  211. package/fesm2015/sd-angular-core-select.js +81 -102
  212. package/fesm2015/sd-angular-core-select.js.map +1 -1
  213. package/fesm2015/sd-angular-core-service.js +5 -198
  214. package/fesm2015/sd-angular-core-service.js.map +1 -1
  215. package/fesm2015/sd-angular-core-side-drawer.js +0 -1
  216. package/fesm2015/sd-angular-core-side-drawer.js.map +1 -1
  217. package/fesm2015/sd-angular-core-time.js +1 -1
  218. package/fesm2015/sd-angular-core-time.js.map +1 -1
  219. package/fesm2015/sd-angular-core-upload-excel.js +0 -1
  220. package/fesm2015/sd-angular-core-upload-excel.js.map +1 -1
  221. package/fesm2015/sd-angular-core-upload-file.js +0 -1
  222. package/fesm2015/sd-angular-core-upload-file.js.map +1 -1
  223. package/fesm2015/sd-angular-core-utility.js +1 -1
  224. package/fesm2015/sd-angular-core-utility.js.map +1 -1
  225. package/fesm2015/sd-angular-core.js +15 -20
  226. package/fesm2015/sd-angular-core.js.map +1 -1
  227. package/form/src/public-api.d.ts +1 -0
  228. package/grid/sd-angular-core-grid.metadata.json +1 -1
  229. package/grid/src/lib/components/grid-date-picker-control/grid-date-picker-control.component.d.ts +0 -1
  230. package/grid/src/lib/grid.module.d.ts +0 -1
  231. package/grid/src/lib/models/handler-dotnet.d.ts +0 -1
  232. package/grid-material/sd-angular-core-grid-material.d.ts +26 -27
  233. package/grid-material/sd-angular-core-grid-material.metadata.json +1 -1
  234. package/grid-material/src/lib/grid-material.module.d.ts +0 -1
  235. package/grid-material/src/public-api.d.ts +1 -0
  236. package/input/sd-angular-core-input.metadata.json +1 -1
  237. package/input/src/lib/input.component.d.ts +5 -0
  238. package/input-upload-file/sd-angular-core-input-upload-file.metadata.json +1 -1
  239. package/input-upload-file/src/lib/input-upload-file.module.d.ts +0 -1
  240. package/lib/controls/date-picker-control/date-picker-control.component.d.ts +0 -1
  241. package/lib/pipes/sd-date.pipe.d.ts +0 -1
  242. package/modal/sd-angular-core-modal.metadata.json +1 -1
  243. package/modal/src/lib/modal.module.d.ts +0 -1
  244. package/package.json +1 -1
  245. package/public-api.d.ts +10 -10
  246. package/radio/sd-angular-core-radio.metadata.json +1 -1
  247. package/radio/src/lib/radio.module.d.ts +0 -1
  248. package/radio/src/public-api.d.ts +1 -0
  249. package/{sd-angular-core-0.0.1006.tgz → sd-angular-core-0.0.1010.tgz} +0 -0
  250. package/sd-angular-core.metadata.json +1 -1
  251. package/select/sd-angular-core-select.metadata.json +1 -1
  252. package/select/src/lib/select.component.d.ts +12 -5
  253. package/select/src/lib/select.module.d.ts +0 -1
  254. package/select-editor/sd-angular-core-select-editor.metadata.json +1 -1
  255. package/select-editor/src/lib/select-editor.module.d.ts +0 -1
  256. package/service/sd-angular-core-service.metadata.json +1 -1
  257. package/service/src/lib/service.module.d.ts +0 -1
  258. package/service/src/public-api.d.ts +1 -1
  259. package/side-drawer/sd-angular-core-side-drawer.metadata.json +1 -1
  260. package/side-drawer/src/lib/side-drawer.module.d.ts +0 -1
  261. package/time/sd-angular-core-time.metadata.json +1 -1
  262. package/time/src/lib/time.component.d.ts +0 -1
  263. package/time/src/public-api.d.ts +1 -0
  264. package/upload-excel/sd-angular-core-upload-excel.metadata.json +1 -1
  265. package/upload-excel/src/lib/upload-excel.component.d.ts +0 -1
  266. package/upload-excel/src/lib/upload-excel.module.d.ts +0 -1
  267. package/upload-file/sd-angular-core-upload-file.metadata.json +1 -1
  268. package/upload-file/src/lib/upload-file.module.d.ts +0 -1
  269. package/utility/sd-angular-core-utility.metadata.json +1 -1
  270. package/utility/src/lib/pipes/currency.pipe.d.ts +0 -1
  271. package/utility/src/lib/pipes/time-different.pipe.d.ts +0 -1
  272. package/utility/src/lib/utility.service.d.ts +0 -1
  273. package/utility/src/public-api.d.ts +1 -0
  274. package/bundles/sd-angular-core-typing.umd.js +0 -226
  275. package/bundles/sd-angular-core-typing.umd.js.map +0 -1
  276. package/bundles/sd-angular-core-typing.umd.min.js +0 -2
  277. package/bundles/sd-angular-core-typing.umd.min.js.map +0 -1
  278. package/esm2015/grid-material/src/lib/directives/sd-let.directive.js +0 -29
  279. package/esm2015/service/src/lib/typings/date.extension.js +0 -143
  280. package/esm2015/service/src/lib/typings/index.js +0 -4
  281. package/esm2015/service/src/lib/typings/number.extension.js +0 -33
  282. package/esm2015/service/src/lib/typings/string.extension.js +0 -23
  283. package/esm2015/typing/index.js +0 -2
  284. package/esm2015/typing/sd-angular-core-typing.js +0 -5
  285. package/esm2015/typing/src/lib/typing/date.extension.js +0 -143
  286. package/esm2015/typing/src/lib/typing/index.js +0 -4
  287. package/esm2015/typing/src/lib/typing/number.extension.js +0 -33
  288. package/esm2015/typing/src/lib/typing/string.extension.js +0 -23
  289. package/esm2015/typing/src/lib/typing.service.js +0 -13
  290. package/esm2015/typing/src/public-api.js +0 -3
  291. package/fesm2015/sd-angular-core-typing.js +0 -215
  292. package/fesm2015/sd-angular-core-typing.js.map +0 -1
  293. package/service/src/lib/typings/index.d.ts +0 -3
  294. package/service/src/lib/typings/string.extension.d.ts +0 -8
  295. package/typing/index.d.ts +0 -1
  296. package/typing/package.json +0 -12
  297. package/typing/sd-angular-core-typing.d.ts +0 -4
  298. package/typing/sd-angular-core-typing.metadata.json +0 -1
  299. package/typing/src/lib/typing/date.extension.d.ts +0 -24
  300. package/typing/src/lib/typing/index.d.ts +0 -3
  301. package/typing/src/lib/typing/number.extension.d.ts +0 -9
  302. package/typing/src/lib/typing.service.d.ts +0 -3
  303. package/typing/src/public-api.d.ts +0 -2
@@ -1 +1 @@
1
- {"version":3,"file":"sd-angular-core-autocomplete.js","sources":["../../../../projects/sd-core/autocomplete/src/lib/autocomplete-display-def.directive.ts","../../../../projects/sd-core/autocomplete/src/lib/autocomplete.component.ts","../../../../projects/sd-core/autocomplete/src/lib/autocomplete.module.ts","../../../../projects/sd-core/autocomplete/src/public-api.ts","../../../../projects/sd-core/autocomplete/sd-angular-core-autocomplete.ts"],"sourcesContent":["import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdAutocompleteDisplayDef]'\r\n})\r\nexport class SdAutocompleteDisplayDefDirective {\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,\r\n OnDestroy,\r\n AfterViewInit,\r\n ChangeDetectorRef,\r\n ContentChild,\r\n ChangeDetectionStrategy\r\n} from '@angular/core';\r\nimport { startWith, switchMap, debounceTime, debounce, distinctUntilChanged } from 'rxjs/operators';\r\n\r\nimport * as uuid from 'uuid';\r\nimport { FormControl, NgForm, Validators, FormGroupDirective, FormGroup } from '@angular/forms';\r\nimport { Observable, Subscription } from 'rxjs';\r\nimport { SdUtilityService } from '@sd-angular/core/utility';\r\nimport { ErrorStateMatcher } from '@angular/material/core';\r\nimport { SdAutocompleteDisplayDefDirective } from './autocomplete-display-def.directive';\r\nimport { MatAutocompleteTrigger } from '@angular/material/autocomplete';\r\nimport { SdFormControl } from '@sd-angular/core/common';\r\n\r\nclass SdAutocompleteErrotStateMatcher 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-autocomplete',\r\n templateUrl: './autocomplete.component.html',\r\n styleUrls: ['./autocomplete.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdAutocomplete implements OnInit, OnDestroy, AfterViewInit {\r\n @ViewChild(MatAutocompleteTrigger, { read: MatAutocompleteTrigger }) autocompleteTrigger: MatAutocompleteTrigger;\r\n id = `I${uuid.v4()}`;\r\n #model: string | number;\r\n #items: any[] | ((searchText: string) => Promise<any[]>) = [];\r\n #currentItems: any[] = [];\r\n #delay = 500; // 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 #name = uuid.v4();\r\n loading = false;\r\n inputControl = new FormControl();\r\n formControl = new SdFormControl();\r\n matcher = new SdAutocompleteErrotStateMatcher(this.formControl);\r\n get isNumber() {\r\n if (this.#model || this.#model === 0) {\r\n return typeof (this.#model) === 'number';\r\n }\r\n if (this.#currentItems?.length) {\r\n if (this.valueField) {\r\n return typeof (this.#currentItems[0][this.valueField]) === 'number';\r\n } else {\r\n return typeof (this.#currentItems[0]) === 'number';\r\n }\r\n }\r\n return false;\r\n }\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 @Input() label: string;\r\n @Input() valueField: string;\r\n @Input() displayField: string;\r\n @Input() placeholder: string;\r\n @Input() leftLabel: string;\r\n @Input() labelMinWidth: string;\r\n\r\n @Input() set items(items: undefined | any[] | ((searchText?: string) => Promise<any[]>)) {\r\n if (!items) {\r\n this.#items = [];\r\n } else if (Array.isArray(items)) {\r\n this.#items = items.filter(e => e !== null && e !== undefined);\r\n } else {\r\n this.#items = items;\r\n }\r\n this.formControl.updateValueAndValidity();\r\n this.inputControl.updateValueAndValidity();\r\n }\r\n\r\n @Input() limit = 100;\r\n\r\n filteredItems: Observable<any[]>;\r\n controlPlaceHolder: Observable<string | number>;\r\n @Input() set model(value: undefined | number | string) {\r\n this.#model = value;\r\n this.formControl.setValue(value);\r\n }\r\n\r\n @ContentChild(SdAutocompleteDisplayDefDirective) autocompleteDisplayDef: SdAutocompleteDisplayDefDirective;\r\n @Input() actionIcon: string;\r\n @Output() action = new EventEmitter();\r\n @Output() modelChange = new EventEmitter();\r\n @Output() sdChange = 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.inputControl.disable();\r\n } else {\r\n this.inputControl.enable();\r\n }\r\n }\r\n isRequired = false;\r\n @Input() set required(val: boolean | '') {\r\n this.isRequired = (val === '') || val;\r\n if (this.isRequired) {\r\n this.formControl.setValidators([Validators.required]);\r\n } else {\r\n this.formControl.clearValidators();\r\n }\r\n }\r\n disableErrorMessage = false;\r\n @Input('disableErrorMessage') set _disableErrorMessage(val: boolean | '') {\r\n this.disableErrorMessage = (val === '') || val;\r\n val = (val === '') || val;\r\n }\r\n #subscription = new Subscription();\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n private utilityService: SdUtilityService) {\r\n }\r\n\r\n ngOnInit() { \r\n this.#subscription.add(this.formControl.touchedChanges.subscribe(() => {\r\n this.ref.markForCheck();\r\n }));\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.#subscription.add(this.formControl.statusChanges.subscribe(() => this.ref.markForCheck()));\r\n this.filteredItems = this.inputControl.valueChanges.pipe(\r\n debounceTime(typeof (this.#items) === 'function' ? this.#delay : 0),\r\n // distinctUntilChanged(), Dùng sẽ gây ra bug khi items changes\r\n switchMap(async () => {\r\n const val = this.inputControl.value || '';\r\n if (typeof (this.#items) === 'function') {\r\n const items = await this.#loadItems(val, this.#items);\r\n this.#currentItems = items.filter((item, index) => index < this.limit);\r\n return this.#currentItems;\r\n }\r\n const { changeAliasLowerCase } = this.utilityService;\r\n this.#currentItems = this.#items.filter(item => {\r\n const value = item[this.valueField];\r\n const display = item[this.displayField];\r\n const searchText = changeAliasLowerCase(val);\r\n return changeAliasLowerCase(value).indexOf(searchText) !== -1 || changeAliasLowerCase(display).indexOf(searchText) !== -1\r\n }).filter((item, index) => index < this.limit);\r\n return this.#currentItems;\r\n })\r\n );\r\n this.controlPlaceHolder = this.formControl.valueChanges.pipe(\r\n startWith(''),\r\n // distinctUntilChanged(), Dùng sẽ gây ra bug khi items changes\r\n switchMap(async () => {\r\n const val = this.formControl.value;\r\n if (val || val === 0) {\r\n let currentItems = [];\r\n const items = this.#items;\r\n if (typeof (items) === 'function') {\r\n currentItems = await this.#loadItems(val, items);\r\n } else {\r\n currentItems = items || [];\r\n }\r\n if (this.valueField && this.displayField) {\r\n const item = currentItems.find(e => e[this.valueField] === val);\r\n return item?.[this.displayField] || val;\r\n } else {\r\n return currentItems.find(e => e === val) || val;\r\n }\r\n } else {\r\n return this.placeholder || this.label || '';\r\n }\r\n }));\r\n this.#form?.addControl(this.#name, this.formControl);\r\n this.ref.detectChanges();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#subscription.unsubscribe();\r\n this.#form?.removeControl(this.#name);\r\n }\r\n\r\n #loadItems = async (searchText: string, items: (searchText?: string) => Promise<any[]>) => {\r\n this.loading = true;\r\n return await items(searchText).finally(() => this.loading = false);\r\n // this.ref.detectChanges();\r\n // return this.#previousResults;\r\n }\r\n\r\n onSelect = (item: any) => {\r\n if (item) {\r\n if (typeof (item) === 'string' || typeof (item) === 'number') {\r\n if (this.formControl.value !== item) {\r\n this.formControl.setValue(item);\r\n this.modelChange.emit(item);\r\n this.sdChange.emit(item);\r\n }\r\n } else if (this.valueField && this.displayField) {\r\n const val = item?.[this.valueField] || null;\r\n if (this.formControl.value !== val) {\r\n this.formControl.setValue(val);\r\n this.modelChange.emit(val);\r\n this.sdChange.emit(item);\r\n }\r\n }\r\n this.inputControl.setValue('', {\r\n emitEvent: false\r\n });\r\n // this.ref.markForCheck();\r\n // this.inputControl.setValue('', {\r\n // emitEvent: false\r\n // });\r\n }\r\n }\r\n\r\n onFocus = () => {\r\n this.inputControl.setValue('');\r\n // this.inputControl.updateValueAndValidity();\r\n }\r\n\r\n onBlur = () => {\r\n this.inputControl.setValue('', {\r\n emitEvent: false\r\n });\r\n }\r\n\r\n clear = ($event?: any) => {\r\n $event?.stopPropagation();\r\n this.inputControl?.setValue('');\r\n if (this.#model) {\r\n this.formControl.setValue(null);\r\n this.modelChange.emit(null);\r\n this.sdChange.emit(null);\r\n }\r\n }\r\n\r\n onAction = ($event: Event) => {\r\n $event?.stopPropagation();\r\n this.autocompleteTrigger?.closePanel();\r\n this.action.emit();\r\n }\r\n\r\n reValidate = () => {\r\n this.inputControl.updateValueAndValidity({ emitEvent: true });\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { SdAutocomplete } from './autocomplete.component';\r\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\r\nimport '@sd-angular/core/typing';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { SdTranslateModule } from '@sd-angular/core/translate';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { SdAutocompleteDisplayDefDirective } from './autocomplete-display-def.directive';\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 SdTranslateModule\r\n ],\r\n declarations: [\r\n SdAutocomplete,\r\n SdAutocompleteDisplayDefDirective\r\n ],\r\n exports: [\r\n SdAutocomplete,\r\n SdAutocompleteDisplayDefDirective\r\n ],\r\n providers: [\r\n ]\r\n})\r\nexport class SdAutocompleteModule {\r\n\r\n}\r\n","/*\r\n * Public API Surface of superdev-angular-core\r\n */\r\n\r\nexport * from './lib/autocomplete.module';\r\nexport * from './lib/autocomplete.component';\r\nexport * from './lib/autocomplete-display-def.directive';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["uuid.v4"],"mappings":"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"}
1
+ {"version":3,"file":"sd-angular-core-autocomplete.js","sources":["../../../../projects/sd-core/autocomplete/src/lib/autocomplete-display-def.directive.ts","../../../../projects/sd-core/autocomplete/src/lib/autocomplete.component.ts","../../../../projects/sd-core/autocomplete/src/lib/autocomplete.module.ts","../../../../projects/sd-core/autocomplete/src/public-api.ts","../../../../projects/sd-core/autocomplete/sd-angular-core-autocomplete.ts"],"sourcesContent":["import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdAutocompleteDisplayDef]'\r\n})\r\nexport class SdAutocompleteDisplayDefDirective {\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,\r\n OnDestroy,\r\n AfterViewInit,\r\n ChangeDetectorRef,\r\n ContentChild,\r\n ChangeDetectionStrategy,\r\n ElementRef\r\n} from '@angular/core';\r\nimport { startWith, switchMap, debounceTime, map, finalize } from 'rxjs/operators';\r\n\r\nimport * as uuid from 'uuid';\r\nimport { FormControl, NgForm, Validators, FormGroupDirective, FormGroup } from '@angular/forms';\r\nimport { BehaviorSubject, combineLatest, defer, from, Observable, of, Subscription } from 'rxjs';\r\nimport { ErrorStateMatcher } from '@angular/material/core';\r\nimport { SdAutocompleteDisplayDefDirective } from './autocomplete-display-def.directive';\r\nimport { MatAutocompleteTrigger } from '@angular/material/autocomplete';\r\nimport { SdFormControl, SdViewDefDirective } from '@sd-angular/core/common';\r\n\r\nclass SdAutocompleteErrotStateMatcher 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-autocomplete',\r\n templateUrl: './autocomplete.component.html',\r\n styleUrls: ['./autocomplete.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdAutocomplete implements OnInit, OnDestroy, AfterViewInit {\r\n @ViewChild(MatAutocompleteTrigger, { read: MatAutocompleteTrigger }) autocompleteTrigger: MatAutocompleteTrigger;\r\n id = `I${uuid.v4()}`;\r\n #model: string | number;\r\n\r\n #delay = 0; // 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 #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 loading = false;\r\n inputControl = new FormControl();\r\n formControl = new SdFormControl();\r\n matcher = new SdAutocompleteErrotStateMatcher(this.formControl);\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 @Input() label: string;\r\n @Input() valueField: string;\r\n @Input() displayField: string;\r\n @Input() placeholder: string;\r\n\r\n #itemsChanges = new BehaviorSubject<any[] | SearchFunc>([]);\r\n @Input() set items(items: undefined | any[] | SearchFunc) {\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.#itemsChanges.next(items);\r\n this.#delay = 500;\r\n }\r\n this.formControl.updateValueAndValidity();\r\n }\r\n\r\n @Input() limit = 100;\r\n\r\n filteredItems: Observable<any[]>;\r\n controlPlaceHolder: Observable<string | number>;\r\n controlPlaceHolder2: Observable<string | number>;\r\n @Input() set model(value: undefined | number | string) {\r\n this.#model = value;\r\n this.formControl.setValue(value);\r\n }\r\n\r\n @ContentChild(SdAutocompleteDisplayDefDirective) autocompleteDisplayDef: SdAutocompleteDisplayDefDirective;\r\n @Input() actionIcon: string;\r\n @Output() action = new EventEmitter();\r\n @Output() modelChange = new EventEmitter();\r\n @Output() sdChange = 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.inputControl.disable();\r\n this.formControl.disable();\r\n } else {\r\n this.inputControl.enable();\r\n this.formControl.disable();\r\n }\r\n }\r\n isRequired = false;\r\n @Input() set required(val: boolean | '') {\r\n this.isRequired = (val === '') || val;\r\n if (this.isRequired) {\r\n this.formControl.setValidators([Validators.required]);\r\n } else {\r\n this.formControl.clearValidators();\r\n }\r\n }\r\n disableErrorMessage = false;\r\n @Input('disableErrorMessage') set _disableErrorMessage(val: boolean | '') {\r\n this.disableErrorMessage = (val === '') || val;\r\n val = (val === '') || val;\r\n }\r\n #subscription = new Subscription();\r\n @ViewChild('input') input: ElementRef;\r\n @ContentChild(SdViewDefDirective) sdView: SdViewDefDirective;\r\n isFocused = false;\r\n selected: Observable<any>;\r\n\r\n #cache: {\r\n [key: string]: any[]\r\n } = {};\r\n #item: {\r\n [key: string]: any\r\n } = {};\r\n constructor(\r\n private ref: ChangeDetectorRef) {\r\n }\r\n\r\n ngOnInit() {\r\n this.#subscription.add(this.formControl.touchedChanges.subscribe(() => {\r\n this.ref.markForCheck();\r\n }));\r\n this.filteredItems = combineLatest([\r\n this.#itemsChanges.asObservable(),\r\n this.inputControl.valueChanges.pipe(debounceTime(this.#delay))]).pipe(\r\n switchMap(([items, searchText]) => {\r\n searchText = searchText || '';\r\n if (typeof (items) === 'function') {\r\n if (this.#cache[searchText] !== undefined) {\r\n return this.#cache[searchText].asObservable();\r\n }\r\n let obs: Observable<any[]>;\r\n const func = items(searchText, true);\r\n if (func instanceof Promise) {\r\n obs = defer(() => from(func));\r\n } else {\r\n obs = func\r\n }\r\n this.loading = true;\r\n return obs.pipe(map(data => {\r\n this.#cache[searchText] = data || [];\r\n Object.assign(this.#item, Array.toObject(this.#cache[searchText], this.valueField));\r\n return this.#cache[searchText];\r\n }), finalize(() => this.loading = false));\r\n }\r\n return items\r\n .search(searchText, [this.valueField, this.displayField])\r\n .paging(this.limit)\r\n .asObservable();\r\n })\r\n );\r\n this.selected = combineLatest([\r\n this.#itemsChanges.asObservable(),\r\n this.formControl.valueChanges.pipe(startWith(this.formControl.value))])\r\n .pipe(\r\n switchMap(([items, val]) => {\r\n if (!this.valueField) {\r\n return of(val);\r\n }\r\n if (val || val === 0) {\r\n if (typeof (items) === 'function') {\r\n if (this.#item[val]) {\r\n return of(this.#item[val]);\r\n }\r\n let obs: Observable<any[]>;\r\n const func = items(val, true);\r\n if (func instanceof Promise) {\r\n obs = defer(() => from(func));\r\n } else {\r\n obs = func\r\n }\r\n return obs.pipe(map(data => {\r\n Object.assign(this.#item, Array.toObject(data, this.valueField));\r\n return this.#item[val] || {\r\n [this.valueField]: val,\r\n [this.displayField]: val\r\n };\r\n }));\r\n }\r\n return of(items.find(e => e[this.valueField] === val));\r\n }\r\n return of('');\r\n })\r\n );\r\n this.controlPlaceHolder = this.selected.pipe(map(item => item?.[this.displayField] ?? item ?? this.placeholder ?? this.label ?? ''));\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.#form?.addControl(this.#name, this.formControl);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#subscription.unsubscribe();\r\n this.#form?.removeControl(this.#name);\r\n }\r\n onSelect = (item: any) => {\r\n if (item) {\r\n if (typeof (item) === 'string' || typeof (item) === 'number') {\r\n if (this.formControl.value !== item) {\r\n this.formControl.setValue(item);\r\n this.modelChange.emit(item);\r\n this.sdChange.emit(item);\r\n }\r\n } else if (this.valueField && this.displayField) {\r\n const val = item?.[this.valueField] || null;\r\n if (this.formControl.value !== val) {\r\n this.formControl.setValue(val);\r\n this.modelChange.emit(val);\r\n this.sdChange.emit(item);\r\n }\r\n }\r\n this.inputControl.setValue('', {\r\n emitEvent: false\r\n });\r\n }\r\n }\r\n\r\n onFocus = () => {\r\n this.isFocused = true;\r\n this.inputControl.setValue('');\r\n // this.inputControl.updateValueAndValidity();\r\n }\r\n\r\n onBlur = () => {\r\n this.isFocused = false;\r\n this.inputControl.setValue('', {\r\n emitEvent: false\r\n });\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 blur = () => {\r\n this.input?.nativeElement?.blur();\r\n }\r\n\r\n focus = () => {\r\n this.isFocused = true;\r\n setTimeout(() => {\r\n this.autocompleteTrigger?.openPanel();\r\n this.input?.nativeElement?.focus();\r\n }, 100);\r\n }\r\n\r\n clear = ($event?: any) => {\r\n $event?.stopPropagation();\r\n this.inputControl?.setValue('');\r\n if (this.#model) {\r\n this.formControl.setValue(null);\r\n this.modelChange.emit(null);\r\n this.sdChange.emit(null);\r\n }\r\n }\r\n\r\n onAction = ($event: Event) => {\r\n $event?.stopPropagation();\r\n this.autocompleteTrigger?.closePanel();\r\n this.action.emit();\r\n }\r\n\r\n reValidate = () => {\r\n this.inputControl.updateValueAndValidity({ emitEvent: true });\r\n }\r\n}\r\n\r\ntype SearchFunc = (searchText?: string | number, isFormValue?: boolean) => Promise<any[]> | Observable<any[]>;","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { SdAutocomplete } from './autocomplete.component';\r\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { SdTranslateModule } from '@sd-angular/core/translate';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { SdAutocompleteDisplayDefDirective } from './autocomplete-display-def.directive';\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 SdTranslateModule,\r\n SdCommonModule\r\n ],\r\n declarations: [\r\n SdAutocomplete,\r\n SdAutocompleteDisplayDefDirective\r\n ],\r\n exports: [\r\n SdAutocomplete,\r\n SdAutocompleteDisplayDefDirective,\r\n SdCommonModule\r\n ],\r\n providers: [\r\n ]\r\n})\r\nexport class SdAutocompleteModule {\r\n\r\n}\r\n","/*\r\n * Public API Surface of superdev-angular-core\r\n */\r\n\r\nexport * from './lib/autocomplete.module';\r\nexport * from './lib/autocomplete.component';\r\nexport * from './lib/autocomplete-display-def.directive';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["uuid.v4"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
+ import '@sd-angular/core/common';
1
2
  import { __classPrivateFieldGet, __awaiter } from 'tslib';
2
3
  import { InjectionToken, ɵɵdefineInjectable, ɵɵinject, Injectable, Inject, Optional } from '@angular/core';
3
4
  import hash from 'object-hash';
4
- import '@sd-angular/core/typing';
5
5
  import { BehaviorSubject } from 'rxjs';
6
6
  import { map, switchMap } from 'rxjs/operators';
7
7
 
@@ -1 +1 @@
1
- {"version":3,"file":"sd-angular-core-cache.js","sources":["../../../../projects/sd-core/cache/src/lib/cache.model.ts","../../../../projects/sd-core/cache/src/lib/cache.service.ts","../../../../projects/sd-core/cache/sd-angular-core-cache.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\n\r\nexport interface SdCacheOption<T = any> {\r\n type?: 'default' | 'session' | 'local';\r\n hours?: number;\r\n default?: T;\r\n args?: {\r\n [key: string]: any\r\n };\r\n}\r\n\r\nexport interface SdCacheServerOption<T = any> {\r\n hours?: number;\r\n default?: T;\r\n args?: {\r\n [key: string]: any\r\n };\r\n}\r\n\r\nexport interface SdCache<T = any> {\r\n get: () => T;\r\n set: (data: T) => void;\r\n has: () => boolean;\r\n remove: () => void;\r\n observer: Observable<T>;\r\n}\r\n\r\nexport interface SdCacheServer<T = any> {\r\n get: () => Promise<T>;\r\n set: (data: T) => Promise<void>;\r\n has: () => Promise<boolean>;\r\n remove: () => Promise<void>;\r\n observer: Observable<T>;\r\n}\r\n\r\nexport interface ICacheConfiguration {\r\n convertKey?: (key: string) => string;\r\n set?: (key: string, value: { data: any, createdOn: Date }, option?: SdCacheServerOption) => Promise<void>;\r\n get?: (key: string, option?: SdCacheServerOption) => Promise<{ data: any, createdOn: Date }>;\r\n remove?: (key: string, option?: SdCacheServerOption) => Promise<void>;\r\n}\r\n\r\nexport const CACHE_CONFIG = new InjectionToken<ICacheConfiguration>('cache.configuration');\r\n","import { Inject, Injectable, Optional } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport '@sd-angular/core/typing';\r\nimport { CACHE_CONFIG, ICacheConfiguration, SdCache, SdCacheOption, SdCacheServer, SdCacheServerOption } from './cache.model';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { map, switchMap } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SdCacheService {\r\n #cache: {\r\n [key: string]: {\r\n data: any,\r\n createdOn: Date\r\n }\r\n } = {};\r\n #subject: {\r\n [key: string]: BehaviorSubject<any>;\r\n } = {};\r\n constructor(@Inject(CACHE_CONFIG) @Optional() private configuration: ICacheConfiguration) {\r\n }\r\n\r\n create<T = any>(key: string | object, option?: SdCacheOption<T>): SdCache<T> {\r\n if (!key) {\r\n throw new Error('Key is required');\r\n }\r\n let hashKey: string = null;\r\n if (typeof (key) === 'string') {\r\n hashKey = key;\r\n } else if (typeof (key) === 'object') {\r\n hashKey = hash(key);\r\n } else {\r\n throw new Error('Invalid key');\r\n }\r\n if (!this.#subject[hashKey]) {\r\n this.#subject[hashKey] = new BehaviorSubject<any>(option?.default);\r\n }\r\n const get = this.#get<T>(hashKey, option);\r\n const set = this.#set<T>(hashKey, option);\r\n const has = this.#has(hashKey, option);\r\n const remove = this.#remove(hashKey, option);\r\n return {\r\n get,\r\n set,\r\n has,\r\n remove,\r\n observer: this.#subject[hashKey].pipe(map(get))\r\n };\r\n }\r\n\r\n createServer<T = any>(key: string | object, option?: SdCacheOption<T>): SdCacheServer<T> {\r\n if (!key) {\r\n throw new Error('Key is required');\r\n }\r\n let hashKey: string = null;\r\n if (typeof (key) === 'string') {\r\n hashKey = key;\r\n } else if (typeof (key) === 'object') {\r\n hashKey = hash(key);\r\n } else {\r\n throw new Error('Invalid key');\r\n }\r\n if (!this.#subject[hashKey]) {\r\n this.#subject[hashKey] = new BehaviorSubject<any>(option?.default);\r\n }\r\n const get = this.#getServer<T>(hashKey, option);\r\n const set = this.#setServer<T>(hashKey, option);\r\n const has = this.#hasServer(hashKey, option);\r\n const remove = this.#removeServer(hashKey, option);\r\n return {\r\n get,\r\n set,\r\n has,\r\n remove,\r\n observer: this.#subject[hashKey].pipe(switchMap(get))\r\n };\r\n }\r\n\r\n #get = <T = any>(key: string, option?: SdCacheOption): (() => T) => {\r\n return () => {\r\n let cache = this.#cache[key];\r\n if (option?.type === 'session') {\r\n try {\r\n cache = JSON.parse(sessionStorage.getItem(key));\r\n } catch {\r\n cache = undefined;\r\n }\r\n }\r\n if (option?.type === 'local') {\r\n try {\r\n cache = JSON.parse(localStorage.getItem(key));\r\n } catch {\r\n cache = undefined;\r\n }\r\n }\r\n if (!cache) {\r\n return option?.default;\r\n }\r\n if (option?.hours && Date.addHours(cache.createdOn, option?.hours) < new Date()) {\r\n const remove = this.#remove(key, option);\r\n remove();\r\n return option?.default;\r\n }\r\n return JSON.parse(JSON.stringify(cache.data));\r\n };\r\n }\r\n\r\n #getServer = <T = any>(key: string, option?: SdCacheServerOption): (() => Promise<T>) => {\r\n return async () => {\r\n let cache = this.#cache[key];\r\n if (this.configuration?.get) {\r\n cache = await this.configuration.get(key, option).catch(err => {\r\n console.error(err);\r\n return undefined;\r\n });\r\n }\r\n if (!cache) {\r\n return option?.default;\r\n }\r\n if (option?.hours && Date.addHours(cache.createdOn, option?.hours) < new Date()) {\r\n const remove = this.#removeServer(key, option);\r\n remove();\r\n return option?.default;\r\n }\r\n return JSON.parse(JSON.stringify(cache.data));\r\n };\r\n }\r\n\r\n #set = <T = any>(key: string, option?: SdCacheOption): ((data: T) => void) => {\r\n return (data: T) => {\r\n this.#cache[key] = {\r\n data: JSON.parse(JSON.stringify(data)),\r\n createdOn: new Date()\r\n };\r\n if (option?.type === 'session') {\r\n try {\r\n sessionStorage.setItem(key, JSON.stringify(this.#cache[key]));\r\n } catch (err) {\r\n console.error(err);\r\n }\r\n }\r\n if (option?.type === 'local') {\r\n try {\r\n localStorage.setItem(key, JSON.stringify(this.#cache[key]));\r\n } catch (err) {\r\n console.error(err);\r\n }\r\n }\r\n this.#subject[key].next(this.#cache[key].data);\r\n };\r\n }\r\n\r\n #setServer = <T = any>(key: string, option?: SdCacheServerOption): ((data: T) => Promise<void>) => {\r\n return async (data: T) => {\r\n this.#cache[key] = {\r\n data: JSON.parse(JSON.stringify(data)),\r\n createdOn: new Date()\r\n };\r\n if (this.configuration?.set) {\r\n try {\r\n await this.configuration.set(key, this.#cache[key], option);\r\n } catch (err) {\r\n console.error(err);\r\n }\r\n }\r\n this.#subject[key].next(this.#cache[key].data);\r\n };\r\n }\r\n\r\n #has = (key: string, option?: SdCacheOption): (() => boolean) => {\r\n return () => {\r\n let cache = this.#cache[key];\r\n\r\n if (option?.type === 'session') {\r\n try {\r\n cache = JSON.parse(sessionStorage.getItem(key));\r\n } catch {\r\n cache = undefined;\r\n }\r\n }\r\n if (option?.type === 'local') {\r\n try {\r\n cache = JSON.parse(localStorage.getItem(key));\r\n } catch {\r\n cache = undefined;\r\n }\r\n }\r\n if (!cache) {\r\n return false;\r\n }\r\n if (option?.hours && Date.addHours(cache.createdOn, option?.hours) < new Date()) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n }\r\n\r\n #hasServer = (key: string, option?: SdCacheServerOption): (() => Promise<boolean>) => {\r\n return async () => {\r\n let cache = this.#cache[key];\r\n if (this.configuration?.get) {\r\n cache = await this.configuration.get(key, option).catch(err => {\r\n console.error(err);\r\n return undefined;\r\n });\r\n }\r\n if (!cache) {\r\n return false;\r\n }\r\n if (option?.hours && Date.addHours(cache.createdOn, option?.hours) < new Date()) {\r\n return false;\r\n }\r\n return true;\r\n };\r\n }\r\n\r\n #remove = (key: string, option?: SdCacheOption): (() => void) => {\r\n return () => {\r\n this.#cache[key] = undefined;\r\n if (option?.type === 'session') {\r\n sessionStorage.removeItem(key);\r\n }\r\n if (option?.type === 'local') {\r\n localStorage.removeItem(key);\r\n }\r\n this.#subject[key].next(undefined);\r\n };\r\n }\r\n\r\n #removeServer = (key: string, option?: SdCacheServerOption): (() => Promise<void>) => {\r\n return async () => {\r\n this.#cache[key] = undefined;\r\n if (this.configuration?.remove) {\r\n await this.configuration.remove(key, option).catch(err => {\r\n console.error(err);\r\n });\r\n }\r\n this.#subject[key].next(undefined);\r\n };\r\n }\r\n}\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;MA2Ca,YAAY,GAAG,IAAI,cAAc,CAAsB,qBAAqB;;;MCjC5E,cAAc;IAUzB,YAAsD,aAAkC;QAAlC,kBAAa,GAAb,aAAa,CAAqB;QATxF,iBAKI,EAAE,EAAC;QACP,mBAEI,EAAE,EAAC;QA4DP,eAAO,CAAU,GAAW,EAAE,MAAsB;YAClD,OAAO;gBACL,IAAI,KAAK,GAAG,qCAAY,GAAG,CAAC,CAAC;gBAC7B,IAAI,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,MAAK,SAAS,EAAE;oBAC9B,IAAI;wBACF,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;qBACjD;oBAAC,WAAM;wBACN,KAAK,GAAG,SAAS,CAAC;qBACnB;iBACF;gBACD,IAAI,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,MAAK,OAAO,EAAE;oBAC5B,IAAI;wBACF,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;qBAC/C;oBAAC,WAAM;wBACN,KAAK,GAAG,SAAS,CAAC;qBACnB;iBACF;gBACD,IAAI,CAAC,KAAK,EAAE;oBACV,OAAO,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,CAAC;iBACxB;gBACD,IAAI,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,KAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,CAAC,GAAG,IAAI,IAAI,EAAE,EAAE;oBAC/E,MAAM,MAAM,GAAG,2CAAA,IAAI,EAAS,GAAG,EAAE,MAAM,CAAC,CAAC;oBACzC,MAAM,EAAE,CAAC;oBACT,OAAO,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,CAAC;iBACxB;gBACD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;aAC/C,CAAC;SACH,EAAA;QAED,qBAAa,CAAU,GAAW,EAAE,MAA4B;YAC9D,OAAO;;gBACL,IAAI,KAAK,GAAG,qCAAY,GAAG,CAAC,CAAC;gBAC7B,UAAI,IAAI,CAAC,aAAa,0CAAE,GAAG,EAAE;oBAC3B,KAAK,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG;wBACzD,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;wBACnB,OAAO,SAAS,CAAC;qBAClB,CAAC,CAAC;iBACJ;gBACD,IAAI,CAAC,KAAK,EAAE;oBACV,OAAO,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,CAAC;iBACxB;gBACD,IAAI,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,KAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,CAAC,GAAG,IAAI,IAAI,EAAE,EAAE;oBAC/E,MAAM,MAAM,GAAG,iDAAA,IAAI,EAAe,GAAG,EAAE,MAAM,CAAC,CAAC;oBAC/C,MAAM,EAAE,CAAC;oBACT,OAAO,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,CAAC;iBACxB;gBACD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;aAC/C,CAAA,CAAC;SACH,EAAA;QAED,eAAO,CAAU,GAAW,EAAE,MAAsB;YAClD,OAAO,CAAC,IAAO;gBACb,qCAAY,GAAG,CAAC,GAAG;oBACjB,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;oBACtC,SAAS,EAAE,IAAI,IAAI,EAAE;iBACtB,CAAC;gBACF,IAAI,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,MAAK,SAAS,EAAE;oBAC9B,IAAI;wBACF,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,qCAAY,GAAG,CAAC,CAAC,CAAC,CAAC;qBAC/D;oBAAC,OAAO,GAAG,EAAE;wBACZ,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;qBACpB;iBACF;gBACD,IAAI,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,MAAK,OAAO,EAAE;oBAC5B,IAAI;wBACF,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,qCAAY,GAAG,CAAC,CAAC,CAAC,CAAC;qBAC7D;oBAAC,OAAO,GAAG,EAAE;wBACZ,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;qBACpB;iBACF;gBACD,uCAAc,GAAG,CAAC,CAAC,IAAI,CAAC,qCAAY,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;aAChD,CAAC;SACH,EAAA;QAED,qBAAa,CAAU,GAAW,EAAE,MAA4B;YAC9D,OAAO,CAAO,IAAO;;gBACnB,qCAAY,GAAG,CAAC,GAAG;oBACjB,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;oBACtC,SAAS,EAAE,IAAI,IAAI,EAAE;iBACtB,CAAC;gBACF,UAAI,IAAI,CAAC,aAAa,0CAAE,GAAG,EAAE;oBAC3B,IAAI;wBACF,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,qCAAY,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;qBAC7D;oBAAC,OAAO,GAAG,EAAE;wBACZ,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;qBACpB;iBACF;gBACD,uCAAc,GAAG,CAAC,CAAC,IAAI,CAAC,qCAAY,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;aAChD,CAAA,CAAC;SACH,EAAA;QAED,eAAO,CAAC,GAAW,EAAE,MAAsB;YACzC,OAAO;gBACL,IAAI,KAAK,GAAG,qCAAY,GAAG,CAAC,CAAC;gBAE7B,IAAI,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,MAAK,SAAS,EAAE;oBAC9B,IAAI;wBACF,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;qBACjD;oBAAC,WAAM;wBACN,KAAK,GAAG,SAAS,CAAC;qBACnB;iBACF;gBACD,IAAI,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,MAAK,OAAO,EAAE;oBAC5B,IAAI;wBACF,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;qBAC/C;oBAAC,WAAM;wBACN,KAAK,GAAG,SAAS,CAAC;qBACnB;iBACF;gBACD,IAAI,CAAC,KAAK,EAAE;oBACV,OAAO,KAAK,CAAC;iBACd;gBACD,IAAI,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,KAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,CAAC,GAAG,IAAI,IAAI,EAAE,EAAE;oBAC/E,OAAO,KAAK,CAAC;iBACd;gBACD,OAAO,IAAI,CAAC;aACb,CAAA;SACF,EAAA;QAED,qBAAa,CAAC,GAAW,EAAE,MAA4B;YACrD,OAAO;;gBACL,IAAI,KAAK,GAAG,qCAAY,GAAG,CAAC,CAAC;gBAC7B,UAAI,IAAI,CAAC,aAAa,0CAAE,GAAG,EAAE;oBAC3B,KAAK,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG;wBACzD,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;wBACnB,OAAO,SAAS,CAAC;qBAClB,CAAC,CAAC;iBACJ;gBACD,IAAI,CAAC,KAAK,EAAE;oBACV,OAAO,KAAK,CAAC;iBACd;gBACD,IAAI,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,KAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,CAAC,GAAG,IAAI,IAAI,EAAE,EAAE;oBAC/E,OAAO,KAAK,CAAC;iBACd;gBACD,OAAO,IAAI,CAAC;aACb,CAAA,CAAC;SACH,EAAA;QAED,kBAAU,CAAC,GAAW,EAAE,MAAsB;YAC5C,OAAO;gBACL,qCAAY,GAAG,CAAC,GAAG,SAAS,CAAC;gBAC7B,IAAI,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,MAAK,SAAS,EAAE;oBAC9B,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;iBAChC;gBACD,IAAI,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,MAAK,OAAO,EAAE;oBAC5B,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;iBAC9B;gBACD,uCAAc,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;aACpC,CAAC;SACH,EAAA;QAED,wBAAgB,CAAC,GAAW,EAAE,MAA4B;YACxD,OAAO;;gBACL,qCAAY,GAAG,CAAC,GAAG,SAAS,CAAC;gBAC7B,UAAI,IAAI,CAAC,aAAa,0CAAE,MAAM,EAAE;oBAC9B,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG;wBACpD,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;qBACpB,CAAC,CAAC;iBACJ;gBACD,uCAAc,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;aACpC,CAAA,CAAC;SACH,EAAA;KA3NA;IAED,MAAM,CAAU,GAAoB,EAAE,MAAyB;QAC7D,IAAI,CAAC,GAAG,EAAE;YACR,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;SACpC;QACD,IAAI,OAAO,GAAW,IAAI,CAAC;QAC3B,IAAI,QAAQ,GAAG,CAAC,KAAK,QAAQ,EAAE;YAC7B,OAAO,GAAG,GAAG,CAAC;SACf;aAAM,IAAI,QAAQ,GAAG,CAAC,KAAK,QAAQ,EAAE;YACpC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;SACrB;aAAM;YACL,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;SAChC;QACD,IAAI,CAAC,uCAAc,OAAO,CAAC,EAAE;YAC3B,uCAAc,OAAO,CAAC,GAAG,IAAI,eAAe,CAAM,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,CAAC,CAAC;SACpE;QACD,MAAM,GAAG,GAAG,wCAAA,IAAI,EAAS,OAAO,EAAE,MAAM,CAAC,CAAC;QAC1C,MAAM,GAAG,GAAG,wCAAA,IAAI,EAAS,OAAO,EAAE,MAAM,CAAC,CAAC;QAC1C,MAAM,GAAG,GAAG,wCAAA,IAAI,EAAM,OAAO,EAAE,MAAM,CAAC,CAAC;QACvC,MAAM,MAAM,GAAG,2CAAA,IAAI,EAAS,OAAO,EAAE,MAAM,CAAC,CAAC;QAC7C,OAAO;YACL,GAAG;YACH,GAAG;YACH,GAAG;YACH,MAAM;YACN,QAAQ,EAAE,uCAAc,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;SAChD,CAAC;KACH;IAED,YAAY,CAAU,GAAoB,EAAE,MAAyB;QACnE,IAAI,CAAC,GAAG,EAAE;YACR,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;SACpC;QACD,IAAI,OAAO,GAAW,IAAI,CAAC;QAC3B,IAAI,QAAQ,GAAG,CAAC,KAAK,QAAQ,EAAE;YAC7B,OAAO,GAAG,GAAG,CAAC;SACf;aAAM,IAAI,QAAQ,GAAG,CAAC,KAAK,QAAQ,EAAE;YACpC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;SACrB;aAAM;YACL,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;SAChC;QACD,IAAI,CAAC,uCAAc,OAAO,CAAC,EAAE;YAC3B,uCAAc,OAAO,CAAC,GAAG,IAAI,eAAe,CAAM,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,CAAC,CAAC;SACpE;QACD,MAAM,GAAG,GAAG,8CAAA,IAAI,EAAe,OAAO,EAAE,MAAM,CAAC,CAAC;QAChD,MAAM,GAAG,GAAG,8CAAA,IAAI,EAAe,OAAO,EAAE,MAAM,CAAC,CAAC;QAChD,MAAM,GAAG,GAAG,8CAAA,IAAI,EAAY,OAAO,EAAE,MAAM,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAG,iDAAA,IAAI,EAAe,OAAO,EAAE,MAAM,CAAC,CAAC;QACnD,OAAO;YACL,GAAG;YACH,GAAG;YACH,GAAG;YACH,MAAM;YACN,QAAQ,EAAE,uCAAc,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;SACtD,CAAC;KACH;;;;;YAtEF,UAAU,SAAC;gBACV,UAAU,EAAE,MAAM;aACnB;;;4CAWc,MAAM,SAAC,YAAY,cAAG,QAAQ;;;ACpB7C;;;;;;"}
1
+ {"version":3,"file":"sd-angular-core-cache.js","sources":["../../../../projects/sd-core/cache/src/lib/cache.model.ts","../../../../projects/sd-core/cache/src/lib/cache.service.ts","../../../../projects/sd-core/cache/sd-angular-core-cache.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\n\r\nexport interface SdCacheOption<T = any> {\r\n type?: 'default' | 'session' | 'local';\r\n hours?: number;\r\n default?: T;\r\n args?: {\r\n [key: string]: any\r\n };\r\n}\r\n\r\nexport interface SdCacheServerOption<T = any> {\r\n hours?: number;\r\n default?: T;\r\n args?: {\r\n [key: string]: any\r\n };\r\n}\r\n\r\nexport interface SdCache<T = any> {\r\n get: () => T;\r\n set: (data: T) => void;\r\n has: () => boolean;\r\n remove: () => void;\r\n observer: Observable<T>;\r\n}\r\n\r\nexport interface SdCacheServer<T = any> {\r\n get: () => Promise<T>;\r\n set: (data: T) => Promise<void>;\r\n has: () => Promise<boolean>;\r\n remove: () => Promise<void>;\r\n observer: Observable<T>;\r\n}\r\n\r\nexport interface ICacheConfiguration {\r\n convertKey?: (key: string) => string;\r\n set?: (key: string, value: { data: any, createdOn: Date }, option?: SdCacheServerOption) => Promise<void>;\r\n get?: (key: string, option?: SdCacheServerOption) => Promise<{ data: any, createdOn: Date }>;\r\n remove?: (key: string, option?: SdCacheServerOption) => Promise<void>;\r\n}\r\n\r\nexport const CACHE_CONFIG = new InjectionToken<ICacheConfiguration>('cache.configuration');\r\n","import { Inject, Injectable, Optional } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { CACHE_CONFIG, ICacheConfiguration, SdCache, SdCacheOption, SdCacheServer, SdCacheServerOption } from './cache.model';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { map, switchMap } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SdCacheService {\r\n #cache: {\r\n [key: string]: {\r\n data: any,\r\n createdOn: Date\r\n }\r\n } = {};\r\n #subject: {\r\n [key: string]: BehaviorSubject<any>;\r\n } = {};\r\n constructor(@Inject(CACHE_CONFIG) @Optional() private configuration: ICacheConfiguration) {\r\n }\r\n\r\n create<T = any>(key: string | object, option?: SdCacheOption<T>): SdCache<T> {\r\n if (!key) {\r\n throw new Error('Key is required');\r\n }\r\n let hashKey: string = null;\r\n if (typeof (key) === 'string') {\r\n hashKey = key;\r\n } else if (typeof (key) === 'object') {\r\n hashKey = hash(key);\r\n } else {\r\n throw new Error('Invalid key');\r\n }\r\n if (!this.#subject[hashKey]) {\r\n this.#subject[hashKey] = new BehaviorSubject<any>(option?.default);\r\n }\r\n const get = this.#get<T>(hashKey, option);\r\n const set = this.#set<T>(hashKey, option);\r\n const has = this.#has(hashKey, option);\r\n const remove = this.#remove(hashKey, option);\r\n return {\r\n get,\r\n set,\r\n has,\r\n remove,\r\n observer: this.#subject[hashKey].pipe(map(get))\r\n };\r\n }\r\n\r\n createServer<T = any>(key: string | object, option?: SdCacheOption<T>): SdCacheServer<T> {\r\n if (!key) {\r\n throw new Error('Key is required');\r\n }\r\n let hashKey: string = null;\r\n if (typeof (key) === 'string') {\r\n hashKey = key;\r\n } else if (typeof (key) === 'object') {\r\n hashKey = hash(key);\r\n } else {\r\n throw new Error('Invalid key');\r\n }\r\n if (!this.#subject[hashKey]) {\r\n this.#subject[hashKey] = new BehaviorSubject<any>(option?.default);\r\n }\r\n const get = this.#getServer<T>(hashKey, option);\r\n const set = this.#setServer<T>(hashKey, option);\r\n const has = this.#hasServer(hashKey, option);\r\n const remove = this.#removeServer(hashKey, option);\r\n return {\r\n get,\r\n set,\r\n has,\r\n remove,\r\n observer: this.#subject[hashKey].pipe(switchMap(get))\r\n };\r\n }\r\n\r\n #get = <T = any>(key: string, option?: SdCacheOption): (() => T) => {\r\n return () => {\r\n let cache = this.#cache[key];\r\n if (option?.type === 'session') {\r\n try {\r\n cache = JSON.parse(sessionStorage.getItem(key));\r\n } catch {\r\n cache = undefined;\r\n }\r\n }\r\n if (option?.type === 'local') {\r\n try {\r\n cache = JSON.parse(localStorage.getItem(key));\r\n } catch {\r\n cache = undefined;\r\n }\r\n }\r\n if (!cache) {\r\n return option?.default;\r\n }\r\n if (option?.hours && Date.addHours(cache.createdOn, option?.hours) < new Date()) {\r\n const remove = this.#remove(key, option);\r\n remove();\r\n return option?.default;\r\n }\r\n return JSON.parse(JSON.stringify(cache.data));\r\n };\r\n }\r\n\r\n #getServer = <T = any>(key: string, option?: SdCacheServerOption): (() => Promise<T>) => {\r\n return async () => {\r\n let cache = this.#cache[key];\r\n if (this.configuration?.get) {\r\n cache = await this.configuration.get(key, option).catch(err => {\r\n console.error(err);\r\n return undefined;\r\n });\r\n }\r\n if (!cache) {\r\n return option?.default;\r\n }\r\n if (option?.hours && Date.addHours(cache.createdOn, option?.hours) < new Date()) {\r\n const remove = this.#removeServer(key, option);\r\n remove();\r\n return option?.default;\r\n }\r\n return JSON.parse(JSON.stringify(cache.data));\r\n };\r\n }\r\n\r\n #set = <T = any>(key: string, option?: SdCacheOption): ((data: T) => void) => {\r\n return (data: T) => {\r\n this.#cache[key] = {\r\n data: JSON.parse(JSON.stringify(data)),\r\n createdOn: new Date()\r\n };\r\n if (option?.type === 'session') {\r\n try {\r\n sessionStorage.setItem(key, JSON.stringify(this.#cache[key]));\r\n } catch (err) {\r\n console.error(err);\r\n }\r\n }\r\n if (option?.type === 'local') {\r\n try {\r\n localStorage.setItem(key, JSON.stringify(this.#cache[key]));\r\n } catch (err) {\r\n console.error(err);\r\n }\r\n }\r\n this.#subject[key].next(this.#cache[key].data);\r\n };\r\n }\r\n\r\n #setServer = <T = any>(key: string, option?: SdCacheServerOption): ((data: T) => Promise<void>) => {\r\n return async (data: T) => {\r\n this.#cache[key] = {\r\n data: JSON.parse(JSON.stringify(data)),\r\n createdOn: new Date()\r\n };\r\n if (this.configuration?.set) {\r\n try {\r\n await this.configuration.set(key, this.#cache[key], option);\r\n } catch (err) {\r\n console.error(err);\r\n }\r\n }\r\n this.#subject[key].next(this.#cache[key].data);\r\n };\r\n }\r\n\r\n #has = (key: string, option?: SdCacheOption): (() => boolean) => {\r\n return () => {\r\n let cache = this.#cache[key];\r\n\r\n if (option?.type === 'session') {\r\n try {\r\n cache = JSON.parse(sessionStorage.getItem(key));\r\n } catch {\r\n cache = undefined;\r\n }\r\n }\r\n if (option?.type === 'local') {\r\n try {\r\n cache = JSON.parse(localStorage.getItem(key));\r\n } catch {\r\n cache = undefined;\r\n }\r\n }\r\n if (!cache) {\r\n return false;\r\n }\r\n if (option?.hours && Date.addHours(cache.createdOn, option?.hours) < new Date()) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n }\r\n\r\n #hasServer = (key: string, option?: SdCacheServerOption): (() => Promise<boolean>) => {\r\n return async () => {\r\n let cache = this.#cache[key];\r\n if (this.configuration?.get) {\r\n cache = await this.configuration.get(key, option).catch(err => {\r\n console.error(err);\r\n return undefined;\r\n });\r\n }\r\n if (!cache) {\r\n return false;\r\n }\r\n if (option?.hours && Date.addHours(cache.createdOn, option?.hours) < new Date()) {\r\n return false;\r\n }\r\n return true;\r\n };\r\n }\r\n\r\n #remove = (key: string, option?: SdCacheOption): (() => void) => {\r\n return () => {\r\n this.#cache[key] = undefined;\r\n if (option?.type === 'session') {\r\n sessionStorage.removeItem(key);\r\n }\r\n if (option?.type === 'local') {\r\n localStorage.removeItem(key);\r\n }\r\n this.#subject[key].next(undefined);\r\n };\r\n }\r\n\r\n #removeServer = (key: string, option?: SdCacheServerOption): (() => Promise<void>) => {\r\n return async () => {\r\n this.#cache[key] = undefined;\r\n if (this.configuration?.remove) {\r\n await this.configuration.remove(key, option).catch(err => {\r\n console.error(err);\r\n });\r\n }\r\n this.#subject[key].next(undefined);\r\n };\r\n }\r\n}\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;MA2Ca,YAAY,GAAG,IAAI,cAAc,CAAsB,qBAAqB;;;MClC5E,cAAc;IAUzB,YAAsD,aAAkC;QAAlC,kBAAa,GAAb,aAAa,CAAqB;QATxF,iBAKI,EAAE,EAAC;QACP,mBAEI,EAAE,EAAC;QA4DP,eAAO,CAAU,GAAW,EAAE,MAAsB;YAClD,OAAO;gBACL,IAAI,KAAK,GAAG,qCAAY,GAAG,CAAC,CAAC;gBAC7B,IAAI,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,MAAK,SAAS,EAAE;oBAC9B,IAAI;wBACF,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;qBACjD;oBAAC,WAAM;wBACN,KAAK,GAAG,SAAS,CAAC;qBACnB;iBACF;gBACD,IAAI,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,MAAK,OAAO,EAAE;oBAC5B,IAAI;wBACF,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;qBAC/C;oBAAC,WAAM;wBACN,KAAK,GAAG,SAAS,CAAC;qBACnB;iBACF;gBACD,IAAI,CAAC,KAAK,EAAE;oBACV,OAAO,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,CAAC;iBACxB;gBACD,IAAI,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,KAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,CAAC,GAAG,IAAI,IAAI,EAAE,EAAE;oBAC/E,MAAM,MAAM,GAAG,2CAAA,IAAI,EAAS,GAAG,EAAE,MAAM,CAAC,CAAC;oBACzC,MAAM,EAAE,CAAC;oBACT,OAAO,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,CAAC;iBACxB;gBACD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;aAC/C,CAAC;SACH,EAAA;QAED,qBAAa,CAAU,GAAW,EAAE,MAA4B;YAC9D,OAAO;;gBACL,IAAI,KAAK,GAAG,qCAAY,GAAG,CAAC,CAAC;gBAC7B,UAAI,IAAI,CAAC,aAAa,0CAAE,GAAG,EAAE;oBAC3B,KAAK,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG;wBACzD,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;wBACnB,OAAO,SAAS,CAAC;qBAClB,CAAC,CAAC;iBACJ;gBACD,IAAI,CAAC,KAAK,EAAE;oBACV,OAAO,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,CAAC;iBACxB;gBACD,IAAI,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,KAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,CAAC,GAAG,IAAI,IAAI,EAAE,EAAE;oBAC/E,MAAM,MAAM,GAAG,iDAAA,IAAI,EAAe,GAAG,EAAE,MAAM,CAAC,CAAC;oBAC/C,MAAM,EAAE,CAAC;oBACT,OAAO,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,CAAC;iBACxB;gBACD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;aAC/C,CAAA,CAAC;SACH,EAAA;QAED,eAAO,CAAU,GAAW,EAAE,MAAsB;YAClD,OAAO,CAAC,IAAO;gBACb,qCAAY,GAAG,CAAC,GAAG;oBACjB,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;oBACtC,SAAS,EAAE,IAAI,IAAI,EAAE;iBACtB,CAAC;gBACF,IAAI,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,MAAK,SAAS,EAAE;oBAC9B,IAAI;wBACF,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,qCAAY,GAAG,CAAC,CAAC,CAAC,CAAC;qBAC/D;oBAAC,OAAO,GAAG,EAAE;wBACZ,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;qBACpB;iBACF;gBACD,IAAI,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,MAAK,OAAO,EAAE;oBAC5B,IAAI;wBACF,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,qCAAY,GAAG,CAAC,CAAC,CAAC,CAAC;qBAC7D;oBAAC,OAAO,GAAG,EAAE;wBACZ,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;qBACpB;iBACF;gBACD,uCAAc,GAAG,CAAC,CAAC,IAAI,CAAC,qCAAY,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;aAChD,CAAC;SACH,EAAA;QAED,qBAAa,CAAU,GAAW,EAAE,MAA4B;YAC9D,OAAO,CAAO,IAAO;;gBACnB,qCAAY,GAAG,CAAC,GAAG;oBACjB,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;oBACtC,SAAS,EAAE,IAAI,IAAI,EAAE;iBACtB,CAAC;gBACF,UAAI,IAAI,CAAC,aAAa,0CAAE,GAAG,EAAE;oBAC3B,IAAI;wBACF,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,qCAAY,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;qBAC7D;oBAAC,OAAO,GAAG,EAAE;wBACZ,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;qBACpB;iBACF;gBACD,uCAAc,GAAG,CAAC,CAAC,IAAI,CAAC,qCAAY,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;aAChD,CAAA,CAAC;SACH,EAAA;QAED,eAAO,CAAC,GAAW,EAAE,MAAsB;YACzC,OAAO;gBACL,IAAI,KAAK,GAAG,qCAAY,GAAG,CAAC,CAAC;gBAE7B,IAAI,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,MAAK,SAAS,EAAE;oBAC9B,IAAI;wBACF,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;qBACjD;oBAAC,WAAM;wBACN,KAAK,GAAG,SAAS,CAAC;qBACnB;iBACF;gBACD,IAAI,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,MAAK,OAAO,EAAE;oBAC5B,IAAI;wBACF,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;qBAC/C;oBAAC,WAAM;wBACN,KAAK,GAAG,SAAS,CAAC;qBACnB;iBACF;gBACD,IAAI,CAAC,KAAK,EAAE;oBACV,OAAO,KAAK,CAAC;iBACd;gBACD,IAAI,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,KAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,CAAC,GAAG,IAAI,IAAI,EAAE,EAAE;oBAC/E,OAAO,KAAK,CAAC;iBACd;gBACD,OAAO,IAAI,CAAC;aACb,CAAA;SACF,EAAA;QAED,qBAAa,CAAC,GAAW,EAAE,MAA4B;YACrD,OAAO;;gBACL,IAAI,KAAK,GAAG,qCAAY,GAAG,CAAC,CAAC;gBAC7B,UAAI,IAAI,CAAC,aAAa,0CAAE,GAAG,EAAE;oBAC3B,KAAK,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG;wBACzD,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;wBACnB,OAAO,SAAS,CAAC;qBAClB,CAAC,CAAC;iBACJ;gBACD,IAAI,CAAC,KAAK,EAAE;oBACV,OAAO,KAAK,CAAC;iBACd;gBACD,IAAI,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,KAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,CAAC,GAAG,IAAI,IAAI,EAAE,EAAE;oBAC/E,OAAO,KAAK,CAAC;iBACd;gBACD,OAAO,IAAI,CAAC;aACb,CAAA,CAAC;SACH,EAAA;QAED,kBAAU,CAAC,GAAW,EAAE,MAAsB;YAC5C,OAAO;gBACL,qCAAY,GAAG,CAAC,GAAG,SAAS,CAAC;gBAC7B,IAAI,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,MAAK,SAAS,EAAE;oBAC9B,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;iBAChC;gBACD,IAAI,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,MAAK,OAAO,EAAE;oBAC5B,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;iBAC9B;gBACD,uCAAc,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;aACpC,CAAC;SACH,EAAA;QAED,wBAAgB,CAAC,GAAW,EAAE,MAA4B;YACxD,OAAO;;gBACL,qCAAY,GAAG,CAAC,GAAG,SAAS,CAAC;gBAC7B,UAAI,IAAI,CAAC,aAAa,0CAAE,MAAM,EAAE;oBAC9B,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG;wBACpD,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;qBACpB,CAAC,CAAC;iBACJ;gBACD,uCAAc,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;aACpC,CAAA,CAAC;SACH,EAAA;KA3NA;IAED,MAAM,CAAU,GAAoB,EAAE,MAAyB;QAC7D,IAAI,CAAC,GAAG,EAAE;YACR,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;SACpC;QACD,IAAI,OAAO,GAAW,IAAI,CAAC;QAC3B,IAAI,QAAQ,GAAG,CAAC,KAAK,QAAQ,EAAE;YAC7B,OAAO,GAAG,GAAG,CAAC;SACf;aAAM,IAAI,QAAQ,GAAG,CAAC,KAAK,QAAQ,EAAE;YACpC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;SACrB;aAAM;YACL,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;SAChC;QACD,IAAI,CAAC,uCAAc,OAAO,CAAC,EAAE;YAC3B,uCAAc,OAAO,CAAC,GAAG,IAAI,eAAe,CAAM,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,CAAC,CAAC;SACpE;QACD,MAAM,GAAG,GAAG,wCAAA,IAAI,EAAS,OAAO,EAAE,MAAM,CAAC,CAAC;QAC1C,MAAM,GAAG,GAAG,wCAAA,IAAI,EAAS,OAAO,EAAE,MAAM,CAAC,CAAC;QAC1C,MAAM,GAAG,GAAG,wCAAA,IAAI,EAAM,OAAO,EAAE,MAAM,CAAC,CAAC;QACvC,MAAM,MAAM,GAAG,2CAAA,IAAI,EAAS,OAAO,EAAE,MAAM,CAAC,CAAC;QAC7C,OAAO;YACL,GAAG;YACH,GAAG;YACH,GAAG;YACH,MAAM;YACN,QAAQ,EAAE,uCAAc,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;SAChD,CAAC;KACH;IAED,YAAY,CAAU,GAAoB,EAAE,MAAyB;QACnE,IAAI,CAAC,GAAG,EAAE;YACR,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;SACpC;QACD,IAAI,OAAO,GAAW,IAAI,CAAC;QAC3B,IAAI,QAAQ,GAAG,CAAC,KAAK,QAAQ,EAAE;YAC7B,OAAO,GAAG,GAAG,CAAC;SACf;aAAM,IAAI,QAAQ,GAAG,CAAC,KAAK,QAAQ,EAAE;YACpC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;SACrB;aAAM;YACL,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;SAChC;QACD,IAAI,CAAC,uCAAc,OAAO,CAAC,EAAE;YAC3B,uCAAc,OAAO,CAAC,GAAG,IAAI,eAAe,CAAM,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,CAAC,CAAC;SACpE;QACD,MAAM,GAAG,GAAG,8CAAA,IAAI,EAAe,OAAO,EAAE,MAAM,CAAC,CAAC;QAChD,MAAM,GAAG,GAAG,8CAAA,IAAI,EAAe,OAAO,EAAE,MAAM,CAAC,CAAC;QAChD,MAAM,GAAG,GAAG,8CAAA,IAAI,EAAY,OAAO,EAAE,MAAM,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAG,iDAAA,IAAI,EAAe,OAAO,EAAE,MAAM,CAAC,CAAC;QACnD,OAAO;YACL,GAAG;YACH,GAAG;YACH,GAAG;YACH,MAAM;YACN,QAAQ,EAAE,uCAAc,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;SACtD,CAAC;KACH;;;;;YAtEF,UAAU,SAAC;gBACV,UAAU,EAAE,MAAM;aACnB;;;4CAWc,MAAM,SAAC,YAAY,cAAG,QAAQ;;;ACnB7C;;;;;;"}
@@ -1,10 +1,10 @@
1
+ import '@sd-angular/core/common';
1
2
  import { InjectionToken, Component, ChangeDetectorRef, Optional, Inject, Input, ViewChild, NgModule } from '@angular/core';
2
3
  import { CommonModule } from '@angular/common';
3
4
  import { __awaiter } from 'tslib';
4
5
  import * as Chart from 'chart.js';
5
6
  import $ from 'jquery';
6
7
  import { v4 } from 'uuid';
7
- import '@sd-angular/core/typing';
8
8
 
9
9
  const ChartColors = {
10
10
  Red: 'rgb(255, 99, 132)',
@@ -719,10 +719,6 @@ SdChartModule.decorators = [
719
719
  },] }
720
720
  ];
721
721
 
722
- /*
723
- * Public API Surface of superdev-angular-core
724
- */
725
-
726
722
  /**
727
723
  * Generated bundle index. Do not edit.
728
724
  */
@@ -1 +1 @@
1
- {"version":3,"file":"sd-angular-core-chart.js","sources":["../../../../projects/sd-core/chart/src/lib/chart.model.ts","../../../../projects/sd-core/chart/src/lib/chart.component.ts","../../../../projects/sd-core/chart/src/lib/chart.module.ts","../../../../projects/sd-core/chart/src/public-api.ts","../../../../projects/sd-core/chart/sd-angular-core-chart.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\r\n\r\nexport const ChartColors = {\r\n Red: 'rgb(255, 99, 132)',\r\n Orange: 'rgb(255, 159, 64)',\r\n Yellow: 'rgb(255, 205, 86)',\r\n Green: 'rgb(75, 192, 192)',\r\n Blue: 'rgb(54, 162, 235)',\r\n Purple: 'rgb(153, 102, 255)',\r\n Grey: 'rgb(201, 203, 207)',\r\n Purple700: '#2E224C',\r\n Purple600: '#453372',\r\n Purple500: '#574191',\r\n Purple400: '#7356BF',\r\n Purple300: '#957FCE',\r\n Purple200: '#C1B4E2',\r\n Purple100: '#E3DDF2',\r\n Purple50: '#F3F1F9',\r\n Blue700: '#0F2C60',\r\n Blue600: '#174291',\r\n Blue500: '#1D53B7',\r\n Blue400: '#276EF1',\r\n Blue300: '#5A90F4',\r\n Blue200: '#9FBFF8',\r\n Blue100: '#D4E2FC',\r\n Blue50: '#EDF3FD',\r\n Green700: '#0D4020',\r\n Green600: '#156A36',\r\n Green500: '#09863D',\r\n Green400: '#21A453',\r\n Green300: '#43BF75',\r\n Green200: '#9EE2B8',\r\n Green100: '#CFF3DD',\r\n Green50: '#F0FAF3',\r\n Yellow700: '#664C1A',\r\n Yellow600: '#997328',\r\n Yellow500: '#C19132',\r\n Yellow400: '#FFC043',\r\n Yellow300: '#FFCF70',\r\n Yellow200: '#FFE3AC',\r\n Yellow100: '#FFF2D9',\r\n Yellow50: '#FFF9EF',\r\n Orange700: '#5F2C14',\r\n Orange600: '#8E421E',\r\n Orange500: '#B45326',\r\n Orange400: '#ED6E33',\r\n Orange300: '#F19063',\r\n Orange200: '#F7BFA5',\r\n Orange100: '#FBE2D6',\r\n Orange50: '#FDF3EE',\r\n Red700: '#541A14',\r\n Red600: '#7F281E',\r\n Red500: '#A13226',\r\n Red400: '#D44333',\r\n Red300: '#DE7063',\r\n Red200: '#ECACA5',\r\n Red100: '#F6D9D6',\r\n Red50: '#FBEFEE',\r\n Brown700: '#3D281E',\r\n Brown600: '#5B3C2D',\r\n Brown500: '#744C39',\r\n Brown400: '#99644C',\r\n Brown300: '#B18976',\r\n Brown200: '#D2BAB0',\r\n Brown100: '#EBE0DB',\r\n Brown50: '#F6F2F0',\r\n Gray900: '#141414',\r\n Gray800: '#1F1F1F',\r\n Gray700: '#333333',\r\n Gray600: '#545454',\r\n Gray500: '#757575',\r\n Gray400: '#AFAFAF',\r\n Gray300: '#CBCBCB',\r\n Gray200: '#E2E2E2',\r\n Gray100: '#EEEEEE',\r\n Gray50: '#F6F6F6',\r\n Platinum700: '#394145',\r\n Platinum600: '#556268',\r\n Platinum500: '#6C7C83',\r\n Platinum400: '#8EA3AD',\r\n Platinum300: '#A1BDCA',\r\n Platinum200: '#CCDFE5',\r\n Platinum100: '#EBF5F7',\r\n Platinum50: '#F4FAFB',\r\n EatsGreen400: '#21A453',\r\n FreightBlue400: '#21A453',\r\n JumpRed400: '#FF0A2D',\r\n Black: '#000000',\r\n White: '#FFFFFF',\r\n};\r\n\r\nexport type SdChartOption = PieChartOption |\r\n BarChartOption |\r\n HorizontalBarChartOption |\r\n LineChartOption |\r\n StackAreaChartOption |\r\n BarLineChartOption;\r\n\r\ninterface BaseChartOption {\r\n title?: string;\r\n height?: string;\r\n hideLegend?: boolean;\r\n tooltips?: {\r\n label: (params: { datasetLabel?: string, label?: string, value?: number }) => string;\r\n };\r\n}\r\n\r\nexport interface PieChartOption extends BaseChartOption {\r\n type: 'pie';\r\n title?: string;\r\n datasets: {\r\n label: string,\r\n value: number,\r\n backgroundColor: string\r\n }[];\r\n hover?: 'ShowAll';\r\n}\r\n\r\nexport interface BarChartOption extends BaseChartOption {\r\n type: 'bar';\r\n xTitle?: string;\r\n yTitle?: string;\r\n labels: string[];\r\n datasets: {\r\n label: string;\r\n data: number[];\r\n borderColor?: string,\r\n backgroundColor?: string;\r\n stack?: string;\r\n }[];\r\n beginAtZero?: boolean;\r\n labelWidth?: number;\r\n ticks?: {\r\n xLabel?: (value: number | string, index: number) => string,\r\n yLabel?: (value: number | string, index: number) => string\r\n };\r\n hover?: 'ShowAll';\r\n}\r\n\r\nexport interface HorizontalBarChartOption extends BaseChartOption {\r\n type: 'horizontalBar';\r\n xTitle?: string;\r\n yTitle?: string;\r\n labels: string[];\r\n datasets: {\r\n label: string;\r\n data: number[];\r\n borderColor?: string,\r\n backgroundColor?: string;\r\n stack?: string;\r\n }[];\r\n beginAtZero?: boolean;\r\n labelWidth?: number;\r\n ticks?: {\r\n xLabel?: (value: number | string, index: number) => string,\r\n yLabel?: (value: number | string, index: number) => string\r\n };\r\n hover?: 'ShowAll';\r\n}\r\n\r\nexport interface LineChartOption extends BaseChartOption {\r\n type: 'line';\r\n xTitle?: string;\r\n yTitle?: string;\r\n labels: string[];\r\n datasets: {\r\n label: string;\r\n data: number[];\r\n borderColor?: string,\r\n backgroundColor?: string;\r\n }[];\r\n beginAtZero?: boolean;\r\n labelWidth?: number;\r\n ticks?: {\r\n xLabel?: (value: number | string, index: number) => string,\r\n yLabel?: (value: number | string, index: number) => string\r\n };\r\n hover?: 'ShowAll';\r\n}\r\n\r\nexport interface StackAreaChartOption extends BaseChartOption {\r\n type: 'stackArea';\r\n xTitle?: string;\r\n yTitle?: string;\r\n labels: string[];\r\n datasets: {\r\n label: string;\r\n data: number[];\r\n borderColor?: string,\r\n backgroundColor?: string;\r\n }[];\r\n beginAtZero?: boolean;\r\n labelWidth?: number;\r\n ticks?: {\r\n xLabel?: (value: number | string, index: number) => string,\r\n yLabel?: (value: number | string, index: number) => string\r\n };\r\n hover?: 'ShowAll';\r\n}\r\n\r\nexport interface BarLineChartOption extends BaseChartOption {\r\n type: 'barline';\r\n xTitle?: string;\r\n yTitle?: string;\r\n yRightTitle?: string;\r\n labels: string[];\r\n datasets: {\r\n type: 'bar' | 'line',\r\n yAlign?: 'left' | 'right',\r\n label: string;\r\n data: number[];\r\n borderColor?: string;\r\n backgroundColor?: string;\r\n }[];\r\n beginAtZero?: boolean;\r\n labelWidth?: number;\r\n ticks?: {\r\n xLabel?: (value: number | string, index: number) => string,\r\n yLabel?: (value: number | string, index: number) => string,\r\n yRightLabel?: (value: number | string, index: number) => string\r\n };\r\n hover?: 'ShowAll';\r\n}\r\n\r\n\r\nexport interface IChartConfiguration {\r\n defaultColors?: {\r\n backgroundColor?: string,\r\n borderColor?: string\r\n }[];\r\n}\r\n\r\nexport const CHART_CONFIG = new InjectionToken<IChartConfiguration>('chart.configuration');\r\n","import { Component, OnInit, AfterViewInit, ViewChild, ElementRef, Input, ChangeDetectorRef, Optional, Inject } from '@angular/core';\r\nimport * as Chart from 'chart.js';\r\nimport {\r\n SdChartOption,\r\n BarChartOption,\r\n LineChartOption,\r\n PieChartOption,\r\n BarLineChartOption,\r\n StackAreaChartOption,\r\n HorizontalBarChartOption,\r\n IChartConfiguration,\r\n CHART_CONFIG\r\n} from './chart.model';\r\nimport $ from 'jquery';\r\nimport * as uuid from 'uuid';\r\nimport '@sd-angular/core/typing';\r\n\r\n@Component({\r\n selector: 'sd-chart',\r\n templateUrl: './chart.component.html',\r\n styleUrls: ['./chart.component.scss']\r\n})\r\nexport class SdChart implements OnInit, AfterViewInit {\r\n private initialized = false;\r\n private pChartOption: SdChartOption;\r\n isLoading = false;\r\n\r\n @Input() set chartOption(chartOption: SdChartOption) {\r\n this.pChartOption = chartOption;\r\n if (this.initialized) {\r\n this.renderChart();\r\n }\r\n }\r\n\r\n @ViewChild('chart') chartRef: ElementRef;\r\n @ViewChild('chartWrapper') chartWrapperRef: ElementRef;\r\n @ViewChild('chartAxis') chartAxisRef: ElementRef;\r\n @ViewChild('chartAreaWrapperExtend') chartAreaWrapperExtendRef: ElementRef;\r\n chart: Chart;\r\n visible = true;\r\n height = '300px';\r\n private ctx: CanvasRenderingContext2D;\r\n\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n @Optional() @Inject(CHART_CONFIG) private chartConfiguration: IChartConfiguration\r\n ) {\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.renderChart(true);\r\n this.initialized = true;\r\n this.ref.detectChanges();\r\n }\r\n\r\n private async renderChart(firstRender?: boolean) {\r\n this.height = this.pChartOption?.height || '300px';\r\n if (!firstRender) {\r\n this.visible = false;\r\n await new Promise(resolve => setTimeout(resolve, 200));\r\n this.visible = true;\r\n }\r\n await new Promise(resolve => setTimeout(resolve, 200));\r\n if (this.chartRef?.nativeElement) {\r\n const canvas = this.chartRef.nativeElement as HTMLCanvasElement;\r\n this.ctx = canvas.getContext('2d');\r\n switch (this.pChartOption.type) {\r\n case 'pie':\r\n this.renderPieChart(this.pChartOption);\r\n break;\r\n case 'bar':\r\n this.renderBarChart(this.pChartOption);\r\n break;\r\n case 'horizontalBar':\r\n this.renderHorizontalBarChart(this.pChartOption);\r\n break;\r\n case 'line':\r\n this.renderLineChart(this.pChartOption);\r\n break;\r\n case 'stackArea':\r\n this.renderStackAreaChart(this.pChartOption);\r\n break;\r\n case 'barline':\r\n this.renderBarLineChart(this.pChartOption);\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n }\r\n\r\n private renderPieChart(option: PieChartOption) {\r\n const configuration: Chart.ChartConfiguration = {\r\n type: 'pie',\r\n options: {\r\n responsive: true,\r\n title: {\r\n display: true,\r\n text: option.title\r\n },\r\n legend: {\r\n display: !option.hideLegend\r\n },\r\n tooltips: {\r\n callbacks: {\r\n label: (tooltipItem, data) => {\r\n const datasetLabel = data?.datasets[tooltipItem.datasetIndex]?.label;\r\n const label = data?.labels[tooltipItem.index] as string;\r\n const value = data?.datasets[tooltipItem.datasetIndex]?.data[tooltipItem.index] as number;\r\n return option.tooltips?.label({\r\n datasetLabel,\r\n label,\r\n value\r\n }) || `${datasetLabel ? `[${datasetLabel}] ` : ''}${label} : ${Number.toVNCurrency(value)}`;\r\n }\r\n }\r\n }\r\n },\r\n data: {\r\n labels: option.datasets?.map(e => e.label) || [],\r\n datasets: [{\r\n data: option.datasets?.map(e => e.value) || [],\r\n backgroundColor: option.datasets?.map((e, idx) => e.backgroundColor\r\n || this.chartConfiguration?.defaultColors?.[idx]?.backgroundColor\r\n || this.dynamicColor) || []\r\n }]\r\n }\r\n };\r\n\r\n if (option.hover === 'ShowAll') {\r\n configuration.options.tooltips = {\r\n ...configuration.options.tooltips,\r\n mode: 'index',\r\n intersect: false\r\n };\r\n configuration.options.hover = {\r\n ...configuration.options.hover,\r\n mode: 'index',\r\n intersect: false\r\n };\r\n }\r\n\r\n this.chart = new Chart(this.ctx, configuration);\r\n this.isLoading = false;\r\n }\r\n\r\n private renderBarChart(option: BarChartOption) {\r\n const labelWidth = option.labelWidth ?? 50;\r\n if (option.datasets.length) {\r\n // const newwidth = Math.max(option.labels.length * option.datasets.length * labelWidth, $(this.chartWrapperRef.nativeElement).width());\r\n // $(this.chartAreaWrapperExtendRef.nativeElement).width(newwidth);\r\n const newwidth = option.labels.length * option.datasets.length * labelWidth;\r\n $(this.chartAreaWrapperExtendRef.nativeElement).css('width', `max(100%,${newwidth}px)`);\r\n }\r\n const configuration: Chart.ChartConfiguration = {\r\n options: {\r\n responsive: true,\r\n maintainAspectRatio: false,\r\n legend: {\r\n display: !option.hideLegend\r\n },\r\n scales: {\r\n xAxes: [{\r\n display: true,\r\n scaleLabel: {\r\n display: !!option.xTitle,\r\n labelString: option.xTitle || ''\r\n },\r\n ticks: {\r\n callback: (value: number | string, index: number) => {\r\n return option.ticks?.xLabel(value, index) || (Number.isNumber(value) ? Number.toVNCurrency(value) : value);\r\n }\r\n }\r\n }],\r\n yAxes: [{\r\n display: true,\r\n ticks: {\r\n beginAtZero: option.beginAtZero ?? true,\r\n callback: (value: number | string, index: number) => {\r\n return option.ticks?.yLabel(value, index) || (Number.isNumber(value) ? Number.toVNCurrency(value) : value);\r\n }\r\n },\r\n scaleLabel: {\r\n display: !!option.yTitle,\r\n labelString: option.yTitle || ''\r\n }\r\n }]\r\n },\r\n tooltips: {\r\n callbacks: {\r\n label: (tooltipItem, data) => {\r\n const datasetLabel = data?.datasets[tooltipItem.datasetIndex]?.label;\r\n const label = data?.labels[tooltipItem.index] as string;\r\n const value = data?.datasets[tooltipItem.datasetIndex]?.data[tooltipItem.index] as number;\r\n return option.tooltips?.label({\r\n datasetLabel,\r\n label,\r\n value\r\n }) || `${datasetLabel} : ${Number.toVNCurrency(value)}`;\r\n }\r\n }\r\n }\r\n },\r\n type: 'bar',\r\n data: {\r\n labels: option.labels,\r\n datasets: option.datasets.map((e, idx) => {\r\n const dynamicColor = this.dynamicColor;\r\n const result: Chart.ChartDataSets = {\r\n label: e.label,\r\n fill: e.backgroundColor || this.chartConfiguration?.defaultColors?.[idx]?.backgroundColor || dynamicColor,\r\n backgroundColor: e.backgroundColor || this.chartConfiguration?.defaultColors?.[idx]?.backgroundColor || dynamicColor,\r\n data: e.data,\r\n stack: e.stack\r\n };\r\n return result;\r\n })\r\n }\r\n };\r\n\r\n if (option.hover === 'ShowAll') {\r\n configuration.options.tooltips = {\r\n ...configuration.options.tooltips,\r\n mode: 'index',\r\n intersect: false\r\n };\r\n configuration.options.hover = {\r\n ...configuration.options.hover,\r\n mode: 'index',\r\n intersect: false\r\n };\r\n }\r\n\r\n this.chart = new Chart(this.ctx, configuration);\r\n this.isLoading = false;\r\n }\r\n\r\n private renderHorizontalBarChart(option: HorizontalBarChartOption) {\r\n // const labelWidth = option.labelWidth ?? 50;\r\n // if (option.datasets.length) {\r\n // const newwidth = Math.max(option.labels.length * option.datasets.length * labelWidth, $(this.chartWrapperRef.nativeElement).width());\r\n // $(this.chartAreaWrapperExtendRef.nativeElement).width(newwidth);\r\n // }\r\n const configuration: Chart.ChartConfiguration = {\r\n options: {\r\n responsive: true,\r\n maintainAspectRatio: false,\r\n legend: {\r\n display: !option.hideLegend\r\n },\r\n scales: {\r\n xAxes: [{\r\n display: true,\r\n scaleLabel: {\r\n display: !!option.xTitle,\r\n labelString: option.xTitle || ''\r\n },\r\n ticks: {\r\n beginAtZero: option.beginAtZero ?? true,\r\n callback: (value: number | string, index: number) => {\r\n return option.ticks?.xLabel(value, index) || (Number.isNumber(value) ? Number.toVNCurrency(value) : value);\r\n }\r\n }\r\n }],\r\n yAxes: [{\r\n display: true,\r\n ticks: {\r\n callback: (value: number | string, index: number) => {\r\n return option.ticks?.yLabel(value, index) || (Number.isNumber(value) ? Number.toVNCurrency(value) : value);\r\n }\r\n },\r\n scaleLabel: {\r\n display: !!option.yTitle,\r\n labelString: option.yTitle || ''\r\n }\r\n }]\r\n },\r\n tooltips: {\r\n callbacks: {\r\n label: (tooltipItem, data) => {\r\n const datasetLabel = data?.datasets[tooltipItem.datasetIndex]?.label;\r\n const label = data?.labels[tooltipItem.index] as string;\r\n const value = data?.datasets[tooltipItem.datasetIndex]?.data[tooltipItem.index] as number;\r\n return option.tooltips?.label({\r\n datasetLabel,\r\n label,\r\n value\r\n }) || `${datasetLabel} : ${Number.toVNCurrency(value)}`;\r\n }\r\n }\r\n }\r\n },\r\n type: 'horizontalBar',\r\n data: {\r\n labels: option.labels,\r\n datasets: option.datasets.map((e, idx) => {\r\n const dynamicColor = this.dynamicColor;\r\n const result: Chart.ChartDataSets = {\r\n label: e.label,\r\n fill: e.backgroundColor || this.chartConfiguration?.defaultColors?.[idx]?.backgroundColor || dynamicColor,\r\n backgroundColor: e.backgroundColor || this.chartConfiguration?.defaultColors?.[idx]?.backgroundColor || dynamicColor,\r\n data: e.data,\r\n stack: e.stack\r\n };\r\n return result;\r\n })\r\n }\r\n };\r\n\r\n if (option.hover === 'ShowAll') {\r\n configuration.options.tooltips = {\r\n ...configuration.options.tooltips,\r\n mode: 'index',\r\n intersect: false\r\n };\r\n configuration.options.hover = {\r\n ...configuration.options.hover,\r\n mode: 'index',\r\n intersect: false\r\n };\r\n }\r\n\r\n this.chart = new Chart(this.ctx, configuration);\r\n this.isLoading = false;\r\n }\r\n\r\n private renderLineChart(option: LineChartOption) {\r\n const labelWidth = option.labelWidth ?? 50;\r\n if (option.datasets.length) {\r\n // const newwidth = Math.max(option.labels.length * labelWidth, $(this.chartWrapperRef.nativeElement).width());\r\n // $(this.chartAreaWrapperExtendRef.nativeElement).width(newwidth);\r\n const newwidth = option.labels.length * labelWidth;\r\n $(this.chartAreaWrapperExtendRef.nativeElement).css('width', `max(100%,${newwidth}px)`);\r\n }\r\n const configuration: Chart.ChartConfiguration = {\r\n options: {\r\n responsive: true,\r\n maintainAspectRatio: false,\r\n legend: {\r\n display: !option.hideLegend\r\n },\r\n scales: {\r\n xAxes: [{\r\n display: true,\r\n scaleLabel: {\r\n display: !!option.xTitle,\r\n labelString: option.xTitle || ''\r\n },\r\n ticks: {\r\n callback: (value: number | string, index: number) => {\r\n return option.ticks?.xLabel(value, index) || (Number.isNumber(value) ? Number.toVNCurrency(value) : value);\r\n }\r\n },\r\n }],\r\n yAxes: [{\r\n display: true,\r\n ticks: {\r\n beginAtZero: option.beginAtZero ?? true,\r\n callback: (value: number | string, index: number) => {\r\n return option.ticks?.yLabel(value, index) || (Number.isNumber(value) ? Number.toVNCurrency(value) : value);\r\n }\r\n },\r\n scaleLabel: {\r\n display: !!option.yTitle,\r\n labelString: option.yTitle || ''\r\n }\r\n }]\r\n },\r\n tooltips: {\r\n callbacks: {\r\n label: (tooltipItem, data) => {\r\n const datasetLabel = data?.datasets[tooltipItem.datasetIndex]?.label;\r\n const label = data?.labels[tooltipItem.index] as string;\r\n const value = data?.datasets[tooltipItem.datasetIndex]?.data[tooltipItem.index] as number;\r\n return option.tooltips?.label({\r\n datasetLabel,\r\n label,\r\n value\r\n }) || `${datasetLabel} : ${Number.toVNCurrency(value)}`;\r\n }\r\n }\r\n }\r\n },\r\n type: 'line',\r\n data: {\r\n labels: option.labels,\r\n datasets: option.datasets.map((e, idx) => {\r\n const dynamicColor = this.dynamicColor;\r\n const result: Chart.ChartDataSets = {\r\n label: e.label,\r\n fill: e.backgroundColor || this.chartConfiguration?.defaultColors?.[idx]?.backgroundColor || dynamicColor,\r\n backgroundColor: e.backgroundColor || this.chartConfiguration?.defaultColors?.[idx]?.backgroundColor || dynamicColor,\r\n borderColor: e.borderColor || this.chartConfiguration?.defaultColors?.[idx]?.borderColor || dynamicColor,\r\n data: e.data,\r\n lineTension: 0,\r\n };\r\n return result;\r\n })\r\n }\r\n };\r\n\r\n if (option.hover === 'ShowAll') {\r\n configuration.options.tooltips = {\r\n ...configuration.options.tooltips,\r\n mode: 'index',\r\n intersect: false\r\n };\r\n configuration.options.hover = {\r\n ...configuration.options.hover,\r\n mode: 'index',\r\n intersect: false\r\n };\r\n }\r\n\r\n this.chart = new Chart(this.ctx, configuration);\r\n this.isLoading = false;\r\n }\r\n\r\n private renderStackAreaChart(option: StackAreaChartOption) {\r\n const labelWidth = option.labelWidth ?? 50;\r\n if (option.datasets.length) {\r\n // const newwidth = Math.max(option.labels.length * labelWidth, $(this.chartWrapperRef.nativeElement).width());\r\n // $(this.chartAreaWrapperExtendRef.nativeElement).width(newwidth);\r\n const newwidth = option.labels.length * labelWidth;\r\n $(this.chartAreaWrapperExtendRef.nativeElement).css('width', `max(100%,${newwidth}px)`);\r\n }\r\n const configuration: Chart.ChartConfiguration = {\r\n options: {\r\n responsive: true,\r\n maintainAspectRatio: false,\r\n legend: {\r\n display: !option.hideLegend\r\n },\r\n scales: {\r\n xAxes: [{\r\n display: true,\r\n scaleLabel: {\r\n display: !!option.xTitle,\r\n labelString: option.xTitle || ''\r\n },\r\n ticks: {\r\n callback: (value: number | string, index: number) => {\r\n return option.ticks?.xLabel(value, index) || (Number.isNumber(value) ? Number.toVNCurrency(value) : value);\r\n }\r\n },\r\n }],\r\n yAxes: [{\r\n display: true,\r\n ticks: {\r\n beginAtZero: option.beginAtZero ?? true,\r\n callback: (value: number | string, index: number) => {\r\n return option.ticks?.yLabel(value, index) || (Number.isNumber(value) ? Number.toVNCurrency(value) : value);\r\n }\r\n },\r\n stacked: true,\r\n scaleLabel: {\r\n display: !!option.yTitle,\r\n labelString: option.yTitle || ''\r\n }\r\n }]\r\n },\r\n tooltips: {\r\n callbacks: {\r\n label: (tooltipItem, data) => {\r\n const datasetLabel = data?.datasets[tooltipItem.datasetIndex]?.label;\r\n const label = data?.labels[tooltipItem.index] as string;\r\n const value = data?.datasets[tooltipItem.datasetIndex]?.data[tooltipItem.index] as number;\r\n return option.tooltips?.label({\r\n datasetLabel,\r\n label,\r\n value\r\n }) || `${datasetLabel} : ${Number.toVNCurrency(value)}`;\r\n }\r\n }\r\n }\r\n },\r\n type: 'line',\r\n data: {\r\n labels: option.labels,\r\n datasets: option.datasets.map((e, idx) => {\r\n const dynamicColor = this.dynamicColor;\r\n const result: Chart.ChartDataSets = {\r\n label: e.label,\r\n // fill: e.backgroundColor,\r\n backgroundColor: e.backgroundColor || this.chartConfiguration?.defaultColors?.[idx]?.backgroundColor || dynamicColor,\r\n borderColor: e.borderColor || this.chartConfiguration?.defaultColors?.[idx]?.borderColor || dynamicColor,\r\n data: e.data,\r\n lineTension: 0,\r\n };\r\n return result;\r\n })\r\n }\r\n };\r\n\r\n if (option.hover === 'ShowAll') {\r\n configuration.options.tooltips = {\r\n ...configuration.options.tooltips,\r\n mode: 'index',\r\n intersect: false\r\n };\r\n configuration.options.hover = {\r\n ...configuration.options.hover,\r\n mode: 'index',\r\n intersect: false\r\n };\r\n }\r\n\r\n this.chart = new Chart(this.ctx, configuration);\r\n this.isLoading = false;\r\n }\r\n\r\n private renderBarLineChart(option: BarLineChartOption) {\r\n const labelWidth = option.labelWidth ?? 50;\r\n if (option.datasets.length) {\r\n const numberOfBars = option.datasets.filter(e => e.type === 'bar').length;\r\n if (numberOfBars <= 1) {\r\n // const newwidth = Math.max(option.labels.length * labelWidth, $(this.chartWrapperRef.nativeElement).width());\r\n // $(this.chartAreaWrapperExtendRef.nativeElement).width(newwidth);\r\n const newwidth = option.labels.length * labelWidth;\r\n $(this.chartAreaWrapperExtendRef.nativeElement).css('width', `max(100%,${newwidth}px)`);\r\n } else {\r\n // const newwidth = Math.max(option.labels.length * numberOfBars * labelWidth, $(this.chartWrapperRef.nativeElement).width());\r\n // $(this.chartAreaWrapperExtendRef.nativeElement).width(newwidth);\r\n const newwidth = option.labels.length * numberOfBars * labelWidth;\r\n $(this.chartAreaWrapperExtendRef.nativeElement).css('width', `max(100%,${newwidth}px)`);\r\n }\r\n }\r\n const leftId = `I${uuid.v4()}`;\r\n const rightId = `I${uuid.v4()}`;\r\n const yAxes = [{\r\n type: 'linear',\r\n display: true,\r\n position: 'left',\r\n id: leftId,\r\n ticks: {\r\n beginAtZero: option.beginAtZero ?? true,\r\n suggestedMin: 0,\r\n callback: (value: number | string, index: number) => {\r\n return option.ticks?.yLabel(value, index) || (Number.isNumber(value) ? Number.toVNCurrency(value) : value);\r\n }\r\n },\r\n scaleLabel: {\r\n display: !!option.yTitle,\r\n labelString: option.yTitle || ''\r\n }\r\n }];\r\n if (option.datasets.some(e => e.yAlign === 'right')) {\r\n yAxes.push({\r\n type: 'linear',\r\n display: true,\r\n position: 'right',\r\n id: rightId,\r\n ticks: {\r\n beginAtZero: option.beginAtZero ?? true,\r\n suggestedMin: 0,\r\n callback: (value: number | string, index: number) => {\r\n return option.ticks?.yRightLabel(value, index) || (Number.isNumber(value) ? Number.toVNCurrency(value) : value);\r\n }\r\n },\r\n scaleLabel: {\r\n display: !!option.yRightTitle,\r\n labelString: option.yRightTitle || ''\r\n }\r\n });\r\n }\r\n const configuration: Chart.ChartConfiguration = {\r\n options: {\r\n responsive: true,\r\n maintainAspectRatio: false,\r\n legend: {\r\n display: !option.hideLegend\r\n },\r\n title: {\r\n display: true,\r\n text: option.title\r\n },\r\n scales: {\r\n xAxes: [{\r\n display: true,\r\n scaleLabel: {\r\n display: !!option.xTitle,\r\n labelString: option.xTitle || ''\r\n },\r\n ticks: {\r\n callback: (value: number | string, index: number) => {\r\n return option.ticks?.xLabel(value, index) || (Number.isNumber(value) ? Number.toVNCurrency(value) : value);\r\n }\r\n },\r\n }],\r\n yAxes\r\n },\r\n tooltips: {\r\n callbacks: {\r\n label: (tooltipItem, data) => {\r\n const datasetLabel = data?.datasets[tooltipItem.datasetIndex]?.label;\r\n const label = data?.labels[tooltipItem.index] as string;\r\n const value = data?.datasets[tooltipItem.datasetIndex]?.data[tooltipItem.index] as number;\r\n return option.tooltips?.label({\r\n datasetLabel,\r\n label,\r\n value\r\n }) || `${datasetLabel ? `[${datasetLabel}] ` : ''} ${label} : ${Number.toVNCurrency(value)}`;\r\n }\r\n }\r\n }\r\n },\r\n data: {\r\n labels: option.labels,\r\n datasets: option.datasets.map((e, idx) => {\r\n const dynamicColor = this.dynamicColor;\r\n const result: Chart.ChartDataSets = {\r\n type: e.type,\r\n label: e.label,\r\n fill: e.backgroundColor || this.chartConfiguration?.defaultColors?.[idx]?.backgroundColor || dynamicColor,\r\n backgroundColor: e.backgroundColor || this.chartConfiguration?.defaultColors?.[idx]?.backgroundColor || dynamicColor,\r\n borderColor: e.borderColor || this.chartConfiguration?.defaultColors?.[idx]?.borderColor || dynamicColor,\r\n data: e.data,\r\n yAxisID: e.yAlign === 'right' ? rightId : leftId,\r\n lineTension: 0\r\n };\r\n return result;\r\n })\r\n }\r\n };\r\n\r\n if (option.hover === 'ShowAll') {\r\n configuration.options.tooltips = {\r\n ...configuration.options.tooltips,\r\n mode: 'index',\r\n intersect: false\r\n };\r\n configuration.options.hover = {\r\n ...configuration.options.hover,\r\n mode: 'index',\r\n intersect: false\r\n };\r\n }\r\n\r\n this.chart = new Chart(this.ctx, configuration);\r\n this.isLoading = false;\r\n }\r\n\r\n loadingStart = () => {\r\n this.isLoading = true;\r\n }\r\n\r\n private get dynamicColor() {\r\n const r = Math.floor(Math.random() * 255);\r\n const g = Math.floor(Math.random() * 255);\r\n const b = Math.floor(Math.random() * 255);\r\n return 'rgb(' + r + ',' + g + ',' + b + ')';\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SdChart } from './chart.component';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule\r\n ],\r\n declarations: [\r\n SdChart\r\n ],\r\n exports: [\r\n SdChart\r\n ],\r\n providers: [\r\n ]\r\n})\r\nexport class SdChartModule { }\r\n","/*\r\n * Public API Surface of superdev-angular-core\r\n */\r\n\r\nexport { SdChartModule } from './lib/chart.module';\r\nexport * from './lib/chart.component';\r\nexport * from './lib/chart.model';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["uuid.v4"],"mappings":";;;;;;;;MAEa,WAAW,GAAG;IACzB,GAAG,EAAE,mBAAmB;IACxB,MAAM,EAAE,mBAAmB;IAC3B,MAAM,EAAE,mBAAmB;IAC3B,KAAK,EAAE,mBAAmB;IAC1B,IAAI,EAAE,mBAAmB;IACzB,MAAM,EAAE,oBAAoB;IAC5B,IAAI,EAAE,oBAAoB;IAC1B,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,QAAQ,EAAE,SAAS;IACnB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,MAAM,EAAE,SAAS;IACjB,QAAQ,EAAE,SAAS;IACnB,QAAQ,EAAE,SAAS;IACnB,QAAQ,EAAE,SAAS;IACnB,QAAQ,EAAE,SAAS;IACnB,QAAQ,EAAE,SAAS;IACnB,QAAQ,EAAE,SAAS;IACnB,QAAQ,EAAE,SAAS;IACnB,OAAO,EAAE,SAAS;IAClB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,QAAQ,EAAE,SAAS;IACnB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,QAAQ,EAAE,SAAS;IACnB,MAAM,EAAE,SAAS;IACjB,MAAM,EAAE,SAAS;IACjB,MAAM,EAAE,SAAS;IACjB,MAAM,EAAE,SAAS;IACjB,MAAM,EAAE,SAAS;IACjB,MAAM,EAAE,SAAS;IACjB,MAAM,EAAE,SAAS;IACjB,KAAK,EAAE,SAAS;IAChB,QAAQ,EAAE,SAAS;IACnB,QAAQ,EAAE,SAAS;IACnB,QAAQ,EAAE,SAAS;IACnB,QAAQ,EAAE,SAAS;IACnB,QAAQ,EAAE,SAAS;IACnB,QAAQ,EAAE,SAAS;IACnB,QAAQ,EAAE,SAAS;IACnB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,MAAM,EAAE,SAAS;IACjB,WAAW,EAAE,SAAS;IACtB,WAAW,EAAE,SAAS;IACtB,WAAW,EAAE,SAAS;IACtB,WAAW,EAAE,SAAS;IACtB,WAAW,EAAE,SAAS;IACtB,WAAW,EAAE,SAAS;IACtB,WAAW,EAAE,SAAS;IACtB,UAAU,EAAE,SAAS;IACrB,YAAY,EAAE,SAAS;IACvB,cAAc,EAAE,SAAS;IACzB,UAAU,EAAE,SAAS;IACrB,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,SAAS;EAChB;MA+IW,YAAY,GAAG,IAAI,cAAc,CAAsB,qBAAqB;;MClN5E,OAAO;IAqBlB,YACU,GAAsB,EACY,kBAAuC;QADzE,QAAG,GAAH,GAAG,CAAmB;QACY,uBAAkB,GAAlB,kBAAkB,CAAqB;QAtB3E,gBAAW,GAAG,KAAK,CAAC;QAE5B,cAAS,GAAG,KAAK,CAAC;QAclB,YAAO,GAAG,IAAI,CAAC;QACf,WAAM,GAAG,OAAO,CAAC;QA6lBjB,iBAAY,GAAG;YACb,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;SACvB,CAAA;KAxlBA;IApBD,IAAa,WAAW,CAAC,WAA0B;QACjD,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;QAChC,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,IAAI,CAAC,WAAW,EAAE,CAAC;SACpB;KACF;IAiBD,QAAQ;KACP;IAED,eAAe;QACb,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACvB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;KAC1B;IAEa,WAAW,CAAC,WAAqB;;;YAC7C,IAAI,CAAC,MAAM,GAAG,OAAA,IAAI,CAAC,YAAY,0CAAE,MAAM,KAAI,OAAO,CAAC;YACnD,IAAI,CAAC,WAAW,EAAE;gBAChB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;gBACrB,MAAM,IAAI,OAAO,CAAC,OAAO,IAAI,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;gBACvD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;aACrB;YACD,MAAM,IAAI,OAAO,CAAC,OAAO,IAAI,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;YACvD,UAAI,IAAI,CAAC,QAAQ,0CAAE,aAAa,EAAE;gBAChC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAkC,CAAC;gBAChE,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;gBACnC,QAAQ,IAAI,CAAC,YAAY,CAAC,IAAI;oBAC5B,KAAK,KAAK;wBACR,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;wBACvC,MAAM;oBACR,KAAK,KAAK;wBACR,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;wBACvC,MAAM;oBACR,KAAK,eAAe;wBAClB,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;wBACjD,MAAM;oBACR,KAAK,MAAM;wBACT,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;wBACxC,MAAM;oBACR,KAAK,WAAW;wBACd,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;wBAC7C,MAAM;oBACR,KAAK,SAAS;wBACZ,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;wBAC3C,MAAM;oBACR;wBACE,MAAM;iBACT;aACF;;KACF;IAEO,cAAc,CAAC,MAAsB;;QAC3C,MAAM,aAAa,GAA6B;YAC9C,IAAI,EAAE,KAAK;YACX,OAAO,EAAE;gBACP,UAAU,EAAE,IAAI;gBAChB,KAAK,EAAE;oBACL,OAAO,EAAE,IAAI;oBACb,IAAI,EAAE,MAAM,CAAC,KAAK;iBACnB;gBACD,MAAM,EAAE;oBACN,OAAO,EAAE,CAAC,MAAM,CAAC,UAAU;iBAC5B;gBACD,QAAQ,EAAE;oBACR,SAAS,EAAE;wBACT,KAAK,EAAE,CAAC,WAAW,EAAE,IAAI;;4BACvB,MAAM,YAAY,SAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,CAAC,WAAW,CAAC,YAAY,2CAAG,KAAK,CAAC;4BACrE,MAAM,KAAK,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,CAAC,WAAW,CAAC,KAAK,CAAW,CAAC;4BACxD,MAAM,KAAK,GAAG,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,CAAC,WAAW,CAAC,YAAY,2CAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAW,CAAC;4BAC1F,OAAO,OAAA,MAAM,CAAC,QAAQ,0CAAE,KAAK,CAAC;gCAC5B,YAAY;gCACZ,KAAK;gCACL,KAAK;6BACN,MAAK,GAAG,YAAY,GAAG,IAAI,YAAY,IAAI,GAAG,EAAE,GAAG,KAAK,MAAM,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;yBAC7F;qBACF;iBACF;aACF;YACD,IAAI,EAAE;gBACJ,MAAM,EAAE,OAAA,MAAM,CAAC,QAAQ,0CAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,MAAK,EAAE;gBAChD,QAAQ,EAAE,CAAC;wBACT,IAAI,EAAE,OAAA,MAAM,CAAC,QAAQ,0CAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,MAAK,EAAE;wBAC9C,eAAe,EAAE,OAAA,MAAM,CAAC,QAAQ,0CAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG;;4BAAK,OAAA,CAAC,CAAC,eAAe;sDAC9D,IAAI,CAAC,kBAAkB,0CAAE,aAAa,0CAAG,GAAG,2CAAG,eAAe,CAAA;mCAC9D,IAAI,CAAC,YAAY,CAAA;yBAAA,MAAK,EAAE;qBAC9B,CAAC;aACH;SACF,CAAC;QAEF,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE;YAC9B,aAAa,CAAC,OAAO,CAAC,QAAQ,mCACzB,aAAa,CAAC,OAAO,CAAC,QAAQ,KACjC,IAAI,EAAE,OAAO,EACb,SAAS,EAAE,KAAK,GACjB,CAAC;YACF,aAAa,CAAC,OAAO,CAAC,KAAK,mCACtB,aAAa,CAAC,OAAO,CAAC,KAAK,KAC9B,IAAI,EAAE,OAAO,EACb,SAAS,EAAE,KAAK,GACjB,CAAC;SACH;QAED,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;QAChD,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;KACxB;IAEO,cAAc,CAAC,MAAsB;;QAC3C,MAAM,UAAU,SAAG,MAAM,CAAC,UAAU,mCAAI,EAAE,CAAC;QAC3C,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE;;;YAG1B,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,UAAU,CAAC;YAC5E,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,YAAY,QAAQ,KAAK,CAAC,CAAC;SACzF;QACD,MAAM,aAAa,GAA6B;YAC9C,OAAO,EAAE;gBACP,UAAU,EAAE,IAAI;gBAChB,mBAAmB,EAAE,KAAK;gBAC1B,MAAM,EAAE;oBACN,OAAO,EAAE,CAAC,MAAM,CAAC,UAAU;iBAC5B;gBACD,MAAM,EAAE;oBACN,KAAK,EAAE,CAAC;4BACN,OAAO,EAAE,IAAI;4BACb,UAAU,EAAE;gCACV,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM;gCACxB,WAAW,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;6BACjC;4BACD,KAAK,EAAE;gCACL,QAAQ,EAAE,CAAC,KAAsB,EAAE,KAAa;;oCAC9C,OAAO,OAAA,MAAM,CAAC,KAAK,0CAAE,MAAM,CAAC,KAAK,EAAE,KAAK,OAAM,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;iCAC5G;6BACF;yBACF,CAAC;oBACF,KAAK,EAAE,CAAC;4BACN,OAAO,EAAE,IAAI;4BACb,KAAK,EAAE;gCACL,WAAW,QAAE,MAAM,CAAC,WAAW,mCAAI,IAAI;gCACvC,QAAQ,EAAE,CAAC,KAAsB,EAAE,KAAa;;oCAC9C,OAAO,OAAA,MAAM,CAAC,KAAK,0CAAE,MAAM,CAAC,KAAK,EAAE,KAAK,OAAM,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;iCAC5G;6BACF;4BACD,UAAU,EAAE;gCACV,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM;gCACxB,WAAW,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;6BACjC;yBACF,CAAC;iBACH;gBACD,QAAQ,EAAE;oBACR,SAAS,EAAE;wBACT,KAAK,EAAE,CAAC,WAAW,EAAE,IAAI;;4BACvB,MAAM,YAAY,SAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,CAAC,WAAW,CAAC,YAAY,2CAAG,KAAK,CAAC;4BACrE,MAAM,KAAK,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,CAAC,WAAW,CAAC,KAAK,CAAW,CAAC;4BACxD,MAAM,KAAK,GAAG,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,CAAC,WAAW,CAAC,YAAY,2CAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAW,CAAC;4BAC1F,OAAO,OAAA,MAAM,CAAC,QAAQ,0CAAE,KAAK,CAAC;gCAC5B,YAAY;gCACZ,KAAK;gCACL,KAAK;6BACN,MAAK,GAAG,YAAY,MAAM,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;yBACzD;qBACF;iBACF;aACF;YACD,IAAI,EAAE,KAAK;YACX,IAAI,EAAE;gBACJ,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG;;oBACnC,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;oBACvC,MAAM,MAAM,GAAwB;wBAClC,KAAK,EAAE,CAAC,CAAC,KAAK;wBACd,IAAI,EAAE,CAAC,CAAC,eAAe,uBAAI,IAAI,CAAC,kBAAkB,0CAAE,aAAa,0CAAG,GAAG,2CAAG,eAAe,CAAA,IAAI,YAAY;wBACzG,eAAe,EAAE,CAAC,CAAC,eAAe,uBAAI,IAAI,CAAC,kBAAkB,0CAAE,aAAa,0CAAG,GAAG,2CAAG,eAAe,CAAA,IAAI,YAAY;wBACpH,IAAI,EAAE,CAAC,CAAC,IAAI;wBACZ,KAAK,EAAE,CAAC,CAAC,KAAK;qBACf,CAAC;oBACF,OAAO,MAAM,CAAC;iBACf,CAAC;aACH;SACF,CAAC;QAEF,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE;YAC9B,aAAa,CAAC,OAAO,CAAC,QAAQ,mCACzB,aAAa,CAAC,OAAO,CAAC,QAAQ,KACjC,IAAI,EAAE,OAAO,EACb,SAAS,EAAE,KAAK,GACjB,CAAC;YACF,aAAa,CAAC,OAAO,CAAC,KAAK,mCACtB,aAAa,CAAC,OAAO,CAAC,KAAK,KAC9B,IAAI,EAAE,OAAO,EACb,SAAS,EAAE,KAAK,GACjB,CAAC;SACH;QAED,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;QAChD,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;KACxB;IAEO,wBAAwB,CAAC,MAAgC;;;;;;;QAM/D,MAAM,aAAa,GAA6B;YAC9C,OAAO,EAAE;gBACP,UAAU,EAAE,IAAI;gBAChB,mBAAmB,EAAE,KAAK;gBAC1B,MAAM,EAAE;oBACN,OAAO,EAAE,CAAC,MAAM,CAAC,UAAU;iBAC5B;gBACD,MAAM,EAAE;oBACN,KAAK,EAAE,CAAC;4BACN,OAAO,EAAE,IAAI;4BACb,UAAU,EAAE;gCACV,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM;gCACxB,WAAW,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;6BACjC;4BACD,KAAK,EAAE;gCACL,WAAW,QAAE,MAAM,CAAC,WAAW,mCAAI,IAAI;gCACvC,QAAQ,EAAE,CAAC,KAAsB,EAAE,KAAa;;oCAC9C,OAAO,OAAA,MAAM,CAAC,KAAK,0CAAE,MAAM,CAAC,KAAK,EAAE,KAAK,OAAM,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;iCAC5G;6BACF;yBACF,CAAC;oBACF,KAAK,EAAE,CAAC;4BACN,OAAO,EAAE,IAAI;4BACb,KAAK,EAAE;gCACL,QAAQ,EAAE,CAAC,KAAsB,EAAE,KAAa;;oCAC9C,OAAO,OAAA,MAAM,CAAC,KAAK,0CAAE,MAAM,CAAC,KAAK,EAAE,KAAK,OAAM,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;iCAC5G;6BACF;4BACD,UAAU,EAAE;gCACV,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM;gCACxB,WAAW,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;6BACjC;yBACF,CAAC;iBACH;gBACD,QAAQ,EAAE;oBACR,SAAS,EAAE;wBACT,KAAK,EAAE,CAAC,WAAW,EAAE,IAAI;;4BACvB,MAAM,YAAY,SAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,CAAC,WAAW,CAAC,YAAY,2CAAG,KAAK,CAAC;4BACrE,MAAM,KAAK,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,CAAC,WAAW,CAAC,KAAK,CAAW,CAAC;4BACxD,MAAM,KAAK,GAAG,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,CAAC,WAAW,CAAC,YAAY,2CAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAW,CAAC;4BAC1F,OAAO,OAAA,MAAM,CAAC,QAAQ,0CAAE,KAAK,CAAC;gCAC5B,YAAY;gCACZ,KAAK;gCACL,KAAK;6BACN,MAAK,GAAG,YAAY,MAAM,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;yBACzD;qBACF;iBACF;aACF;YACD,IAAI,EAAE,eAAe;YACrB,IAAI,EAAE;gBACJ,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG;;oBACnC,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;oBACvC,MAAM,MAAM,GAAwB;wBAClC,KAAK,EAAE,CAAC,CAAC,KAAK;wBACd,IAAI,EAAE,CAAC,CAAC,eAAe,uBAAI,IAAI,CAAC,kBAAkB,0CAAE,aAAa,0CAAG,GAAG,2CAAG,eAAe,CAAA,IAAI,YAAY;wBACzG,eAAe,EAAE,CAAC,CAAC,eAAe,uBAAI,IAAI,CAAC,kBAAkB,0CAAE,aAAa,0CAAG,GAAG,2CAAG,eAAe,CAAA,IAAI,YAAY;wBACpH,IAAI,EAAE,CAAC,CAAC,IAAI;wBACZ,KAAK,EAAE,CAAC,CAAC,KAAK;qBACf,CAAC;oBACF,OAAO,MAAM,CAAC;iBACf,CAAC;aACH;SACF,CAAC;QAEF,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE;YAC9B,aAAa,CAAC,OAAO,CAAC,QAAQ,mCACzB,aAAa,CAAC,OAAO,CAAC,QAAQ,KACjC,IAAI,EAAE,OAAO,EACb,SAAS,EAAE,KAAK,GACjB,CAAC;YACF,aAAa,CAAC,OAAO,CAAC,KAAK,mCACtB,aAAa,CAAC,OAAO,CAAC,KAAK,KAC9B,IAAI,EAAE,OAAO,EACb,SAAS,EAAE,KAAK,GACjB,CAAC;SACH;QAED,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;QAChD,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;KACxB;IAEO,eAAe,CAAC,MAAuB;;QAC7C,MAAM,UAAU,SAAG,MAAM,CAAC,UAAU,mCAAI,EAAE,CAAC;QAC3C,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE;;;YAG1B,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,UAAU,CAAC;YACnD,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,YAAY,QAAQ,KAAK,CAAC,CAAC;SACzF;QACD,MAAM,aAAa,GAA6B;YAC9C,OAAO,EAAE;gBACP,UAAU,EAAE,IAAI;gBAChB,mBAAmB,EAAE,KAAK;gBAC1B,MAAM,EAAE;oBACN,OAAO,EAAE,CAAC,MAAM,CAAC,UAAU;iBAC5B;gBACD,MAAM,EAAE;oBACN,KAAK,EAAE,CAAC;4BACN,OAAO,EAAE,IAAI;4BACb,UAAU,EAAE;gCACV,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM;gCACxB,WAAW,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;6BACjC;4BACD,KAAK,EAAE;gCACL,QAAQ,EAAE,CAAC,KAAsB,EAAE,KAAa;;oCAC9C,OAAO,OAAA,MAAM,CAAC,KAAK,0CAAE,MAAM,CAAC,KAAK,EAAE,KAAK,OAAM,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;iCAC5G;6BACF;yBACF,CAAC;oBACF,KAAK,EAAE,CAAC;4BACN,OAAO,EAAE,IAAI;4BACb,KAAK,EAAE;gCACL,WAAW,QAAE,MAAM,CAAC,WAAW,mCAAI,IAAI;gCACvC,QAAQ,EAAE,CAAC,KAAsB,EAAE,KAAa;;oCAC9C,OAAO,OAAA,MAAM,CAAC,KAAK,0CAAE,MAAM,CAAC,KAAK,EAAE,KAAK,OAAM,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;iCAC5G;6BACF;4BACD,UAAU,EAAE;gCACV,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM;gCACxB,WAAW,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;6BACjC;yBACF,CAAC;iBACH;gBACD,QAAQ,EAAE;oBACR,SAAS,EAAE;wBACT,KAAK,EAAE,CAAC,WAAW,EAAE,IAAI;;4BACvB,MAAM,YAAY,SAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,CAAC,WAAW,CAAC,YAAY,2CAAG,KAAK,CAAC;4BACrE,MAAM,KAAK,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,CAAC,WAAW,CAAC,KAAK,CAAW,CAAC;4BACxD,MAAM,KAAK,GAAG,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,CAAC,WAAW,CAAC,YAAY,2CAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAW,CAAC;4BAC1F,OAAO,OAAA,MAAM,CAAC,QAAQ,0CAAE,KAAK,CAAC;gCAC5B,YAAY;gCACZ,KAAK;gCACL,KAAK;6BACN,MAAK,GAAG,YAAY,MAAM,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;yBACzD;qBACF;iBACF;aACF;YACD,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE;gBACJ,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG;;oBACnC,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;oBACvC,MAAM,MAAM,GAAwB;wBAClC,KAAK,EAAE,CAAC,CAAC,KAAK;wBACd,IAAI,EAAE,CAAC,CAAC,eAAe,uBAAI,IAAI,CAAC,kBAAkB,0CAAE,aAAa,0CAAG,GAAG,2CAAG,eAAe,CAAA,IAAI,YAAY;wBACzG,eAAe,EAAE,CAAC,CAAC,eAAe,uBAAI,IAAI,CAAC,kBAAkB,0CAAE,aAAa,0CAAG,GAAG,2CAAG,eAAe,CAAA,IAAI,YAAY;wBACpH,WAAW,EAAE,CAAC,CAAC,WAAW,uBAAI,IAAI,CAAC,kBAAkB,0CAAE,aAAa,0CAAG,GAAG,2CAAG,WAAW,CAAA,IAAI,YAAY;wBACxG,IAAI,EAAE,CAAC,CAAC,IAAI;wBACZ,WAAW,EAAE,CAAC;qBACf,CAAC;oBACF,OAAO,MAAM,CAAC;iBACf,CAAC;aACH;SACF,CAAC;QAEF,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE;YAC9B,aAAa,CAAC,OAAO,CAAC,QAAQ,mCACzB,aAAa,CAAC,OAAO,CAAC,QAAQ,KACjC,IAAI,EAAE,OAAO,EACb,SAAS,EAAE,KAAK,GACjB,CAAC;YACF,aAAa,CAAC,OAAO,CAAC,KAAK,mCACtB,aAAa,CAAC,OAAO,CAAC,KAAK,KAC9B,IAAI,EAAE,OAAO,EACb,SAAS,EAAE,KAAK,GACjB,CAAC;SACH;QAED,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;QAChD,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;KACxB;IAEO,oBAAoB,CAAC,MAA4B;;QACvD,MAAM,UAAU,SAAG,MAAM,CAAC,UAAU,mCAAI,EAAE,CAAC;QAC3C,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE;;;YAG1B,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,UAAU,CAAC;YACnD,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,YAAY,QAAQ,KAAK,CAAC,CAAC;SACzF;QACD,MAAM,aAAa,GAA6B;YAC9C,OAAO,EAAE;gBACP,UAAU,EAAE,IAAI;gBAChB,mBAAmB,EAAE,KAAK;gBAC1B,MAAM,EAAE;oBACN,OAAO,EAAE,CAAC,MAAM,CAAC,UAAU;iBAC5B;gBACD,MAAM,EAAE;oBACN,KAAK,EAAE,CAAC;4BACN,OAAO,EAAE,IAAI;4BACb,UAAU,EAAE;gCACV,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM;gCACxB,WAAW,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;6BACjC;4BACD,KAAK,EAAE;gCACL,QAAQ,EAAE,CAAC,KAAsB,EAAE,KAAa;;oCAC9C,OAAO,OAAA,MAAM,CAAC,KAAK,0CAAE,MAAM,CAAC,KAAK,EAAE,KAAK,OAAM,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;iCAC5G;6BACF;yBACF,CAAC;oBACF,KAAK,EAAE,CAAC;4BACN,OAAO,EAAE,IAAI;4BACb,KAAK,EAAE;gCACL,WAAW,QAAE,MAAM,CAAC,WAAW,mCAAI,IAAI;gCACvC,QAAQ,EAAE,CAAC,KAAsB,EAAE,KAAa;;oCAC9C,OAAO,OAAA,MAAM,CAAC,KAAK,0CAAE,MAAM,CAAC,KAAK,EAAE,KAAK,OAAM,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;iCAC5G;6BACF;4BACD,OAAO,EAAE,IAAI;4BACb,UAAU,EAAE;gCACV,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM;gCACxB,WAAW,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;6BACjC;yBACF,CAAC;iBACH;gBACD,QAAQ,EAAE;oBACR,SAAS,EAAE;wBACT,KAAK,EAAE,CAAC,WAAW,EAAE,IAAI;;4BACvB,MAAM,YAAY,SAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,CAAC,WAAW,CAAC,YAAY,2CAAG,KAAK,CAAC;4BACrE,MAAM,KAAK,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,CAAC,WAAW,CAAC,KAAK,CAAW,CAAC;4BACxD,MAAM,KAAK,GAAG,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,CAAC,WAAW,CAAC,YAAY,2CAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAW,CAAC;4BAC1F,OAAO,OAAA,MAAM,CAAC,QAAQ,0CAAE,KAAK,CAAC;gCAC5B,YAAY;gCACZ,KAAK;gCACL,KAAK;6BACN,MAAK,GAAG,YAAY,MAAM,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;yBACzD;qBACF;iBACF;aACF;YACD,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE;gBACJ,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG;;oBACnC,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;oBACvC,MAAM,MAAM,GAAwB;wBAClC,KAAK,EAAE,CAAC,CAAC,KAAK;;wBAEd,eAAe,EAAE,CAAC,CAAC,eAAe,uBAAI,IAAI,CAAC,kBAAkB,0CAAE,aAAa,0CAAG,GAAG,2CAAG,eAAe,CAAA,IAAI,YAAY;wBACpH,WAAW,EAAE,CAAC,CAAC,WAAW,uBAAI,IAAI,CAAC,kBAAkB,0CAAE,aAAa,0CAAG,GAAG,2CAAG,WAAW,CAAA,IAAI,YAAY;wBACxG,IAAI,EAAE,CAAC,CAAC,IAAI;wBACZ,WAAW,EAAE,CAAC;qBACf,CAAC;oBACF,OAAO,MAAM,CAAC;iBACf,CAAC;aACH;SACF,CAAC;QAEF,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE;YAC9B,aAAa,CAAC,OAAO,CAAC,QAAQ,mCACzB,aAAa,CAAC,OAAO,CAAC,QAAQ,KACjC,IAAI,EAAE,OAAO,EACb,SAAS,EAAE,KAAK,GACjB,CAAC;YACF,aAAa,CAAC,OAAO,CAAC,KAAK,mCACtB,aAAa,CAAC,OAAO,CAAC,KAAK,KAC9B,IAAI,EAAE,OAAO,EACb,SAAS,EAAE,KAAK,GACjB,CAAC;SACH;QAED,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;QAChD,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;KACxB;IAEO,kBAAkB,CAAC,MAA0B;;QACnD,MAAM,UAAU,SAAG,MAAM,CAAC,UAAU,mCAAI,EAAE,CAAC;QAC3C,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE;YAC1B,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,MAAM,CAAC;YAC1E,IAAI,YAAY,IAAI,CAAC,EAAE;;;gBAGrB,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,UAAU,CAAC;gBACnD,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,YAAY,QAAQ,KAAK,CAAC,CAAC;aACzF;iBAAM;;;gBAGL,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,YAAY,GAAG,UAAU,CAAC;gBAClE,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,YAAY,QAAQ,KAAK,CAAC,CAAC;aACzF;SACF;QACD,MAAM,MAAM,GAAG,IAAIA,EAAO,EAAE,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAG,IAAIA,EAAO,EAAE,EAAE,CAAC;QAChC,MAAM,KAAK,GAAG,CAAC;gBACb,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,IAAI;gBACb,QAAQ,EAAE,MAAM;gBAChB,EAAE,EAAE,MAAM;gBACV,KAAK,EAAE;oBACL,WAAW,QAAE,MAAM,CAAC,WAAW,mCAAI,IAAI;oBACvC,YAAY,EAAE,CAAC;oBACf,QAAQ,EAAE,CAAC,KAAsB,EAAE,KAAa;;wBAC9C,OAAO,OAAA,MAAM,CAAC,KAAK,0CAAE,MAAM,CAAC,KAAK,EAAE,KAAK,OAAM,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;qBAC5G;iBACF;gBACD,UAAU,EAAE;oBACV,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM;oBACxB,WAAW,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;iBACjC;aACF,CAAC,CAAC;QACH,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,EAAE;YACnD,KAAK,CAAC,IAAI,CAAC;gBACT,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,IAAI;gBACb,QAAQ,EAAE,OAAO;gBACjB,EAAE,EAAE,OAAO;gBACX,KAAK,EAAE;oBACL,WAAW,QAAE,MAAM,CAAC,WAAW,mCAAI,IAAI;oBACvC,YAAY,EAAE,CAAC;oBACf,QAAQ,EAAE,CAAC,KAAsB,EAAE,KAAa;;wBAC9C,OAAO,OAAA,MAAM,CAAC,KAAK,0CAAE,WAAW,CAAC,KAAK,EAAE,KAAK,OAAM,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;qBACjH;iBACF;gBACD,UAAU,EAAE;oBACV,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,WAAW;oBAC7B,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,EAAE;iBACtC;aACF,CAAC,CAAC;SACJ;QACD,MAAM,aAAa,GAA6B;YAC9C,OAAO,EAAE;gBACP,UAAU,EAAE,IAAI;gBAChB,mBAAmB,EAAE,KAAK;gBAC1B,MAAM,EAAE;oBACN,OAAO,EAAE,CAAC,MAAM,CAAC,UAAU;iBAC5B;gBACD,KAAK,EAAE;oBACL,OAAO,EAAE,IAAI;oBACb,IAAI,EAAE,MAAM,CAAC,KAAK;iBACnB;gBACD,MAAM,EAAE;oBACN,KAAK,EAAE,CAAC;4BACN,OAAO,EAAE,IAAI;4BACb,UAAU,EAAE;gCACV,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM;gCACxB,WAAW,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;6BACjC;4BACD,KAAK,EAAE;gCACL,QAAQ,EAAE,CAAC,KAAsB,EAAE,KAAa;;oCAC9C,OAAO,OAAA,MAAM,CAAC,KAAK,0CAAE,MAAM,CAAC,KAAK,EAAE,KAAK,OAAM,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;iCAC5G;6BACF;yBACF,CAAC;oBACF,KAAK;iBACN;gBACD,QAAQ,EAAE;oBACR,SAAS,EAAE;wBACT,KAAK,EAAE,CAAC,WAAW,EAAE,IAAI;;4BACvB,MAAM,YAAY,SAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,CAAC,WAAW,CAAC,YAAY,2CAAG,KAAK,CAAC;4BACrE,MAAM,KAAK,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,CAAC,WAAW,CAAC,KAAK,CAAW,CAAC;4BACxD,MAAM,KAAK,GAAG,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,CAAC,WAAW,CAAC,YAAY,2CAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAW,CAAC;4BAC1F,OAAO,OAAA,MAAM,CAAC,QAAQ,0CAAE,KAAK,CAAC;gCAC5B,YAAY;gCACZ,KAAK;gCACL,KAAK;6BACN,MAAK,GAAG,YAAY,GAAG,IAAI,YAAY,IAAI,GAAG,EAAE,IAAI,KAAK,MAAM,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;yBAC9F;qBACF;iBACF;aACF;YACD,IAAI,EAAE;gBACJ,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG;;oBACnC,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;oBACvC,MAAM,MAAM,GAAwB;wBAClC,IAAI,EAAE,CAAC,CAAC,IAAI;wBACZ,KAAK,EAAE,CAAC,CAAC,KAAK;wBACd,IAAI,EAAE,CAAC,CAAC,eAAe,uBAAI,IAAI,CAAC,kBAAkB,0CAAE,aAAa,0CAAG,GAAG,2CAAG,eAAe,CAAA,IAAI,YAAY;wBACzG,eAAe,EAAE,CAAC,CAAC,eAAe,uBAAI,IAAI,CAAC,kBAAkB,0CAAE,aAAa,0CAAG,GAAG,2CAAG,eAAe,CAAA,IAAI,YAAY;wBACpH,WAAW,EAAE,CAAC,CAAC,WAAW,uBAAI,IAAI,CAAC,kBAAkB,0CAAE,aAAa,0CAAG,GAAG,2CAAG,WAAW,CAAA,IAAI,YAAY;wBACxG,IAAI,EAAE,CAAC,CAAC,IAAI;wBACZ,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,OAAO,GAAG,OAAO,GAAG,MAAM;wBAChD,WAAW,EAAE,CAAC;qBACf,CAAC;oBACF,OAAO,MAAM,CAAC;iBACf,CAAC;aACH;SACF,CAAC;QAEF,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE;YAC9B,aAAa,CAAC,OAAO,CAAC,QAAQ,mCACzB,aAAa,CAAC,OAAO,CAAC,QAAQ,KACjC,IAAI,EAAE,OAAO,EACb,SAAS,EAAE,KAAK,GACjB,CAAC;YACF,aAAa,CAAC,OAAO,CAAC,KAAK,mCACtB,aAAa,CAAC,OAAO,CAAC,KAAK,KAC9B,IAAI,EAAE,OAAO,EACb,SAAS,EAAE,KAAK,GACjB,CAAC;SACH;QAED,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;QAChD,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;KACxB;IAMD,IAAY,YAAY;QACtB,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC;QAC1C,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC;QAC1C,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC;QAC1C,OAAO,MAAM,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;KAC7C;;;YA7nBF,SAAS,SAAC;gBACT,QAAQ,EAAE,UAAU;gBACpB,ifAAqC;;aAEtC;;;YArBwE,iBAAiB;4CA6CrF,QAAQ,YAAI,MAAM,SAAC,YAAY;;;0BAlBjC,KAAK;uBAOL,SAAS,SAAC,OAAO;8BACjB,SAAS,SAAC,cAAc;2BACxB,SAAS,SAAC,WAAW;wCACrB,SAAS,SAAC,wBAAwB;;;MCpBxB,aAAa;;;YAbzB,QAAQ,SAAC;gBACR,OAAO,EAAE;oBACP,YAAY;iBACb;gBACD,YAAY,EAAE;oBACZ,OAAO;iBACR;gBACD,OAAO,EAAE;oBACP,OAAO;iBACR;gBACD,SAAS,EAAE,EACV;aACF;;;AChBD;;;;ACAA;;;;;;"}
1
+ {"version":3,"file":"sd-angular-core-chart.js","sources":["../../../../projects/sd-core/chart/src/lib/chart.model.ts","../../../../projects/sd-core/chart/src/lib/chart.component.ts","../../../../projects/sd-core/chart/src/lib/chart.module.ts","../../../../projects/sd-core/chart/sd-angular-core-chart.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\r\n\r\nexport const ChartColors = {\r\n Red: 'rgb(255, 99, 132)',\r\n Orange: 'rgb(255, 159, 64)',\r\n Yellow: 'rgb(255, 205, 86)',\r\n Green: 'rgb(75, 192, 192)',\r\n Blue: 'rgb(54, 162, 235)',\r\n Purple: 'rgb(153, 102, 255)',\r\n Grey: 'rgb(201, 203, 207)',\r\n Purple700: '#2E224C',\r\n Purple600: '#453372',\r\n Purple500: '#574191',\r\n Purple400: '#7356BF',\r\n Purple300: '#957FCE',\r\n Purple200: '#C1B4E2',\r\n Purple100: '#E3DDF2',\r\n Purple50: '#F3F1F9',\r\n Blue700: '#0F2C60',\r\n Blue600: '#174291',\r\n Blue500: '#1D53B7',\r\n Blue400: '#276EF1',\r\n Blue300: '#5A90F4',\r\n Blue200: '#9FBFF8',\r\n Blue100: '#D4E2FC',\r\n Blue50: '#EDF3FD',\r\n Green700: '#0D4020',\r\n Green600: '#156A36',\r\n Green500: '#09863D',\r\n Green400: '#21A453',\r\n Green300: '#43BF75',\r\n Green200: '#9EE2B8',\r\n Green100: '#CFF3DD',\r\n Green50: '#F0FAF3',\r\n Yellow700: '#664C1A',\r\n Yellow600: '#997328',\r\n Yellow500: '#C19132',\r\n Yellow400: '#FFC043',\r\n Yellow300: '#FFCF70',\r\n Yellow200: '#FFE3AC',\r\n Yellow100: '#FFF2D9',\r\n Yellow50: '#FFF9EF',\r\n Orange700: '#5F2C14',\r\n Orange600: '#8E421E',\r\n Orange500: '#B45326',\r\n Orange400: '#ED6E33',\r\n Orange300: '#F19063',\r\n Orange200: '#F7BFA5',\r\n Orange100: '#FBE2D6',\r\n Orange50: '#FDF3EE',\r\n Red700: '#541A14',\r\n Red600: '#7F281E',\r\n Red500: '#A13226',\r\n Red400: '#D44333',\r\n Red300: '#DE7063',\r\n Red200: '#ECACA5',\r\n Red100: '#F6D9D6',\r\n Red50: '#FBEFEE',\r\n Brown700: '#3D281E',\r\n Brown600: '#5B3C2D',\r\n Brown500: '#744C39',\r\n Brown400: '#99644C',\r\n Brown300: '#B18976',\r\n Brown200: '#D2BAB0',\r\n Brown100: '#EBE0DB',\r\n Brown50: '#F6F2F0',\r\n Gray900: '#141414',\r\n Gray800: '#1F1F1F',\r\n Gray700: '#333333',\r\n Gray600: '#545454',\r\n Gray500: '#757575',\r\n Gray400: '#AFAFAF',\r\n Gray300: '#CBCBCB',\r\n Gray200: '#E2E2E2',\r\n Gray100: '#EEEEEE',\r\n Gray50: '#F6F6F6',\r\n Platinum700: '#394145',\r\n Platinum600: '#556268',\r\n Platinum500: '#6C7C83',\r\n Platinum400: '#8EA3AD',\r\n Platinum300: '#A1BDCA',\r\n Platinum200: '#CCDFE5',\r\n Platinum100: '#EBF5F7',\r\n Platinum50: '#F4FAFB',\r\n EatsGreen400: '#21A453',\r\n FreightBlue400: '#21A453',\r\n JumpRed400: '#FF0A2D',\r\n Black: '#000000',\r\n White: '#FFFFFF',\r\n};\r\n\r\nexport type SdChartOption = PieChartOption |\r\n BarChartOption |\r\n HorizontalBarChartOption |\r\n LineChartOption |\r\n StackAreaChartOption |\r\n BarLineChartOption;\r\n\r\ninterface BaseChartOption {\r\n title?: string;\r\n height?: string;\r\n hideLegend?: boolean;\r\n tooltips?: {\r\n label: (params: { datasetLabel?: string, label?: string, value?: number }) => string;\r\n };\r\n}\r\n\r\nexport interface PieChartOption extends BaseChartOption {\r\n type: 'pie';\r\n title?: string;\r\n datasets: {\r\n label: string,\r\n value: number,\r\n backgroundColor: string\r\n }[];\r\n hover?: 'ShowAll';\r\n}\r\n\r\nexport interface BarChartOption extends BaseChartOption {\r\n type: 'bar';\r\n xTitle?: string;\r\n yTitle?: string;\r\n labels: string[];\r\n datasets: {\r\n label: string;\r\n data: number[];\r\n borderColor?: string,\r\n backgroundColor?: string;\r\n stack?: string;\r\n }[];\r\n beginAtZero?: boolean;\r\n labelWidth?: number;\r\n ticks?: {\r\n xLabel?: (value: number | string, index: number) => string,\r\n yLabel?: (value: number | string, index: number) => string\r\n };\r\n hover?: 'ShowAll';\r\n}\r\n\r\nexport interface HorizontalBarChartOption extends BaseChartOption {\r\n type: 'horizontalBar';\r\n xTitle?: string;\r\n yTitle?: string;\r\n labels: string[];\r\n datasets: {\r\n label: string;\r\n data: number[];\r\n borderColor?: string,\r\n backgroundColor?: string;\r\n stack?: string;\r\n }[];\r\n beginAtZero?: boolean;\r\n labelWidth?: number;\r\n ticks?: {\r\n xLabel?: (value: number | string, index: number) => string,\r\n yLabel?: (value: number | string, index: number) => string\r\n };\r\n hover?: 'ShowAll';\r\n}\r\n\r\nexport interface LineChartOption extends BaseChartOption {\r\n type: 'line';\r\n xTitle?: string;\r\n yTitle?: string;\r\n labels: string[];\r\n datasets: {\r\n label: string;\r\n data: number[];\r\n borderColor?: string,\r\n backgroundColor?: string;\r\n }[];\r\n beginAtZero?: boolean;\r\n labelWidth?: number;\r\n ticks?: {\r\n xLabel?: (value: number | string, index: number) => string,\r\n yLabel?: (value: number | string, index: number) => string\r\n };\r\n hover?: 'ShowAll';\r\n}\r\n\r\nexport interface StackAreaChartOption extends BaseChartOption {\r\n type: 'stackArea';\r\n xTitle?: string;\r\n yTitle?: string;\r\n labels: string[];\r\n datasets: {\r\n label: string;\r\n data: number[];\r\n borderColor?: string,\r\n backgroundColor?: string;\r\n }[];\r\n beginAtZero?: boolean;\r\n labelWidth?: number;\r\n ticks?: {\r\n xLabel?: (value: number | string, index: number) => string,\r\n yLabel?: (value: number | string, index: number) => string\r\n };\r\n hover?: 'ShowAll';\r\n}\r\n\r\nexport interface BarLineChartOption extends BaseChartOption {\r\n type: 'barline';\r\n xTitle?: string;\r\n yTitle?: string;\r\n yRightTitle?: string;\r\n labels: string[];\r\n datasets: {\r\n type: 'bar' | 'line',\r\n yAlign?: 'left' | 'right',\r\n label: string;\r\n data: number[];\r\n borderColor?: string;\r\n backgroundColor?: string;\r\n }[];\r\n beginAtZero?: boolean;\r\n labelWidth?: number;\r\n ticks?: {\r\n xLabel?: (value: number | string, index: number) => string,\r\n yLabel?: (value: number | string, index: number) => string,\r\n yRightLabel?: (value: number | string, index: number) => string\r\n };\r\n hover?: 'ShowAll';\r\n}\r\n\r\n\r\nexport interface IChartConfiguration {\r\n defaultColors?: {\r\n backgroundColor?: string,\r\n borderColor?: string\r\n }[];\r\n}\r\n\r\nexport const CHART_CONFIG = new InjectionToken<IChartConfiguration>('chart.configuration');\r\n","import { Component, OnInit, AfterViewInit, ViewChild, ElementRef, Input, ChangeDetectorRef, Optional, Inject } from '@angular/core';\r\nimport * as Chart from 'chart.js';\r\nimport {\r\n SdChartOption,\r\n BarChartOption,\r\n LineChartOption,\r\n PieChartOption,\r\n BarLineChartOption,\r\n StackAreaChartOption,\r\n HorizontalBarChartOption,\r\n IChartConfiguration,\r\n CHART_CONFIG\r\n} from './chart.model';\r\nimport $ from 'jquery';\r\nimport * as uuid from 'uuid';\r\n\r\n@Component({\r\n selector: 'sd-chart',\r\n templateUrl: './chart.component.html',\r\n styleUrls: ['./chart.component.scss']\r\n})\r\nexport class SdChart implements OnInit, AfterViewInit {\r\n private initialized = false;\r\n private pChartOption: SdChartOption;\r\n isLoading = false;\r\n\r\n @Input() set chartOption(chartOption: SdChartOption) {\r\n this.pChartOption = chartOption;\r\n if (this.initialized) {\r\n this.renderChart();\r\n }\r\n }\r\n\r\n @ViewChild('chart') chartRef: ElementRef;\r\n @ViewChild('chartWrapper') chartWrapperRef: ElementRef;\r\n @ViewChild('chartAxis') chartAxisRef: ElementRef;\r\n @ViewChild('chartAreaWrapperExtend') chartAreaWrapperExtendRef: ElementRef;\r\n chart: Chart;\r\n visible = true;\r\n height = '300px';\r\n private ctx: CanvasRenderingContext2D;\r\n\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n @Optional() @Inject(CHART_CONFIG) private chartConfiguration: IChartConfiguration\r\n ) {\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.renderChart(true);\r\n this.initialized = true;\r\n this.ref.detectChanges();\r\n }\r\n\r\n private async renderChart(firstRender?: boolean) {\r\n this.height = this.pChartOption?.height || '300px';\r\n if (!firstRender) {\r\n this.visible = false;\r\n await new Promise(resolve => setTimeout(resolve, 200));\r\n this.visible = true;\r\n }\r\n await new Promise(resolve => setTimeout(resolve, 200));\r\n if (this.chartRef?.nativeElement) {\r\n const canvas = this.chartRef.nativeElement as HTMLCanvasElement;\r\n this.ctx = canvas.getContext('2d');\r\n switch (this.pChartOption.type) {\r\n case 'pie':\r\n this.renderPieChart(this.pChartOption);\r\n break;\r\n case 'bar':\r\n this.renderBarChart(this.pChartOption);\r\n break;\r\n case 'horizontalBar':\r\n this.renderHorizontalBarChart(this.pChartOption);\r\n break;\r\n case 'line':\r\n this.renderLineChart(this.pChartOption);\r\n break;\r\n case 'stackArea':\r\n this.renderStackAreaChart(this.pChartOption);\r\n break;\r\n case 'barline':\r\n this.renderBarLineChart(this.pChartOption);\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n }\r\n\r\n private renderPieChart(option: PieChartOption) {\r\n const configuration: Chart.ChartConfiguration = {\r\n type: 'pie',\r\n options: {\r\n responsive: true,\r\n title: {\r\n display: true,\r\n text: option.title\r\n },\r\n legend: {\r\n display: !option.hideLegend\r\n },\r\n tooltips: {\r\n callbacks: {\r\n label: (tooltipItem, data) => {\r\n const datasetLabel = data?.datasets[tooltipItem.datasetIndex]?.label;\r\n const label = data?.labels[tooltipItem.index] as string;\r\n const value = data?.datasets[tooltipItem.datasetIndex]?.data[tooltipItem.index] as number;\r\n return option.tooltips?.label({\r\n datasetLabel,\r\n label,\r\n value\r\n }) || `${datasetLabel ? `[${datasetLabel}] ` : ''}${label} : ${Number.toVNCurrency(value)}`;\r\n }\r\n }\r\n }\r\n },\r\n data: {\r\n labels: option.datasets?.map(e => e.label) || [],\r\n datasets: [{\r\n data: option.datasets?.map(e => e.value) || [],\r\n backgroundColor: option.datasets?.map((e, idx) => e.backgroundColor\r\n || this.chartConfiguration?.defaultColors?.[idx]?.backgroundColor\r\n || this.dynamicColor) || []\r\n }]\r\n }\r\n };\r\n\r\n if (option.hover === 'ShowAll') {\r\n configuration.options.tooltips = {\r\n ...configuration.options.tooltips,\r\n mode: 'index',\r\n intersect: false\r\n };\r\n configuration.options.hover = {\r\n ...configuration.options.hover,\r\n mode: 'index',\r\n intersect: false\r\n };\r\n }\r\n\r\n this.chart = new Chart(this.ctx, configuration);\r\n this.isLoading = false;\r\n }\r\n\r\n private renderBarChart(option: BarChartOption) {\r\n const labelWidth = option.labelWidth ?? 50;\r\n if (option.datasets.length) {\r\n // const newwidth = Math.max(option.labels.length * option.datasets.length * labelWidth, $(this.chartWrapperRef.nativeElement).width());\r\n // $(this.chartAreaWrapperExtendRef.nativeElement).width(newwidth);\r\n const newwidth = option.labels.length * option.datasets.length * labelWidth;\r\n $(this.chartAreaWrapperExtendRef.nativeElement).css('width', `max(100%,${newwidth}px)`);\r\n }\r\n const configuration: Chart.ChartConfiguration = {\r\n options: {\r\n responsive: true,\r\n maintainAspectRatio: false,\r\n legend: {\r\n display: !option.hideLegend\r\n },\r\n scales: {\r\n xAxes: [{\r\n display: true,\r\n scaleLabel: {\r\n display: !!option.xTitle,\r\n labelString: option.xTitle || ''\r\n },\r\n ticks: {\r\n callback: (value: number | string, index: number) => {\r\n return option.ticks?.xLabel(value, index) || (Number.isNumber(value) ? Number.toVNCurrency(value) : value);\r\n }\r\n }\r\n }],\r\n yAxes: [{\r\n display: true,\r\n ticks: {\r\n beginAtZero: option.beginAtZero ?? true,\r\n callback: (value: number | string, index: number) => {\r\n return option.ticks?.yLabel(value, index) || (Number.isNumber(value) ? Number.toVNCurrency(value) : value);\r\n }\r\n },\r\n scaleLabel: {\r\n display: !!option.yTitle,\r\n labelString: option.yTitle || ''\r\n }\r\n }]\r\n },\r\n tooltips: {\r\n callbacks: {\r\n label: (tooltipItem, data) => {\r\n const datasetLabel = data?.datasets[tooltipItem.datasetIndex]?.label;\r\n const label = data?.labels[tooltipItem.index] as string;\r\n const value = data?.datasets[tooltipItem.datasetIndex]?.data[tooltipItem.index] as number;\r\n return option.tooltips?.label({\r\n datasetLabel,\r\n label,\r\n value\r\n }) || `${datasetLabel} : ${Number.toVNCurrency(value)}`;\r\n }\r\n }\r\n }\r\n },\r\n type: 'bar',\r\n data: {\r\n labels: option.labels,\r\n datasets: option.datasets.map((e, idx) => {\r\n const dynamicColor = this.dynamicColor;\r\n const result: Chart.ChartDataSets = {\r\n label: e.label,\r\n fill: e.backgroundColor || this.chartConfiguration?.defaultColors?.[idx]?.backgroundColor || dynamicColor,\r\n backgroundColor: e.backgroundColor || this.chartConfiguration?.defaultColors?.[idx]?.backgroundColor || dynamicColor,\r\n data: e.data,\r\n stack: e.stack\r\n };\r\n return result;\r\n })\r\n }\r\n };\r\n\r\n if (option.hover === 'ShowAll') {\r\n configuration.options.tooltips = {\r\n ...configuration.options.tooltips,\r\n mode: 'index',\r\n intersect: false\r\n };\r\n configuration.options.hover = {\r\n ...configuration.options.hover,\r\n mode: 'index',\r\n intersect: false\r\n };\r\n }\r\n\r\n this.chart = new Chart(this.ctx, configuration);\r\n this.isLoading = false;\r\n }\r\n\r\n private renderHorizontalBarChart(option: HorizontalBarChartOption) {\r\n // const labelWidth = option.labelWidth ?? 50;\r\n // if (option.datasets.length) {\r\n // const newwidth = Math.max(option.labels.length * option.datasets.length * labelWidth, $(this.chartWrapperRef.nativeElement).width());\r\n // $(this.chartAreaWrapperExtendRef.nativeElement).width(newwidth);\r\n // }\r\n const configuration: Chart.ChartConfiguration = {\r\n options: {\r\n responsive: true,\r\n maintainAspectRatio: false,\r\n legend: {\r\n display: !option.hideLegend\r\n },\r\n scales: {\r\n xAxes: [{\r\n display: true,\r\n scaleLabel: {\r\n display: !!option.xTitle,\r\n labelString: option.xTitle || ''\r\n },\r\n ticks: {\r\n beginAtZero: option.beginAtZero ?? true,\r\n callback: (value: number | string, index: number) => {\r\n return option.ticks?.xLabel(value, index) || (Number.isNumber(value) ? Number.toVNCurrency(value) : value);\r\n }\r\n }\r\n }],\r\n yAxes: [{\r\n display: true,\r\n ticks: {\r\n callback: (value: number | string, index: number) => {\r\n return option.ticks?.yLabel(value, index) || (Number.isNumber(value) ? Number.toVNCurrency(value) : value);\r\n }\r\n },\r\n scaleLabel: {\r\n display: !!option.yTitle,\r\n labelString: option.yTitle || ''\r\n }\r\n }]\r\n },\r\n tooltips: {\r\n callbacks: {\r\n label: (tooltipItem, data) => {\r\n const datasetLabel = data?.datasets[tooltipItem.datasetIndex]?.label;\r\n const label = data?.labels[tooltipItem.index] as string;\r\n const value = data?.datasets[tooltipItem.datasetIndex]?.data[tooltipItem.index] as number;\r\n return option.tooltips?.label({\r\n datasetLabel,\r\n label,\r\n value\r\n }) || `${datasetLabel} : ${Number.toVNCurrency(value)}`;\r\n }\r\n }\r\n }\r\n },\r\n type: 'horizontalBar',\r\n data: {\r\n labels: option.labels,\r\n datasets: option.datasets.map((e, idx) => {\r\n const dynamicColor = this.dynamicColor;\r\n const result: Chart.ChartDataSets = {\r\n label: e.label,\r\n fill: e.backgroundColor || this.chartConfiguration?.defaultColors?.[idx]?.backgroundColor || dynamicColor,\r\n backgroundColor: e.backgroundColor || this.chartConfiguration?.defaultColors?.[idx]?.backgroundColor || dynamicColor,\r\n data: e.data,\r\n stack: e.stack\r\n };\r\n return result;\r\n })\r\n }\r\n };\r\n\r\n if (option.hover === 'ShowAll') {\r\n configuration.options.tooltips = {\r\n ...configuration.options.tooltips,\r\n mode: 'index',\r\n intersect: false\r\n };\r\n configuration.options.hover = {\r\n ...configuration.options.hover,\r\n mode: 'index',\r\n intersect: false\r\n };\r\n }\r\n\r\n this.chart = new Chart(this.ctx, configuration);\r\n this.isLoading = false;\r\n }\r\n\r\n private renderLineChart(option: LineChartOption) {\r\n const labelWidth = option.labelWidth ?? 50;\r\n if (option.datasets.length) {\r\n // const newwidth = Math.max(option.labels.length * labelWidth, $(this.chartWrapperRef.nativeElement).width());\r\n // $(this.chartAreaWrapperExtendRef.nativeElement).width(newwidth);\r\n const newwidth = option.labels.length * labelWidth;\r\n $(this.chartAreaWrapperExtendRef.nativeElement).css('width', `max(100%,${newwidth}px)`);\r\n }\r\n const configuration: Chart.ChartConfiguration = {\r\n options: {\r\n responsive: true,\r\n maintainAspectRatio: false,\r\n legend: {\r\n display: !option.hideLegend\r\n },\r\n scales: {\r\n xAxes: [{\r\n display: true,\r\n scaleLabel: {\r\n display: !!option.xTitle,\r\n labelString: option.xTitle || ''\r\n },\r\n ticks: {\r\n callback: (value: number | string, index: number) => {\r\n return option.ticks?.xLabel(value, index) || (Number.isNumber(value) ? Number.toVNCurrency(value) : value);\r\n }\r\n },\r\n }],\r\n yAxes: [{\r\n display: true,\r\n ticks: {\r\n beginAtZero: option.beginAtZero ?? true,\r\n callback: (value: number | string, index: number) => {\r\n return option.ticks?.yLabel(value, index) || (Number.isNumber(value) ? Number.toVNCurrency(value) : value);\r\n }\r\n },\r\n scaleLabel: {\r\n display: !!option.yTitle,\r\n labelString: option.yTitle || ''\r\n }\r\n }]\r\n },\r\n tooltips: {\r\n callbacks: {\r\n label: (tooltipItem, data) => {\r\n const datasetLabel = data?.datasets[tooltipItem.datasetIndex]?.label;\r\n const label = data?.labels[tooltipItem.index] as string;\r\n const value = data?.datasets[tooltipItem.datasetIndex]?.data[tooltipItem.index] as number;\r\n return option.tooltips?.label({\r\n datasetLabel,\r\n label,\r\n value\r\n }) || `${datasetLabel} : ${Number.toVNCurrency(value)}`;\r\n }\r\n }\r\n }\r\n },\r\n type: 'line',\r\n data: {\r\n labels: option.labels,\r\n datasets: option.datasets.map((e, idx) => {\r\n const dynamicColor = this.dynamicColor;\r\n const result: Chart.ChartDataSets = {\r\n label: e.label,\r\n fill: e.backgroundColor || this.chartConfiguration?.defaultColors?.[idx]?.backgroundColor || dynamicColor,\r\n backgroundColor: e.backgroundColor || this.chartConfiguration?.defaultColors?.[idx]?.backgroundColor || dynamicColor,\r\n borderColor: e.borderColor || this.chartConfiguration?.defaultColors?.[idx]?.borderColor || dynamicColor,\r\n data: e.data,\r\n lineTension: 0,\r\n };\r\n return result;\r\n })\r\n }\r\n };\r\n\r\n if (option.hover === 'ShowAll') {\r\n configuration.options.tooltips = {\r\n ...configuration.options.tooltips,\r\n mode: 'index',\r\n intersect: false\r\n };\r\n configuration.options.hover = {\r\n ...configuration.options.hover,\r\n mode: 'index',\r\n intersect: false\r\n };\r\n }\r\n\r\n this.chart = new Chart(this.ctx, configuration);\r\n this.isLoading = false;\r\n }\r\n\r\n private renderStackAreaChart(option: StackAreaChartOption) {\r\n const labelWidth = option.labelWidth ?? 50;\r\n if (option.datasets.length) {\r\n // const newwidth = Math.max(option.labels.length * labelWidth, $(this.chartWrapperRef.nativeElement).width());\r\n // $(this.chartAreaWrapperExtendRef.nativeElement).width(newwidth);\r\n const newwidth = option.labels.length * labelWidth;\r\n $(this.chartAreaWrapperExtendRef.nativeElement).css('width', `max(100%,${newwidth}px)`);\r\n }\r\n const configuration: Chart.ChartConfiguration = {\r\n options: {\r\n responsive: true,\r\n maintainAspectRatio: false,\r\n legend: {\r\n display: !option.hideLegend\r\n },\r\n scales: {\r\n xAxes: [{\r\n display: true,\r\n scaleLabel: {\r\n display: !!option.xTitle,\r\n labelString: option.xTitle || ''\r\n },\r\n ticks: {\r\n callback: (value: number | string, index: number) => {\r\n return option.ticks?.xLabel(value, index) || (Number.isNumber(value) ? Number.toVNCurrency(value) : value);\r\n }\r\n },\r\n }],\r\n yAxes: [{\r\n display: true,\r\n ticks: {\r\n beginAtZero: option.beginAtZero ?? true,\r\n callback: (value: number | string, index: number) => {\r\n return option.ticks?.yLabel(value, index) || (Number.isNumber(value) ? Number.toVNCurrency(value) : value);\r\n }\r\n },\r\n stacked: true,\r\n scaleLabel: {\r\n display: !!option.yTitle,\r\n labelString: option.yTitle || ''\r\n }\r\n }]\r\n },\r\n tooltips: {\r\n callbacks: {\r\n label: (tooltipItem, data) => {\r\n const datasetLabel = data?.datasets[tooltipItem.datasetIndex]?.label;\r\n const label = data?.labels[tooltipItem.index] as string;\r\n const value = data?.datasets[tooltipItem.datasetIndex]?.data[tooltipItem.index] as number;\r\n return option.tooltips?.label({\r\n datasetLabel,\r\n label,\r\n value\r\n }) || `${datasetLabel} : ${Number.toVNCurrency(value)}`;\r\n }\r\n }\r\n }\r\n },\r\n type: 'line',\r\n data: {\r\n labels: option.labels,\r\n datasets: option.datasets.map((e, idx) => {\r\n const dynamicColor = this.dynamicColor;\r\n const result: Chart.ChartDataSets = {\r\n label: e.label,\r\n // fill: e.backgroundColor,\r\n backgroundColor: e.backgroundColor || this.chartConfiguration?.defaultColors?.[idx]?.backgroundColor || dynamicColor,\r\n borderColor: e.borderColor || this.chartConfiguration?.defaultColors?.[idx]?.borderColor || dynamicColor,\r\n data: e.data,\r\n lineTension: 0,\r\n };\r\n return result;\r\n })\r\n }\r\n };\r\n\r\n if (option.hover === 'ShowAll') {\r\n configuration.options.tooltips = {\r\n ...configuration.options.tooltips,\r\n mode: 'index',\r\n intersect: false\r\n };\r\n configuration.options.hover = {\r\n ...configuration.options.hover,\r\n mode: 'index',\r\n intersect: false\r\n };\r\n }\r\n\r\n this.chart = new Chart(this.ctx, configuration);\r\n this.isLoading = false;\r\n }\r\n\r\n private renderBarLineChart(option: BarLineChartOption) {\r\n const labelWidth = option.labelWidth ?? 50;\r\n if (option.datasets.length) {\r\n const numberOfBars = option.datasets.filter(e => e.type === 'bar').length;\r\n if (numberOfBars <= 1) {\r\n // const newwidth = Math.max(option.labels.length * labelWidth, $(this.chartWrapperRef.nativeElement).width());\r\n // $(this.chartAreaWrapperExtendRef.nativeElement).width(newwidth);\r\n const newwidth = option.labels.length * labelWidth;\r\n $(this.chartAreaWrapperExtendRef.nativeElement).css('width', `max(100%,${newwidth}px)`);\r\n } else {\r\n // const newwidth = Math.max(option.labels.length * numberOfBars * labelWidth, $(this.chartWrapperRef.nativeElement).width());\r\n // $(this.chartAreaWrapperExtendRef.nativeElement).width(newwidth);\r\n const newwidth = option.labels.length * numberOfBars * labelWidth;\r\n $(this.chartAreaWrapperExtendRef.nativeElement).css('width', `max(100%,${newwidth}px)`);\r\n }\r\n }\r\n const leftId = `I${uuid.v4()}`;\r\n const rightId = `I${uuid.v4()}`;\r\n const yAxes = [{\r\n type: 'linear',\r\n display: true,\r\n position: 'left',\r\n id: leftId,\r\n ticks: {\r\n beginAtZero: option.beginAtZero ?? true,\r\n suggestedMin: 0,\r\n callback: (value: number | string, index: number) => {\r\n return option.ticks?.yLabel(value, index) || (Number.isNumber(value) ? Number.toVNCurrency(value) : value);\r\n }\r\n },\r\n scaleLabel: {\r\n display: !!option.yTitle,\r\n labelString: option.yTitle || ''\r\n }\r\n }];\r\n if (option.datasets.some(e => e.yAlign === 'right')) {\r\n yAxes.push({\r\n type: 'linear',\r\n display: true,\r\n position: 'right',\r\n id: rightId,\r\n ticks: {\r\n beginAtZero: option.beginAtZero ?? true,\r\n suggestedMin: 0,\r\n callback: (value: number | string, index: number) => {\r\n return option.ticks?.yRightLabel(value, index) || (Number.isNumber(value) ? Number.toVNCurrency(value) : value);\r\n }\r\n },\r\n scaleLabel: {\r\n display: !!option.yRightTitle,\r\n labelString: option.yRightTitle || ''\r\n }\r\n });\r\n }\r\n const configuration: Chart.ChartConfiguration = {\r\n options: {\r\n responsive: true,\r\n maintainAspectRatio: false,\r\n legend: {\r\n display: !option.hideLegend\r\n },\r\n title: {\r\n display: true,\r\n text: option.title\r\n },\r\n scales: {\r\n xAxes: [{\r\n display: true,\r\n scaleLabel: {\r\n display: !!option.xTitle,\r\n labelString: option.xTitle || ''\r\n },\r\n ticks: {\r\n callback: (value: number | string, index: number) => {\r\n return option.ticks?.xLabel(value, index) || (Number.isNumber(value) ? Number.toVNCurrency(value) : value);\r\n }\r\n },\r\n }],\r\n yAxes\r\n },\r\n tooltips: {\r\n callbacks: {\r\n label: (tooltipItem, data) => {\r\n const datasetLabel = data?.datasets[tooltipItem.datasetIndex]?.label;\r\n const label = data?.labels[tooltipItem.index] as string;\r\n const value = data?.datasets[tooltipItem.datasetIndex]?.data[tooltipItem.index] as number;\r\n return option.tooltips?.label({\r\n datasetLabel,\r\n label,\r\n value\r\n }) || `${datasetLabel ? `[${datasetLabel}] ` : ''} ${label} : ${Number.toVNCurrency(value)}`;\r\n }\r\n }\r\n }\r\n },\r\n data: {\r\n labels: option.labels,\r\n datasets: option.datasets.map((e, idx) => {\r\n const dynamicColor = this.dynamicColor;\r\n const result: Chart.ChartDataSets = {\r\n type: e.type,\r\n label: e.label,\r\n fill: e.backgroundColor || this.chartConfiguration?.defaultColors?.[idx]?.backgroundColor || dynamicColor,\r\n backgroundColor: e.backgroundColor || this.chartConfiguration?.defaultColors?.[idx]?.backgroundColor || dynamicColor,\r\n borderColor: e.borderColor || this.chartConfiguration?.defaultColors?.[idx]?.borderColor || dynamicColor,\r\n data: e.data,\r\n yAxisID: e.yAlign === 'right' ? rightId : leftId,\r\n lineTension: 0\r\n };\r\n return result;\r\n })\r\n }\r\n };\r\n\r\n if (option.hover === 'ShowAll') {\r\n configuration.options.tooltips = {\r\n ...configuration.options.tooltips,\r\n mode: 'index',\r\n intersect: false\r\n };\r\n configuration.options.hover = {\r\n ...configuration.options.hover,\r\n mode: 'index',\r\n intersect: false\r\n };\r\n }\r\n\r\n this.chart = new Chart(this.ctx, configuration);\r\n this.isLoading = false;\r\n }\r\n\r\n loadingStart = () => {\r\n this.isLoading = true;\r\n }\r\n\r\n private get dynamicColor() {\r\n const r = Math.floor(Math.random() * 255);\r\n const g = Math.floor(Math.random() * 255);\r\n const b = Math.floor(Math.random() * 255);\r\n return 'rgb(' + r + ',' + g + ',' + b + ')';\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SdChart } from './chart.component';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule\r\n ],\r\n declarations: [\r\n SdChart\r\n ],\r\n exports: [\r\n SdChart\r\n ],\r\n providers: [\r\n ]\r\n})\r\nexport class SdChartModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["uuid.v4"],"mappings":"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"}