@wavemaker/app-ng-runtime 12.0.0-next.45752 → 12.0.0-next.46502

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 (318) hide show
  1. app-ng-runtime/build-task/bundles/index.umd.js +53 -45
  2. app-ng-runtime/build-task/esm2022/basic/default/anchor/anchor.build.mjs +2 -2
  3. app-ng-runtime/build-task/esm2022/basic/default/html/html.build.mjs +2 -2
  4. app-ng-runtime/build-task/esm2022/basic/default/icon/icon.build.mjs +2 -2
  5. app-ng-runtime/build-task/esm2022/basic/default/label/label.build.mjs +2 -2
  6. app-ng-runtime/build-task/esm2022/basic/default/picture/picture.build.mjs +2 -2
  7. app-ng-runtime/build-task/esm2022/basic/default/spinner/spinner.build.mjs +2 -2
  8. app-ng-runtime/build-task/esm2022/basic/progress/progress-circle/progress-circle.build.mjs +7 -2
  9. app-ng-runtime/build-task/esm2022/basic/rich-text-editor/rich-text-editor.build.mjs +2 -2
  10. app-ng-runtime/build-task/esm2022/containers/accordion/accordion-pane/accordion-pane.build.mjs +2 -2
  11. app-ng-runtime/build-task/esm2022/containers/accordion/accordion.build.mjs +3 -3
  12. app-ng-runtime/build-task/esm2022/containers/tile/tile.build.mjs +2 -2
  13. app-ng-runtime/build-task/esm2022/containers/wizard/wizard.build.mjs +2 -2
  14. app-ng-runtime/build-task/esm2022/data/form/form-field/form-field.build.mjs +4 -4
  15. app-ng-runtime/build-task/esm2022/device/barcode-scanner/barcode-scanner.build.mjs +2 -2
  16. app-ng-runtime/build-task/esm2022/device/camera/camera.build.mjs +2 -2
  17. app-ng-runtime/build-task/esm2022/dialogs/alert-dialog/alert-dialog.build.mjs +2 -2
  18. app-ng-runtime/build-task/esm2022/input/calendar/calendar.build.mjs +2 -2
  19. app-ng-runtime/build-task/esm2022/input/chips/chips.build.mjs +2 -2
  20. app-ng-runtime/build-task/esm2022/input/color-picker/color-picker.build.mjs +3 -3
  21. app-ng-runtime/build-task/esm2022/input/currency/currency.build.mjs +3 -3
  22. app-ng-runtime/build-task/esm2022/input/default/button/button.build.mjs +2 -2
  23. app-ng-runtime/build-task/esm2022/input/default/button-group/button-group.build.mjs +2 -2
  24. app-ng-runtime/build-task/esm2022/input/default/switch/switch.build.mjs +2 -2
  25. app-ng-runtime/build-task/esm2022/input/file-upload/file-upload.build.mjs +6 -2
  26. app-ng-runtime/build-task/esm2022/page/footer/footer.build.mjs +2 -2
  27. app-ng-runtime/build-task/esm2022/page/header/header.build.mjs +2 -2
  28. app-ng-runtime/build-task/esm2022/page/layout.build.mjs +2 -2
  29. app-ng-runtime/build-task/esm2022/page/left-panel/left-panel.build.mjs +2 -2
  30. app-ng-runtime/build-task/esm2022/page/page.build.mjs +2 -2
  31. app-ng-runtime/build-task/esm2022/page/right-panel/right-panel.build.mjs +2 -2
  32. app-ng-runtime/build-task/esm2022/page/top-nav/top-nav.build.mjs +2 -2
  33. app-ng-runtime/build-task/fesm2022/index.mjs +53 -45
  34. app-ng-runtime/build-task/fesm2022/index.mjs.map +1 -1
  35. app-ng-runtime/components/advanced/carousel/bundles/index.umd.js +1 -1
  36. app-ng-runtime/components/advanced/carousel/esm2022/carousel.animator.mjs +2 -2
  37. app-ng-runtime/components/advanced/carousel/fesm2022/index.mjs +1 -1
  38. app-ng-runtime/components/advanced/carousel/fesm2022/index.mjs.map +1 -1
  39. app-ng-runtime/components/base/bundles/index.umd.js +1 -6
  40. app-ng-runtime/components/base/esm2022/pipes/custom-pipes.mjs +3 -3
  41. app-ng-runtime/components/base/esm2022/widgets/common/base/base.component.mjs +1 -6
  42. app-ng-runtime/components/base/fesm2022/index.mjs +1 -6
  43. app-ng-runtime/components/base/fesm2022/index.mjs.map +1 -1
  44. app-ng-runtime/components/base/pipes/custom-pipes.d.ts +1 -1
  45. app-ng-runtime/components/basic/default/anchor/anchor.component.d.ts +1 -0
  46. app-ng-runtime/components/basic/default/audio/audio.component.d.ts +3 -0
  47. app-ng-runtime/components/basic/default/bundles/index.umd.js +39 -19
  48. app-ng-runtime/components/basic/default/esm2022/anchor/anchor.component.mjs +4 -4
  49. app-ng-runtime/components/basic/default/esm2022/anchor/anchor.props.mjs +2 -1
  50. app-ng-runtime/components/basic/default/esm2022/audio/audio.component.mjs +14 -6
  51. app-ng-runtime/components/basic/default/esm2022/audio/audio.props.mjs +2 -1
  52. app-ng-runtime/components/basic/default/esm2022/html/html.props.mjs +2 -1
  53. app-ng-runtime/components/basic/default/esm2022/icon/icon.component.mjs +6 -7
  54. app-ng-runtime/components/basic/default/esm2022/icon/icon.props.mjs +2 -1
  55. app-ng-runtime/components/basic/default/esm2022/iframe/iframe.component.mjs +3 -3
  56. app-ng-runtime/components/basic/default/esm2022/iframe/iframe.props.mjs +3 -2
  57. app-ng-runtime/components/basic/default/esm2022/label/label.props.mjs +1 -1
  58. app-ng-runtime/components/basic/default/esm2022/picture/picture.directive.mjs +2 -2
  59. app-ng-runtime/components/basic/default/esm2022/picture/picture.props.mjs +3 -1
  60. app-ng-runtime/components/basic/default/esm2022/spinner/spinner.props.mjs +3 -2
  61. app-ng-runtime/components/basic/default/esm2022/video/video.component.mjs +8 -4
  62. app-ng-runtime/components/basic/default/esm2022/video/video.props.mjs +2 -1
  63. app-ng-runtime/components/basic/default/fesm2022/index.mjs +39 -19
  64. app-ng-runtime/components/basic/default/fesm2022/index.mjs.map +1 -1
  65. app-ng-runtime/components/basic/default/icon/icon.component.d.ts +1 -0
  66. app-ng-runtime/components/basic/default/iframe/iframe.component.d.ts +1 -0
  67. app-ng-runtime/components/basic/default/picture/picture.directive.d.ts +2 -1
  68. app-ng-runtime/components/basic/default/video/video.component.d.ts +2 -0
  69. app-ng-runtime/components/basic/progress/bundles/index.umd.js +17 -9
  70. app-ng-runtime/components/basic/progress/esm2022/progress-bar/progress-bar.component.mjs +9 -5
  71. app-ng-runtime/components/basic/progress/esm2022/progress-bar/progress-bar.props.mjs +2 -1
  72. app-ng-runtime/components/basic/progress/esm2022/progress-circle/progress-circle.component.mjs +8 -6
  73. app-ng-runtime/components/basic/progress/esm2022/progress-circle/progress-circle.props.mjs +2 -1
  74. app-ng-runtime/components/basic/progress/fesm2022/index.mjs +17 -9
  75. app-ng-runtime/components/basic/progress/fesm2022/index.mjs.map +1 -1
  76. app-ng-runtime/components/basic/progress/progress-bar/progress-bar.component.d.ts +2 -0
  77. app-ng-runtime/components/basic/progress/progress-circle/progress-circle.component.d.ts +3 -1
  78. app-ng-runtime/components/basic/rich-text-editor/bundles/index.umd.js +2 -0
  79. app-ng-runtime/components/basic/rich-text-editor/esm2022/rich-text-editor.component.mjs +2 -1
  80. app-ng-runtime/components/basic/rich-text-editor/esm2022/rich-text-editor.props.mjs +2 -1
  81. app-ng-runtime/components/basic/rich-text-editor/fesm2022/index.mjs +2 -0
  82. app-ng-runtime/components/basic/rich-text-editor/fesm2022/index.mjs.map +1 -1
  83. app-ng-runtime/components/basic/search/bundles/index.umd.js +16 -9
  84. app-ng-runtime/components/basic/search/esm2022/search.component.mjs +19 -13
  85. app-ng-runtime/components/basic/search/esm2022/search.props.mjs +2 -1
  86. app-ng-runtime/components/basic/search/fesm2022/index.mjs +16 -9
  87. app-ng-runtime/components/basic/search/fesm2022/index.mjs.map +1 -1
  88. app-ng-runtime/components/basic/search/search.component.d.ts +4 -2
  89. app-ng-runtime/components/chart/bundles/index.umd.js +1 -0
  90. app-ng-runtime/components/chart/esm2022/chart.utils.mjs +2 -1
  91. app-ng-runtime/components/chart/fesm2022/index.mjs +1 -0
  92. app-ng-runtime/components/chart/fesm2022/index.mjs.map +1 -1
  93. app-ng-runtime/components/containers/accordion/accordion-pane/accordion-pane.component.d.ts +1 -0
  94. app-ng-runtime/components/containers/accordion/bundles/index.umd.js +15 -9
  95. app-ng-runtime/components/containers/accordion/esm2022/accordion-pane/accordion-pane.component.mjs +13 -10
  96. app-ng-runtime/components/containers/accordion/esm2022/accordion.directive.mjs +4 -1
  97. app-ng-runtime/components/containers/accordion/fesm2022/index.mjs +15 -9
  98. app-ng-runtime/components/containers/accordion/fesm2022/index.mjs.map +1 -1
  99. app-ng-runtime/components/containers/panel/bundles/index.umd.js +14 -14
  100. app-ng-runtime/components/containers/panel/esm2022/panel.component.mjs +15 -15
  101. app-ng-runtime/components/containers/panel/fesm2022/index.mjs +14 -14
  102. app-ng-runtime/components/containers/panel/fesm2022/index.mjs.map +1 -1
  103. app-ng-runtime/components/containers/tabs/bundles/index.umd.js +2 -2
  104. app-ng-runtime/components/containers/tabs/esm2022/tabs.component.mjs +3 -3
  105. app-ng-runtime/components/containers/tabs/fesm2022/index.mjs +2 -2
  106. app-ng-runtime/components/containers/tabs/fesm2022/index.mjs.map +1 -1
  107. app-ng-runtime/components/containers/wizard/bundles/index.umd.js +6 -6
  108. app-ng-runtime/components/containers/wizard/esm2022/wizard.component.mjs +7 -7
  109. app-ng-runtime/components/containers/wizard/fesm2022/index.mjs +6 -6
  110. app-ng-runtime/components/containers/wizard/fesm2022/index.mjs.map +1 -1
  111. app-ng-runtime/components/data/list/bundles/index.umd.js +19 -11
  112. app-ng-runtime/components/data/list/esm2022/list-item.directive.mjs +10 -1
  113. app-ng-runtime/components/data/list/esm2022/list.component.mjs +12 -12
  114. app-ng-runtime/components/data/list/fesm2022/index.mjs +20 -12
  115. app-ng-runtime/components/data/list/fesm2022/index.mjs.map +1 -1
  116. app-ng-runtime/components/data/live-table/bundles/index.umd.js +2 -2
  117. app-ng-runtime/components/data/live-table/esm2022/live-table.component.mjs +3 -3
  118. app-ng-runtime/components/data/live-table/fesm2022/index.mjs +2 -2
  119. app-ng-runtime/components/data/live-table/fesm2022/index.mjs.map +1 -1
  120. app-ng-runtime/components/data/pagination/bundles/index.umd.js +2 -0
  121. app-ng-runtime/components/data/pagination/esm2022/pagination.component.mjs +3 -1
  122. app-ng-runtime/components/data/pagination/fesm2022/index.mjs +2 -0
  123. app-ng-runtime/components/data/pagination/fesm2022/index.mjs.map +1 -1
  124. app-ng-runtime/components/data/table/bundles/index.umd.js +42 -8
  125. app-ng-runtime/components/data/table/esm2022/table-column/table-column.directive.mjs +14 -5
  126. app-ng-runtime/components/data/table/esm2022/table.component.mjs +28 -5
  127. app-ng-runtime/components/data/table/esm2022/table.props.mjs +3 -1
  128. app-ng-runtime/components/data/table/fesm2022/index.mjs +43 -9
  129. app-ng-runtime/components/data/table/fesm2022/index.mjs.map +1 -1
  130. app-ng-runtime/components/data/table/table.component.d.ts +7 -0
  131. app-ng-runtime/components/dialogs/alert-dialog/bundles/index.umd.js +6 -4
  132. app-ng-runtime/components/dialogs/alert-dialog/esm2022/alert-dialog.component.mjs +7 -5
  133. app-ng-runtime/components/dialogs/alert-dialog/fesm2022/index.mjs +6 -4
  134. app-ng-runtime/components/dialogs/alert-dialog/fesm2022/index.mjs.map +1 -1
  135. app-ng-runtime/components/dialogs/confirm-dialog/bundles/index.umd.js +8 -5
  136. app-ng-runtime/components/dialogs/confirm-dialog/esm2022/confirm-dialog.component.mjs +9 -6
  137. app-ng-runtime/components/dialogs/confirm-dialog/fesm2022/index.mjs +8 -5
  138. app-ng-runtime/components/dialogs/confirm-dialog/fesm2022/index.mjs.map +1 -1
  139. app-ng-runtime/components/dialogs/default/bundles/index.umd.js +9 -3
  140. app-ng-runtime/components/dialogs/default/dialog-header/dialog-header.component.d.ts +2 -1
  141. app-ng-runtime/components/dialogs/default/esm2022/base-dialog.mjs +2 -1
  142. app-ng-runtime/components/dialogs/default/esm2022/dialog-header/dialog-header.component.mjs +9 -4
  143. app-ng-runtime/components/dialogs/default/fesm2022/index.mjs +9 -3
  144. app-ng-runtime/components/dialogs/default/fesm2022/index.mjs.map +1 -1
  145. app-ng-runtime/components/dialogs/design-dialog/bundles/index.umd.js +4 -4
  146. app-ng-runtime/components/dialogs/design-dialog/esm2022/dialog.component.mjs +5 -5
  147. app-ng-runtime/components/dialogs/design-dialog/fesm2022/index.mjs +4 -4
  148. app-ng-runtime/components/dialogs/design-dialog/fesm2022/index.mjs.map +1 -1
  149. app-ng-runtime/components/dialogs/iframe-dialog/bundles/index.umd.js +9 -5
  150. app-ng-runtime/components/dialogs/iframe-dialog/esm2022/iframe-dialog.component.mjs +10 -6
  151. app-ng-runtime/components/dialogs/iframe-dialog/fesm2022/index.mjs +9 -5
  152. app-ng-runtime/components/dialogs/iframe-dialog/fesm2022/index.mjs.map +1 -1
  153. app-ng-runtime/components/dialogs/partial-dialog/bundles/index.umd.js +9 -5
  154. app-ng-runtime/components/dialogs/partial-dialog/esm2022/partial-dialog.component.mjs +10 -6
  155. app-ng-runtime/components/dialogs/partial-dialog/fesm2022/index.mjs +9 -5
  156. app-ng-runtime/components/dialogs/partial-dialog/fesm2022/index.mjs.map +1 -1
  157. app-ng-runtime/components/input/calendar/bundles/index.umd.js +2 -4
  158. app-ng-runtime/components/input/calendar/esm2022/calendar.component.mjs +3 -5
  159. app-ng-runtime/components/input/calendar/fesm2022/index.mjs +2 -4
  160. app-ng-runtime/components/input/calendar/fesm2022/index.mjs.map +1 -1
  161. app-ng-runtime/components/input/chips/bundles/index.umd.js +25 -7
  162. app-ng-runtime/components/input/chips/esm2022/chips.component.mjs +25 -8
  163. app-ng-runtime/components/input/chips/esm2022/chips.props.mjs +2 -1
  164. app-ng-runtime/components/input/chips/fesm2022/index.mjs +25 -7
  165. app-ng-runtime/components/input/chips/fesm2022/index.mjs.map +1 -1
  166. app-ng-runtime/components/input/color-picker/bundles/index.umd.js +5 -3
  167. app-ng-runtime/components/input/color-picker/color-picker.component.d.ts +1 -0
  168. app-ng-runtime/components/input/color-picker/esm2022/color-picker.component.mjs +6 -5
  169. app-ng-runtime/components/input/color-picker/esm2022/color-picker.props.mjs +2 -1
  170. app-ng-runtime/components/input/color-picker/fesm2022/index.mjs +5 -3
  171. app-ng-runtime/components/input/color-picker/fesm2022/index.mjs.map +1 -1
  172. app-ng-runtime/components/input/currency/bundles/index.umd.js +4 -3
  173. app-ng-runtime/components/input/currency/currency.component.d.ts +1 -0
  174. app-ng-runtime/components/input/currency/esm2022/currency.component.mjs +6 -6
  175. app-ng-runtime/components/input/currency/esm2022/currency.props.mjs +2 -1
  176. app-ng-runtime/components/input/currency/fesm2022/index.mjs +4 -3
  177. app-ng-runtime/components/input/currency/fesm2022/index.mjs.map +1 -1
  178. app-ng-runtime/components/input/default/bundles/index.umd.js +171 -94
  179. app-ng-runtime/components/input/default/button/button.component.d.ts +1 -0
  180. app-ng-runtime/components/input/default/checkbox/checkbox.component.d.ts +1 -0
  181. app-ng-runtime/components/input/default/esm2022/base-form.component.mjs +3 -3
  182. app-ng-runtime/components/input/default/esm2022/button/button.component.mjs +1 -1
  183. app-ng-runtime/components/input/default/esm2022/button/button.props.mjs +2 -1
  184. app-ng-runtime/components/input/default/esm2022/caption-position.directive.mjs +8 -7
  185. app-ng-runtime/components/input/default/esm2022/checkbox/checkbox.component.mjs +7 -7
  186. app-ng-runtime/components/input/default/esm2022/checkbox/checkbox.props.mjs +2 -1
  187. app-ng-runtime/components/input/default/esm2022/checkboxset/checkboxset.component.mjs +21 -16
  188. app-ng-runtime/components/input/default/esm2022/number/number.component.mjs +5 -5
  189. app-ng-runtime/components/input/default/esm2022/number/number.props.mjs +3 -1
  190. app-ng-runtime/components/input/default/esm2022/radioset/radioset.component.mjs +28 -23
  191. app-ng-runtime/components/input/default/esm2022/select/select.component.mjs +7 -7
  192. app-ng-runtime/components/input/default/esm2022/select/select.props.mjs +2 -1
  193. app-ng-runtime/components/input/default/esm2022/switch/switch.component.mjs +6 -5
  194. app-ng-runtime/components/input/default/esm2022/switch/switch.props.mjs +2 -1
  195. app-ng-runtime/components/input/default/esm2022/text/calendar/input-calendar.component.mjs +5 -5
  196. app-ng-runtime/components/input/default/esm2022/text/calendar/input-calendar.props.mjs +2 -1
  197. app-ng-runtime/components/input/default/esm2022/text/color/input-color.component.mjs +5 -5
  198. app-ng-runtime/components/input/default/esm2022/text/color/input-color.props.mjs +2 -1
  199. app-ng-runtime/components/input/default/esm2022/text/email/input-email.component.mjs +5 -5
  200. app-ng-runtime/components/input/default/esm2022/text/email/input-email.props.mjs +2 -1
  201. app-ng-runtime/components/input/default/esm2022/text/locale/number-locale.mjs +66 -13
  202. app-ng-runtime/components/input/default/esm2022/text/number/input-number.component.mjs +5 -5
  203. app-ng-runtime/components/input/default/esm2022/text/number/input-number.props.mjs +2 -1
  204. app-ng-runtime/components/input/default/esm2022/text/text/input-text.component.mjs +5 -5
  205. app-ng-runtime/components/input/default/esm2022/text/text/input-text.props.mjs +2 -1
  206. app-ng-runtime/components/input/default/esm2022/textarea/textarea.component.mjs +6 -6
  207. app-ng-runtime/components/input/default/esm2022/textarea/textarea.props.mjs +2 -1
  208. app-ng-runtime/components/input/default/fesm2022/index.mjs +171 -94
  209. app-ng-runtime/components/input/default/fesm2022/index.mjs.map +1 -1
  210. app-ng-runtime/components/input/default/number/number.component.d.ts +1 -0
  211. app-ng-runtime/components/input/default/select/select.component.d.ts +2 -0
  212. app-ng-runtime/components/input/default/text/calendar/input-calendar.component.d.ts +1 -0
  213. app-ng-runtime/components/input/default/text/color/input-color.component.d.ts +1 -0
  214. app-ng-runtime/components/input/default/text/email/input-email.component.d.ts +1 -0
  215. app-ng-runtime/components/input/default/text/locale/number-locale.d.ts +1 -0
  216. app-ng-runtime/components/input/default/text/number/input-number.component.d.ts +1 -0
  217. app-ng-runtime/components/input/default/text/text/input-text.component.d.ts +1 -0
  218. app-ng-runtime/components/input/default/textarea/textarea.component.d.ts +1 -0
  219. app-ng-runtime/components/input/epoch/base-date-time.component.d.ts +2 -1
  220. app-ng-runtime/components/input/epoch/bundles/index.umd.js +28 -21
  221. app-ng-runtime/components/input/epoch/date/date.component.d.ts +1 -0
  222. app-ng-runtime/components/input/epoch/date-time/date-time.component.d.ts +2 -1
  223. app-ng-runtime/components/input/epoch/esm2022/base-date-time.component.mjs +10 -6
  224. app-ng-runtime/components/input/epoch/esm2022/date/date.component.mjs +8 -8
  225. app-ng-runtime/components/input/epoch/esm2022/date/date.props.mjs +2 -1
  226. app-ng-runtime/components/input/epoch/esm2022/date-time/date-time.component.mjs +9 -9
  227. app-ng-runtime/components/input/epoch/esm2022/date-time/date-time.props.mjs +2 -1
  228. app-ng-runtime/components/input/epoch/esm2022/time/time.component.mjs +7 -7
  229. app-ng-runtime/components/input/epoch/esm2022/time/time.props.mjs +2 -1
  230. app-ng-runtime/components/input/epoch/fesm2022/index.mjs +25 -18
  231. app-ng-runtime/components/input/epoch/fesm2022/index.mjs.map +1 -1
  232. app-ng-runtime/components/input/epoch/time/time.component.d.ts +1 -0
  233. app-ng-runtime/components/input/file-upload/bundles/index.umd.js +224 -121
  234. app-ng-runtime/components/input/file-upload/esm2022/file-upload.component.mjs +220 -123
  235. app-ng-runtime/components/input/file-upload/esm2022/file-upload.props.mjs +7 -1
  236. app-ng-runtime/components/input/file-upload/fesm2022/index.mjs +225 -122
  237. app-ng-runtime/components/input/file-upload/fesm2022/index.mjs.map +1 -1
  238. app-ng-runtime/components/input/file-upload/file-upload.component.d.ts +18 -11
  239. app-ng-runtime/components/input/rating/bundles/index.umd.js +2 -2
  240. app-ng-runtime/components/input/rating/esm2022/rating.component.mjs +3 -3
  241. app-ng-runtime/components/input/rating/fesm2022/index.mjs +2 -2
  242. app-ng-runtime/components/input/rating/fesm2022/index.mjs.map +1 -1
  243. app-ng-runtime/components/input/slider/bundles/index.umd.js +5 -6
  244. app-ng-runtime/components/input/slider/esm2022/slider.component.mjs +6 -8
  245. app-ng-runtime/components/input/slider/esm2022/slider.props.mjs +2 -1
  246. app-ng-runtime/components/input/slider/fesm2022/index.mjs +5 -6
  247. app-ng-runtime/components/input/slider/fesm2022/index.mjs.map +1 -1
  248. app-ng-runtime/components/input/slider/slider.component.d.ts +1 -0
  249. app-ng-runtime/components/navigation/breadcrumb/bundles/index.umd.js +6 -6
  250. app-ng-runtime/components/navigation/breadcrumb/esm2022/breadcrumb.component.mjs +7 -7
  251. app-ng-runtime/components/navigation/breadcrumb/fesm2022/index.mjs +6 -6
  252. app-ng-runtime/components/navigation/breadcrumb/fesm2022/index.mjs.map +1 -1
  253. app-ng-runtime/components/navigation/menu/bundles/index.umd.js +8 -6
  254. app-ng-runtime/components/navigation/menu/esm2022/menu.component.mjs +8 -7
  255. app-ng-runtime/components/navigation/menu/esm2022/menu.props.mjs +2 -1
  256. app-ng-runtime/components/navigation/menu/fesm2022/index.mjs +8 -6
  257. app-ng-runtime/components/navigation/menu/fesm2022/index.mjs.map +1 -1
  258. app-ng-runtime/components/navigation/menu/menu.component.d.ts +1 -0
  259. app-ng-runtime/components/navigation/popover/bundles/index.umd.js +121 -13
  260. app-ng-runtime/components/navigation/popover/esm2022/popover.component.mjs +122 -15
  261. app-ng-runtime/components/navigation/popover/esm2022/popover.props.mjs +2 -1
  262. app-ng-runtime/components/navigation/popover/fesm2022/index.mjs +121 -13
  263. app-ng-runtime/components/navigation/popover/fesm2022/index.mjs.map +1 -1
  264. app-ng-runtime/components/navigation/popover/popover.component.d.ts +15 -3
  265. app-ng-runtime/components/page/default/bundles/index.umd.js +2 -1
  266. app-ng-runtime/components/page/default/esm2022/page.props.mjs +4 -3
  267. app-ng-runtime/components/page/default/fesm2022/index.mjs +2 -1
  268. app-ng-runtime/components/page/default/fesm2022/index.mjs.map +1 -1
  269. app-ng-runtime/components/page/footer/bundles/index.umd.js +2 -1
  270. app-ng-runtime/components/page/footer/esm2022/footer.props.mjs +3 -2
  271. app-ng-runtime/components/page/footer/fesm2022/index.mjs +2 -1
  272. app-ng-runtime/components/page/footer/fesm2022/index.mjs.map +1 -1
  273. app-ng-runtime/components/page/header/bundles/index.umd.js +2 -1
  274. app-ng-runtime/components/page/header/esm2022/header.props.mjs +3 -2
  275. app-ng-runtime/components/page/header/fesm2022/index.mjs +2 -1
  276. app-ng-runtime/components/page/header/fesm2022/index.mjs.map +1 -1
  277. app-ng-runtime/components/page/left-panel/bundles/index.umd.js +2 -1
  278. app-ng-runtime/components/page/left-panel/esm2022/left-panel.props.mjs +3 -2
  279. app-ng-runtime/components/page/left-panel/fesm2022/index.mjs +2 -1
  280. app-ng-runtime/components/page/left-panel/fesm2022/index.mjs.map +1 -1
  281. app-ng-runtime/components/page/right-panel/bundles/index.umd.js +2 -1
  282. app-ng-runtime/components/page/right-panel/esm2022/right-panel.props.mjs +3 -2
  283. app-ng-runtime/components/page/right-panel/fesm2022/index.mjs +2 -1
  284. app-ng-runtime/components/page/right-panel/fesm2022/index.mjs.map +1 -1
  285. app-ng-runtime/components/page/top-nav/bundles/index.umd.js +2 -1
  286. app-ng-runtime/components/page/top-nav/esm2022/top-nav.props.mjs +3 -2
  287. app-ng-runtime/components/page/top-nav/fesm2022/index.mjs +2 -1
  288. app-ng-runtime/components/page/top-nav/fesm2022/index.mjs.map +1 -1
  289. app-ng-runtime/core/bundles/index.umd.js +15 -13
  290. app-ng-runtime/core/esm2022/public_api.mjs +2 -2
  291. app-ng-runtime/core/esm2022/utils/build-utils.mjs +7 -7
  292. app-ng-runtime/core/esm2022/utils/utils.mjs +4 -5
  293. app-ng-runtime/core/fesm2022/index.mjs +11 -11
  294. app-ng-runtime/core/fesm2022/index.mjs.map +1 -1
  295. app-ng-runtime/core/public_api.d.ts +1 -1
  296. app-ng-runtime/core/utils/utils.d.ts +1 -1
  297. app-ng-runtime/mobile/components/device/barcode-scanner/bundles/index.umd.js +2 -1
  298. app-ng-runtime/mobile/components/device/barcode-scanner/esm2022/barcode-scanner.props.mjs +3 -2
  299. app-ng-runtime/mobile/components/device/barcode-scanner/fesm2022/index.mjs +2 -1
  300. app-ng-runtime/mobile/components/device/barcode-scanner/fesm2022/index.mjs.map +1 -1
  301. app-ng-runtime/mobile/components/device/camera/bundles/index.umd.js +2 -1
  302. app-ng-runtime/mobile/components/device/camera/esm2022/camera.props.mjs +3 -2
  303. app-ng-runtime/mobile/components/device/camera/fesm2022/index.mjs +2 -1
  304. app-ng-runtime/mobile/components/device/camera/fesm2022/index.mjs.map +1 -1
  305. app-ng-runtime/package.json +1 -1
  306. app-ng-runtime/runtime/base/bundles/index.umd.js +6 -4
  307. app-ng-runtime/runtime/base/components/app-component/app.component.d.ts +2 -3
  308. app-ng-runtime/runtime/base/esm2022/components/app-component/app.component.mjs +5 -5
  309. app-ng-runtime/runtime/base/esm2022/guards/can-deactivate-page.guard.mjs +5 -4
  310. app-ng-runtime/runtime/base/fesm2022/index.mjs +6 -4
  311. app-ng-runtime/runtime/base/fesm2022/index.mjs.map +1 -1
  312. app-ng-runtime/runtime/base/guards/can-deactivate-page.guard.d.ts +2 -1
  313. app-ng-runtime/scripts/datatable/datatable.js +32 -31
  314. app-ng-runtime/variables/bundles/index.umd.js +34 -16
  315. app-ng-runtime/variables/esm2022/manager/variable/web-socket-variable.manager.mjs +35 -17
  316. app-ng-runtime/variables/fesm2022/index.mjs +34 -16
  317. app-ng-runtime/variables/fesm2022/index.mjs.map +1 -1
  318. app-ng-runtime/variables/manager/variable/web-socket-variable.manager.d.ts +0 -4
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../../projects/components/widgets/chart/src/chart.props.ts","../../../../projects/components/widgets/chart/src/chart.utils.ts","../../../../projects/components/widgets/chart/src/chart.component.html","../../../../projects/components/widgets/chart/src/chart.component.ts","../../../../projects/components/widgets/chart/src/chart.module.ts","../../../../projects/components/widgets/chart/src/index.ts"],"sourcesContent":["import { PROP_ANY, PROP_BOOLEAN, PROP_NUMBER, PROP_STRING, register } from '@wm/components/base';\n\nexport const registerProps = () => {\n register(\n 'wm-chart',\n new Map(\n [\n ['aggregation', {value: 'none', ...PROP_STRING}],\n ['aggregationcolumn', PROP_STRING],\n ['areaviewtype', {value: 'stack', ...PROP_STRING}],\n ['barspacing', {value: 'medium', ...PROP_STRING}],\n ['bubblesize', PROP_STRING],\n ['centerlabel', PROP_STRING],\n ['class', PROP_STRING],\n ['customcolors', PROP_ANY],\n ['dataset', PROP_ANY],\n ['datasource', PROP_STRING],\n ['donutratio', {value: 'medium', ...PROP_STRING}],\n ['formattype', {value: '', PROP_STRING}],\n ['groupby', PROP_STRING],\n ['height', {value: '210px', PROP_STRING}],\n ['highlightpoints', PROP_BOOLEAN],\n ['iconclass', PROP_STRING],\n ['interpolation', {value: 'linear', ...PROP_STRING}],\n ['labelthreshold', {value: 0.01, ...PROP_NUMBER}],\n ['labeltype', {value: 'percent', ...PROP_STRING}],\n ['legendtype', {value: 'furious', ...PROP_STRING}],\n ['linethickness', PROP_STRING],\n ['loadingdatamsg', {value: 'Loading...', ...PROP_STRING}],\n ['name', PROP_STRING],\n ['nodatamessage', {value: 'No Data Available.', ...PROP_STRING}],\n ['offset', PROP_STRING],\n ['offsetbottom', {value: 55, ...PROP_NUMBER}],\n ['offsetleft', {value: 75, ...PROP_NUMBER}],\n ['offsetright', {value: 25, ...PROP_NUMBER}],\n ['offsettop', {value: 25, ...PROP_NUMBER}],\n ['orderby', PROP_STRING],\n ['reducexticks', {value: true, ...PROP_BOOLEAN}],\n ['shape', {value: 'circle', ...PROP_STRING}],\n ['show', {value: true, ...PROP_BOOLEAN}],\n ['showlabels', {value: 'outside', ...PROP_STRING}],\n ['showlabelsoutside', {value: true, ...PROP_BOOLEAN}],\n ['showlegend', {value: 'top', ...PROP_STRING}],\n ['showvalues', {value: false, ...PROP_BOOLEAN}],\n ['showxaxis', {value: true, ...PROP_BOOLEAN}],\n ['showxdistance', {value: false, ...PROP_BOOLEAN}],\n ['showyaxis', {value: true, ...PROP_BOOLEAN}],\n ['showydistance', {value: false, ...PROP_BOOLEAN}],\n ['staggerlabels', {value: false, ...PROP_BOOLEAN}],\n ['subheading', PROP_STRING],\n ['theme', PROP_STRING],\n ['title', PROP_STRING],\n ['tooltips', {value: true, ...PROP_BOOLEAN}],\n ['type', PROP_STRING],\n ['viewtype', {value: 'Grouped', ...PROP_STRING}],\n ['xaxisdatakey', PROP_STRING],\n ['xaxislabel', PROP_STRING],\n ['xaxislabeldistance', {value: 12, ...PROP_NUMBER}],\n ['xdateformat', PROP_STRING],\n ['xdomain', {value: 'Default', ...PROP_STRING}],\n ['xnumberformat', PROP_STRING],\n ['xunits', PROP_STRING],\n ['yaxisdatakey', PROP_STRING],\n ['yaxislabel', PROP_STRING],\n ['yaxislabeldistance', {value: 12, ...PROP_NUMBER}],\n ['ydomain', {value: 'Default', ...PROP_STRING}],\n ['ynumberformat', PROP_STRING],\n ['yunits', PROP_STRING]\n ]\n )\n );\n};\n","import {isEmptyObject, prettifyLabels} from '@wm/core';\nimport {forEach, includes, invert, isArray, isFinite, isString, isUndefined, split} from \"lodash-es\";\n\ndeclare const $;\n\ndeclare const moment;\ndeclare const d3, nv;\n\nexport const chartTypes = ['Column', 'Line', 'Area', 'Cumulative Line', 'Bar', 'Pie', 'Donut', 'Bubble'],\n allShapes = ['circle', 'square', 'diamond', 'cross', 'triangle-up', 'triangle-down'];\n\nconst dateList = ['01/01/2001', '01/01/2002', '01/01/2003'],\n themes = {\n 'Terrestrial': {\n colors: ['#1f77b4', '#aec7e8', '#ff7f0e', '#ffbb78', '#2ca02c', '#98df8a', '#d62728', '#ff9896', '#9467bd', '#c5b0d5', '#8c564b', '#c49c94', '#e377c2', '#f7b6d2', '#7f7f7f', '#c7c7c7', '#bcbd22', '#dbdb8d', '#17becf', '#9edae5'],\n tooltip: {\n 'backgroundColor': '#de7d28',\n 'textColor': '#FFFFFF'\n }\n },\n 'Annabelle': {\n colors: ['#393b79', '#5254a3', '#6b6ecf', '#9c9ede', '#637939', '#8ca252', '#b5cf6b', '#cedb9c', '#8c6d31', '#bd9e39', '#e7ba52', '#e7cb94', '#843c39', '#ad494a', '#d6616b', '#e7969c', '#7b4173', '#a55194', '#ce6dbd', '#de9ed6'],\n tooltip: {\n 'backgroundColor': '#2e306f',\n 'textColor': '#FFFFFF'\n }\n },\n 'Azure': {\n colors: ['#3182bd', '#6baed6', '#9ecae1', '#c6dbef', '#e6550d', '#fd8d3c', '#fdae6b', '#fdd0a2', '#31a354', '#74c476', '#a1d99b', '#c7e9c0', '#756bb1', '#9e9ac8', '#bcbddc', '#dadaeb', '#636363', '#969696', '#bdbdbd', '#d9d9d9'],\n tooltip: {\n 'backgroundColor': '#3182bd',\n 'textColor': '#FFFFFF'\n }\n },\n 'Retro': {\n colors: ['#0ca7a1', '#ffa615', '#334957', '#acc5c2', '#988f90', '#8accc9', '#515151', '#f27861', '#36c9fd', '#794668', '#0f709d', '#0d2738', '#44be78', '#4a1839', '#6a393f', '#557d8b', '#6c331c', '#1c1c1c', '#861500', '#09562a'],\n tooltip: {\n 'backgroundColor': '#80513a',\n 'textColor': '#FFFFFF'\n }\n },\n 'Mellow': {\n colors: ['#f0dcbf', '#88c877', '#aeb918', '#2e2c23', '#ddddd2', '#dfe956', '#4c963b', '#5d3801', '#e1eec3', '#cd8472', '#fcfab3', '#9a4635', '#9295ad', '#2e3f12', '#565677', '#557d8b', '#4f4d02', '#0c0c1b', '#833324', '#24120e'],\n tooltip: {\n 'backgroundColor': '#7c9e73',\n 'textColor': '#FFFFFF'\n }\n },\n 'Orient': {\n colors: ['#a80000', '#cc6c3c', '#f0e400', '#000084', '#fccc6c', '#009c6c', '#cc309c', '#78cc00', '#fc84e4', '#48e4fc', '#4878d8', '#186c0c', '#606060', '#a8a8a8', '#000000', '#d7d7d7', '#75a06e', '#190d0b', '#888888', '#694b84'],\n tooltip: {\n 'backgroundColor': '#c14242',\n 'textColor': '#FFFFFF'\n }\n },\n 'GrayScale': {\n colors: ['#141414', '#353535', '#5b5b5b', '#848484', '#a8a8a8', '#c3c3c3', '#e0e0e0', '#c8c8c8', '#a5a5a5', '#878787', '#656565', '#4e4e4e', '#303030', '#1c1c1c', '#4f4f4f', '#3b3b3b', '#757575', '#606060', '#868686', '#c1c1c1'],\n tooltip: {\n 'backgroundColor': '#575757',\n 'textColor': '#FFFFFF'\n }\n },\n 'Flyer': {\n colors: ['#3f454c', '#5a646e', '#848778', '#cededf', '#74c4dd', '#0946ed', '#380bb1', '#000ff0', '#f54a23', '#1db262', '#bca3aa', '#ffa500', '#a86b32', '#63a18c', '#56795e', '#934343', '#b75f5f', '#752d2d', '#4e1111', '#920606'],\n tooltip: {\n 'backgroundColor': '#47637c',\n 'textColor': '#FFFFFF'\n }\n },\n 'Luminosity': {\n colors: ['#FFFFFF', '#e4e4e4', '#00bcd4', '#f0dd2f', '#00aabf', '#018376', '#e91e63', '#39e5d4', '#ff6d6d', '#00ff76', '#ff9800', '#969696', '#ff4200', '#e00000', '#95cbe5', '#5331ff', '#fff4a7', '#e7a800', '#0061e4', '#d5e7ff'],\n tooltip: {\n 'backgroundColor': '#47637c',\n 'textColor': '#FFFFFF'\n }\n }\n },\n basicProperties = ['xaxislabel', 'yaxislabel', 'xunits', 'yunits', 'xnumberformat', 'xdateformat', 'ynumberformat',\n 'showvalues', 'showlabels', 'viewtype', 'areaviewtype', 'staggerlabels', 'reducexticks', 'offsettop', 'offsetbottom', 'offsetright', 'offsetleft',\n 'barspacing', 'xaxislabeldistance', 'yaxislabeldistance', 'theme', 'labeltype', 'donutratio', 'showlabelsoutside', 'showxdistance', 'showydistance', 'shape', 'nodatamessage', 'captions', 'showxaxis', 'showyaxis',\n 'centerlabel', 'customcolors', 'showlegend', 'legendtype', 'xdomain', 'ydomain', 'tooltips', 'linethickness', 'highlightpoints', 'interpolation', 'labelthreshold'],\n barSpacingMap = {\n 'small' : 0.3,\n 'medium' : 0.5,\n 'large' : 0.8\n },\n donutRatioMap = {\n 'small' : 0.3,\n 'medium' : 0.6,\n 'large' : 0.7\n },\n barSpacingMapInvert = invert(barSpacingMap),\n donutRatioMapInvert = invert(donutRatioMap),\n tickformats = {\n 'Thousand': {\n 'prefix': 'K',\n 'divider': 1000\n },\n 'Million' : {\n 'prefix': 'M',\n 'divider': 1000000\n },\n 'Billion' : {\n 'prefix': 'B',\n 'divider': 1000000000\n }\n },\n chartId = '#preview-chart',\n dataTypeJSON = ['Column', 'Line', 'Pie', 'Bar', 'Donut', 'Bubble'], // Charts that supports the data to be JSON;\n lineTypeCharts = ['Line', 'Area', 'Cumulative Line'], // Charts that does not supports the string type of data in the xaxis in the nvd3;\n dataTypeArray = ['Cumulative Line', 'Area'], // Charts that supports the data to be Array\n SAMPLE_DATA = {\n 'group1' : 'Europe',\n 'group2' : 'Asia',\n 'group3' : 'America',\n 'group4' : 'Australia'\n };\n\n// returns true if chart type is pie\nexport const isPieChart = type => type === 'Pie';\n\n// returns true if chart type is line\nexport const isLineChart = type => type === 'Line';\n\n// returns true if chart type is bar\nexport const isBarChart = type => type === 'Bar';\n\n// returns true if chart type is donut\nexport const isDonutChart = type => type === 'Donut';\n\n// returns true if chart type is bubble\nexport const isBubbleChart = type => type === 'Bubble';\n\n// returns true if chart type is column\nexport const isColumnChart = type => type === 'Column';\n\n// returns true if chart type is area\nexport const isAreaChart = type => type === 'Area';\n\n// returns true if chart type is area\nexport const isPieType = type => isPieChart(type) || isDonutChart(type);\n\n// The format of chart data is array of json objects in case of the following types of chart\nexport const isChartDataJSON = type => includes(dataTypeJSON, type) || !includes(chartTypes, type);\n\n// The format of chart data is array of objects in case of the following types of chart\nexport const isChartDataArray = type => includes(dataTypeArray, type);\n\n// returns true is the chart type is 'line', 'area' or 'cumulative line' else false\nexport const isLineTypeChart = type => includes(lineTypeCharts, type);\n\n// X/Y Domain properties are supported only for Column and Area charts\nexport const isAxisDomainSupported = type => isColumnChart(type) || isAreaChart(type);\n\n// Returns bar spacing value\nexport const getBarSpacingValue = (value, prop) => {\n if (prop === 'value') {\n return barSpacingMap[value];\n }\n if (prop === 'key') {\n return barSpacingMapInvert[value];\n }\n};\n\n// Returns radius value\nexport const getRadiusValue = (value, prop) => {\n if (prop === 'value') {\n return donutRatioMap[value];\n }\n if (prop === 'key') {\n return donutRatioMapInvert[value];\n }\n};\n\n// Returns labels config\nexport const getLabelValues = (showlabels, showlabelsoutside, prop) => {\n const labelsConfig: any = {};\n switch (showlabels) {\n case 'hide':\n labelsConfig.showlabels = false;\n break;\n case 'inside':\n labelsConfig.showlabels = true;\n labelsConfig.showlabelsoutside = false;\n break;\n case 'outside':\n labelsConfig.showlabels = true;\n labelsConfig.showlabelsoutside = true;\n break;\n }\n return labelsConfig;\n};\n\n// Construct the sample data\nexport const constructSampleData = (dataType, yaxisLength, shape) => {\n let first_series = [],\n second_series = [],\n third_series = [],\n first_series_array = [],\n second_series_array = [],\n third_series_array = [],\n first_series_bubble = [],\n second_series_bubble = [],\n third_series_bubble = [],\n data = [];\n switch (dataType) {\n case 'jsonFormat':\n first_series = [\n {'x': '01/01/2001', 'y': 4000000},\n {'x': '01/01/2002', 'y': 1000000},\n {'x': '01/01/2003', 'y': 5000000}\n ];\n second_series = [\n {'x': '01/01/2001', 'y': 3000000},\n {'x': '01/01/2002', 'y': 4000000},\n {'x': '01/01/2003', 'y': 7000000}\n ];\n third_series = [\n {'x': '01/01/2001', 'y': 2000000},\n {'x': '01/01/2002', 'y': 8000000},\n {'x': '01/01/2003', 'y': 6000000}\n ];\n data[0] = {\n values: first_series,\n key: SAMPLE_DATA.group1\n };\n if (yaxisLength >= 2) {\n data[1] = {\n values: second_series,\n key: SAMPLE_DATA.group2\n };\n }\n if (yaxisLength >= 3) {\n data[2] = {\n values: third_series,\n key: SAMPLE_DATA.group3\n };\n }\n break;\n case 'lineChartFormat':\n first_series = [\n {'x': 1, 'y': 4000000},\n {'x': 2, 'y': 1000000},\n {'x': 3, 'y': 5000000}\n ];\n second_series = [\n {'x': 1, 'y': 3000000},\n {'x': 2, 'y': 4000000},\n {'x': 3, 'y': 7000000}\n ];\n third_series = [\n {'x': 1, 'y': 2000000},\n {'x': 2, 'y': 8000000},\n {'x': 3, 'y': 6000000}\n ];\n data[0] = {\n values: first_series,\n key: SAMPLE_DATA.group1\n };\n if (yaxisLength >= 2) {\n data[1] = {\n values: second_series,\n key: SAMPLE_DATA.group2\n };\n }\n if (yaxisLength >= 3) {\n data[2] = {\n values: third_series,\n key: SAMPLE_DATA.group3\n };\n }\n break;\n case 'arrayFormat':\n first_series_array = [\n [1, 4000000],\n [2, 1000000],\n [3, 5000000]\n ];\n second_series_array = [\n [1, 3000000],\n [2, 4000000],\n [3, 7000000]\n ];\n third_series_array = [\n [1, 2000000],\n [2, 8000000],\n [3, 6000000]\n ];\n data[0] = {\n values: first_series_array,\n key: SAMPLE_DATA.group1\n };\n if (yaxisLength >= 2) {\n data[1] = {\n values: second_series_array,\n key: SAMPLE_DATA.group2\n };\n }\n if (yaxisLength >= 3) {\n data[2] = {\n values: third_series_array,\n key: SAMPLE_DATA.group3\n };\n }\n break;\n case 'bubbleFormat':\n shape = shape === 'random' ? allShapes[Math.floor(Math.random() * allShapes.length)] : shape;\n first_series_bubble = [\n {'x': 80.66, 'y': 33739900, 'size': 78, 'shape': shape},\n {'x': 79.84, 'y': 81902300, 'size': 90, 'shape': shape},\n {'x': 78.6, 'y': 5523100, 'size': 45, 'shape': shape}\n ];\n second_series_bubble = [\n {'x': 72.73, 'y': 79716200, 'size': 98, 'shape': shape},\n {'x': 80.05, 'y': 61801600, 'size': 20, 'shape': shape},\n {'x': 72.49, 'y': 73137200, 'size': 34, 'shape': shape}\n ];\n third_series_bubble = [\n {'x': 68.09, 'y': 33739900, 'size': 45, 'shape': shape},\n {'x': 81.55, 'y': 7485600, 'size': 78, 'shape': shape},\n {'x': 68.60, 'y': 141850000, 'size': 56, 'shape': shape}\n ];\n data[0] = {\n values: first_series_bubble,\n key: SAMPLE_DATA.group1\n };\n if (yaxisLength >= 2) {\n data[1] = {\n values: second_series_bubble,\n key: SAMPLE_DATA.group2\n };\n }\n if (yaxisLength >= 3) {\n data[2] = {\n values: third_series_bubble,\n key: SAMPLE_DATA.group3\n };\n }\n break;\n case 'pieChartFormat':\n data = [\n {'x': SAMPLE_DATA.group1, 'y': 1000000},\n {'x': SAMPLE_DATA.group2, 'y': 2000000},\n {'x': SAMPLE_DATA.group3, 'y': 3000000},\n {'x': SAMPLE_DATA.group4, 'y': 4000000}\n ];\n break;\n }\n return data;\n};\n\nexport const getDataType = widgetContext => {\n const type = widgetContext.type;\n if (isLineChart(type)) {\n return 'lineChartFormat';\n }\n if (isPieType(type)) {\n return 'pieChartFormat';\n }\n if (isBubbleChart(type)) {\n return 'bubbleFormat';\n }\n return isChartDataJSON(type) ? 'jsonFormat' : 'arrayFormat';\n};\n\n// Sample data to populate when no data is bound\nexport const getSampleData = widgetContext => constructSampleData(getDataType(widgetContext), split(widgetContext.yaxisdatakey, ',').length, widgetContext.shape);\n\n// Check whether X/Y Domain was set to Min and is supported for the present chart\nexport const isAxisDomainValid = (widgetContext, axis) => {\n if (widgetContext[axis + 'domain'] === 'Min' && (isAxisDomainSupported(widgetContext.type))) {\n return true;\n }\n return false;\n};\n\n// Check whether min and max values are finite or not\nexport const areMinMaxValuesValid = values => {\n if (isFinite(values.min) && isFinite(values.max)) {\n return true;\n }\n return false;\n};\n\nexport const getYScaleMinValue = value => {\n const _min = Math.floor(value);\n /* If the number has a) decimal part returning floor value - 0.1\n b) no decimal part returning floor value - 1 */\n return Math.abs(value) - _min > 0 ? value - 0.1 : _min - 1;\n};\n\n// Chooses the data points of line/cumulative line/area chart and highlights them\nexport const highlightPoints = (id, highlightpoints) => {\n const chartSvg = id ? d3.select('#wmChart' + id + ' svg') : d3.select(chartId + ' svg');\n if (highlightpoints) {\n chartSvg.selectAll('.nv-point')\n .style('stroke-width', '6px')\n .style('fill-opacity', '0.95')\n .style('stroke-opacity', '0.95');\n } else {\n chartSvg.selectAll('.nv-point')\n .style('stroke-width', '0px')\n .style('fill-opacity', '0');\n }\n};\n\n// Chooses the line of line/cumulative line and increases the thickness of it\nexport const setLineThickness = (id, thickness) => {\n const chartSvg = id ? d3.select('#wmChart' + id + ' svg') : d3.select(chartId + ' svg');\n thickness = thickness || 1.5;\n\n const lines = chartSvg.selectAll('.nv-line');\n\n if (lines.size() !== 0) {\n lines.style('stroke-width', thickness);\n }\n};\n\n// Constructing a common key value map for preview and canvas mode\nexport const initProperties = (widgetContext, propertyValueMap) => {\n if (!propertyValueMap || isEmptyObject(propertyValueMap)) {\n propertyValueMap = {};\n }\n forEach(basicProperties, prop => {\n if (isUndefined(propertyValueMap[prop])) {\n propertyValueMap[prop] = widgetContext[prop];\n }\n });\n\n return propertyValueMap;\n};\n\nexport const getNumberValue = (value, callback) => {\n return isNaN(parseInt(value, 10)) ? callback(value, 'value') : value;\n};\n\n// Formats the given value according to date format\nexport const getDateFormatedData = (dateFormat, d) => {\n dateFormat = dateFormat || '%x';\n /**\n * if date value is string \"20-05-2019\" then new Date(value) return 20May2019 with current time in India,\n * whereas this will return 19May2019 with time lagging for few hours.\n * This is because it returns UTC time i.e. Coordinated Universal Time (UTC).\n * To create date in local time use moment\n */\n if(dateFormat == '%c') {\n dateFormat = '%a %b %e %X %Y';\n }\n return d3.timeFormat(dateFormat)(new Date(moment(moment(d).format()).valueOf()));\n};\nconst removeTrailingZeros = value => {\n if(!value) {\n return value;\n }\n // Convert value to a string if it's a number\n const stringValue = typeof value === 'number' ? value.toString() : value;\n\n // Remove trailing zeros\n return stringValue.replace(/\\.0+([A-Za-z]*)$/, '$1').replace(/\\.([1-9]+)0+([A-Za-z]*)$/, '.$1$2');\n};\n\n// Formats the given value according to number format\nexport const getNumberFormatedData = (numberFormat, d) => {\n let formattedData,\n divider,\n prefix;\n // formatting the data based on number format selected\n if (numberFormat) {\n let numberFormatter;\n if(numberFormat == 'Thousand' || numberFormat == 'Million' || numberFormat == 'Billion') {\n numberFormatter = d3.format(',.2s');\n } else if(numberFormat == '%') {\n numberFormatter = d3.format('.2%');\n }else if(numberFormat == '.f') {\n numberFormatter = d3.format('.2f');\n } else {\n numberFormatter = d3.format(numberFormat);\n }\n formattedData = numberFormatter(d);\n\n\n // Getting the respective divider[1000,1000000,1000000000] based on the number format choosen\n divider = (tickformats[numberFormat] && tickformats[numberFormat].divider) || 0;\n prefix = tickformats[numberFormat] && tickformats[numberFormat].prefix;\n if (prefix && divider !== 0) {\n formattedData = d3.format('.2f')(d / divider) + prefix;\n }\n } else {\n // Auto formatting the data when no formating option is chosen\n formattedData = d >= 1000 ? d3.format('.1s')(d) : d;\n }\n formattedData = removeTrailingZeros(formattedData);\n return formattedData;\n};\n\n// Set the visibility property of the chart x,y axis due to a bug in the nvd3\nexport const toggleAxisShow = (property, value) => {\n const $xAxis = d3.select(chartId + ' g.nv-axis.nv-x'),\n $yAxis = d3.select(chartId + ' g.nv-axis.nv-y');\n if (property === 'showxaxis') {\n $xAxis.style('visibility', value ? 'visible' : 'hidden');\n } else {\n $yAxis.style('visibility', value ? 'visible' : 'hidden');\n }\n};\n\nexport const modifyLegendPosition = (widgetContext, position, id) => {\n const showLegend = isShowLegend(widgetContext.showlegend),\n chart_Id = id ? '#wmChart' + id : chartId,\n legendWrap = d3.select(chart_Id + ' .nv-legendWrap'),\n legendPadding = 5;\n // Return when showlegend is false\n if (!showLegend || !legendWrap['_groups'][0][0]) {\n return;\n }\n if (position === 'bottom') {\n const legendWrapHeight = legendWrap['_groups'][0][0].getBoundingClientRect().height,\n wrap = d3.select(chart_Id + ' .nv-wrap'),\n wrapTransform = (wrap && wrap.attr('transform')) ? wrap.attr('transform').replace(/, /g, ',') : '',\n coordinates = /translate\\(\\s*([^\\s,)]+)[ ,]([^\\s,)]+)/.exec(wrapTransform),\n getChartHeight = () => {\n let chartHeight = $(chart_Id + ' svg>.nvd3.nv-wrap')[0].getBoundingClientRect().height;\n if (chartHeight === 0) { // fix for IE\n chartHeight = ($(chart_Id + ' svg')[0].getBoundingClientRect().height - (legendWrapHeight + 15));\n }\n return chartHeight;\n };\n legendWrap.attr('transform', 'translate(0 , ' + (getChartHeight() - legendWrapHeight - legendPadding) + ')');\n if (coordinates) {\n wrap.attr('transform', 'translate(' + coordinates[1] + ',' + legendPadding + ')');\n }\n }\n};\n\n// Returns value if legend need to shown or not\nexport const isShowLegend = value => {\n // Old projects will have either true or false\n if (value === 'false' || value === false) {\n return false;\n }\n if (value === 'true' || value === true) {\n return true;\n }\n // New projects will have either 'Hide Legend', 'Show Top', 'Show Bottom'\n return value === 'hide' ? false : true;\n};\n\n/**\n * Customise the tooltip for donut & pie charts and also for charts having only one value attached to yaxis\n * @param key\n * @param label\n */\nexport const customiseTooltip = (chart, propertyValueMap, widgetContext, label?) => {\n chart.tooltip.contentGenerator(key => {\n let xValue = key.data.x, yValue;\n yValue = getNumberFormatedData(propertyValueMap.ynumberformat, key.data.y);\n if (isPieType(widgetContext.type)) {\n label = key.data.x;\n xValue = '';\n }\n return '<table>' +\n '<tbody>' +\n '<tr class=\"value\"><b>' + xValue +\n '</b></tr>' +\n '<tr>' +\n '<td class=\"legend-color-guide\"><div style=\"background-color:' + key.color + ';\"></div></td>' +\n '<td class=\"key\">' + label + '</td>' +\n '<td class=\"value\">' + yValue + '</td>' +\n '</tr>' +\n '</tbody>' +\n '</table>';\n });\n};\n\n// intializes the chart obejct\nexport const initChart = (widgetContext, xDomainValues, yDomainValues, propertyValueMap, isPreview) => {\n propertyValueMap = initProperties(widgetContext, propertyValueMap);\n let chart, colors = [], xaxislabel, yaxislabel, labelConfig, radius, barSpacing,\n showLegend, xAxisValue, hasMultipleYValues;\n const xValue: any = {}, yValue: any = {};\n switch (widgetContext.type) {\n case 'Column':\n barSpacing = getNumberValue(propertyValueMap.barspacing, getBarSpacingValue) || barSpacingMap.medium;\n chart = nv.models.multiBarChart()\n .x(d => d.x)\n .y(d => d.y)\n .reduceXTicks(propertyValueMap.reducexticks)\n .rotateLabels(0)\n .showControls(false)\n .stacked(propertyValueMap.viewtype === 'Stacked' ? true : false)\n .groupSpacing(barSpacing);\n break;\n case 'Cumulative Line':\n chart = nv.models.cumulativeLineChart()\n .x(d => d[0])\n .y(d => d[1])\n .showControls(false)\n .useInteractiveGuideline(propertyValueMap.tooltips)\n .interpolate(propertyValueMap.interpolation);\n break;\n case 'Line':\n chart = nv.models.lineChart()\n .useInteractiveGuideline(propertyValueMap.tooltips)\n .interpolate(propertyValueMap.interpolation);\n break;\n case 'Area':\n chart = nv.models.stackedAreaChart()\n .x(d => d.x)\n .y(d => d.y)\n .clipEdge(true)\n .showControls(false)\n .style(propertyValueMap.areaviewtype)\n .useInteractiveGuideline(propertyValueMap.tooltips)\n .interpolate(propertyValueMap.interpolation);\n break;\n case 'Bar':\n barSpacing = getNumberValue(propertyValueMap.barspacing, getBarSpacingValue) || barSpacingMap.medium;\n chart = nv.models.multiBarHorizontalChart()\n .x(d => d.x)\n .y(d => d.y)\n .showControls(false)\n .stacked(propertyValueMap.viewtype === 'Stacked' ? true : false)\n .showValues(propertyValueMap.showvalues)\n .groupSpacing(barSpacing);\n break;\n case 'Pie':\n case 'Donut':\n labelConfig = getLabelValues(propertyValueMap.showlabels, propertyValueMap.showlabelsoutside, 'value');\n radius = getNumberValue(propertyValueMap.donutratio, getRadiusValue) || donutRatioMap.medium;\n chart = nv.models.pieChart()\n .x(d => d.x)\n .y(d => d.y)\n .showLabels(labelConfig.showlabels)\n .labelType(propertyValueMap.labeltype)\n .valueFormat(d3.format('%'))\n .title(propertyValueMap.centerlabel)\n .labelThreshold(propertyValueMap.labelthreshold || 0.01)\n .labelsOutside(labelConfig.showlabelsoutside);\n if (isDonutChart(widgetContext.type)) {\n chart.donut(true)\n .donutRatio(radius);\n }\n if (propertyValueMap.labeltype === 'key-value') {\n chart.labelType(d => d.data.x + ' ' + d.data.y);\n }\n break;\n case 'Bubble':\n chart = nv.models.scatterChart()\n .x(d => d.x)\n .y(d => d.y)\n .showDistX(propertyValueMap.showxdistance)\n .showDistY(propertyValueMap.showydistance);\n break;\n }\n\n if (xDomainValues) {\n xValue.min = xDomainValues.min.x || xDomainValues.min[0];\n xValue.max = xDomainValues.max.x || xDomainValues.max[0];\n // If the values on the x axis are string then min max values gives Infinity\n if (areMinMaxValuesValid(xValue)) {\n // Reducing the min value to 0.1 so the min value is not missed out\n xValue.min = getYScaleMinValue(xValue.min);\n chart.xDomain([xValue.min, xValue.max]);\n }\n }\n\n if (yDomainValues) {\n // Reducing the min value to 1 so the min value is not missed out\n yValue.min = yDomainValues.min.y || yDomainValues.min[1];\n yValue.max = yDomainValues.max.y || yDomainValues.max[1];\n // If the values on the y axis are string or invalid then min max values gives Infinity\n if (areMinMaxValuesValid(yValue)) {\n // Reducing the min value to 1 so the min value is not missed out\n yValue.min = getYScaleMinValue(yValue.min);\n chart.yDomain([yValue.min, yValue.max]);\n }\n }\n\n // Setting the legend type choosen by user or default it will be furious\n chart.legend.vers((propertyValueMap.legendtype && propertyValueMap.legendtype.toLowerCase()) || 'furious');\n\n if (!includes(chartTypes, widgetContext.type)) {\n chart = nv.models.multiBarChart()\n .x(d => d.x)\n .y(d => d.y);\n }\n\n\n if (isPieType(widgetContext.type)) {\n // In case of pie/donut chart formatting the values of it\n if (propertyValueMap.labeltype === 'percent') {\n chart.valueFormat(d3.format('%'));\n } else {\n chart.valueFormat(d => getNumberFormatedData(propertyValueMap.ynumberformat, d));\n }\n // Customizing the tooltips in case of the pie and donut when labelType is value\n customiseTooltip(chart, propertyValueMap, widgetContext);\n }\n else {\n chart.showXAxis(propertyValueMap.showxaxis)\n .showYAxis(propertyValueMap.showyaxis);\n chart.legendPosition(propertyValueMap.showlegend);\n\n // Setting the labels if they are specified explicitly or taking the axiskeys chosen\n xaxislabel = propertyValueMap.xaxislabel || prettifyLabels(widgetContext.xaxisdatakey) || 'x caption';\n yaxislabel = propertyValueMap.yaxislabel || prettifyLabels(widgetContext.yaxisdatakey) || 'y caption';\n\n // Checking if y axis has multiple values\n if (widgetContext.yaxisdatakey && widgetContext.yaxisdatakey.split(',').length > 1) {\n hasMultipleYValues = true;\n }\n // Customizing the tooltip to show yaxislabel, only if the y axis contains one value\n if (!hasMultipleYValues && !isBubbleChart(widgetContext.type)) {\n customiseTooltip(chart, propertyValueMap, widgetContext, yaxislabel);\n }\n\n // Adding the units to the captions if they are specified\n xaxislabel += propertyValueMap.xunits ? '(' + propertyValueMap.xunits + ')' : '';\n yaxislabel += propertyValueMap.yunits ? '(' + propertyValueMap.yunits + ')' : '';\n\n chart.xAxis\n .axisLabel(xaxislabel)\n .axisLabelDistance(propertyValueMap.xaxislabeldistance)\n .staggerLabels(propertyValueMap.staggerlabels);\n\n // If date format set format based date format\n if (propertyValueMap.xdateformat || (isPreview && !isBubbleChart(widgetContext.type))) {\n if (isLineTypeChart(widgetContext.type)) {\n chart.xAxis.tickFormat(d => {\n // get the actual value\n xAxisValue = isPreview ? dateList[d - 1] : widgetContext.xDataKeyArr[d];\n return getDateFormatedData(propertyValueMap.xdateformat, xAxisValue);\n });\n } else {\n chart.xAxis.tickFormat(d => getDateFormatedData(propertyValueMap.xdateformat, d));\n }\n } else if (propertyValueMap.xnumberformat) {\n chart.xAxis.tickFormat(d => getNumberFormatedData(propertyValueMap.xnumberformat, d));\n } else {\n if (isLineTypeChart(widgetContext.type)) {\n // get the actual value\n chart.xAxis.tickFormat(d => widgetContext.xDataKeyArr[d]);\n }\n }\n chart.yAxis\n .axisLabel(yaxislabel)\n .axisLabelDistance(propertyValueMap.yaxislabeldistance)\n .staggerLabels(propertyValueMap.staggerlabels)\n .tickFormat(d => getNumberFormatedData(propertyValueMap.ynumberformat, d));\n if (isBarChart(widgetContext.type)) {\n chart.valueFormat(d => getNumberFormatedData(propertyValueMap.ynumberformat, d));\n }\n }\n\n // Support for custom colors if user gives direct string of colors in text box\n if (isString(propertyValueMap.customcolors) && propertyValueMap.customcolors) {\n colors = split(propertyValueMap.customcolors, ',');\n }\n if (isArray(propertyValueMap.customcolors)) {\n colors = propertyValueMap.customcolors;\n }\n\n showLegend = isShowLegend(propertyValueMap.showlegend);\n chart.showLegend(showLegend)\n .margin({top: propertyValueMap.offsettop, right: propertyValueMap.offsetright, bottom: propertyValueMap.offsetbottom, left: propertyValueMap.offsetleft})\n .color(colors.length ? colors : themes[propertyValueMap.theme].colors);\n\n chart.tooltip.enabled(propertyValueMap.tooltips);\n widgetContext.message = propertyValueMap.nodatamessage || 'No data found';\n // setting the no data message\n chart.noData(widgetContext.message);\n\n if (isLineTypeChart(widgetContext.type) && widgetContext.highlightpoints) {\n chart.dispatch.on('stateChange', () => {\n setTimeout(() => postPlotChartProcess(widgetContext), 100);\n });\n }\n\n if (widgetContext.showlegend && (widgetContext.type === 'Donut' || widgetContext.type === 'Pie')) {\n if(widgetContext.showlegend === 'right') {\n chart.legendPosition('right');\n }\n }\n return chart;\n};\n\n// @ts-ignore\nexport const postPlotChartProcess = (widgetContext, isPreview?) => {\n const id = isPreview ? null : widgetContext.$id;\n // If user sets to highlight the data points and increase the thickness of the line\n if (isLineTypeChart(widgetContext.type)) {\n setLineThickness(id, widgetContext.linethickness);\n highlightPoints(id, widgetContext.highlightpoints);\n }\n // Modifying the legend position only when legend is shown\n // if (widgetContext.showlegend) {\n // modifyLegendPosition(widgetContext, widgetContext.showlegend, id);\n // }\n};\n\n// @ts-ignore\nexport const getDateList = () => dateList;\n\n","<div class=\"panel-heading\" *ngIf=\"title\">\n <h3 class=\"panel-title\">\n <div class=\"pull-left\"><i class=\"app-icon panel-icon {{iconclass}}\" [class.ng-hide]=\"!iconclass\"></i></div>\n <div class=\"heading\" [innerHTML]=\"title\"></div>\n <div class=\"description\" *ngIf=\"subheading\" [innerHTML]=\"subheading\"></div>\n </h3>\n</div>\n<div class=\"app-chart-inner\" [ngClass]=\"{'loading':isLoadInProgress, 'panel-body': title}\">\n <svg></svg>\n <div class=\"wm-content-info readonly-wrapper\" *ngIf=\"showContentLoadError && showNoDataMsg\">\n <p class=\"wm-message\" [title]=\"hintMsg\" [ngClass]=\"{'error': invalidConfig}\" [innerText]=\"errMsg\"></p>\n </div>\n <div wmSpinner show.bind=\"isLoadInProgress\" caption.bind=\"loadingdatamsg\"></div>\n</div>\n","import {\n AfterViewInit,\n OnDestroy,\n Component,\n HostBinding,\n Injector,\n ViewEncapsulation,\n Optional,\n Inject\n} from '@angular/core';\n\nimport {\n App,\n DataSource,\n getClonedObject,\n isDataSourceEqual,\n isEmptyObject,\n isNumberType,\n prettifyLabels,\n removeAttr,\n triggerFn,\n isMobileApp,\n noop\n} from '@wm/core';\nimport { APPLY_STYLES_TYPE, IRedrawableComponent, provideAsWidgetRef, StylableComponent, styler, } from '@wm/components/base';\n\nimport { registerProps } from './chart.props';\nimport { allShapes, getDateList, getSampleData, initChart, isAreaChart, isAxisDomainValid, isBarChart, isBubbleChart, isChartDataArray, isChartDataJSON, isLineTypeChart, isPieType, postPlotChartProcess } from './chart.utils';\nimport {\n concat, debounce, fill,\n first,\n forEach, forEachRight,\n get, groupBy, includes,\n intersection,\n isArray, isEmpty, isObject, keys,\n map, max,\n maxBy,\n minBy,\n orderBy,\n replace,\n split,\n uniq\n} from \"lodash-es\";\n\ndeclare const $;\n\ndeclare const d3, nv;\n\nconst WIDGET_CONFIG = {widgetType: 'wm-chart', hostClass: 'app-chart'};\n\nconst options = {\n 'Bubble' : ['bubblesize', 'shape']\n },\n NONE = 'none',\n advanceDataProps = ['aggregation', 'aggregationcolumn', 'groupby', 'orderby'],\n // XPaths to get actual data of data points in charts\n chartDataPointXpath = {\n 'Column' : 'rect.nv-bar',\n 'Bar' : 'g.nv-bar',\n 'Area' : '.nv-stackedarea .nv-point',\n 'Cumulative Line': '.nv-cumulativeLine .nv-scatterWrap path.nv-point',\n 'Line' : '.nv-lineChart .nv-scatterWrap path.nv-point',\n 'Pie' : '.nv-pieChart .nv-slice path',\n 'Donut' : '.nv-pieChart .nv-slice path',\n 'Bubble' : '.nv-scatterChart .nv-point-paths path'\n },\n // all properties of the chart\n allOptions = ['bubblesize', 'shape'],\n styleProps = {\n 'fontunit' : 'font-size',\n 'fontsize' : 'font-size',\n 'color' : 'fill',\n 'fontfamily' : 'font-family',\n 'fontweight' : 'font-weight',\n 'fontstyle' : 'font-style',\n 'textdecoration': 'text-decoration'\n },\n // Getting the relevant aggregation function based on the selected option\n aggregationFnMap = {\n 'average' : 'AVG',\n 'count' : 'COUNT',\n 'maximum' : 'MAX',\n 'minimum' : 'MIN',\n 'sum' : 'SUM'\n };\n\nconst getBooleanValue = val => {\n if (val === true || val === 'true') {\n return true;\n }\n if (val === false || val === 'false') {\n return false;\n }\n return val;\n};\n\n// returns orderby columns and their orders in two separate arrays\nconst getLodashOrderByFormat = orderby => {\n let columns;\n const orderByColumns = [],\n orders = [];\n\n forEach(split(orderby, ','), function (col) {\n columns = split(col, ':');\n orderByColumns.push(columns[0]);\n orders.push(columns[1]);\n });\n return {\n 'columns' : orderByColumns,\n 'orders' : orders\n };\n};\n\n// Replacing the '.' by the '$' because '.' is not supported in the alias names\nconst getValidAliasName = aliasName => aliasName ? aliasName.replace(/\\./g, '$') : null;\n\n// Applying the font related styles for the chart\nconst setTextStyle = (properties, id) => {\n const charttext = d3.select('#wmChart' + id + ' svg').selectAll('text');\n if (!charttext.empty()) {\n charttext.style(properties);\n }\n};\n\nconst angle = d => {\n const a = (d.startAngle + d.endAngle) * 90 / Math.PI - 90;\n return a > 90 ? a - 180 : a;\n};\n\n@Component({\n selector: 'div[wmChart]',\n templateUrl: './chart.component.html',\n styleUrls: ['../../../../../node_modules/@wavemaker/nvd3/build/nv.d3.min.css'],\n providers: [\n provideAsWidgetRef(ChartComponent)\n ],\n encapsulation: ViewEncapsulation.None\n})\nexport class ChartComponent extends StylableComponent implements AfterViewInit, OnDestroy, IRedrawableComponent {\n static initializeProps = registerProps();\n\n xaxisdatakey;\n yaxisdatakey;\n groupby;\n aggregation;\n aggregationcolumn;\n isVisuallyGrouped;\n orderby;\n iconclass = '';\n type: string;\n showContentLoadError;\n invalidConfig;\n errMsg;\n shape: string;\n datasource: any;\n fontsize: string;\n selecteditem: any;\n fontunit: string;\n offsettop: number;\n offsetleft: number;\n offsetright: number;\n offsetbottom: number;\n showlabels: any;\n theme: string;\n\n private $id;\n private scopedataset: any;\n private binddataset: any;\n private showlabelsoutside: any;\n private _resizeFn: any;\n private chart: any;\n private clearCanvas: boolean;\n public isLoadInProgress: boolean;\n private filterFields: boolean | any;\n private dataset: any;\n private axisoptions: any;\n private numericColumns: any;\n private nonPrimaryColumns: any = [];\n private variableInflight: any;\n private chartReady: boolean;\n private xDataKeyArr: any = [];\n private xAxisDataType: string;\n private bubblesize: any;\n public showNoDataMsg: any;\n private sampleData: any[];\n private chartData: any[] = [];\n private _processedData: any[] = [];\n private _subsciptions: any = [];\n\n @HostBinding('class.panel') title;\n\n isGroupByEnabled() {\n return !!(this.groupby && this.groupby !== NONE);\n }\n\n // Check if x and y axis that are chosen are valid to plot chart\n isValidAxis() {\n // Check if x axis and y axis are chosen and are not equal\n return this.binddataset ? (this.xaxisdatakey && this.yaxisdatakey) : true;\n }\n\n // Check if aggregation is chosen\n isAggregationEnabled() {\n return !!((this.isGroupByEnabled() && this.aggregation !== NONE && this.aggregationcolumn));\n }\n\n // Check if either groupby, aggregation or orderby is chosen\n isDataFilteringEnabled() {\n /*Query need to be triggered if any of the following cases satisfy\n * 1. Group By and aggregation both chosen\n * 2. Only Order By is chosen\n * */\n\n return this.isAggregationEnabled() || (!this.isVisuallyGrouped && this.orderby);\n }\n\n /*Charts like Line,Area,Cumulative Line does not support any other datatype\n other than integer unlike the column and bar.It is a nvd3 issue. Inorder to\n support that this is a fix*/\n getxAxisVal(dataObj, xKey, index) {\n const value = get(dataObj, xKey);\n // If x axis is other than number type then add indexes\n if (isLineTypeChart(this.type) && !isNumberType(this.xAxisDataType)) {\n // Verification to get the unique data keys\n this.xDataKeyArr.push(value);\n // Check if it is of type Date\n if (value instanceof Date) {\n return value;\n } else {\n return index;\n }\n }\n return value;\n }\n\n // Getting the min and max values among all the x values\n getXMinMaxValues(datum) {\n if (!datum) {\n return;\n }\n const xValues: any = {};\n /*\n compute the min x value\n eg: When data has objects\n input: [{x:1, y:2}, {x:2, y:3}, {x:3, y:4}]\n min x: 1\n eg: When data has arrays\n input: [[10, 20], [20, 30], [30, 40]];\n min x: 10\n */\n xValues.min = minBy(datum.values, dataObject => dataObject.x || dataObject[0]);\n /*\n compute the max x value\n eg: When data has objects\n input: [{x:1, y:2}, {x:2, y:3}, {x:3, y:4}]\n max x: 3\n eg: When data has arrays\n input: [[10, 20], [20, 30], [30, 40]];\n max x: 30\n */\n xValues.max = maxBy(datum.values, dataObject => dataObject.x || dataObject[0]);\n return xValues;\n }\n\n // Getting the min and max values among all the y values\n getYMinMaxValues(datum) {\n const yValues: any = {},\n minValues = [],\n maxValues = [];\n if (!datum) {\n return;\n }\n\n /*\n Getting the min and max y values among all the series of data\n compute the min y value\n eg: When data has objects\n input: [[{x:1, y:2}, {x:2, y:3}, {x:3, y:4}], [{x:2, y:3}, {x:3, y:4}, {x:4, y:5}]]\n min y values : '2'(among first set) & '3'(among second set)\n max y values : '4'(among first set) & '5'(among second set)\n\n eg: When data has arrays\n input: [[[10, 20], [20, 30], [30, 40]], [[20, 30], [30, 40], [40, 50]]]\n min y values : '20'(among first set) & '30'(among second set)\n max y values : '40'(among first set) & '50'(among second set)\n */\n\n forEach(datum, data => {\n minValues.push(minBy(data.values, function (dataObject) {\n return dataObject.y || dataObject[1];\n }));\n maxValues.push(maxBy(data.values, function (dataObject) {\n return dataObject.y || dataObject[1];\n }));\n });\n // Gets the least and highest values among all the min and max values of respective series of data\n yValues.min = minBy(minValues, dataObject => dataObject.y || dataObject[1]);\n yValues.max = maxBy(maxValues, dataObject => dataObject.y || dataObject[1]);\n return yValues;\n }\n\n // If the x-axis values are undefined, we return empty array else we return the values\n getValidData(values) {\n return (values.length === 1 && values[0] === undefined) ? [] : values;\n }\n\n // Returns the single data point based on the type of the data chart accepts\n valueFinder(dataObj, xKey, yKey, index?, shape?) {\n const xVal = this.getxAxisVal(dataObj, xKey, index),\n value = get(dataObj, yKey),\n yVal = parseFloat(value) || value,\n size = parseFloat(dataObj[this.bubblesize]) || 2;\n let dataPoint: any = {};\n\n if (isChartDataJSON(this.type)) {\n dataPoint.x = xVal;\n dataPoint.y = yVal;\n // only Bubble chart has the third dimension\n if (isBubbleChart(this.type)) {\n dataPoint.size = size;\n dataPoint.shape = shape || 'circle';\n }\n } else if (isChartDataArray(this.type)) {\n dataPoint = [xVal, yVal];\n }\n // Adding actual unwrapped data to chart data to use at the time of selected data point of chart event\n dataPoint._dataObj = dataObj;\n return dataPoint;\n }\n\n // Setting appropriate error messages\n setErrMsg(message) {\n if (this.showNoDataMsg) {\n this.showContentLoadError = true;\n this.invalidConfig = true;\n // TODO: Set the locale from the message\n this.errMsg = ''; // $rootScope.locale[message];\n }\n }\n\n processChartData() {\n this.sampleData = getSampleData(this);\n // scope variables used to keep the actual key values for x-axis\n this.xDataKeyArr = [];\n // Plotting the chart with sample data when the chart dataset is not bound\n if (!this.binddataset) {\n this.xDataKeyArr = getDateList();\n return this.sampleData;\n }\n\n if (!this.chartData || !this.chartData.length) {\n return [];\n }\n\n let datum = [],\n yAxisKey,\n shapes: any = [],\n values: any = [];\n const xAxisKey = this.xaxisdatakey,\n yAxisKeys = this.yaxisdatakey ? this.yaxisdatakey.split(',') : [],\n dataSet = this.chartData;\n\n if (isArray(dataSet)) {\n if (isPieType(this.type)) {\n yAxisKey = yAxisKeys[0];\n datum = map(dataSet, (dataObj, index) => {\n if (!isEmptyObject(dataSet[index])) {\n return this.valueFinder(dataSet[index], xAxisKey, yAxisKey);\n }\n });\n datum = this.getValidData(datum);\n } else {\n if (isBubbleChart(this.type)) {\n shapes = this.shape === 'random' ? allShapes : this.shape;\n }\n yAxisKeys.forEach((yAxisKey, series) => {\n values = map(dataSet, (dataObj, index) => {\n if (!isEmptyObject(dataSet[index])) {\n return this.valueFinder(dataSet[index], xAxisKey, yAxisKey, index, (isArray(shapes) && shapes[series]) || this.shape);\n }\n });\n values = this.getValidData(values);\n datum.push({\n values: values,\n key: prettifyLabels(yAxisKey)\n });\n });\n }\n }\n return datum;\n }\n\n setChartData(data) {\n if (data) {\n this._processedData = data;\n }\n }\n\n getChartData() {\n return this._processedData;\n }\n\n // constructing the grouped data based on the selection of orderby, x & y axis\n getVisuallyGroupedData(queryResponse, groupingColumn) {\n let groupData: any = {},\n groupValues: any = [],\n orderByDetails,\n maxLength;\n const chartData: any = [],\n _isAreaChart = isAreaChart(this.type),\n yAxisKey = first(split(this.yaxisdatakey, ','));\n this.xDataKeyArr = [];\n queryResponse = orderBy(queryResponse, split(this.groupby, ','));\n if (this.orderby) {\n orderByDetails = getLodashOrderByFormat(this.orderby);\n queryResponse = orderBy(queryResponse, orderByDetails.columns, orderByDetails.orders);\n }\n queryResponse = groupBy(queryResponse, groupingColumn);\n // In case of area chart all the series data should be of same length\n if (_isAreaChart) {\n maxLength = max(map(queryResponse, obj => obj.length));\n }\n forEach(queryResponse, (values, groupKey) => {\n groupValues = isAreaChart ? fill(new Array(maxLength), [0, 0]) : [];\n forEachRight(values, (value, index) => {\n groupValues[index] = this.valueFinder(value, this.xaxisdatakey, yAxisKey, index);\n });\n groupData = {\n key : groupKey,\n values : groupValues\n };\n chartData.push(groupData);\n });\n return chartData;\n }\n\n /*Decides whether the data should be visually grouped or not\n Visually grouped when a different column is choosen in the group by other than x and y axis and aggregation is not chosen*/\n getGroupingDetails() {\n if (this.isGroupByEnabled() && !this.isAggregationEnabled()) {\n let isVisuallyGrouped = false,\n visualGroupingColumn,\n groupingExpression,\n columns: any = [],\n groupingColumnIndex;\n const groupbyColumns = this.groupby && this.groupby !== NONE ? this.groupby.split(',') : [],\n yAxisKeys = this.yaxisdatakey ? this.yaxisdatakey.split(',') : [];\n\n if (groupbyColumns.length > 1) {\n /*Getting the group by column which is not selected either in x or y axis*/\n groupbyColumns.every((column, index) => {\n if (this.xaxisdatakey !== column && $.inArray(column, yAxisKeys) === -1) {\n isVisuallyGrouped = true;\n visualGroupingColumn = column;\n groupingColumnIndex = index;\n groupbyColumns.splice(groupingColumnIndex, 1);\n return false;\n }\n return true;\n });\n // Constructing the groupby expression\n if (visualGroupingColumn) {\n columns.push(visualGroupingColumn);\n }\n\n if (groupbyColumns.length) {\n columns = concat(columns, groupbyColumns);\n }\n }\n // If x and y axis are not included in aggregation need to be included in groupby\n if (this.xaxisdatakey !== this.aggregationcolumn) {\n columns.push(this.xaxisdatakey);\n }\n forEach(yAxisKeys, key => {\n if (key !== this.aggregationcolumn) {\n columns.push(key);\n }\n });\n groupingExpression = columns.join(',');\n // set isVisuallyGrouped flag in scope for later use\n this.isVisuallyGrouped = isVisuallyGrouped;\n\n return {\n expression: groupingExpression,\n isVisuallyGrouped: isVisuallyGrouped,\n visualGroupingColumn: visualGroupingColumn\n };\n }\n return {\n expression: '',\n isVisuallyGrouped: false,\n visualGroupingColumn: ''\n };\n }\n\n // Function to get the aggregated data after applying the aggregation & group by or order by operations.\n getAggregatedData(callback) {\n const variable: any = this.datasource,\n yAxisKeys = this.yaxisdatakey ? this.yaxisdatakey.split(',') : [],\n data: any = {};\n let sortExpr,\n columns: any = [],\n colAlias,\n orderByColumns,\n groupByFields: any = [];\n\n if (!variable) {\n return;\n }\n if (this.isGroupByEnabled()) {\n groupByFields = split(this.groupby, ',');\n }\n if (this.orderby) {\n sortExpr = replace(this.orderby, /:/g, ' ');\n columns = uniq(concat(columns, groupByFields, [this.aggregationcolumn]));\n orderByColumns = getLodashOrderByFormat(this.orderby).columns;\n // If the orderby column is chosen either in groupby or orderby then replace . with $ for that column\n forEach(intersection(columns, orderByColumns), col => {\n colAlias = getValidAliasName(col);\n // @ts-ignore\n sortExpr = replace(sortExpr, col, colAlias);\n });\n }\n if (this.isAggregationEnabled()) {\n // Send the group by in the aggregations api only if aggregation is also chosen\n data.groupByFields = groupByFields;\n data.aggregations = [\n {\n 'field': this.aggregationcolumn,\n 'type': aggregationFnMap[this.aggregation],\n 'alias': getValidAliasName(this.aggregationcolumn)\n }\n ];\n }\n // Execute the query.\n variable.execute('getAggregatedData', {\n 'aggregations' : data,\n 'sort' : sortExpr\n }).then(response => {\n // Transform the result into a format supported by the chart.\n const chartData: any = [],\n aggregationAlias: any = getValidAliasName(this.aggregationcolumn),\n xAxisAliasKey = getValidAliasName(this.xaxisdatakey),\n yAxisAliasKeys = [];\n\n yAxisKeys.forEach(yAxisKey => yAxisAliasKeys.push(getValidAliasName(yAxisKey)));\n\n forEach(response.body.content, (responseContent) => {\n const obj = {};\n // Set the response in the chartData based on 'aggregationColumn', 'xAxisDataKey' & 'yAxisDataKey'.\n if (this.isAggregationEnabled()) {\n obj[this.aggregationcolumn] = responseContent[aggregationAlias];\n obj[this.aggregationcolumn] = get(responseContent, aggregationAlias) || get(responseContent, this.aggregationcolumn);\n }\n\n obj[this.xaxisdatakey] = get(responseContent, xAxisAliasKey) || get(responseContent, this.xaxisdatakey);\n\n yAxisKeys.forEach((yAxisKey, index) => {\n obj[yAxisKey] = responseContent[yAxisAliasKeys[index]];\n obj[yAxisKey] = get(responseContent, yAxisAliasKeys[index]) || get(responseContent, yAxisKey);\n });\n\n chartData.push(obj);\n });\n\n this.chartData = chartData;\n\n triggerFn(callback);\n }, () => {\n this.chartData = [];\n this.setErrMsg('MESSAGE_ERROR_FETCH_DATA');\n triggerFn(callback);\n });\n }\n\n // This function sets maximum width for the labels that can be displayed.This will helpful when they are overlapping\n setLabelsMaxWidth() {\n let xTicks,\n tickWidth,\n maxLength,\n xDist,\n yDist,\n totalHeight,\n maxNoLabels,\n nthElement,\n labelsAvailableWidth,\n barWrapper,\n yAxisWrapper,\n svgWrapper;\n const fontsize = parseInt(this.fontsize, 10) || 12,\n isBarchart = isBarChart(this.type);\n // getting the x ticks in the chart\n xTicks = $('#wmChart' + this.$id + ' svg').find('g.nv-x').find('g.tick').find('text');\n\n // getting the distance between the two visible ticks associated with visible text\n xTicks.each(function () {\n const xTick = $(this);\n let xTransform,\n tickDist;\n if (xTick.text() && xTick.css('opacity') === '1') {\n xTransform = xTick.parent().attr('transform').split(',');\n xDist = parseFloat(xTransform[0].substr(10));\n yDist = parseFloat(xTransform[1] || '0');\n if (!isBarchart && xDist > 0) {\n tickDist = xDist;\n } else if (yDist > 0) {\n tickDist = yDist;\n }\n if (tickWidth) {\n tickWidth = tickDist - tickWidth;\n return false;\n }\n tickWidth = tickDist;\n return true;\n }\n });\n\n // In case of bar chart getting the available space for the labels to be displayed\n if (isBarchart) {\n barWrapper = $('#wmChart' + this.$id + ' svg>g.nv-wrap>g>g.nv-barsWrap')[0];\n yAxisWrapper = $('#wmChart' + this.$id + ' svg>g.nv-wrap>g>g.nv-y')[0];\n svgWrapper = $('#wmChart' + this.$id + ' svg')[0];\n // getting the total height of the chart\n totalHeight = barWrapper ? barWrapper.getBoundingClientRect().height : 0;\n // getting the labels available space\n labelsAvailableWidth = yAxisWrapper ? svgWrapper.getBoundingClientRect().width - yAxisWrapper.getBoundingClientRect().width : svgWrapper.getBoundingClientRect().width;\n // Setting the max length for the label\n maxLength = Math.round(labelsAvailableWidth / fontsize);\n // if available space for each label is less than the font-size\n // then limiting the labels to be displayed\n if (tickWidth < fontsize) {\n // calculate the maximum no of labels to be fitted\n maxNoLabels = totalHeight / fontsize;\n // showing only the nth element\n nthElement = Math.ceil(this.chartData.length / maxNoLabels);\n // showing up only some labels\n d3.select('#wmChart' + this.$id + ' svg').select('g.nv-x').selectAll('g.tick').select('text').each(function (text, i) {\n // hiding every non nth element\n if (i % nthElement !== 0) {\n d3.select(this).attr('opacity', 0);\n }\n });\n }\n } else {\n // Setting the max length for the label\n maxLength = Math.round(tickWidth / fontsize);\n }\n\n // maxLength should always be a positive number\n maxLength = Math.abs(maxLength);\n // Validating if every label exceeds the max length and if so limiting the length and adding ellipsis\n xTicks.each(function () {\n if (this.textContent.length > maxLength) {\n this.textContent = this.textContent.substr(0, maxLength) + '...';\n }\n });\n }\n\n // Returns the columns of that can be choosen in the x and y axis\n getDefaultColumns() {\n let type,\n stringColumn,\n i,\n temp;\n const defaultColumns = [],\n columns = this.datasource.execute(DataSource.Operation.GET_PROPERTIES_MAP) || [];\n\n for (i = 0; i < columns.length && defaultColumns.length <= 2; i += 1) {\n type = columns[i].type;\n if (!columns[i].isRelated && (isNumberType(type))) {\n defaultColumns.push(columns[i].fieldName);\n } else if (type === 'string' && !stringColumn) {\n stringColumn = columns[i].fieldName;\n }\n }\n // Other than bubble chart x: string type y: number type\n // Bubble chart x: number type y: number type\n if (stringColumn && defaultColumns.length > 0 && !isBubbleChart(this.type)) {\n temp = defaultColumns[0];\n defaultColumns[0] = stringColumn;\n defaultColumns[1] = temp;\n }\n\n return defaultColumns;\n }\n\n // Call user defined javascript function when user links it to click event of the widget.\n attachClickEvent() {\n let dataObj;\n d3.select('#wmChart' + this.$id + ' svg').selectAll(chartDataPointXpath[this.type]).style('pointer-events', 'all')\n .on('click', (event, data, index) => {\n switch (this.type) {\n case 'Column':\n case 'Bar':\n dataObj = data._dataObj;\n break;\n case 'Pie':\n case 'Donut':\n dataObj = data.data._dataObj;\n break;\n case 'Area':\n case 'Cumulative Line':\n case 'Line':\n dataObj = data[0]._dataObj;\n break;\n case 'Bubble':\n dataObj = data;\n break;\n }\n this.selecteditem = dataObj;\n this.invokeEventCallback('select', {\n $event: event,\n selectedChartItem: data,\n selectedItem: this.selecteditem\n });\n });\n\n }\n\n /* Returns Y Scale min value\n Ex: Input : 8.97\n Output : 8.87\n\n Input : 8\n Output : 7\n */\n\n postPlotProcess(chart) {\n let chartSvg,\n pieLabels,\n pieGroups,\n angleArray;\n const styleObj = {};\n const element = this.$element;\n\n postPlotChartProcess(this);\n\n if (!isPieType(this.type)) {\n this.setLabelsMaxWidth();\n } else if (!this.showlabelsoutside) {\n /** Nvd3 has a issue in rotating text. So we will use this as a temp fix.\n * If the issue is resolved there, we can remove this.*/\n /* If it is a donut chart, then rotate the text and position them*/\n chartSvg = d3.select('#wmChart' + this.$id + ' svg');\n pieLabels = chartSvg.select('.nv-pieLabels').selectAll('.nv-label');\n pieGroups = chartSvg.select('.nv-pie').selectAll('.nv-slice');\n angleArray = [];\n if (pieGroups && pieGroups.length) {\n pieGroups.each(function () {\n d3.select(this).attr('transform', function (d) {\n angleArray.push(angle(d));\n });\n });\n pieLabels.each(function (d, i) {\n const group = d3.select(this);\n $(group[0][0]).find('text').attr('transform', 'rotate(' + angleArray[i] + ')');\n });\n }\n }\n\n // prepare text style props object and set\n forEach(styleProps, (value, key) => {\n if (key === 'fontsize' || key === 'fontunit') {\n styleObj[value] = this.fontsize + this.fontunit;\n } else {\n styleObj[value] = this[key];\n }\n });\n setTextStyle(styleObj, this.$id);\n\n /*\n * allow window-resize functionality, for only-run mode as\n * updating chart is being handled by watchers of height & width in studio-mode\n * */\n triggerFn(this._resizeFn && this._resizeFn.clear);\n this._resizeFn = nv.utils.windowResize(() => {\n if (element[0].getBoundingClientRect().height) {\n chart.update();\n postPlotChartProcess(this);\n if (!isPieType(this.type)) {\n this.setLabelsMaxWidth();\n }\n } else {\n // TODO: get parents of accordion type\n /*let parent = element.closest('.app-accordion-panel, .tab-pane').isolateScope();\n if (parent) {\n parent.initialized = false;\n }*/\n }\n });\n }\n\n // prepares and configures the chart properties\n configureChart() {\n // Copy the data only in case of pie chart with default data\n // Reason : when multiple pie charts are bound to same data, first chart theme will be applied to all charts\n let xDomainValues;\n let yDomainValues;\n let chart;\n let beforeRenderVal;\n const yformatOptions: any = {};\n\n if (this._processedData.length > 0) {\n if (isAxisDomainValid(this, 'x')) {\n xDomainValues = this.binddataset ? this.getXMinMaxValues(this._processedData[0]) : { 'min' : {'x': 1}, 'max' : {'x' : 5}};\n }\n if (isAxisDomainValid(this, 'y')) {\n yDomainValues = this.binddataset ? this.getYMinMaxValues(this._processedData) : { 'min' : {'y' : 1}, 'max' : {'y' : 5}};\n }\n }\n\n if (isPieType(this.type) && (!this.binddataset || !this.scopedataset)) {\n this._processedData = getClonedObject(this.scopedataset || this._processedData);\n }\n\n // get the chart object\n chart = initChart(this, xDomainValues, yDomainValues, null, !this.binddataset);\n\n if (isArray(this._processedData)) {\n // WMS-19499: To remove chart X-axis old ticks when chart data loaded dynamically.\n const oldgTicks = $('#wmChart' + this.$id + ' svg').find('g.nv-x').find('g.tick');\n if (oldgTicks && oldgTicks.length) {\n oldgTicks.remove();\n }\n beforeRenderVal = this.invokeEventCallback('beforerender', { 'chartInstance' : chart});\n if (beforeRenderVal) {\n chart = beforeRenderVal;\n }\n this.chart = chart;\n // changing the default no data message\n d3.select('#wmChart' + this.$id + ' svg')\n .datum(this._processedData)\n .call(this.chart);\n this.postPlotProcess(chart);\n return chart;\n }\n }\n\n // Plotting the chart with set of the properties set to it\n plotChart() {\n const element = this.$element;\n // call user-transformed function\n this.chartData = (this.invokeEventCallback('transform')) || this.chartData;\n\n // Getting the order by data only in run mode. The order by applies for all the charts other than pie and donut charts\n if (this.isVisuallyGrouped && !isPieType(this.type)) {\n this._processedData = this.chartData;\n } else {\n this._processedData = this.processChartData();\n }\n // checking the parent container before plotting the chart\n if (!element[0].getBoundingClientRect().height) {\n return;\n }\n if (this.clearCanvas) {\n // empty svg to add-new chart\n element.find('svg').replaceWith('<svg></svg>');\n this.clearCanvas = false;\n }\n\n // In case of invalid axis show no data available message\n if (!this.isValidAxis()) {\n this._processedData = [];\n }\n nv.addGraph(() => this.configureChart(), () => {\n /*Bubble chart has an time out delay of 300ms in their implementation due to which we\n * won't be getting required data points on attaching events\n * hence delaying it 600ms*/\n setTimeout( () => {\n this.attachClickEvent();\n }, 600);\n });\n this.isLoadInProgress = false;\n }\n // TODO: Need way to figure out if the datasource is a live source\n get isLiveVariable() {\n // setting the flag for the live variable in the scope for the checks\n const variableObj = this.datasource;\n return variableObj && variableObj.category === 'wm.LiveVariable';\n }\n\n plotChartProxy() {\n this.showContentLoadError = false;\n this.invalidConfig = false;\n // Checking if x and y axis are chosen\n this.isLoadInProgress = true;\n const groupingDetails = this.getGroupingDetails();\n // If aggregation/group by/order by properties have been set, then get the aggregated data and plot the result in the chart.\n // TODO: datasource for live variable detection\n if (this.binddataset && this.isLiveVariable && (this.filterFields || this.isDataFilteringEnabled())) {\n this.getAggregatedData(() => this.plotChart());\n } else { // Else, simply plot the chart.\n // In case of live variable resetting the aggregated data to the normal dataset when the aggregation has been removed\n if (this.dataset && this.isLiveVariable) {\n this.chartData = this.dataset;\n if (this.isGroupByEnabled() && groupingDetails.isVisuallyGrouped) {\n this.chartData = this.getVisuallyGroupedData(this.chartData, groupingDetails.visualGroupingColumn);\n }\n\n }\n this.plotChart();\n }\n }\n\n // sets the default x and y axis options\n setDefaultAxisOptions() {\n const defaultColumns = this.getDefaultColumns();\n // If we get the valid default columns then assign them as the x and y axis\n // In case of service variable we may not get the valid columns because we cannot know the datatypes\n this.xaxisdatakey = defaultColumns[0] || null;\n this.yaxisdatakey = defaultColumns[1] || null;\n }\n\n getCutomizedOptions(prop, fields) {\n const groupByColumns = split(this.groupby, ','),\n aggColumns = split(this.aggregationcolumn, ',');\n if (!this.binddataset) {\n return fields;\n }\n if (!this.axisoptions) {\n this.axisoptions = fields;\n }\n let newOptions;\n switch (prop) {\n case 'xaxisdatakey':\n // If group by enabled, columns chosen in groupby will be populated in x axis options\n if (this.isGroupByEnabled()) {\n newOptions = groupByColumns;\n }\n break;\n case 'yaxisdatakey':\n // If aggregation by enabled, columns chosen in aggregation will be populated in y axis options\n if (this.isAggregationEnabled()) {\n newOptions = aggColumns;\n } else if (this.isLiveVariable) {\n // In case of live variable populating only numeric columns\n newOptions = this.numericColumns;\n }\n break;\n case 'groupby':\n // Filtering only non primary key columns\n if (this.isLiveVariable && this.nonPrimaryColumns && this.nonPrimaryColumns.length) {\n newOptions = this.nonPrimaryColumns;\n }\n break;\n case 'aggregationcolumn':\n // Set the 'aggregationColumn' to show all keys in case of aggregation function is count or to numeric keys in all other cases.\n if (this.isLiveVariable && this.isAggregationEnabled() && this.aggregation !== 'count') {\n newOptions = this.numericColumns;\n }\n break;\n case 'orderby':\n // Set the 'aggregationColumn' to show all keys in case of aggregation function is count or to numeric keys in all other cases.\n if (this.isLiveVariable && this.isAggregationEnabled()) {\n newOptions = uniq(concat(groupByColumns, aggColumns));\n }\n break;\n case 'bubblesize':\n if (this.numericColumns && this.numericColumns.length) {\n newOptions = this.numericColumns;\n }\n break;\n }\n\n return newOptions || fields || this.axisoptions;\n }\n\n // Function that iterates through all the columns and then fetching the numeric and non primary columns among them\n setNumericandNonPrimaryColumns() {\n let columns,\n type;\n const propertiesMap = this.datasource.execute(DataSource.Operation.GET_PROPERTIES_MAP);\n this.numericColumns = [];\n this.nonPrimaryColumns = [];\n // Fetching all the columns\n if (this.dataset && !isEmpty(propertiesMap)) {\n columns = []; // TODO: fetchPropertiesMapColumns(propertiesMap);\n }\n\n if (columns) {\n // Iterating through all the columns and fetching the numeric and non primary key columns\n forEach(Object.keys(columns), (key) => {\n type = columns[key].type;\n if (isNumberType(type)) {\n this.numericColumns.push(key);\n }\n // Hiding only table's primary key\n if (columns[key].isRelatedPk === 'true' || !columns[key].isPrimaryKey) {\n this.nonPrimaryColumns.push(key);\n }\n });\n this.numericColumns = this.numericColumns.sort();\n this.nonPrimaryColumns = this.nonPrimaryColumns.sort();\n }\n }\n\n // plot the chart\n handleDataSet(newVal) {\n this.errMsg = '';\n // Resetting the flag to false when the binding was removed\n if (!newVal && !this.binddataset) {\n this.isVisuallyGrouped = false;\n this.axisoptions = null;\n }\n\n // liveVariables contain data in 'data' property' of the variable\n this.chartData = this.isLiveVariable ? newVal || '' : (newVal && newVal.dataValue === '' && keys(newVal).length === 1) ? '' : newVal;\n\n // if the data returned is an object make it an array of object\n if (!isArray(this.chartData) && isObject(this.chartData)) {\n this.chartData = [this.chartData];\n }\n\n if (newVal && newVal.filterFields) {\n this.filterFields = newVal.filterFields;\n }\n\n // plotchart for only valid data and only after bound variable returns data\n if (this.chartData) {\n this._plotChartProxy();\n }\n }\n\n _plotChartProxy = debounce(this.plotChartProxy.bind(this), 100);\n\n // sets the center label for donut chart type\n setDonutCenterLabel(labelValue) {\n let chartSvg, pieGroups;\n chartSvg = d3.select('#wmChart' + this.$id + ' svg');\n\n pieGroups = chartSvg.select('.nv-wrap.nv-pie').select('.nv-pie');\n pieGroups.text('');\n pieGroups.append('text')\n .attr('dy', '.35em')\n .attr('text-anchor', 'middle')\n .attr('class', 'nv-pie-title')\n .text(labelValue)\n .each(function (d) {\n var d3text = d3.select(this),\n circ = d3.select(this.parentElement),\n totalWidth = Number(circ.node().getBoundingClientRect().width),\n // minus the ring width from total width\n availWidth = totalWidth - 30,\n textWidth = this.getComputedTextLength();\n d3text.attr(\"data-scale\", availWidth / textWidth);\n }).style(\"font-size\", function() {\n // 16 is the default font size to multiply with the scaled value and 24 is the maximum font size that can be applied\n var fontSize = 16 * d3.select(this).attr(\"data-scale\");\n return fontSize > 24 ? 24 : fontSize + \"px\";\n });\n }\n\n onPropertyChange(key, newVal, oldVal?) {\n super.onPropertyChange(key, newVal, oldVal);\n switch (key) {\n case 'dataset':\n this.handleDataSet(newVal);\n break;\n case 'centerlabel':\n if (this.chart) {\n this.chart.title(newVal);\n this.setDonutCenterLabel(newVal);\n }\n break;\n case 'type':\n // Based on the change in type deciding the default margins\n if (isPieType(this.type)) {\n this.offsettop = 20;\n this.offsetright = 0;\n this.offsetbottom = 0;\n this.offsetleft = 0;\n } else if (oldVal === 'Pie' || oldVal === 'Donut') {\n this.offsettop = 25;\n this.offsetright = 25;\n this.offsetbottom = 55;\n this.offsetleft = 75;\n }\n\n if (oldVal !== newVal) {\n this.clearCanvas = true;\n }\n // In studio mode, configure properties dependent on chart type\n this._plotChartProxy();\n break;\n default:\n // In RunMode, the plotchart method will not be called for all property change\n this._plotChartProxy();\n break;\n }\n if (includes(advanceDataProps, key)) {\n this._plotChartProxy();\n }\n }\n\n handleLoading(data) {\n const dataSource = this.datasource;\n if (dataSource && dataSource.execute(DataSource.Operation.IS_API_AWARE) && isDataSourceEqual(data.variable, dataSource)) {\n this.variableInflight = data.active;\n this.isLoadInProgress = data.active;\n }\n }\n\n hideTooltip() {\n d3.selectAll('.nvtooltip').style('opacity', 0);\n }\n\n onStyleChange(key, newVal, oldVal) {\n const styleObj = {};\n super.onStyleChange(key, newVal, oldVal);\n switch (key) {\n case 'fontsize':\n case 'fontunit':\n case 'color':\n case 'fontfamily':\n case 'fontweight':\n case 'fontstyle':\n case 'textdecoration':\n styleObj[styleProps[key]] = (key === 'fontsize' || key === 'fontunit') ? this.fontsize + this.fontunit : newVal;\n setTextStyle(styleObj, this.$id);\n break;\n }\n }\n\n constructor(inj: Injector, private app: App, @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any) {\n super(inj, WIDGET_CONFIG, explicitContext);\n styler(this.nativeElement, this, APPLY_STYLES_TYPE.CONTAINER, ['fontsize', 'fontunit', 'color', 'fontfamily', 'fontweight', 'fontstyle', 'textdecoration']);\n\n // generate unique id for the component\n this.$id = this.widgetId || Math.random();\n // remove title attribute as the element on hover shows you the hint through-out the element\n removeAttr(this.nativeElement, 'title');\n this.chartReady = false;\n this.binddataset = this.nativeElement.getAttribute('dataset.bind');\n // Show loading status based on the variable life cycle\n this._subsciptions.push(this.app.subscribe('toggle-variable-state', this.handleLoading.bind(this)));\n // Will hide tolltip of a chart in mobile when the user scrolls.\n this._subsciptions.push(this.app.subscribe('iscroll-start', () => {this.hideTooltip();}));\n }\n\n ngAfterViewInit() {\n super.ngAfterViewInit();\n // For old projects\n if (!includes(['outside', 'inside', 'hide'], this.showlabels)) {\n this.showlabels = getBooleanValue(this.showlabels);\n this.showlabelsoutside = getBooleanValue(this.showlabelsoutside);\n this.showlabels = this.showlabels ? (this.showlabelsoutside ? 'outside' : 'inside') : 'hide';\n }\n\n if (!this.theme) {\n // Default theme for pie/donut is Azure and for other it is Terrestrial\n this.theme = isPieType(this.type) ? 'Azure' : 'Terrestrial';\n }\n\n this.nativeElement.setAttribute('id', 'wmChart' + this.$id);\n // When there is not value binding, then plot the chart with sample data\n if (!this.binddataset && !this.nativeElement.getAttribute('scopedataset')) {\n this._plotChartProxy();\n }\n }\n\n ngOnDestroy() {\n // destroy all subscriptions to prevent memory leak.\n this.hideTooltip();\n this._subsciptions.forEach((subscription)=>{\n subscription();\n });\n super.ngOnDestroy();\n }\n redraw = this._plotChartProxy.bind(this);\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { WmComponentsModule } from '@wm/components/base';\nimport { BasicModule } from '@wm/components/basic';\n\nimport { ChartComponent } from './chart.component';\n\nconst components = [\n ChartComponent\n];\n\n@NgModule({\n imports: [\n BasicModule,\n CommonModule,\n WmComponentsModule\n ],\n declarations: [...components],\n exports: [...components]\n})\nexport class ChartModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;;;;;;AAEO,MAAM,aAAa,GAAG,MAAK;AAC9B,IAAA,QAAQ,CACJ,UAAU,EACV,IAAI,GAAG,CACH;QACI,CAAC,aAAa,EAAE,EAAC,KAAK,EAAE,MAAM,EAAE,GAAG,WAAW,EAAC,CAAC;QAChD,CAAC,mBAAmB,EAAE,WAAW,CAAC;QAClC,CAAC,cAAc,EAAE,EAAC,KAAK,EAAE,OAAO,EAAE,GAAG,WAAW,EAAC,CAAC;QAClD,CAAC,YAAY,EAAE,EAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,WAAW,EAAC,CAAC;QACjD,CAAC,YAAY,EAAE,WAAW,CAAC;QAC3B,CAAC,aAAa,EAAE,WAAW,CAAC;QAC5B,CAAC,OAAO,EAAE,WAAW,CAAC;QACtB,CAAC,cAAc,EAAE,QAAQ,CAAC;QAC1B,CAAC,SAAS,EAAE,QAAQ,CAAC;QACrB,CAAC,YAAY,EAAE,WAAW,CAAC;QAC3B,CAAC,YAAY,EAAE,EAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,WAAW,EAAC,CAAC;QACjD,CAAC,YAAY,EAAE,EAAC,KAAK,EAAE,EAAE,EAAE,WAAW,EAAC,CAAC;QACxC,CAAC,SAAS,EAAE,WAAW,CAAC;QACxB,CAAC,QAAQ,EAAE,EAAC,KAAK,EAAE,OAAO,EAAE,WAAW,EAAC,CAAC;QACzC,CAAC,iBAAiB,EAAE,YAAY,CAAC;QACjC,CAAC,WAAW,EAAE,WAAW,CAAC;QAC1B,CAAC,eAAe,EAAE,EAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,WAAW,EAAC,CAAC;QACpD,CAAC,gBAAgB,EAAE,EAAC,KAAK,EAAE,IAAI,EAAE,GAAG,WAAW,EAAC,CAAC;QACjD,CAAC,WAAW,EAAE,EAAC,KAAK,EAAE,SAAS,EAAE,GAAG,WAAW,EAAC,CAAC;QACjD,CAAC,YAAY,EAAE,EAAC,KAAK,EAAE,SAAS,EAAE,GAAG,WAAW,EAAC,CAAC;QAClD,CAAC,eAAe,EAAE,WAAW,CAAC;QAC9B,CAAC,gBAAgB,EAAE,EAAC,KAAK,EAAE,YAAY,EAAE,GAAG,WAAW,EAAC,CAAC;QACzD,CAAC,MAAM,EAAE,WAAW,CAAC;QACrB,CAAC,eAAe,EAAE,EAAC,KAAK,EAAE,oBAAoB,EAAE,GAAG,WAAW,EAAC,CAAC;QAChE,CAAC,QAAQ,EAAE,WAAW,CAAC;QACvB,CAAC,cAAc,EAAE,EAAC,KAAK,EAAE,EAAE,EAAE,GAAG,WAAW,EAAC,CAAC;QAC7C,CAAC,YAAY,EAAE,EAAC,KAAK,EAAE,EAAE,EAAE,GAAG,WAAW,EAAC,CAAC;QAC3C,CAAC,aAAa,EAAE,EAAC,KAAK,EAAE,EAAE,EAAE,GAAG,WAAW,EAAC,CAAC;QAC5C,CAAC,WAAW,EAAE,EAAC,KAAK,EAAE,EAAE,EAAE,GAAG,WAAW,EAAC,CAAC;QAC1C,CAAC,SAAS,EAAE,WAAW,CAAC;QACxB,CAAC,cAAc,EAAE,EAAC,KAAK,EAAE,IAAI,EAAE,GAAG,YAAY,EAAC,CAAC;QAChD,CAAC,OAAO,EAAE,EAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,WAAW,EAAC,CAAC;QAC5C,CAAC,MAAM,EAAE,EAAC,KAAK,EAAE,IAAI,EAAE,GAAG,YAAY,EAAC,CAAC;QACxC,CAAC,YAAY,EAAE,EAAC,KAAK,EAAE,SAAS,EAAE,GAAG,WAAW,EAAC,CAAC;QAClD,CAAC,mBAAmB,EAAE,EAAC,KAAK,EAAE,IAAI,EAAE,GAAG,YAAY,EAAC,CAAC;QACrD,CAAC,YAAY,EAAE,EAAC,KAAK,EAAE,KAAK,EAAE,GAAG,WAAW,EAAC,CAAC;QAC9C,CAAC,YAAY,EAAE,EAAC,KAAK,EAAE,KAAK,EAAE,GAAG,YAAY,EAAC,CAAC;QAC/C,CAAC,WAAW,EAAE,EAAC,KAAK,EAAE,IAAI,EAAE,GAAG,YAAY,EAAC,CAAC;QAC7C,CAAC,eAAe,EAAE,EAAC,KAAK,EAAE,KAAK,EAAE,GAAG,YAAY,EAAC,CAAC;QAClD,CAAC,WAAW,EAAE,EAAC,KAAK,EAAE,IAAI,EAAE,GAAG,YAAY,EAAC,CAAC;QAC7C,CAAC,eAAe,EAAE,EAAC,KAAK,EAAE,KAAK,EAAE,GAAG,YAAY,EAAC,CAAC;QAClD,CAAC,eAAe,EAAE,EAAC,KAAK,EAAE,KAAK,EAAE,GAAG,YAAY,EAAC,CAAC;QAClD,CAAC,YAAY,EAAE,WAAW,CAAC;QAC3B,CAAC,OAAO,EAAE,WAAW,CAAC;QACtB,CAAC,OAAO,EAAE,WAAW,CAAC;QACtB,CAAC,UAAU,EAAE,EAAC,KAAK,EAAE,IAAI,EAAE,GAAG,YAAY,EAAC,CAAC;QAC5C,CAAC,MAAM,EAAE,WAAW,CAAC;QACrB,CAAC,UAAU,EAAE,EAAC,KAAK,EAAE,SAAS,EAAE,GAAG,WAAW,EAAC,CAAC;QAChD,CAAC,cAAc,EAAE,WAAW,CAAC;QAC7B,CAAC,YAAY,EAAE,WAAW,CAAC;QAC3B,CAAC,oBAAoB,EAAE,EAAC,KAAK,EAAE,EAAE,EAAE,GAAG,WAAW,EAAC,CAAC;QACnD,CAAC,aAAa,EAAE,WAAW,CAAC;QAC5B,CAAC,SAAS,EAAE,EAAC,KAAK,EAAE,SAAS,EAAE,GAAG,WAAW,EAAC,CAAC;QAC/C,CAAC,eAAe,EAAE,WAAW,CAAC;QAC9B,CAAC,QAAQ,EAAE,WAAW,CAAC;QACvB,CAAC,cAAc,EAAE,WAAW,CAAC;QAC7B,CAAC,YAAY,EAAE,WAAW,CAAC;QAC3B,CAAC,oBAAoB,EAAE,EAAC,KAAK,EAAE,EAAE,EAAE,GAAG,WAAW,EAAC,CAAC;QACnD,CAAC,SAAS,EAAE,EAAC,KAAK,EAAE,SAAS,EAAE,GAAG,WAAW,EAAC,CAAC;QAC/C,CAAC,eAAe,EAAE,WAAW,CAAC;QAC9B,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC1B,KAAA,CACJ,CACJ,CAAC;AACN,CAAC;;AC/DM,MAAM,UAAU,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,EACpG,SAAS,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;AAEzF,MAAM,QAAQ,GAAG,CAAC,YAAY,EAAE,YAAY,EAAE,YAAY,CAAC,EACvD,MAAM,GAAG;AACL,IAAA,aAAa,EAAE;AACX,QAAA,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;AACpO,QAAA,OAAO,EAAE;AACL,YAAA,iBAAiB,EAAE,SAAS;AAC5B,YAAA,WAAW,EAAE,SAAS;AACzB,SAAA;AACJ,KAAA;AACD,IAAA,WAAW,EAAE;AACT,QAAA,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;AACpO,QAAA,OAAO,EAAE;AACL,YAAA,iBAAiB,EAAE,SAAS;AAC5B,YAAA,WAAW,EAAE,SAAS;AACzB,SAAA;AACJ,KAAA;AACD,IAAA,OAAO,EAAE;AACL,QAAA,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;AACpO,QAAA,OAAO,EAAE;AACL,YAAA,iBAAiB,EAAE,SAAS;AAC5B,YAAA,WAAW,EAAE,SAAS;AACzB,SAAA;AACJ,KAAA;AACD,IAAA,OAAO,EAAE;AACL,QAAA,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;AACpO,QAAA,OAAO,EAAE;AACL,YAAA,iBAAiB,EAAE,SAAS;AAC5B,YAAA,WAAW,EAAE,SAAS;AACzB,SAAA;AACJ,KAAA;AACD,IAAA,QAAQ,EAAE;AACN,QAAA,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;AACpO,QAAA,OAAO,EAAE;AACL,YAAA,iBAAiB,EAAE,SAAS;AAC5B,YAAA,WAAW,EAAE,SAAS;AACzB,SAAA;AACJ,KAAA;AACD,IAAA,QAAQ,EAAE;AACN,QAAA,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;AACpO,QAAA,OAAO,EAAE;AACL,YAAA,iBAAiB,EAAE,SAAS;AAC5B,YAAA,WAAW,EAAE,SAAS;AACzB,SAAA;AACJ,KAAA;AACD,IAAA,WAAW,EAAE;AACT,QAAA,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;AACpO,QAAA,OAAO,EAAE;AACL,YAAA,iBAAiB,EAAE,SAAS;AAC5B,YAAA,WAAW,EAAE,SAAS;AACzB,SAAA;AACJ,KAAA;AACD,IAAA,OAAO,EAAE;AACL,QAAA,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;AACpO,QAAA,OAAO,EAAE;AACL,YAAA,iBAAiB,EAAE,SAAS;AAC5B,YAAA,WAAW,EAAE,SAAS;AACzB,SAAA;AACJ,KAAA;AACD,IAAA,YAAY,EAAE;AACV,QAAA,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;AACpO,QAAA,OAAO,EAAE;AACL,YAAA,iBAAiB,EAAE,SAAS;AAC5B,YAAA,WAAW,EAAE,SAAS;AACzB,SAAA;AACJ,KAAA;AACJ,CAAA,EACD,eAAe,GAAG,CAAC,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,eAAe,EAAE,aAAa,EAAE,eAAe;AAC9G,IAAA,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,eAAe,EAAE,cAAc,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY;IACjJ,YAAY,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,mBAAmB,EAAE,eAAe,EAAE,eAAe,EAAE,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW;IACnN,aAAa,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,eAAe,EAAE,iBAAiB,EAAE,eAAe,EAAE,gBAAgB,CAAC,EACvK,aAAa,GAAG;AACZ,IAAA,OAAO,EAAG,GAAG;AACb,IAAA,QAAQ,EAAG,GAAG;AACd,IAAA,OAAO,EAAG,GAAG;AAChB,CAAA,EACD,aAAa,GAAG;AACZ,IAAA,OAAO,EAAG,GAAG;AACb,IAAA,QAAQ,EAAG,GAAG;AACd,IAAA,OAAO,EAAG,GAAG;AAChB,CAAA,EACD,mBAAmB,GAAG,MAAM,CAAC,aAAa,CAAC,EAC3C,mBAAmB,GAAG,MAAM,CAAC,aAAa,CAAC,EAC3C,WAAW,GAAG;AACV,IAAA,UAAU,EAAE;AACR,QAAA,QAAQ,EAAE,GAAG;AACb,QAAA,SAAS,EAAE,IAAI;AAClB,KAAA;AACD,IAAA,SAAS,EAAG;AACR,QAAA,QAAQ,EAAE,GAAG;AACb,QAAA,SAAS,EAAE,OAAO;AACrB,KAAA;AACD,IAAA,SAAS,EAAG;AACR,QAAA,QAAQ,EAAE,GAAG;AACb,QAAA,SAAS,EAAE,UAAU;AACxB,KAAA;CACJ,EACD,OAAO,GAAG,gBAAgB,EAC1B,YAAY,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC;AAClE,cAAc,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,iBAAiB,CAAC;AACpD,aAAa,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC;AAC3C,WAAW,GAAG;AACV,IAAA,QAAQ,EAAG,QAAQ;AACnB,IAAA,QAAQ,EAAG,MAAM;AACjB,IAAA,QAAQ,EAAG,SAAS;AACpB,IAAA,QAAQ,EAAG,WAAW;CACzB,CAAC;AAEN;AACO,MAAM,UAAU,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,CAAC;AAEjD;AACO,MAAM,WAAW,GAAG,IAAI,IAAI,IAAI,KAAK,MAAM,CAAC;AAEnD;AACO,MAAM,UAAU,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,CAAC;AAEjD;AACO,MAAM,YAAY,GAAG,IAAI,IAAI,IAAI,KAAK,OAAO,CAAC;AAErD;AACO,MAAM,aAAa,GAAG,IAAI,IAAI,IAAI,KAAK,QAAQ,CAAC;AAEvD;AACO,MAAM,aAAa,GAAG,IAAI,IAAI,IAAI,KAAK,QAAQ,CAAC;AAEvD;AACO,MAAM,WAAW,GAAG,IAAI,IAAI,IAAI,KAAK,MAAM,CAAC;AAEnD;AACO,MAAM,SAAS,GAAG,IAAI,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC;AAExE;AACO,MAAM,eAAe,GAAG,IAAI,IAAI,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;AAEnG;AACO,MAAM,gBAAgB,GAAG,IAAI,IAAI,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;AAEtE;AACO,MAAM,eAAe,GAAG,IAAI,IAAI,QAAQ,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;AAEtE;AACO,MAAM,qBAAqB,GAAG,IAAI,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;AAEtF;AACO,MAAM,kBAAkB,GAAG,CAAC,KAAK,EAAE,IAAI,KAAI;AAC9C,IAAA,IAAI,IAAI,KAAK,OAAO,EAAE;AAClB,QAAA,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC;KAC/B;AACD,IAAA,IAAI,IAAI,KAAK,KAAK,EAAE;AAChB,QAAA,OAAO,mBAAmB,CAAC,KAAK,CAAC,CAAC;KACrC;AACL,CAAC,CAAC;AAEF;AACO,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,IAAI,KAAI;AAC1C,IAAA,IAAI,IAAI,KAAK,OAAO,EAAE;AAClB,QAAA,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC;KAC/B;AACD,IAAA,IAAI,IAAI,KAAK,KAAK,EAAE;AAChB,QAAA,OAAO,mBAAmB,CAAC,KAAK,CAAC,CAAC;KACrC;AACL,CAAC,CAAC;AAEF;AACO,MAAM,cAAc,GAAG,CAAC,UAAU,EAAE,iBAAiB,EAAE,IAAI,KAAI;IAClE,MAAM,YAAY,GAAQ,EAAE,CAAC;IAC7B,QAAQ,UAAU;AACd,QAAA,KAAK,MAAM;AACP,YAAA,YAAY,CAAC,UAAU,GAAG,KAAK,CAAC;YAChC,MAAM;AACV,QAAA,KAAK,QAAQ;AACT,YAAA,YAAY,CAAC,UAAU,GAAG,IAAI,CAAC;AAC/B,YAAA,YAAY,CAAC,iBAAiB,GAAG,KAAK,CAAC;YACvC,MAAM;AACV,QAAA,KAAK,SAAS;AACV,YAAA,YAAY,CAAC,UAAU,GAAG,IAAI,CAAC;AAC/B,YAAA,YAAY,CAAC,iBAAiB,GAAG,IAAI,CAAC;YACtC,MAAM;KACb;AACD,IAAA,OAAO,YAAY,CAAC;AACxB,CAAC,CAAC;AAEF;AACO,MAAM,mBAAmB,GAAG,CAAC,QAAQ,EAAE,WAAW,EAAE,KAAK,KAAI;AAChE,IAAA,IAAI,YAAY,GAAG,EAAE,EACjB,aAAa,GAAG,EAAE,EAClB,YAAY,GAAG,EAAE,EACjB,kBAAkB,GAAG,EAAE,EACvB,mBAAmB,GAAG,EAAE,EACxB,kBAAkB,GAAG,EAAE,EACvB,mBAAmB,GAAG,EAAE,EACxB,oBAAoB,GAAG,EAAE,EACzB,mBAAmB,GAAG,EAAE,EACxB,IAAI,GAAG,EAAE,CAAC;IACd,QAAQ,QAAQ;AACZ,QAAA,KAAK,YAAY;AACb,YAAA,YAAY,GAAG;AACX,gBAAA,EAAC,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE,OAAO,EAAC;AACjC,gBAAA,EAAC,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE,OAAO,EAAC;AACjC,gBAAA,EAAC,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE,OAAO,EAAC;aACpC,CAAC;AACF,YAAA,aAAa,GAAG;AACZ,gBAAA,EAAC,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE,OAAO,EAAC;AACjC,gBAAA,EAAC,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE,OAAO,EAAC;AACjC,gBAAA,EAAC,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE,OAAO,EAAC;aACpC,CAAC;AACF,YAAA,YAAY,GAAG;AACX,gBAAA,EAAC,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE,OAAO,EAAC;AACjC,gBAAA,EAAC,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE,OAAO,EAAC;AACjC,gBAAA,EAAC,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE,OAAO,EAAC;aACpC,CAAC;YACF,IAAI,CAAC,CAAC,CAAC,GAAG;AACN,gBAAA,MAAM,EAAE,YAAY;gBACpB,GAAG,EAAE,WAAW,CAAC,MAAM;aAC1B,CAAC;AACF,YAAA,IAAI,WAAW,IAAI,CAAC,EAAE;gBAClB,IAAI,CAAC,CAAC,CAAC,GAAG;AACN,oBAAA,MAAM,EAAE,aAAa;oBACrB,GAAG,EAAE,WAAW,CAAC,MAAM;iBAC1B,CAAC;aACL;AACD,YAAA,IAAI,WAAW,IAAI,CAAC,EAAE;gBAClB,IAAI,CAAC,CAAC,CAAC,GAAG;AACN,oBAAA,MAAM,EAAE,YAAY;oBACpB,GAAG,EAAE,WAAW,CAAC,MAAM;iBAC1B,CAAC;aACL;YACD,MAAM;AACV,QAAA,KAAK,iBAAiB;AAClB,YAAA,YAAY,GAAG;AACX,gBAAA,EAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,OAAO,EAAC;AACtB,gBAAA,EAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,OAAO,EAAC;AACtB,gBAAA,EAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,OAAO,EAAC;aACzB,CAAC;AACF,YAAA,aAAa,GAAG;AACZ,gBAAA,EAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,OAAO,EAAC;AACtB,gBAAA,EAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,OAAO,EAAC;AACtB,gBAAA,EAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,OAAO,EAAC;aACzB,CAAC;AACF,YAAA,YAAY,GAAG;AACX,gBAAA,EAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,OAAO,EAAC;AACtB,gBAAA,EAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,OAAO,EAAC;AACtB,gBAAA,EAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,OAAO,EAAC;aACzB,CAAC;YACF,IAAI,CAAC,CAAC,CAAC,GAAG;AACN,gBAAA,MAAM,EAAE,YAAY;gBACpB,GAAG,EAAE,WAAW,CAAC,MAAM;aAC1B,CAAC;AACF,YAAA,IAAI,WAAW,IAAI,CAAC,EAAE;gBAClB,IAAI,CAAC,CAAC,CAAC,GAAG;AACN,oBAAA,MAAM,EAAE,aAAa;oBACrB,GAAG,EAAE,WAAW,CAAC,MAAM;iBAC1B,CAAC;aACL;AACD,YAAA,IAAI,WAAW,IAAI,CAAC,EAAE;gBAClB,IAAI,CAAC,CAAC,CAAC,GAAG;AACN,oBAAA,MAAM,EAAE,YAAY;oBACpB,GAAG,EAAE,WAAW,CAAC,MAAM;iBAC1B,CAAC;aACL;YACD,MAAM;AACV,QAAA,KAAK,aAAa;AACd,YAAA,kBAAkB,GAAG;gBACjB,CAAC,CAAC,EAAE,OAAO,CAAC;gBACZ,CAAC,CAAC,EAAE,OAAO,CAAC;gBACZ,CAAC,CAAC,EAAE,OAAO,CAAC;aACf,CAAC;AACF,YAAA,mBAAmB,GAAG;gBAClB,CAAC,CAAC,EAAE,OAAO,CAAC;gBACZ,CAAC,CAAC,EAAE,OAAO,CAAC;gBACZ,CAAC,CAAC,EAAE,OAAO,CAAC;aACf,CAAC;AACF,YAAA,kBAAkB,GAAG;gBACjB,CAAC,CAAC,EAAE,OAAO,CAAC;gBACZ,CAAC,CAAC,EAAE,OAAO,CAAC;gBACZ,CAAC,CAAC,EAAE,OAAO,CAAC;aACf,CAAC;YACF,IAAI,CAAC,CAAC,CAAC,GAAG;AACN,gBAAA,MAAM,EAAE,kBAAkB;gBAC1B,GAAG,EAAE,WAAW,CAAC,MAAM;aAC1B,CAAC;AACF,YAAA,IAAI,WAAW,IAAI,CAAC,EAAE;gBAClB,IAAI,CAAC,CAAC,CAAC,GAAG;AACN,oBAAA,MAAM,EAAE,mBAAmB;oBAC3B,GAAG,EAAE,WAAW,CAAC,MAAM;iBAC1B,CAAC;aACL;AACD,YAAA,IAAI,WAAW,IAAI,CAAC,EAAE;gBAClB,IAAI,CAAC,CAAC,CAAC,GAAG;AACN,oBAAA,MAAM,EAAE,kBAAkB;oBAC1B,GAAG,EAAE,WAAW,CAAC,MAAM;iBAC1B,CAAC;aACL;YACD,MAAM;AACV,QAAA,KAAK,cAAc;YACf,KAAK,GAAG,KAAK,KAAK,QAAQ,GAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC;AAC9F,YAAA,mBAAmB,GAAG;AAClB,gBAAA,EAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAG,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAC;AACxD,gBAAA,EAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAG,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAC;AACxD,gBAAA,EAAC,GAAG,EAAE,IAAI,EAAG,GAAG,EAAE,OAAO,EAAI,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAC;aAC3D,CAAC;AACF,YAAA,oBAAoB,GAAG;AACnB,gBAAA,EAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAG,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAC;AACxD,gBAAA,EAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAG,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAC;AACxD,gBAAA,EAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAG,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAC;aAC3D,CAAC;AACF,YAAA,mBAAmB,GAAG;AAClB,gBAAA,EAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAG,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAC;AACxD,gBAAA,EAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAI,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAC;AACxD,gBAAA,EAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAC;aAC3D,CAAC;YACF,IAAI,CAAC,CAAC,CAAC,GAAG;AACN,gBAAA,MAAM,EAAE,mBAAmB;gBAC3B,GAAG,EAAE,WAAW,CAAC,MAAM;aAC1B,CAAC;AACF,YAAA,IAAI,WAAW,IAAI,CAAC,EAAE;gBAClB,IAAI,CAAC,CAAC,CAAC,GAAG;AACN,oBAAA,MAAM,EAAE,oBAAoB;oBAC5B,GAAG,EAAE,WAAW,CAAC,MAAM;iBAC1B,CAAC;aACL;AACD,YAAA,IAAI,WAAW,IAAI,CAAC,EAAE;gBAClB,IAAI,CAAC,CAAC,CAAC,GAAG;AACN,oBAAA,MAAM,EAAE,mBAAmB;oBAC3B,GAAG,EAAE,WAAW,CAAC,MAAM;iBAC1B,CAAC;aACL;YACD,MAAM;AACV,QAAA,KAAK,gBAAgB;AACjB,YAAA,IAAI,GAAG;gBACH,EAAC,GAAG,EAAE,WAAW,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,EAAC;gBACvC,EAAC,GAAG,EAAE,WAAW,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,EAAC;gBACvC,EAAC,GAAG,EAAE,WAAW,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,EAAC;gBACvC,EAAC,GAAG,EAAE,WAAW,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,EAAC;aAC1C,CAAC;YACF,MAAM;KACb;AACD,IAAA,OAAO,IAAI,CAAC;AAChB,CAAC,CAAC;AAEK,MAAM,WAAW,GAAG,aAAa,IAAG;AACvC,IAAA,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC;AAChC,IAAA,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE;AACnB,QAAA,OAAO,iBAAiB,CAAC;KAC5B;AACD,IAAA,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE;AACjB,QAAA,OAAO,gBAAgB,CAAC;KAC3B;AACD,IAAA,IAAI,aAAa,CAAC,IAAI,CAAC,EAAE;AACrB,QAAA,OAAO,cAAc,CAAC;KACzB;AACD,IAAA,OAAO,eAAe,CAAC,IAAI,CAAC,GAAG,YAAY,GAAG,aAAa,CAAC;AAChE,CAAC,CAAC;AAEF;AACO,MAAM,aAAa,GAAG,aAAa,IAAI,mBAAmB,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC;AAElK;AACO,MAAM,iBAAiB,GAAG,CAAC,aAAa,EAAE,IAAI,KAAI;AACrD,IAAA,IAAI,aAAa,CAAC,IAAI,GAAG,QAAQ,CAAC,KAAK,KAAK,KAAK,qBAAqB,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,EAAE;AACzF,QAAA,OAAO,IAAI,CAAC;KACf;AACD,IAAA,OAAO,KAAK,CAAC;AACjB,CAAC,CAAC;AAEF;AACO,MAAM,oBAAoB,GAAG,MAAM,IAAG;AACzC,IAAA,IAAI,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;AAC9C,QAAA,OAAO,IAAI,CAAC;KACf;AACD,IAAA,OAAO,KAAK,CAAC;AACjB,CAAC,CAAC;AAEK,MAAM,iBAAiB,GAAG,KAAK,IAAG;IACrC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC/B;AACgD;IAChD,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,KAAK,GAAG,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC;AAC/D,CAAC,CAAC;AAEF;AACO,MAAM,eAAe,GAAG,CAAC,EAAE,EAAE,eAAe,KAAI;IACnD,MAAM,QAAQ,GAAG,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,GAAG,EAAE,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC;IACxF,IAAI,eAAe,EAAE;AACjB,QAAA,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC;AAC1B,aAAA,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC;AAC5B,aAAA,KAAK,CAAC,cAAc,EAAE,MAAM,CAAC;AAC7B,aAAA,KAAK,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;KACxC;SAAM;AACH,QAAA,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC;AAC1B,aAAA,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC;AAC5B,aAAA,KAAK,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;KACnC;AACL,CAAC,CAAC;AAEF;AACO,MAAM,gBAAgB,GAAG,CAAC,EAAE,EAAE,SAAS,KAAI;IAC9C,MAAM,QAAQ,GAAG,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,GAAG,EAAE,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC;AACxF,IAAA,SAAS,GAAG,SAAS,IAAI,GAAG,CAAC;IAE7B,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;AAE7C,IAAA,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE;AACpB,QAAA,KAAK,CAAC,KAAK,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;KAC1C;AACL,CAAC,CAAC;AAEF;AACO,MAAM,cAAc,GAAG,CAAC,aAAa,EAAE,gBAAgB,KAAI;IAC9D,IAAI,CAAC,gBAAgB,IAAI,aAAa,CAAC,gBAAgB,CAAC,EAAE;QACtD,gBAAgB,GAAG,EAAE,CAAC;KACzB;AACD,IAAA,OAAO,CAAC,eAAe,EAAE,IAAI,IAAG;QAC5B,IAAI,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,EAAE;YACrC,gBAAgB,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;SAChD;AACL,KAAC,CAAC,CAAC;AAEH,IAAA,OAAO,gBAAgB,CAAC;AAC5B,CAAC,CAAC;AAEK,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,QAAQ,KAAI;IAC9C,OAAO,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,KAAK,CAAC;AACzE,CAAC,CAAC;AAEF;AACO,MAAM,mBAAmB,GAAG,CAAC,UAAU,EAAE,CAAC,KAAI;AACjD,IAAA,UAAU,GAAG,UAAU,IAAI,IAAI,CAAC;AAChC;;;;;AAKG;AACH,IAAA,IAAG,UAAU,IAAI,IAAI,EAAE;QACnB,UAAU,GAAG,gBAAgB,CAAC;KACjC;IACD,OAAO,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AACrF,CAAC,CAAC;AACF,MAAM,mBAAmB,GAAG,KAAK,IAAG;IAChC,IAAG,CAAC,KAAK,EAAE;AACP,QAAA,OAAO,KAAK,CAAC;KAChB;;AAED,IAAA,MAAM,WAAW,GAAG,OAAO,KAAK,KAAK,QAAQ,GAAG,KAAK,CAAC,QAAQ,EAAE,GAAG,KAAK,CAAC;;AAGzE,IAAA,OAAO,WAAW,CAAC,OAAO,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,0BAA0B,EAAE,OAAO,CAAC,CAAC;AACtG,CAAC,CAAC;AAEF;AACO,MAAM,qBAAqB,GAAG,CAAC,YAAY,EAAE,CAAC,KAAI;AACrD,IAAA,IAAI,aAAa,EACb,OAAO,EACP,MAAM,CAAC;;IAEX,IAAI,YAAY,EAAE;AACd,QAAA,IAAI,eAAe,CAAC;AACpB,QAAA,IAAG,YAAY,IAAI,UAAU,IAAI,YAAY,IAAI,SAAS,IAAI,YAAY,IAAI,SAAS,EAAE;AACrF,YAAA,eAAe,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;SACvC;AAAM,aAAA,IAAG,YAAY,IAAI,GAAG,EAAE;AAC3B,YAAA,eAAe,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SACtC;AAAK,aAAA,IAAG,YAAY,IAAI,IAAI,EAAE;AAC3B,YAAA,eAAe,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SACtC;aAAM;AACH,YAAA,eAAe,GAAG,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;SAC7C;AACD,QAAA,aAAa,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;;AAInC,QAAA,OAAO,GAAG,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,WAAW,CAAC,YAAY,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC;AAChF,QAAA,MAAM,GAAG,WAAW,CAAC,YAAY,CAAC,IAAI,WAAW,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC;AACvE,QAAA,IAAI,MAAM,IAAI,OAAO,KAAK,CAAC,EAAE;AACzB,YAAA,aAAa,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,MAAM,CAAC;SAC1D;KACJ;SAAM;;QAEH,aAAa,GAAG,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;KACvD;AACD,IAAA,aAAa,GAAG,mBAAmB,CAAC,aAAa,CAAC,CAAC;AACnD,IAAA,OAAO,aAAa,CAAC;AACzB,CAAC,CAAC;AAEF;AACO,MAAM,cAAc,GAAG,CAAC,QAAQ,EAAE,KAAK,KAAI;IAC9C,MAAM,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,GAAG,iBAAiB,CAAC,EACjD,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,GAAG,iBAAiB,CAAC,CAAC;AACpD,IAAA,IAAI,QAAQ,KAAK,WAAW,EAAE;AAC1B,QAAA,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,GAAG,SAAS,GAAG,QAAQ,CAAC,CAAC;KAC5D;SAAM;AACH,QAAA,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,GAAG,SAAS,GAAG,QAAQ,CAAC,CAAC;KAC5D;AACL,CAAC,CAAC;AAEK,MAAM,oBAAoB,GAAG,CAAC,aAAa,EAAE,QAAQ,EAAE,EAAE,KAAI;AAChE,IAAA,MAAM,UAAU,GAAG,YAAY,CAAC,aAAa,CAAC,UAAU,CAAC,EACrD,QAAQ,GAAG,EAAE,GAAG,UAAU,GAAG,EAAE,GAAG,OAAO,EACzC,UAAU,GAAG,EAAE,CAAC,MAAM,CAAC,QAAQ,GAAG,iBAAiB,CAAC,EACpD,aAAa,GAAG,CAAC,CAAC;;AAEtB,IAAA,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;QAC7C,OAAO;KACV;AACD,IAAA,IAAI,QAAQ,KAAK,QAAQ,EAAE;AACvB,QAAA,MAAM,gBAAgB,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,EAAE,CAAC,MAAM,EAC/E,IAAI,GAAG,EAAE,CAAC,MAAM,CAAC,QAAQ,GAAG,WAAW,CAAC,EACxC,aAAa,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,EAAE,EAClG,WAAW,GAAG,wCAAwC,CAAC,IAAI,CAAC,aAAa,CAAC,EAC1E,cAAc,GAAG,MAAK;AAClB,YAAA,IAAI,WAAW,GAAG,CAAC,CAAC,QAAQ,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;AACvF,YAAA,IAAI,WAAW,KAAK,CAAC,EAAE;gBACnB,WAAW,IAAI,CAAC,CAAC,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,EAAE,CAAC,MAAM,IAAI,gBAAgB,GAAG,EAAE,CAAC,CAAC,CAAC;aACpG;AACD,YAAA,OAAO,WAAW,CAAC;AACvB,SAAC,CAAC;AACN,QAAA,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,gBAAgB,IAAI,cAAc,EAAE,GAAG,gBAAgB,GAAG,aAAa,CAAC,GAAG,GAAG,CAAC,CAAC;QAC7G,IAAI,WAAW,EAAE;AACb,YAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,aAAa,GAAG,GAAG,CAAC,CAAC;SACrF;KACJ;AACL,CAAC,CAAC;AAEF;AACO,MAAM,YAAY,GAAG,KAAK,IAAG;;IAEhC,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,KAAK,EAAE;AACtC,QAAA,OAAO,KAAK,CAAC;KAChB;IACD,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,IAAI,EAAE;AACpC,QAAA,OAAO,IAAI,CAAC;KACf;;IAED,OAAO,KAAK,KAAK,MAAM,GAAG,KAAK,GAAG,IAAI,CAAC;AAC3C,CAAC,CAAC;AAEF;;;;AAIG;AACI,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,KAAM,KAAI;AAC/E,IAAA,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,GAAG,IAAG;QACjC,IAAI,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC;AAChC,QAAA,MAAM,GAAG,qBAAqB,CAAC,gBAAgB,CAAC,aAAa,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC3E,QAAA,IAAI,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE;AAC/B,YAAA,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;YACnB,MAAM,GAAG,EAAE,CAAC;SACf;AACD,QAAA,OAAO,SAAS;YACZ,SAAS;AACT,YAAA,uBAAuB,GAAG,MAAM;YAChC,WAAW;YACX,MAAM;AACN,YAAA,8DAA8D,GAAG,GAAG,CAAC,KAAK,GAAG,gBAAgB;YAC7F,kBAAkB,GAAG,KAAK,GAAG,OAAO;YACpC,oBAAoB,GAAG,MAAM,GAAG,OAAO;YACvC,OAAO;YACP,UAAU;AACV,YAAA,UAAU,CAAC;AACnB,KAAC,CAAC,CAAC;AACP,CAAC,CAAC;AAEF;AACO,MAAM,SAAS,GAAG,CAAC,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,gBAAgB,EAAE,SAAS,KAAI;AAClG,IAAA,gBAAgB,GAAI,cAAc,CAAC,aAAa,EAAE,gBAAgB,CAAC,CAAC;IACpE,IAAI,KAAK,EAAE,MAAM,GAAG,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAC3E,UAAU,EAAE,UAAU,EAAE,kBAAkB,CAAC;AAC/C,IAAA,MAAM,MAAM,GAAQ,EAAE,EAAE,MAAM,GAAQ,EAAE,CAAC;AACzC,IAAA,QAAQ,aAAa,CAAC,IAAI;AACtB,QAAA,KAAK,QAAQ;AACT,YAAA,UAAU,GAAG,cAAc,CAAC,gBAAgB,CAAC,UAAU,EAAE,kBAAkB,CAAC,IAAI,aAAa,CAAC,MAAM,CAAC;AACrG,YAAA,KAAK,GAAG,EAAE,CAAC,MAAM,CAAC,aAAa,EAAE;iBAC5B,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;iBACX,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACX,iBAAA,YAAY,CAAC,gBAAgB,CAAC,YAAY,CAAC;iBAC3C,YAAY,CAAC,CAAC,CAAC;iBACf,YAAY,CAAC,KAAK,CAAC;AACnB,iBAAA,OAAO,CAAC,gBAAgB,CAAC,QAAQ,KAAK,SAAS,GAAI,IAAI,GAAG,KAAK,CAAC;iBAChE,YAAY,CAAC,UAAU,CAAC,CAAC;YAC9B,MAAM;AACV,QAAA,KAAK,iBAAiB;AAClB,YAAA,KAAK,GAAG,EAAE,CAAC,MAAM,CAAC,mBAAmB,EAAE;iBAClC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;iBACZ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;iBACZ,YAAY,CAAC,KAAK,CAAC;AACnB,iBAAA,uBAAuB,CAAC,gBAAgB,CAAC,QAAQ,CAAC;AAClD,iBAAA,WAAW,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;YACjD,MAAM;AACV,QAAA,KAAK,MAAM;AACP,YAAA,KAAK,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE;AACxB,iBAAA,uBAAuB,CAAC,gBAAgB,CAAC,QAAQ,CAAC;AAClD,iBAAA,WAAW,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;YACjD,MAAM;AACV,QAAA,KAAK,MAAM;AACP,YAAA,KAAK,GAAG,EAAE,CAAC,MAAM,CAAC,gBAAgB,EAAE;iBAC/B,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;iBACX,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;iBACX,QAAQ,CAAC,IAAI,CAAC;iBACd,YAAY,CAAC,KAAK,CAAC;AACnB,iBAAA,KAAK,CAAC,gBAAgB,CAAC,YAAY,CAAC;AACpC,iBAAA,uBAAuB,CAAC,gBAAgB,CAAC,QAAQ,CAAC;AAClD,iBAAA,WAAW,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;YACjD,MAAM;AACV,QAAA,KAAK,KAAK;AACN,YAAA,UAAU,GAAG,cAAc,CAAC,gBAAgB,CAAC,UAAU,EAAE,kBAAkB,CAAC,IAAI,aAAa,CAAC,MAAM,CAAC;AACrG,YAAA,KAAK,GAAG,EAAE,CAAC,MAAM,CAAC,uBAAuB,EAAE;iBACtC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;iBACX,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;iBACX,YAAY,CAAC,KAAK,CAAC;AACnB,iBAAA,OAAO,CAAC,gBAAgB,CAAC,QAAQ,KAAK,SAAS,GAAI,IAAI,GAAG,KAAK,CAAC;AAChE,iBAAA,UAAU,CAAC,gBAAgB,CAAC,UAAU,CAAC;iBACvC,YAAY,CAAC,UAAU,CAAC,CAAC;YAC9B,MAAM;AACV,QAAA,KAAK,KAAK,CAAC;AACX,QAAA,KAAK,OAAO;AACR,YAAA,WAAW,GAAG,cAAc,CAAC,gBAAgB,CAAC,UAAU,EAAE,gBAAgB,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;AACvG,YAAA,MAAM,GAAG,cAAc,CAAC,gBAAgB,CAAC,UAAU,EAAE,cAAc,CAAC,IAAI,aAAa,CAAC,MAAM,CAAC;AAC7F,YAAA,KAAK,GAAG,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE;iBACvB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;iBACX,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACX,iBAAA,UAAU,CAAC,WAAW,CAAC,UAAU,CAAC;AAClC,iBAAA,SAAS,CAAC,gBAAgB,CAAC,SAAS,CAAC;AACrC,iBAAA,WAAW,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC3B,iBAAA,KAAK,CAAC,gBAAgB,CAAC,WAAW,CAAC;AACnC,iBAAA,cAAc,CAAC,gBAAgB,CAAC,cAAc,IAAI,IAAI,CAAC;AACvD,iBAAA,aAAa,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;AAClD,YAAA,IAAI,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE;AAClC,gBAAA,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;qBACZ,UAAU,CAAC,MAAM,CAAC,CAAC;aAC3B;AACD,YAAA,IAAI,gBAAgB,CAAC,SAAS,KAAK,WAAW,EAAE;gBAC5C,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aACnD;YACD,MAAM;AACV,QAAA,KAAK,QAAQ;AACT,YAAA,KAAK,GAAG,EAAE,CAAC,MAAM,CAAC,YAAY,EAAE;iBAC3B,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;iBACX,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACX,iBAAA,SAAS,CAAC,gBAAgB,CAAC,aAAa,CAAC;AACzC,iBAAA,SAAS,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;YAC/C,MAAM;KACb;IAED,IAAI,aAAa,EAAE;AACf,QAAA,MAAM,CAAC,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACzD,QAAA,MAAM,CAAC,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;;AAEzD,QAAA,IAAI,oBAAoB,CAAC,MAAM,CAAC,EAAE;;YAE9B,MAAM,CAAC,GAAG,GAAG,iBAAiB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC3C,YAAA,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;SAC3C;KACJ;IAED,IAAI,aAAa,EAAE;;AAEf,QAAA,MAAM,CAAC,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACzD,QAAA,MAAM,CAAC,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;;AAEzD,QAAA,IAAI,oBAAoB,CAAC,MAAM,CAAC,EAAE;;YAE9B,MAAM,CAAC,GAAG,GAAG,iBAAiB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC3C,YAAA,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;SAC3C;KACJ;;IAGD,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,gBAAgB,CAAC,UAAU,IAAI,gBAAgB,CAAC,UAAU,CAAC,WAAW,EAAE,KAAK,SAAS,CAAC,CAAC;IAE3G,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC,IAAI,CAAC,EAAE;AAC3C,QAAA,KAAK,GAAG,EAAE,CAAC,MAAM,CAAC,aAAa,EAAE;aAC5B,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aACX,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;KACpB;AAGD,IAAA,IAAI,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE;;AAE/B,QAAA,IAAI,gBAAgB,CAAC,SAAS,KAAK,SAAS,EAAE;YAC1C,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;SACrC;aAAM;AACH,YAAA,KAAK,CAAC,WAAW,CAAC,CAAC,IAAI,qBAAqB,CAAC,gBAAgB,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC;SACpF;;AAED,QAAA,gBAAgB,CAAC,KAAK,EAAE,gBAAgB,EAAE,aAAa,CAAC,CAAC;KAC5D;SACI;AACD,QAAA,KAAK,CAAC,SAAS,CAAC,gBAAgB,CAAC,SAAS,CAAC;AACtC,aAAA,SAAS,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;AAC3C,QAAA,KAAK,CAAC,cAAc,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;;AAGlD,QAAA,UAAU,GAAG,gBAAgB,CAAC,UAAU,IAAI,cAAc,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,WAAW,CAAC;AACtG,QAAA,UAAU,GAAG,gBAAgB,CAAC,UAAU,IAAI,cAAc,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,WAAW,CAAC;;AAGtG,QAAA,IAAI,aAAa,CAAC,YAAY,IAAI,aAAa,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;YAChF,kBAAkB,GAAG,IAAI,CAAC;SAC7B;;QAED,IAAI,CAAC,kBAAkB,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE;YAC3D,gBAAgB,CAAC,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC;SACxE;;AAGD,QAAA,UAAU,IAAI,gBAAgB,CAAC,MAAM,GAAG,GAAG,GAAG,gBAAgB,CAAC,MAAM,GAAG,GAAG,GAAG,EAAE,CAAC;AACjF,QAAA,UAAU,IAAI,gBAAgB,CAAC,MAAM,GAAG,GAAG,GAAG,gBAAgB,CAAC,MAAM,GAAG,GAAG,GAAG,EAAE,CAAC;AAEjF,QAAA,KAAK,CAAC,KAAK;aACN,SAAS,CAAC,UAAU,CAAC;AACrB,aAAA,iBAAiB,CAAC,gBAAgB,CAAC,kBAAkB,CAAC;AACtD,aAAA,aAAa,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;;AAGnD,QAAA,IAAI,gBAAgB,CAAC,WAAW,KAAK,SAAS,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,EAAE;AACnF,YAAA,IAAI,eAAe,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE;AACrC,gBAAA,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,IAAG;;oBAEvB,UAAU,GAAG,SAAS,GAAG,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;oBACxE,OAAO,mBAAmB,CAAC,gBAAgB,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;AACzE,iBAAC,CAAC,CAAC;aACN;iBAAM;AACH,gBAAA,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,mBAAmB,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;aACrF;SACJ;AAAM,aAAA,IAAI,gBAAgB,CAAC,aAAa,EAAE;AACvC,YAAA,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,qBAAqB,CAAC,gBAAgB,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC;SACzF;aAAM;AACH,YAAA,IAAI,eAAe,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE;;AAErC,gBAAA,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;aAC7D;SACJ;AACD,QAAA,KAAK,CAAC,KAAK;aACN,SAAS,CAAC,UAAU,CAAC;AACrB,aAAA,iBAAiB,CAAC,gBAAgB,CAAC,kBAAkB,CAAC;AACtD,aAAA,aAAa,CAAC,gBAAgB,CAAC,aAAa,CAAC;AAC7C,aAAA,UAAU,CAAC,CAAC,IAAI,qBAAqB,CAAC,gBAAgB,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC;AAC/E,QAAA,IAAI,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE;AAChC,YAAA,KAAK,CAAC,WAAW,CAAC,CAAC,IAAI,qBAAqB,CAAC,gBAAgB,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC;SACpF;KACJ;;IAGD,IAAI,QAAQ,CAAC,gBAAgB,CAAC,YAAY,CAAC,IAAI,gBAAgB,CAAC,YAAY,EAAE;QAC1E,MAAM,GAAG,KAAK,CAAC,gBAAgB,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;KACtD;AACD,IAAA,IAAI,OAAO,CAAC,gBAAgB,CAAC,YAAY,CAAC,EAAE;AACxC,QAAA,MAAM,GAAG,gBAAgB,CAAC,YAAY,CAAC;KAC1C;AAED,IAAA,UAAU,GAAG,YAAY,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;AACvD,IAAA,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC;SACvB,MAAM,CAAC,EAAC,GAAG,EAAE,gBAAgB,CAAC,SAAS,EAAE,KAAK,EAAE,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,gBAAgB,CAAC,YAAY,EAAE,IAAI,EAAE,gBAAgB,CAAC,UAAU,EAAC,CAAC;SACxJ,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;IAE3E,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACjD,aAAa,CAAC,OAAO,GAAG,gBAAgB,CAAC,aAAa,IAAI,eAAe,CAAC;;AAE1E,IAAA,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAEpC,IAAI,eAAe,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,aAAa,CAAC,eAAe,EAAE;QACtE,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,aAAa,EAAE,MAAK;YAClC,UAAU,CAAC,MAAM,oBAAoB,CAAC,aAAa,CAAC,EAAE,GAAG,CAAC,CAAC;AAC/D,SAAC,CAAC,CAAC;KACN;AAED,IAAA,IAAI,aAAa,CAAC,UAAU,KAAK,aAAa,CAAC,IAAI,KAAK,OAAO,IAAI,aAAa,CAAC,IAAI,KAAK,KAAK,CAAC,EAAE;AAC9F,QAAA,IAAG,aAAa,CAAC,UAAU,KAAK,OAAO,EAAE;AACrC,YAAA,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;SACjC;KACJ;AACD,IAAA,OAAO,KAAK,CAAC;AACjB,CAAC,CAAC;AAEF;AACO,MAAM,oBAAoB,GAAG,CAAC,aAAa,EAAE,SAAU,KAAI;AAC9D,IAAA,MAAM,EAAE,GAAG,SAAS,GAAG,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC;;AAEhD,IAAA,IAAI,eAAe,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE;AACtC,QAAA,gBAAgB,CAAC,EAAE,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC;AAClD,QAAA,eAAe,CAAC,EAAE,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC;KACrD;;;;;AAKL,CAAC,CAAC;AAEF;AACO,MAAM,WAAW,GAAG,MAAM,QAAQ;;;;;;IC7xBjC,EAA2E,CAAA,SAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;;;IAA/B,EAAwB,CAAA,UAAA,CAAA,WAAA,EAAA,MAAA,CAAA,UAAA,EAAA,EAAA,CAAA,cAAA,CAAA,CAAA;;;IAJ5E,EAAyC,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,IAAA,EAAA,CAAA,CACb,CACG,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IAAA,EAA8E,CAAA,SAAA,CAAA,CAAA,EAAA,GAAA,CAAA,CAAA;IAAA,EAAM,CAAA,YAAA,EAAA,CAAA;IAC3G,EAA+C,CAAA,SAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;IAC/C,EAAqE,CAAA,UAAA,CAAA,CAAA,EAAA,mCAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;AAE7E,IADI,iBAAK,EACH,CAAA;;;IAJ4B,EAAyC,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAAzC,EAAyC,CAAA,sBAAA,CAAA,sBAAA,EAAA,MAAA,CAAA,SAAA,EAAA,EAAA,CAAA,CAAA;IAAC,EAA4B,CAAA,WAAA,CAAA,SAAA,EAAA,CAAA,MAAA,CAAA,SAAA,CAAA,CAAA;IAC3E,EAAmB,CAAA,SAAA,EAAA,CAAA;IAAnB,EAAmB,CAAA,UAAA,CAAA,WAAA,EAAA,MAAA,CAAA,KAAA,EAAA,EAAA,CAAA,cAAA,CAAA,CAAA;IACd,EAAgB,CAAA,SAAA,EAAA,CAAA;IAAhB,EAAgB,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,UAAA,CAAA,CAAA;;;IAK9C,EAA4F,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IACxF,EAAsG,CAAA,SAAA,CAAA,CAAA,EAAA,GAAA,EAAA,EAAA,CAAA,CAAA;IAC1G,EAAM,CAAA,YAAA,EAAA,CAAA;;;IADoB,EAAiB,CAAA,SAAA,EAAA,CAAA;IAAjB,EAAiB,CAAA,UAAA,CAAA,OAAA,EAAA,MAAA,CAAA,OAAA,CAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAA,GAAA,EAAA,MAAA,CAAA,aAAA,CAAA,CAAqC,CAAqB,WAAA,EAAA,MAAA,CAAA,MAAA,CAAA,CAAA;;ACsCzG,MAAM,aAAa,GAAG,EAAC,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAC,CAAC;AAEvE,MAAM,OAAO,GAAG;AACR,IAAA,QAAQ,EAAG,CAAC,YAAY,EAAE,OAAO,CAAC;AACrC,CAAA,EACD,IAAI,GAAG,MAAM,EACb,gBAAgB,GAAG,CAAC,aAAa,EAAE,mBAAmB,EAAE,SAAS,EAAE,SAAS,CAAC;AAC7E;AACA,mBAAmB,GAAG;AAClB,IAAA,QAAQ,EAAW,aAAa;AAChC,IAAA,KAAK,EAAc,UAAU;AAC7B,IAAA,MAAM,EAAa,2BAA2B;AAC9C,IAAA,iBAAiB,EAAE,kDAAkD;AACrE,IAAA,MAAM,EAAa,6CAA6C;AAChE,IAAA,KAAK,EAAc,6BAA6B;AAChD,IAAA,OAAO,EAAY,6BAA6B;AAChD,IAAA,QAAQ,EAAW,uCAAuC;AAC7D,CAAA;AACD;AACA,UAAU,GAAG,CAAC,YAAY,EAAE,OAAO,CAAC,EACpC,UAAU,GAAG;AACT,IAAA,UAAU,EAAQ,WAAW;AAC7B,IAAA,UAAU,EAAQ,WAAW;AAC7B,IAAA,OAAO,EAAW,MAAM;AACxB,IAAA,YAAY,EAAM,aAAa;AAC/B,IAAA,YAAY,EAAM,aAAa;AAC/B,IAAA,WAAW,EAAO,YAAY;AAC9B,IAAA,gBAAgB,EAAE,iBAAiB;AACtC,CAAA;AACD;AACA,gBAAgB,GAAG;AACf,IAAA,SAAS,EAAG,KAAK;AACjB,IAAA,OAAO,EAAK,OAAO;AACnB,IAAA,SAAS,EAAG,KAAK;AACjB,IAAA,SAAS,EAAG,KAAK;AACjB,IAAA,KAAK,EAAO,KAAK;CACpB,CAAC;AAEN,MAAM,eAAe,GAAG,GAAG,IAAG;IAC1B,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,MAAM,EAAE;AAChC,QAAA,OAAO,IAAI,CAAC;KACf;IACD,IAAI,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,OAAO,EAAE;AAClC,QAAA,OAAO,KAAK,CAAC;KAChB;AACD,IAAA,OAAO,GAAG,CAAC;AACf,CAAC,CAAC;AAEF;AACA,MAAM,sBAAsB,GAAG,OAAO,IAAG;AACrC,IAAA,IAAI,OAAO,CAAC;AACZ,IAAA,MAAM,cAAc,GAAG,EAAE,EACrB,MAAM,GAAG,EAAE,CAAC;IAEhB,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,UAAU,GAAG,EAAA;AACtC,QAAA,OAAO,GAAG,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC1B,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QAChC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,KAAC,CAAC,CAAC;IACH,OAAO;AACH,QAAA,SAAS,EAAG,cAAc;AAC1B,QAAA,QAAQ,EAAI,MAAM;KACrB,CAAC;AACN,CAAC,CAAC;AAEF;AACA,MAAM,iBAAiB,GAAG,SAAS,IAAI,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;AAExF;AACA,MAAM,YAAY,GAAG,CAAC,UAAU,EAAE,EAAE,KAAI;AACpC,IAAA,MAAM,SAAS,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,GAAG,EAAE,GAAG,MAAM,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AACxE,IAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE;AACpB,QAAA,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;KAC/B;AACL,CAAC,CAAC;AAEF,MAAM,KAAK,GAAG,CAAC,IAAG;AACd,IAAA,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,QAAQ,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;AAC1D,IAAA,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AAChC,CAAC,CAAC;AAWI,MAAO,cAAe,SAAQ,iBAAiB,CAAA;AAC1C,IAAA,SAAA,IAAA,CAAA,eAAe,GAAG,aAAa,EAAhB,CAAmB,EAAA;IAoDzC,gBAAgB,GAAA;AACZ,QAAA,OAAO,CAAC,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC;KACpD;;IAGD,WAAW,GAAA;;AAEP,QAAA,OAAO,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC;KAC7E;;IAGD,oBAAoB,GAAA;QAChB,OAAO,CAAC,GAAG,IAAI,CAAC,gBAAgB,EAAE,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC/F;;IAGD,sBAAsB,GAAA;AAClB;;;AAGI;AAEJ,QAAA,OAAO,IAAI,CAAC,oBAAoB,EAAE,KAAK,CAAC,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC;KACnF;AAED;;AAEgC;AAChC,IAAA,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAA;QAC5B,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;;AAEjC,QAAA,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;;AAEjE,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;;AAE7B,YAAA,IAAI,KAAK,YAAY,IAAI,EAAE;AACvB,gBAAA,OAAO,KAAK,CAAC;aAChB;iBAAM;AACH,gBAAA,OAAO,KAAK,CAAC;aAChB;SACJ;AACD,QAAA,OAAO,KAAK,CAAC;KAChB;;AAGD,IAAA,gBAAgB,CAAC,KAAK,EAAA;QAClB,IAAI,CAAC,KAAK,EAAE;YACR,OAAO;SACV;QACD,MAAM,OAAO,GAAQ,EAAE,CAAC;AACxB;;;;;;;;AAQE;QACF,OAAO,CAAC,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,UAAU,IAAI,UAAU,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/E;;;;;;;;AAQG;QACH,OAAO,CAAC,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,UAAU,IAAI,UAAU,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/E,QAAA,OAAO,OAAO,CAAC;KAClB;;AAGD,IAAA,gBAAgB,CAAC,KAAK,EAAA;QAClB,MAAM,OAAO,GAAQ,EAAE,EACnB,SAAS,GAAG,EAAE,EACd,SAAS,GAAG,EAAE,CAAC;QACnB,IAAI,CAAC,KAAK,EAAE;YACR,OAAO;SACV;AAED;;;;;;;;;;;;AAYG;AAEH,QAAA,OAAO,CAAC,KAAK,EAAE,IAAI,IAAG;YAClB,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,UAAU,EAAA;gBAClD,OAAO,UAAU,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;aACxC,CAAC,CAAC,CAAC;YACJ,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,UAAU,EAAA;gBAClD,OAAO,UAAU,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;aACxC,CAAC,CAAC,CAAC;AACR,SAAC,CAAC,CAAC;;QAEH,OAAO,CAAC,GAAG,GAAG,KAAK,CAAC,SAAS,EAAE,UAAU,IAAI,UAAU,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5E,OAAO,CAAC,GAAG,GAAG,KAAK,CAAC,SAAS,EAAE,UAAU,IAAI,UAAU,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5E,QAAA,OAAO,OAAO,CAAC;KAClB;;AAGD,IAAA,YAAY,CAAC,MAAM,EAAA;QACf,OAAO,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,EAAE,GAAG,MAAM,CAAC;KACzE;;IAGD,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAM,EAAE,KAAM,EAAA;QAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,EAC/C,KAAK,GAAG,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,EAC1B,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,KAAK,EACjC,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC;QACrD,IAAI,SAAS,GAAQ,EAAE,CAAC;AAExB,QAAA,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAC5B,YAAA,SAAS,CAAC,CAAC,GAAG,IAAI,CAAC;AACnB,YAAA,SAAS,CAAC,CAAC,GAAG,IAAI,CAAC;;AAEnB,YAAA,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAC1B,gBAAA,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC;AACtB,gBAAA,SAAS,CAAC,KAAK,GAAG,KAAK,IAAI,QAAQ,CAAC;aACvC;SACJ;AAAM,aAAA,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACpC,YAAA,SAAS,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;SAC5B;;AAED,QAAA,SAAS,CAAC,QAAQ,GAAG,OAAO,CAAC;AAC7B,QAAA,OAAO,SAAS,CAAC;KACpB;;AAGD,IAAA,SAAS,CAAC,OAAO,EAAA;AACb,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACpB,YAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;AACjC,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;;AAE1B,YAAA,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;SACpB;KACJ;IAED,gBAAgB,GAAA;AACZ,QAAA,IAAI,CAAC,UAAU,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;;AAEtC,QAAA,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;;AAEtB,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACnB,YAAA,IAAI,CAAC,WAAW,GAAG,WAAW,EAAE,CAAC;YACjC,OAAO,IAAI,CAAC,UAAU,CAAC;SAC1B;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;AAC3C,YAAA,OAAO,EAAE,CAAC;SACb;AAED,QAAA,IAAI,KAAK,GAAG,EAAE,EACV,QAAQ,EACR,MAAM,GAAQ,EAAE,EAChB,MAAM,GAAQ,EAAE,CAAC;AACrB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,EAC9B,SAAS,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EACjE,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC;AAE7B,QAAA,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;AAClB,YAAA,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACtB,gBAAA,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;gBACxB,KAAK,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,KAAK,KAAI;oBACpC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE;AAChC,wBAAA,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;qBAC/D;AACL,iBAAC,CAAC,CAAC;AACH,gBAAA,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACpC;iBAAM;AACH,gBAAA,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAC1B,oBAAA,MAAM,GAAG,IAAI,CAAC,KAAK,KAAK,QAAQ,GAAG,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC;iBAC7D;gBACD,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,MAAM,KAAI;oBACnC,MAAM,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,KAAK,KAAI;wBACrC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE;AAChC,4BAAA,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC;yBACzH;AACL,qBAAC,CAAC,CAAC;AACH,oBAAA,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;oBACnC,KAAK,CAAC,IAAI,CAAC;AACP,wBAAA,MAAM,EAAE,MAAM;AACd,wBAAA,GAAG,EAAE,cAAc,CAAC,QAAQ,CAAC;AAChC,qBAAA,CAAC,CAAC;AACP,iBAAC,CAAC,CAAC;aACN;SACJ;AACD,QAAA,OAAO,KAAK,CAAC;KAChB;AAED,IAAA,YAAY,CAAC,IAAI,EAAA;QACb,IAAI,IAAI,EAAE;AACN,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;SAC9B;KACJ;IAED,YAAY,GAAA;QACR,OAAO,IAAI,CAAC,cAAc,CAAC;KAC9B;;IAGD,sBAAsB,CAAC,aAAa,EAAE,cAAc,EAAA;QAChD,IAAI,SAAS,GAAQ,EAAE,EACnB,WAAW,GAAQ,EAAE,EACrB,cAAc,EACd,SAAS,CAAC;QACd,MAAM,SAAS,GAAQ,EAAE,EACrB,YAAY,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EACrC,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,CAAC;AACpD,QAAA,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;AACtB,QAAA,aAAa,GAAG,OAAO,CAAC,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;AACjE,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AACd,YAAA,cAAc,GAAG,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACtD,YAAA,aAAa,GAAG,OAAO,CAAC,aAAa,EAAE,cAAc,CAAC,OAAO,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;SACzF;AACD,QAAA,aAAa,GAAG,OAAO,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;;QAEvD,IAAI,YAAY,EAAE;AACd,YAAA,SAAS,GAAG,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;SAC1D;QACD,OAAO,CAAC,aAAa,EAAE,CAAC,MAAM,EAAE,QAAQ,KAAI;YACxC,WAAW,GAAG,WAAW,GAAG,IAAI,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;YACpE,YAAY,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,KAAI;AAClC,gBAAA,WAAW,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;AACrF,aAAC,CAAC,CAAC;AACH,YAAA,SAAS,GAAG;AACR,gBAAA,GAAG,EAAG,QAAQ;AACd,gBAAA,MAAM,EAAG,WAAW;aACvB,CAAC;AACF,YAAA,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC9B,SAAC,CAAC,CAAC;AACH,QAAA,OAAO,SAAS,CAAC;KACpB;AAED;AACmI;IACnI,kBAAkB,GAAA;QACd,IAAI,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE;AACzD,YAAA,IAAI,iBAAiB,GAAG,KAAK,EACzB,oBAAoB,EACpB,kBAAkB,EAClB,OAAO,GAAQ,EAAE,EACjB,mBAAmB,CAAC;YACxB,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EACvF,SAAS,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;AAEtE,YAAA,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;;gBAE3B,cAAc,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,KAAK,KAAI;AACnC,oBAAA,IAAI,IAAI,CAAC,YAAY,KAAK,MAAM,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE;wBACrE,iBAAiB,GAAG,IAAI,CAAC;wBACzB,oBAAoB,GAAG,MAAM,CAAC;wBAC9B,mBAAmB,GAAG,KAAK,CAAC;AAC5B,wBAAA,cAAc,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC;AAC9C,wBAAA,OAAO,KAAK,CAAC;qBAChB;AACD,oBAAA,OAAO,IAAI,CAAC;AAChB,iBAAC,CAAC,CAAC;;gBAEH,IAAI,oBAAoB,EAAE;AACtB,oBAAA,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;iBACtC;AAED,gBAAA,IAAI,cAAc,CAAC,MAAM,EAAE;AACvB,oBAAA,OAAO,GAAG,MAAM,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;iBAC7C;aACJ;;YAED,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,iBAAiB,EAAE;AAC9C,gBAAA,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;aACnC;AACD,YAAA,OAAO,CAAC,SAAS,EAAE,GAAG,IAAG;AACrB,gBAAA,IAAI,GAAG,KAAK,IAAI,CAAC,iBAAiB,EAAE;AAChC,oBAAA,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;iBACrB;AACL,aAAC,CAAC,CAAC;AACH,YAAA,kBAAkB,GAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;;AAExC,YAAA,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;YAE3C,OAAO;AACH,gBAAA,UAAU,EAAE,kBAAkB;AAC9B,gBAAA,iBAAiB,EAAE,iBAAiB;AACpC,gBAAA,oBAAoB,EAAE,oBAAoB;aAC7C,CAAC;SACL;QACD,OAAO;AACH,YAAA,UAAU,EAAE,EAAE;AACd,YAAA,iBAAiB,EAAE,KAAK;AACxB,YAAA,oBAAoB,EAAE,EAAE;SAC3B,CAAC;KACL;;AAGD,IAAA,iBAAiB,CAAC,QAAQ,EAAA;AACtB,QAAA,MAAM,QAAQ,GAAQ,IAAI,CAAC,UAAU,EACjC,SAAS,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EACjE,IAAI,GAAQ,EAAE,CAAC;AACnB,QAAA,IAAI,QAAQ,EACR,OAAO,GAAQ,EAAE,EACjB,QAAQ,EACR,cAAc,EACd,aAAa,GAAQ,EAAE,CAAC;QAE5B,IAAI,CAAC,QAAQ,EAAE;YACX,OAAO;SACV;AACD,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE;YACzB,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;SAC5C;AACD,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;AAC5C,YAAA,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,aAAa,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;YACzE,cAAc,GAAG,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC;;YAE9D,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,cAAc,CAAC,EAAE,GAAG,IAAG;AACjD,gBAAA,QAAQ,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;;gBAElC,QAAQ,GAAG,OAAO,CAAC,QAAQ,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;AAChD,aAAC,CAAC,CAAC;SACN;AACD,QAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE,EAAE;;AAE7B,YAAA,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;YACnC,IAAI,CAAC,YAAY,GAAI;AACjB,gBAAA;oBACI,OAAO,EAAE,IAAI,CAAC,iBAAiB;AAC/B,oBAAA,MAAM,EAAG,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC;AAC3C,oBAAA,OAAO,EAAE,iBAAiB,CAAC,IAAI,CAAC,iBAAiB,CAAC;AACrD,iBAAA;aACJ,CAAC;SACL;;AAED,QAAA,QAAQ,CAAC,OAAO,CAAC,mBAAmB,EAAE;AAClC,YAAA,cAAc,EAAG,IAAI;AACrB,YAAA,MAAM,EAAW,QAAQ;AAC5B,SAAA,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAG;;YAEf,MAAM,SAAS,GAAQ,EAAE,EACrB,gBAAgB,GAAQ,iBAAiB,CAAC,IAAI,CAAC,iBAAiB,CAAC,EACjE,aAAa,GAAG,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,EACpD,cAAc,GAAG,EAAE,CAAC;AAExB,YAAA,SAAS,CAAC,OAAO,CAAC,QAAQ,IAAI,cAAc,CAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAEhF,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,eAAe,KAAI;gBAC/C,MAAM,GAAG,GAAG,EAAE,CAAC;;AAEf,gBAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE,EAAE;oBAC7B,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,eAAe,CAAC,gBAAgB,CAAC,CAAC;oBAChE,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,GAAG,CAAC,eAAe,EAAE,gBAAgB,CAAC,IAAI,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;iBACxH;gBAED,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,GAAG,CAAC,eAAe,EAAE,aAAa,CAAC,IAAI,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;gBAExG,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,KAAK,KAAI;oBAClC,GAAG,CAAC,QAAQ,CAAC,GAAG,eAAe,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;oBACvD,GAAG,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC,eAAe,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;AAClG,iBAAC,CAAC,CAAC;AAEH,gBAAA,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACxB,aAAC,CAAC,CAAC;AAEH,YAAA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;YAE3B,SAAS,CAAC,QAAQ,CAAC,CAAC;SACvB,EAAE,MAAK;AACJ,YAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;AACpB,YAAA,IAAI,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAC;YAC3C,SAAS,CAAC,QAAQ,CAAC,CAAC;AACxB,SAAC,CAAC,CAAC;KACN;;IAGD,iBAAiB,GAAA;QACb,IAAI,MAAM,EACN,SAAS,EACT,SAAS,EACT,KAAK,EACL,KAAK,EACL,WAAW,EACX,WAAW,EACX,UAAU,EACV,oBAAoB,EACpB,UAAU,EACV,YAAY,EACZ,UAAU,CAAC;QACf,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,EAAE,EAC9C,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;QAEvC,MAAM,GAAG,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;QAGtF,MAAM,CAAC,IAAI,CAAC,YAAA;AACR,YAAA,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;YACtB,IAAI,UAAU,EACV,QAAQ,CAAC;AACb,YAAA,IAAI,KAAK,CAAC,IAAI,EAAE,IAAI,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,GAAG,EAAE;AAC9C,gBAAA,UAAU,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACzD,gBAAA,KAAK,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC7C,KAAK,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;AACzC,gBAAA,IAAI,CAAC,UAAU,IAAI,KAAK,GAAG,CAAC,EAAE;oBAC1B,QAAQ,GAAG,KAAK,CAAC;iBACpB;AAAM,qBAAA,IAAI,KAAK,GAAG,CAAC,EAAE;oBAClB,QAAQ,GAAG,KAAK,CAAC;iBACpB;gBACD,IAAI,SAAS,EAAE;AACX,oBAAA,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;AACjC,oBAAA,OAAO,KAAK,CAAC;iBAChB;gBACD,SAAS,GAAG,QAAQ,CAAC;AACrB,gBAAA,OAAO,IAAI,CAAC;aACf;AACL,SAAC,CAAC,CAAC;;QAGH,IAAI,UAAU,EAAE;AACZ,YAAA,UAAU,GAAG,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,GAAG,gCAAgC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5E,YAAA,YAAY,GAAG,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,GAAG,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,YAAA,UAAU,GAAG,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;;AAElD,YAAA,WAAW,GAAG,UAAU,GAAG,UAAU,CAAC,qBAAqB,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;;YAEzE,oBAAoB,GAAG,YAAY,GAAG,UAAU,CAAC,qBAAqB,EAAE,CAAC,KAAK,GAAG,YAAY,CAAC,qBAAqB,EAAE,CAAC,KAAK,GAAG,UAAU,CAAC,qBAAqB,EAAE,CAAC,KAAK,CAAC;;YAEvK,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,oBAAoB,GAAG,QAAQ,CAAC,CAAC;;;AAGxD,YAAA,IAAI,SAAS,GAAG,QAAQ,EAAE;;AAEtB,gBAAA,WAAW,GAAG,WAAW,GAAG,QAAQ,CAAC;;AAErC,gBAAA,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,WAAW,CAAC,CAAC;;AAE5D,gBAAA,EAAE,CAAC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC,EAAA;;AAEhH,oBAAA,IAAI,CAAC,GAAG,UAAU,KAAK,CAAC,EAAE;AACtB,wBAAA,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;qBACtC;AACL,iBAAC,CAAC,CAAC;aACN;SACJ;aAAM;;YAEH,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,QAAQ,CAAC,CAAC;SAChD;;AAGD,QAAA,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;;QAEhC,MAAM,CAAC,IAAI,CAAC,YAAA;YACR,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,SAAS,EAAE;AACrC,gBAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC;aACpE;AACL,SAAC,CAAC,CAAC;KACN;;IAGD,iBAAiB,GAAA;AACb,QAAA,IAAI,IAAI,EACJ,YAAY,EACZ,CAAC,EACD,IAAI,CAAC;QACT,MAAM,cAAc,GAAG,EAAE,EACrB,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;QAErF,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,IAAI,cAAc,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;AAClE,YAAA,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACvB,YAAA,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE;gBAC/C,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;aAC7C;AAAM,iBAAA,IAAI,IAAI,KAAK,QAAQ,IAAI,CAAC,YAAY,EAAE;AAC3C,gBAAA,YAAY,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;aACvC;SACJ;;;AAGD,QAAA,IAAI,YAAY,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACxE,YAAA,IAAI,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;AACzB,YAAA,cAAc,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC;AACjC,YAAA,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;SAC5B;AAED,QAAA,OAAO,cAAc,CAAC;KACzB;;IAGD,gBAAgB,GAAA;AACZ,QAAA,IAAI,OAAO,CAAC;QACZ,EAAE,CAAC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,gBAAgB,EAAE,KAAK,CAAC;aAC7G,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,KAAI;AAChC,YAAA,QAAQ,IAAI,CAAC,IAAI;AACb,gBAAA,KAAK,QAAQ,CAAC;AACd,gBAAA,KAAK,KAAK;AACN,oBAAA,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;oBACxB,MAAM;AACV,gBAAA,KAAK,KAAK,CAAC;AACX,gBAAA,KAAK,OAAO;AACR,oBAAA,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;oBAC7B,MAAM;AACV,gBAAA,KAAK,MAAM,CAAC;AACZ,gBAAA,KAAK,iBAAiB,CAAC;AACvB,gBAAA,KAAK,MAAM;AACP,oBAAA,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;oBAC3B,MAAM;AACV,gBAAA,KAAK,QAAQ;oBACT,OAAO,GAAG,IAAI,CAAC;oBACf,MAAM;aACb;AACD,YAAA,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC;AAC5B,YAAA,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE;AAC/B,gBAAA,MAAM,EAAE,KAAK;AACb,gBAAA,iBAAiB,EAAE,IAAI;gBACvB,YAAY,EAAE,IAAI,CAAC,YAAY;AAClC,aAAA,CAAC,CAAC;AACP,SAAC,CAAC,CAAC;KAEV;AAED;;;;;;AAMK;AAEL,IAAA,eAAe,CAAC,KAAK,EAAA;AACjB,QAAA,IAAI,QAAQ,EACR,SAAS,EACT,SAAS,EACT,UAAU,CAAC;QACf,MAAM,QAAQ,GAAG,EAAE,CAAC;AACpB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;QAE9B,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAE3B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACvB,IAAI,CAAC,iBAAiB,EAAE,CAAC;SAC5B;AAAM,aAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;AAChC;AACwD;;AAExD,YAAA,QAAQ,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC;AACrD,YAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;AACpE,YAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;YAC9D,UAAU,GAAG,EAAE,CAAC;AAChB,YAAA,IAAI,SAAS,IAAI,SAAS,CAAC,MAAM,EAAE;gBAC/B,SAAS,CAAC,IAAI,CAAC,YAAA;oBACX,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,EAAA;wBACzC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9B,qBAAC,CAAC,CAAC;AACP,iBAAC,CAAC,CAAC;AACH,gBAAA,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,EAAA;oBACzB,MAAM,KAAK,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC9B,oBAAA,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;AACnF,iBAAC,CAAC,CAAC;aACN;SACJ;;QAGD,OAAO,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,GAAG,KAAI;YAC/B,IAAI,GAAG,KAAK,UAAU,IAAI,GAAG,KAAK,UAAU,EAAE;gBAC1C,QAAQ,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;aACnD;iBAAM;gBACH,QAAQ,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;aAC/B;AACL,SAAC,CAAC,CAAC;AACH,QAAA,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;AAEjC;;;AAGK;QACL,SAAS,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAClD,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,MAAK;YACxC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,qBAAqB,EAAE,CAAC,MAAM,EAAE;gBAC3C,KAAK,CAAC,MAAM,EAAE,CAAC;gBACf,oBAAoB,CAAC,IAAI,CAAC,CAAC;gBAC3B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;oBACvB,IAAI,CAAC,iBAAiB,EAAE,CAAC;iBAC5B;aACJ;iBAAM;;AAEH;;;AAGG;aACN;AACL,SAAC,CAAC,CAAC;KACN;;IAGD,cAAc,GAAA;;;AAGV,QAAA,IAAI,aAAa,CAAC;AAClB,QAAA,IAAI,aAAa,CAAC;AAClB,QAAA,IAAI,KAAK,CAAC;AACV,QAAA,IAAI,eAAe,CAAC;QACpB,MAAM,cAAc,GAAQ,EAAE,CAAC;QAE/B,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;AAChC,YAAA,IAAI,iBAAiB,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE;AAC9B,gBAAA,aAAa,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,EAAG,EAAC,GAAG,EAAE,CAAC,EAAC,EAAG,KAAK,EAAG,EAAC,GAAG,EAAG,CAAC,EAAC,EAAC,CAAC;aAC9H;AACD,YAAA,IAAI,iBAAiB,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE;AAC9B,gBAAA,aAAa,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,KAAK,EAAG,EAAC,GAAG,EAAG,CAAC,EAAC,EAAE,KAAK,EAAG,EAAC,GAAG,EAAG,CAAC,EAAC,EAAC,CAAC;aAC3H;SACJ;AAED,QAAA,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;AACnE,YAAA,IAAI,CAAC,cAAc,GAAG,eAAe,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,cAAc,CAAC,CAAC;SACnF;;AAGD,QAAA,KAAK,GAAG,SAAS,CAAC,IAAI,EAAE,aAAa,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAE/E,QAAA,IAAI,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE;;YAE9B,MAAM,SAAS,GAAI,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACnF,YAAA,IAAI,SAAS,IAAI,SAAS,CAAC,MAAM,EAAE;gBAC/B,SAAS,CAAC,MAAM,EAAE,CAAC;aACtB;AACD,YAAA,eAAe,GAAG,IAAI,CAAC,mBAAmB,CAAC,cAAc,EAAE,EAAE,eAAe,EAAG,KAAK,EAAC,CAAC,CAAC;YACvF,IAAI,eAAe,EAAE;gBACjB,KAAK,GAAG,eAAe,CAAC;aAC3B;AACD,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;;YAEnB,EAAE,CAAC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC;AACpC,iBAAA,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC;AAC1B,iBAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACtB,YAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;AAC5B,YAAA,OAAO,KAAK,CAAC;SAChB;KACJ;;IAGD,SAAS,GAAA;AACL,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;;AAE9B,QAAA,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC;;AAG3E,QAAA,IAAI,IAAI,CAAC,iBAAiB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACjD,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC;SACxC;aAAM;AACH,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;SACjD;;QAED,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,qBAAqB,EAAE,CAAC,MAAM,EAAE;YAC5C,OAAO;SACV;AACD,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;;YAElB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;AAC/C,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;SAC5B;;AAGD,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE;AACrB,YAAA,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;SAC5B;AACD,QAAA,EAAE,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAG,MAAK;AAC3C;;AAE2B;YAC3B,UAAU,CAAE,MAAK;gBACb,IAAI,CAAC,gBAAgB,EAAE,CAAC;aAC3B,EAAE,GAAG,CAAC,CAAC;AACZ,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;KACjC;;AAED,IAAA,IAAI,cAAc,GAAA;;AAEd,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC;AACpC,QAAA,OAAO,WAAW,IAAI,WAAW,CAAC,QAAQ,KAAK,iBAAiB,CAAC;KACpE;IAED,cAAc,GAAA;AACV,QAAA,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;AAClC,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;;AAE3B,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;AAC7B,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;;;AAGlD,QAAA,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,cAAc,KAAK,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC,EAAE;YACjG,IAAI,CAAC,iBAAiB,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;SAClD;AAAM,aAAA;;YAEH,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,cAAc,EAAE;AACrC,gBAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC;gBAC9B,IAAI,IAAI,CAAC,gBAAgB,EAAE,IAAI,eAAe,CAAC,iBAAiB,EAAE;AAC9D,oBAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,oBAAoB,CAAC,CAAC;iBACtG;aAEJ;YACD,IAAI,CAAC,SAAS,EAAE,CAAC;SACpB;KACJ;;IAGD,qBAAqB,GAAA;AACjB,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;;;QAGhD,IAAI,CAAC,YAAY,GAAG,cAAc,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;QAC9C,IAAI,CAAC,YAAY,GAAG,cAAc,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;KACjD;IAED,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAA;QAC5B,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,EAC3C,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;AACpD,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACnB,YAAA,OAAO,MAAM,CAAC;SACjB;AACD,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACnB,YAAA,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;SAC7B;AACD,QAAA,IAAI,UAAU,CAAC;QACf,QAAQ,IAAI;AACR,YAAA,KAAK,cAAc;;AAEf,gBAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE;oBACzB,UAAU,GAAG,cAAc,CAAC;iBAC/B;gBACD,MAAM;AACV,YAAA,KAAK,cAAc;;AAEf,gBAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE,EAAE;oBAC7B,UAAU,GAAG,UAAU,CAAC;iBAC3B;AAAM,qBAAA,IAAI,IAAI,CAAC,cAAc,EAAE;;AAE5B,oBAAA,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC;iBACpC;gBACD,MAAM;AACV,YAAA,KAAK,SAAS;;AAEV,gBAAA,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE;AAChF,oBAAA,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC;iBACvC;gBACD,MAAM;AACV,YAAA,KAAK,mBAAmB;;AAEpB,gBAAA,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,oBAAoB,EAAE,IAAI,IAAI,CAAC,WAAW,KAAK,OAAO,EAAE;AACpF,oBAAA,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC;iBACpC;gBACD,MAAM;AACV,YAAA,KAAK,SAAS;;gBAEV,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,oBAAoB,EAAE,EAAE;oBACpD,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC,CAAC;iBACzD;gBACD,MAAM;AACV,YAAA,KAAK,YAAY;gBACb,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;AACnD,oBAAA,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC;iBACpC;gBACD,MAAM;SACb;AAED,QAAA,OAAO,UAAU,IAAI,MAAM,IAAI,IAAI,CAAC,WAAW,CAAC;KACnD;;IAGD,8BAA8B,GAAA;QAC1B,IAAI,OAAO,EACP,IAAI,CAAC;AACT,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;AACvF,QAAA,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;AACzB,QAAA,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;;QAE5B,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE;AACzC,YAAA,OAAO,GAAG,EAAE,CAAC;SAChB;QAED,IAAI,OAAO,EAAE;;YAET,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,KAAI;AAClC,gBAAA,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;AACzB,gBAAA,IAAI,YAAY,CAAC,IAAI,CAAC,EAAE;AACpB,oBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;iBACjC;;AAED,gBAAA,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,WAAW,KAAK,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE;AACnE,oBAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;iBACpC;AACL,aAAC,CAAC,CAAC;YACH,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;YACjD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;SAC1D;KACJ;;AAGD,IAAA,aAAa,CAAC,MAAM,EAAA;AAChB,QAAA,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;;QAEjB,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AAC9B,YAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;AAC/B,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;SAC3B;;AAGD,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,cAAc,GAAG,MAAM,IAAI,EAAE,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,SAAS,KAAK,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,EAAE,GAAG,MAAM,CAAC;;AAGrI,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;YACtD,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SACrC;AAED,QAAA,IAAI,MAAM,IAAI,MAAM,CAAC,YAAY,EAAE;AAC/B,YAAA,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;SAC3C;;AAGD,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,eAAe,EAAE,CAAC;SAC1B;KACJ;;AAKD,IAAA,mBAAmB,CAAC,UAAU,EAAA;QAC1B,IAAI,QAAQ,EAAE,SAAS,CAAC;AACxB,QAAA,QAAQ,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC;AAErD,QAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AACjE,QAAA,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACnB,QAAA,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC;AACnB,aAAA,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC;AACnB,aAAA,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC;AAC7B,aAAA,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC;aAC7B,IAAI,CAAC,UAAU,CAAC;aAChB,IAAI,CAAC,UAAU,CAAC,EAAA;AACb,YAAA,IAAI,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAC5B,IAAI,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,EACpC,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,qBAAqB,EAAE,CAAC,KAAK,CAAC;;YAE9D,UAAU,GAAG,UAAU,GAAG,EAAE,EAC5B,SAAS,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;YACzC,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,UAAU,GAAG,SAAS,CAAC,CAAC;AACpD,SAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,YAAA;;AAEpB,YAAA,IAAI,QAAQ,GAAG,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACvD,YAAA,OAAO,QAAQ,GAAG,EAAE,GAAG,EAAE,GAAG,QAAQ,GAAG,IAAI,CAAC;AAC9C,SAAC,CAAC,CAAC;KACZ;AAED,IAAA,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAO,EAAA;QACjC,KAAK,CAAC,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QAC5C,QAAQ,GAAG;AACP,YAAA,KAAK,SAAS;AACV,gBAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;gBAC3B,MAAM;AACV,YAAA,KAAK,aAAa;AACd,gBAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACZ,oBAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AACzB,oBAAA,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;iBACpC;gBACD,MAAM;AACV,YAAA,KAAK,MAAM;;AAEP,gBAAA,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACtB,oBAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;AACpB,oBAAA,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;AACrB,oBAAA,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;AACtB,oBAAA,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;iBACvB;qBAAM,IAAI,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,OAAO,EAAE;AAC/C,oBAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;AACpB,oBAAA,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;AACtB,oBAAA,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;AACvB,oBAAA,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;iBACxB;AAED,gBAAA,IAAI,MAAM,KAAK,MAAM,EAAE;AACnB,oBAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;iBAC3B;;gBAED,IAAI,CAAC,eAAe,EAAE,CAAC;gBACvB,MAAM;AACV,YAAA;;gBAEI,IAAI,CAAC,eAAe,EAAE,CAAC;gBACvB,MAAM;SACb;AACD,QAAA,IAAI,QAAQ,CAAC,gBAAgB,EAAE,GAAG,CAAC,EAAE;YACjC,IAAI,CAAC,eAAe,EAAE,CAAC;SAC1B;KACJ;AAED,IAAA,aAAa,CAAC,IAAI,EAAA;AACd,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACnC,IAAI,UAAU,IAAI,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE;AACrH,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC;AACpC,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC;SACvC;KACJ;IAED,WAAW,GAAA;AACP,QAAA,EAAE,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;KAClD;AAED,IAAA,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAA;QAC7B,MAAM,QAAQ,GAAG,EAAE,CAAC;QACpB,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QACzC,QAAQ,GAAG;AACP,YAAA,KAAK,UAAU,CAAC;AAChB,YAAA,KAAK,UAAU,CAAC;AAChB,YAAA,KAAK,OAAO,CAAC;AACb,YAAA,KAAK,YAAY,CAAC;AAClB,YAAA,KAAK,YAAY,CAAC;AAClB,YAAA,KAAK,WAAW,CAAC;AACjB,YAAA,KAAK,gBAAgB;AACjB,gBAAA,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,UAAU,IAAI,GAAG,KAAK,UAAU,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC;AAChH,gBAAA,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;gBACjC,MAAM;SACb;KACJ;AAED,IAAA,WAAA,CAAY,GAAa,EAAU,GAAQ,EAA0C,eAAoB,EAAA;AACrG,QAAA,KAAK,CAAC,GAAG,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;QADZ,IAAG,CAAA,GAAA,GAAH,GAAG,CAAK;QA/8B3C,IAAS,CAAA,SAAA,GAAG,EAAE,CAAC;QA6BP,IAAiB,CAAA,iBAAA,GAAQ,EAAE,CAAC;QAG5B,IAAW,CAAA,WAAA,GAAQ,EAAE,CAAC;QAKtB,IAAS,CAAA,SAAA,GAAU,EAAE,CAAC;QACtB,IAAc,CAAA,cAAA,GAAU,EAAE,CAAC;QAC3B,IAAa,CAAA,aAAA,GAAQ,EAAE,CAAC;AAo0BhC,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;QAiJhE,IAAM,CAAA,MAAA,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QA3CrC,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,EAAE,iBAAiB,CAAC,SAAS,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,gBAAgB,CAAC,CAAC,CAAC;;QAG5J,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;;AAE1C,QAAA,UAAU,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;AACxC,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;;QAEnE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,uBAAuB,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;;QAEpG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,eAAe,EAAE,MAAO,EAAA,IAAI,CAAC,WAAW,EAAE,CAAC,EAAC,CAAC,CAAC,CAAC;KAC7F;IAED,eAAe,GAAA;QACX,KAAK,CAAC,eAAe,EAAE,CAAC;;AAExB,QAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE;YAC3D,IAAI,CAAC,UAAU,GAAU,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC1D,IAAI,CAAC,iBAAiB,GAAG,eAAe,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YACjE,IAAI,CAAC,UAAU,GAAU,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,iBAAiB,GAAG,SAAS,GAAG,QAAQ,IAAI,MAAM,CAAC;SACvG;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;;AAEb,YAAA,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,OAAO,GAAG,aAAa,CAAC;SAC/D;AAED,QAAA,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;;AAE5D,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,cAAc,CAAC,EAAE;YACvE,IAAI,CAAC,eAAe,EAAE,CAAC;SAC1B;KACJ;IAED,WAAW,GAAA;;QAEP,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,YAAY,KAAG;AACvC,YAAA,YAAY,EAAE,CAAC;AACnB,SAAC,CAAC,CAAC;QACH,KAAK,CAAC,WAAW,EAAE,CAAC;KACvB;AArgCQ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,SAAA,sBAAA,CAAA,CAAA,EAAA,EAAA,OAAA,KAAA,CAAA,IAAA,cAAc,wFAy9B8B,kBAAkB,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAA;oEAz9B9D,cAAc,EAAA,SAAA,EAAA,CAAA,CAAA,KAAA,EAAA,SAAA,EAAA,EAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,2BAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;YAAd,EAAc,CAAA,WAAA,CAAA,OAAA,EAAA,GAAA,CAAA,KAAA,CAAA,CAAA;AALZ,SAAA,EAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,kBAAA,CAAA;gBACP,kBAAkB,CAAC,cAAc,CAAC;AACrC,aAAA,CAAA,EAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,KAAA,EAAA,GAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,CAAA,OAAA,EAAA,eAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,SAAA,CAAA,EAAA,CAAA,OAAA,EAAA,kCAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,eAAA,CAAA,EAAA,CAAA,CAAA,EAAA,aAAA,CAAA,EAAA,CAAA,CAAA,EAAA,WAAA,CAAA,EAAA,CAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,WAAA,CAAA,EAAA,CAAA,OAAA,EAAA,aAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,WAAA,CAAA,EAAA,CAAA,CAAA,EAAA,iBAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,CAAA,CAAA,EAAA,QAAA,EAAA,SAAA,uBAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;YDvIL,EAAyC,CAAA,UAAA,CAAA,CAAA,EAAA,6BAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;YAOzC,EAA2F,CAAA,cAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;;YACvF,EAAW,CAAA,SAAA,CAAA,CAAA,EAAA,KAAA,CAAA,CAAA;YACX,EAA4F,CAAA,UAAA,CAAA,CAAA,EAAA,6BAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;;YAG5F,EAAgF,CAAA,SAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;YACpF,EAAM,CAAA,YAAA,EAAA,CAAA;;YAbsB,EAAW,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,KAAA,CAAA,CAAA;YAOV,EAA6D,CAAA,SAAA,EAAA,CAAA;YAA7D,EAA6D,CAAA,UAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAA,GAAA,EAAA,GAAA,CAAA,gBAAA,EAAA,GAAA,CAAA,KAAA,CAAA,CAAA,CAAA;YAEvC,EAA2C,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;YAA3C,EAA2C,CAAA,UAAA,CAAA,MAAA,EAAA,GAAA,CAAA,oBAAA,IAAA,GAAA,CAAA,aAAA,CAAA,CAAA;;;iFCiIjF,cAAc,EAAA,CAAA;cAT1B,SAAS;AACI,QAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,EAGb,SAAA,EAAA;AACP,oBAAA,kBAAkB,CAAgB,cAAA,CAAA;iBACrC,EACc,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,qzBAAA,EAAA,MAAA,EAAA,CAAA,ilQAAA,CAAA,EAAA,CAAA;;sBA29BS,MAAM;uBAAC,kBAAkB,CAAA;;sBAAG,QAAQ;qBAt6BtD,KAAK,EAAA,CAAA;kBAAhC,WAAW;mBAAC,aAAa,CAAA;;kFAnDjB,cAAc,EAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,GAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;AClI3B,MAAM,UAAU,GAAG;IACf,cAAc;CACjB,CAAC;MAWW,WAAW,CAAA;4EAAX,WAAW,GAAA,CAAA,EAAA,CAAA,EAAA;mEAAX,WAAW,EAAA,CAAA,CAAA,EAAA;uEAPhB,WAAW;YACX,YAAY;YACZ,kBAAkB,CAAA,EAAA,CAAA,CAAA,EAAA;;iFAKb,WAAW,EAAA,CAAA;cATvB,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;AACN,gBAAA,OAAO,EAAE;oBACL,WAAW;oBACX,YAAY;oBACZ,kBAAkB;AACrB,iBAAA;AACD,gBAAA,YAAY,EAAE,CAAC,GAAG,UAAU,CAAC;AAC7B,gBAAA,OAAO,EAAE,CAAC,GAAG,UAAU,CAAC;AAC3B,aAAA,CAAA;;wFACY,WAAW,EAAA,EAAA,YAAA,EAAA,CAZpB,cAAc,CAAA,EAAA,OAAA,EAAA,CAKV,WAAW;QACX,YAAY;AACZ,QAAA,kBAAkB,aAPtB,cAAc,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;ACTlB;;AAEG;;;;"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../../projects/components/widgets/chart/src/chart.props.ts","../../../../projects/components/widgets/chart/src/chart.utils.ts","../../../../projects/components/widgets/chart/src/chart.component.html","../../../../projects/components/widgets/chart/src/chart.component.ts","../../../../projects/components/widgets/chart/src/chart.module.ts","../../../../projects/components/widgets/chart/src/index.ts"],"sourcesContent":["import { PROP_ANY, PROP_BOOLEAN, PROP_NUMBER, PROP_STRING, register } from '@wm/components/base';\n\nexport const registerProps = () => {\n register(\n 'wm-chart',\n new Map(\n [\n ['aggregation', {value: 'none', ...PROP_STRING}],\n ['aggregationcolumn', PROP_STRING],\n ['areaviewtype', {value: 'stack', ...PROP_STRING}],\n ['barspacing', {value: 'medium', ...PROP_STRING}],\n ['bubblesize', PROP_STRING],\n ['centerlabel', PROP_STRING],\n ['class', PROP_STRING],\n ['customcolors', PROP_ANY],\n ['dataset', PROP_ANY],\n ['datasource', PROP_STRING],\n ['donutratio', {value: 'medium', ...PROP_STRING}],\n ['formattype', {value: '', PROP_STRING}],\n ['groupby', PROP_STRING],\n ['height', {value: '210px', PROP_STRING}],\n ['highlightpoints', PROP_BOOLEAN],\n ['iconclass', PROP_STRING],\n ['interpolation', {value: 'linear', ...PROP_STRING}],\n ['labelthreshold', {value: 0.01, ...PROP_NUMBER}],\n ['labeltype', {value: 'percent', ...PROP_STRING}],\n ['legendtype', {value: 'furious', ...PROP_STRING}],\n ['linethickness', PROP_STRING],\n ['loadingdatamsg', {value: 'Loading...', ...PROP_STRING}],\n ['name', PROP_STRING],\n ['nodatamessage', {value: 'No Data Available.', ...PROP_STRING}],\n ['offset', PROP_STRING],\n ['offsetbottom', {value: 55, ...PROP_NUMBER}],\n ['offsetleft', {value: 75, ...PROP_NUMBER}],\n ['offsetright', {value: 25, ...PROP_NUMBER}],\n ['offsettop', {value: 25, ...PROP_NUMBER}],\n ['orderby', PROP_STRING],\n ['reducexticks', {value: true, ...PROP_BOOLEAN}],\n ['shape', {value: 'circle', ...PROP_STRING}],\n ['show', {value: true, ...PROP_BOOLEAN}],\n ['showlabels', {value: 'outside', ...PROP_STRING}],\n ['showlabelsoutside', {value: true, ...PROP_BOOLEAN}],\n ['showlegend', {value: 'top', ...PROP_STRING}],\n ['showvalues', {value: false, ...PROP_BOOLEAN}],\n ['showxaxis', {value: true, ...PROP_BOOLEAN}],\n ['showxdistance', {value: false, ...PROP_BOOLEAN}],\n ['showyaxis', {value: true, ...PROP_BOOLEAN}],\n ['showydistance', {value: false, ...PROP_BOOLEAN}],\n ['staggerlabels', {value: false, ...PROP_BOOLEAN}],\n ['subheading', PROP_STRING],\n ['theme', PROP_STRING],\n ['title', PROP_STRING],\n ['tooltips', {value: true, ...PROP_BOOLEAN}],\n ['type', PROP_STRING],\n ['viewtype', {value: 'Grouped', ...PROP_STRING}],\n ['xaxisdatakey', PROP_STRING],\n ['xaxislabel', PROP_STRING],\n ['xaxislabeldistance', {value: 12, ...PROP_NUMBER}],\n ['xdateformat', PROP_STRING],\n ['xdomain', {value: 'Default', ...PROP_STRING}],\n ['xnumberformat', PROP_STRING],\n ['xunits', PROP_STRING],\n ['yaxisdatakey', PROP_STRING],\n ['yaxislabel', PROP_STRING],\n ['yaxislabeldistance', {value: 12, ...PROP_NUMBER}],\n ['ydomain', {value: 'Default', ...PROP_STRING}],\n ['ynumberformat', PROP_STRING],\n ['yunits', PROP_STRING]\n ]\n )\n );\n};\n","import {isEmptyObject, prettifyLabels} from '@wm/core';\nimport {forEach, includes, invert, isArray, isFinite, isString, isUndefined, split} from \"lodash-es\";\n\ndeclare const $;\n\ndeclare const moment;\ndeclare const d3, nv;\n\nexport const chartTypes = ['Column', 'Line', 'Area', 'Cumulative Line', 'Bar', 'Pie', 'Donut', 'Bubble'],\n allShapes = ['circle', 'square', 'diamond', 'cross', 'triangle-up', 'triangle-down'];\n\nconst dateList = ['01/01/2001', '01/01/2002', '01/01/2003'],\n themes = {\n 'Terrestrial': {\n colors: ['#1f77b4', '#aec7e8', '#ff7f0e', '#ffbb78', '#2ca02c', '#98df8a', '#d62728', '#ff9896', '#9467bd', '#c5b0d5', '#8c564b', '#c49c94', '#e377c2', '#f7b6d2', '#7f7f7f', '#c7c7c7', '#bcbd22', '#dbdb8d', '#17becf', '#9edae5'],\n tooltip: {\n 'backgroundColor': '#de7d28',\n 'textColor': '#FFFFFF'\n }\n },\n 'Annabelle': {\n colors: ['#393b79', '#5254a3', '#6b6ecf', '#9c9ede', '#637939', '#8ca252', '#b5cf6b', '#cedb9c', '#8c6d31', '#bd9e39', '#e7ba52', '#e7cb94', '#843c39', '#ad494a', '#d6616b', '#e7969c', '#7b4173', '#a55194', '#ce6dbd', '#de9ed6'],\n tooltip: {\n 'backgroundColor': '#2e306f',\n 'textColor': '#FFFFFF'\n }\n },\n 'Azure': {\n colors: ['#3182bd', '#6baed6', '#9ecae1', '#c6dbef', '#e6550d', '#fd8d3c', '#fdae6b', '#fdd0a2', '#31a354', '#74c476', '#a1d99b', '#c7e9c0', '#756bb1', '#9e9ac8', '#bcbddc', '#dadaeb', '#636363', '#969696', '#bdbdbd', '#d9d9d9'],\n tooltip: {\n 'backgroundColor': '#3182bd',\n 'textColor': '#FFFFFF'\n }\n },\n 'Retro': {\n colors: ['#0ca7a1', '#ffa615', '#334957', '#acc5c2', '#988f90', '#8accc9', '#515151', '#f27861', '#36c9fd', '#794668', '#0f709d', '#0d2738', '#44be78', '#4a1839', '#6a393f', '#557d8b', '#6c331c', '#1c1c1c', '#861500', '#09562a'],\n tooltip: {\n 'backgroundColor': '#80513a',\n 'textColor': '#FFFFFF'\n }\n },\n 'Mellow': {\n colors: ['#f0dcbf', '#88c877', '#aeb918', '#2e2c23', '#ddddd2', '#dfe956', '#4c963b', '#5d3801', '#e1eec3', '#cd8472', '#fcfab3', '#9a4635', '#9295ad', '#2e3f12', '#565677', '#557d8b', '#4f4d02', '#0c0c1b', '#833324', '#24120e'],\n tooltip: {\n 'backgroundColor': '#7c9e73',\n 'textColor': '#FFFFFF'\n }\n },\n 'Orient': {\n colors: ['#a80000', '#cc6c3c', '#f0e400', '#000084', '#fccc6c', '#009c6c', '#cc309c', '#78cc00', '#fc84e4', '#48e4fc', '#4878d8', '#186c0c', '#606060', '#a8a8a8', '#000000', '#d7d7d7', '#75a06e', '#190d0b', '#888888', '#694b84'],\n tooltip: {\n 'backgroundColor': '#c14242',\n 'textColor': '#FFFFFF'\n }\n },\n 'GrayScale': {\n colors: ['#141414', '#353535', '#5b5b5b', '#848484', '#a8a8a8', '#c3c3c3', '#e0e0e0', '#c8c8c8', '#a5a5a5', '#878787', '#656565', '#4e4e4e', '#303030', '#1c1c1c', '#4f4f4f', '#3b3b3b', '#757575', '#606060', '#868686', '#c1c1c1'],\n tooltip: {\n 'backgroundColor': '#575757',\n 'textColor': '#FFFFFF'\n }\n },\n 'Flyer': {\n colors: ['#3f454c', '#5a646e', '#848778', '#cededf', '#74c4dd', '#0946ed', '#380bb1', '#000ff0', '#f54a23', '#1db262', '#bca3aa', '#ffa500', '#a86b32', '#63a18c', '#56795e', '#934343', '#b75f5f', '#752d2d', '#4e1111', '#920606'],\n tooltip: {\n 'backgroundColor': '#47637c',\n 'textColor': '#FFFFFF'\n }\n },\n 'Luminosity': {\n colors: ['#FFFFFF', '#e4e4e4', '#00bcd4', '#f0dd2f', '#00aabf', '#018376', '#e91e63', '#39e5d4', '#ff6d6d', '#00ff76', '#ff9800', '#969696', '#ff4200', '#e00000', '#95cbe5', '#5331ff', '#fff4a7', '#e7a800', '#0061e4', '#d5e7ff'],\n tooltip: {\n 'backgroundColor': '#47637c',\n 'textColor': '#FFFFFF'\n }\n }\n },\n basicProperties = ['xaxislabel', 'yaxislabel', 'xunits', 'yunits', 'xnumberformat', 'xdateformat', 'ynumberformat',\n 'showvalues', 'showlabels', 'viewtype', 'areaviewtype', 'staggerlabels', 'reducexticks', 'offsettop', 'offsetbottom', 'offsetright', 'offsetleft',\n 'barspacing', 'xaxislabeldistance', 'yaxislabeldistance', 'theme', 'labeltype', 'donutratio', 'showlabelsoutside', 'showxdistance', 'showydistance', 'shape', 'nodatamessage', 'captions', 'showxaxis', 'showyaxis',\n 'centerlabel', 'customcolors', 'showlegend', 'legendtype', 'xdomain', 'ydomain', 'tooltips', 'linethickness', 'highlightpoints', 'interpolation', 'labelthreshold'],\n barSpacingMap = {\n 'small' : 0.3,\n 'medium' : 0.5,\n 'large' : 0.8\n },\n donutRatioMap = {\n 'small' : 0.3,\n 'medium' : 0.6,\n 'large' : 0.7\n },\n barSpacingMapInvert = invert(barSpacingMap),\n donutRatioMapInvert = invert(donutRatioMap),\n tickformats = {\n 'Thousand': {\n 'prefix': 'K',\n 'divider': 1000\n },\n 'Million' : {\n 'prefix': 'M',\n 'divider': 1000000\n },\n 'Billion' : {\n 'prefix': 'B',\n 'divider': 1000000000\n }\n },\n chartId = '#preview-chart',\n dataTypeJSON = ['Column', 'Line', 'Pie', 'Bar', 'Donut', 'Bubble'], // Charts that supports the data to be JSON;\n lineTypeCharts = ['Line', 'Area', 'Cumulative Line'], // Charts that does not supports the string type of data in the xaxis in the nvd3;\n dataTypeArray = ['Cumulative Line', 'Area'], // Charts that supports the data to be Array\n SAMPLE_DATA = {\n 'group1' : 'Europe',\n 'group2' : 'Asia',\n 'group3' : 'America',\n 'group4' : 'Australia'\n };\n\n// returns true if chart type is pie\nexport const isPieChart = type => type === 'Pie';\n\n// returns true if chart type is line\nexport const isLineChart = type => type === 'Line';\n\n// returns true if chart type is bar\nexport const isBarChart = type => type === 'Bar';\n\n// returns true if chart type is donut\nexport const isDonutChart = type => type === 'Donut';\n\n// returns true if chart type is bubble\nexport const isBubbleChart = type => type === 'Bubble';\n\n// returns true if chart type is column\nexport const isColumnChart = type => type === 'Column';\n\n// returns true if chart type is area\nexport const isAreaChart = type => type === 'Area';\n\n// returns true if chart type is area\nexport const isPieType = type => isPieChart(type) || isDonutChart(type);\n\n// The format of chart data is array of json objects in case of the following types of chart\nexport const isChartDataJSON = type => includes(dataTypeJSON, type) || !includes(chartTypes, type);\n\n// The format of chart data is array of objects in case of the following types of chart\nexport const isChartDataArray = type => includes(dataTypeArray, type);\n\n// returns true is the chart type is 'line', 'area' or 'cumulative line' else false\nexport const isLineTypeChart = type => includes(lineTypeCharts, type);\n\n// X/Y Domain properties are supported only for Column and Area charts\nexport const isAxisDomainSupported = type => isColumnChart(type) || isAreaChart(type);\n\n// Returns bar spacing value\nexport const getBarSpacingValue = (value, prop) => {\n if (prop === 'value') {\n return barSpacingMap[value];\n }\n if (prop === 'key') {\n return barSpacingMapInvert[value];\n }\n};\n\n// Returns radius value\nexport const getRadiusValue = (value, prop) => {\n if (prop === 'value') {\n return donutRatioMap[value];\n }\n if (prop === 'key') {\n return donutRatioMapInvert[value];\n }\n};\n\n// Returns labels config\nexport const getLabelValues = (showlabels, showlabelsoutside, prop) => {\n const labelsConfig: any = {};\n switch (showlabels) {\n case 'hide':\n labelsConfig.showlabels = false;\n break;\n case 'inside':\n labelsConfig.showlabels = true;\n labelsConfig.showlabelsoutside = false;\n break;\n case 'outside':\n labelsConfig.showlabels = true;\n labelsConfig.showlabelsoutside = true;\n break;\n }\n return labelsConfig;\n};\n\n// Construct the sample data\nexport const constructSampleData = (dataType, yaxisLength, shape) => {\n let first_series = [],\n second_series = [],\n third_series = [],\n first_series_array = [],\n second_series_array = [],\n third_series_array = [],\n first_series_bubble = [],\n second_series_bubble = [],\n third_series_bubble = [],\n data = [];\n switch (dataType) {\n case 'jsonFormat':\n first_series = [\n {'x': '01/01/2001', 'y': 4000000},\n {'x': '01/01/2002', 'y': 1000000},\n {'x': '01/01/2003', 'y': 5000000}\n ];\n second_series = [\n {'x': '01/01/2001', 'y': 3000000},\n {'x': '01/01/2002', 'y': 4000000},\n {'x': '01/01/2003', 'y': 7000000}\n ];\n third_series = [\n {'x': '01/01/2001', 'y': 2000000},\n {'x': '01/01/2002', 'y': 8000000},\n {'x': '01/01/2003', 'y': 6000000}\n ];\n data[0] = {\n values: first_series,\n key: SAMPLE_DATA.group1\n };\n if (yaxisLength >= 2) {\n data[1] = {\n values: second_series,\n key: SAMPLE_DATA.group2\n };\n }\n if (yaxisLength >= 3) {\n data[2] = {\n values: third_series,\n key: SAMPLE_DATA.group3\n };\n }\n break;\n case 'lineChartFormat':\n first_series = [\n {'x': 1, 'y': 4000000},\n {'x': 2, 'y': 1000000},\n {'x': 3, 'y': 5000000}\n ];\n second_series = [\n {'x': 1, 'y': 3000000},\n {'x': 2, 'y': 4000000},\n {'x': 3, 'y': 7000000}\n ];\n third_series = [\n {'x': 1, 'y': 2000000},\n {'x': 2, 'y': 8000000},\n {'x': 3, 'y': 6000000}\n ];\n data[0] = {\n values: first_series,\n key: SAMPLE_DATA.group1\n };\n if (yaxisLength >= 2) {\n data[1] = {\n values: second_series,\n key: SAMPLE_DATA.group2\n };\n }\n if (yaxisLength >= 3) {\n data[2] = {\n values: third_series,\n key: SAMPLE_DATA.group3\n };\n }\n break;\n case 'arrayFormat':\n first_series_array = [\n [1, 4000000],\n [2, 1000000],\n [3, 5000000]\n ];\n second_series_array = [\n [1, 3000000],\n [2, 4000000],\n [3, 7000000]\n ];\n third_series_array = [\n [1, 2000000],\n [2, 8000000],\n [3, 6000000]\n ];\n data[0] = {\n values: first_series_array,\n key: SAMPLE_DATA.group1\n };\n if (yaxisLength >= 2) {\n data[1] = {\n values: second_series_array,\n key: SAMPLE_DATA.group2\n };\n }\n if (yaxisLength >= 3) {\n data[2] = {\n values: third_series_array,\n key: SAMPLE_DATA.group3\n };\n }\n break;\n case 'bubbleFormat':\n shape = shape === 'random' ? allShapes[Math.floor(Math.random() * allShapes.length)] : shape;\n first_series_bubble = [\n {'x': 80.66, 'y': 33739900, 'size': 78, 'shape': shape},\n {'x': 79.84, 'y': 81902300, 'size': 90, 'shape': shape},\n {'x': 78.6, 'y': 5523100, 'size': 45, 'shape': shape}\n ];\n second_series_bubble = [\n {'x': 72.73, 'y': 79716200, 'size': 98, 'shape': shape},\n {'x': 80.05, 'y': 61801600, 'size': 20, 'shape': shape},\n {'x': 72.49, 'y': 73137200, 'size': 34, 'shape': shape}\n ];\n third_series_bubble = [\n {'x': 68.09, 'y': 33739900, 'size': 45, 'shape': shape},\n {'x': 81.55, 'y': 7485600, 'size': 78, 'shape': shape},\n {'x': 68.60, 'y': 141850000, 'size': 56, 'shape': shape}\n ];\n data[0] = {\n values: first_series_bubble,\n key: SAMPLE_DATA.group1\n };\n if (yaxisLength >= 2) {\n data[1] = {\n values: second_series_bubble,\n key: SAMPLE_DATA.group2\n };\n }\n if (yaxisLength >= 3) {\n data[2] = {\n values: third_series_bubble,\n key: SAMPLE_DATA.group3\n };\n }\n break;\n case 'pieChartFormat':\n data = [\n {'x': SAMPLE_DATA.group1, 'y': 1000000},\n {'x': SAMPLE_DATA.group2, 'y': 2000000},\n {'x': SAMPLE_DATA.group3, 'y': 3000000},\n {'x': SAMPLE_DATA.group4, 'y': 4000000}\n ];\n break;\n }\n return data;\n};\n\nexport const getDataType = widgetContext => {\n const type = widgetContext.type;\n if (isLineChart(type)) {\n return 'lineChartFormat';\n }\n if (isPieType(type)) {\n return 'pieChartFormat';\n }\n if (isBubbleChart(type)) {\n return 'bubbleFormat';\n }\n return isChartDataJSON(type) ? 'jsonFormat' : 'arrayFormat';\n};\n\n// Sample data to populate when no data is bound\nexport const getSampleData = widgetContext => constructSampleData(getDataType(widgetContext), split(widgetContext.yaxisdatakey, ',').length, widgetContext.shape);\n\n// Check whether X/Y Domain was set to Min and is supported for the present chart\nexport const isAxisDomainValid = (widgetContext, axis) => {\n if (widgetContext[axis + 'domain'] === 'Min' && (isAxisDomainSupported(widgetContext.type))) {\n return true;\n }\n return false;\n};\n\n// Check whether min and max values are finite or not\nexport const areMinMaxValuesValid = values => {\n if (isFinite(values.min) && isFinite(values.max)) {\n return true;\n }\n return false;\n};\n\nexport const getYScaleMinValue = value => {\n const _min = Math.floor(value);\n /* If the number has a) decimal part returning floor value - 0.1\n b) no decimal part returning floor value - 1 */\n return Math.abs(value) - _min > 0 ? value - 0.1 : _min - 1;\n};\n\n// Chooses the data points of line/cumulative line/area chart and highlights them\nexport const highlightPoints = (id, highlightpoints) => {\n const chartSvg = id ? d3.select('#wmChart' + id + ' svg') : d3.select(chartId + ' svg');\n if (highlightpoints) {\n chartSvg.selectAll('.nv-point')\n .style('stroke-width', '6px')\n .style('fill-opacity', '0.95')\n .style('stroke-opacity', '0.95');\n } else {\n chartSvg.selectAll('.nv-point')\n .style('stroke-width', '0px')\n .style('fill-opacity', '0');\n }\n};\n\n// Chooses the line of line/cumulative line and increases the thickness of it\nexport const setLineThickness = (id, thickness) => {\n const chartSvg = id ? d3.select('#wmChart' + id + ' svg') : d3.select(chartId + ' svg');\n thickness = thickness || 1.5;\n\n const lines = chartSvg.selectAll('.nv-line');\n\n if (lines.size() !== 0) {\n lines.style('stroke-width', thickness);\n }\n};\n\n// Constructing a common key value map for preview and canvas mode\nexport const initProperties = (widgetContext, propertyValueMap) => {\n if (!propertyValueMap || isEmptyObject(propertyValueMap)) {\n propertyValueMap = {};\n }\n forEach(basicProperties, prop => {\n if (isUndefined(propertyValueMap[prop])) {\n propertyValueMap[prop] = widgetContext[prop];\n }\n });\n\n return propertyValueMap;\n};\n\nexport const getNumberValue = (value, callback) => {\n return isNaN(parseInt(value, 10)) ? callback(value, 'value') : value;\n};\n\n// Formats the given value according to date format\nexport const getDateFormatedData = (dateFormat, d) => {\n dateFormat = dateFormat || '%x';\n /**\n * if date value is string \"20-05-2019\" then new Date(value) return 20May2019 with current time in India,\n * whereas this will return 19May2019 with time lagging for few hours.\n * This is because it returns UTC time i.e. Coordinated Universal Time (UTC).\n * To create date in local time use moment\n */\n if(dateFormat == '%c') {\n dateFormat = '%a %b %e %X %Y';\n }\n return d3.timeFormat(dateFormat)(new Date(moment(moment(d).format()).valueOf()));\n};\nconst removeTrailingZeros = value => {\n if(!value) {\n return value;\n }\n // Convert value to a string if it's a number\n const stringValue = typeof value === 'number' ? value.toString() : value;\n\n // Remove trailing zeros\n return stringValue.replace(/\\.0+([A-Za-z]*)$/, '$1').replace(/\\.([1-9]+)0+([A-Za-z]*)$/, '.$1$2');\n};\n\n// Formats the given value according to number format\nexport const getNumberFormatedData = (numberFormat, d) => {\n let formattedData,\n divider,\n prefix;\n // formatting the data based on number format selected\n if (numberFormat) {\n let numberFormatter;\n if(numberFormat == 'Thousand' || numberFormat == 'Million' || numberFormat == 'Billion') {\n numberFormatter = d3.format(',.2s');\n } else if(numberFormat == '%') {\n numberFormatter = d3.format('.2%');\n }else if(numberFormat == '.f') {\n numberFormatter = d3.format('.2f');\n } else {\n numberFormatter = d3.format(numberFormat);\n }\n formattedData = numberFormatter(d);\n\n\n // Getting the respective divider[1000,1000000,1000000000] based on the number format choosen\n divider = (tickformats[numberFormat] && tickformats[numberFormat].divider) || 0;\n prefix = tickformats[numberFormat] && tickformats[numberFormat].prefix;\n if (prefix && divider !== 0) {\n formattedData = d3.format('.2f')(d / divider) + prefix;\n }\n } else {\n // Auto formatting the data when no formating option is chosen\n formattedData = d >= 1000 ? d3.format('.1s')(d) : d;\n }\n formattedData = removeTrailingZeros(formattedData);\n return formattedData;\n};\n\n// Set the visibility property of the chart x,y axis due to a bug in the nvd3\nexport const toggleAxisShow = (property, value) => {\n const $xAxis = d3.select(chartId + ' g.nv-axis.nv-x'),\n $yAxis = d3.select(chartId + ' g.nv-axis.nv-y');\n if (property === 'showxaxis') {\n $xAxis.style('visibility', value ? 'visible' : 'hidden');\n } else {\n $yAxis.style('visibility', value ? 'visible' : 'hidden');\n }\n};\n\nexport const modifyLegendPosition = (widgetContext, position, id) => {\n const showLegend = isShowLegend(widgetContext.showlegend),\n chart_Id = id ? '#wmChart' + id : chartId,\n legendWrap = d3.select(chart_Id + ' .nv-legendWrap'),\n legendPadding = 5;\n // Return when showlegend is false\n if (!showLegend || !legendWrap['_groups'][0][0]) {\n return;\n }\n if (position === 'bottom') {\n const legendWrapHeight = legendWrap['_groups'][0][0].getBoundingClientRect().height,\n wrap = d3.select(chart_Id + ' .nv-wrap'),\n wrapTransform = (wrap && wrap.attr('transform')) ? wrap.attr('transform').replace(/, /g, ',') : '',\n coordinates = /translate\\(\\s*([^\\s,)]+)[ ,]([^\\s,)]+)/.exec(wrapTransform),\n getChartHeight = () => {\n let chartHeight = $(chart_Id + ' svg>.nvd3.nv-wrap')[0].getBoundingClientRect().height;\n if (chartHeight === 0) { // fix for IE\n chartHeight = ($(chart_Id + ' svg')[0].getBoundingClientRect().height - (legendWrapHeight + 15));\n }\n return chartHeight;\n };\n legendWrap.attr('transform', 'translate(0 , ' + (getChartHeight() - legendWrapHeight - legendPadding) + ')');\n if (coordinates) {\n wrap.attr('transform', 'translate(' + coordinates[1] + ',' + legendPadding + ')');\n }\n }\n};\n\n// Returns value if legend need to shown or not\nexport const isShowLegend = value => {\n // Old projects will have either true or false\n if (value === 'false' || value === false) {\n return false;\n }\n if (value === 'true' || value === true) {\n return true;\n }\n // New projects will have either 'Hide Legend', 'Show Top', 'Show Bottom'\n return value === 'hide' ? false : true;\n};\n\n/**\n * Customise the tooltip for donut & pie charts and also for charts having only one value attached to yaxis\n * @param key\n * @param label\n */\nexport const customiseTooltip = (chart, propertyValueMap, widgetContext, label?) => {\n d3.selectAll('.nvtooltip').style('opacity', 0);\n chart.tooltip.contentGenerator(key => {\n let xValue = key.data.x, yValue;\n yValue = getNumberFormatedData(propertyValueMap.ynumberformat, key.data.y);\n if (isPieType(widgetContext.type)) {\n label = key.data.x;\n xValue = '';\n }\n return '<table>' +\n '<tbody>' +\n '<tr class=\"value\"><b>' + xValue +\n '</b></tr>' +\n '<tr>' +\n '<td class=\"legend-color-guide\"><div style=\"background-color:' + key.color + ';\"></div></td>' +\n '<td class=\"key\">' + label + '</td>' +\n '<td class=\"value\">' + yValue + '</td>' +\n '</tr>' +\n '</tbody>' +\n '</table>';\n });\n};\n\n// intializes the chart obejct\nexport const initChart = (widgetContext, xDomainValues, yDomainValues, propertyValueMap, isPreview) => {\n propertyValueMap = initProperties(widgetContext, propertyValueMap);\n let chart, colors = [], xaxislabel, yaxislabel, labelConfig, radius, barSpacing,\n showLegend, xAxisValue, hasMultipleYValues;\n const xValue: any = {}, yValue: any = {};\n switch (widgetContext.type) {\n case 'Column':\n barSpacing = getNumberValue(propertyValueMap.barspacing, getBarSpacingValue) || barSpacingMap.medium;\n chart = nv.models.multiBarChart()\n .x(d => d.x)\n .y(d => d.y)\n .reduceXTicks(propertyValueMap.reducexticks)\n .rotateLabels(0)\n .showControls(false)\n .stacked(propertyValueMap.viewtype === 'Stacked' ? true : false)\n .groupSpacing(barSpacing);\n break;\n case 'Cumulative Line':\n chart = nv.models.cumulativeLineChart()\n .x(d => d[0])\n .y(d => d[1])\n .showControls(false)\n .useInteractiveGuideline(propertyValueMap.tooltips)\n .interpolate(propertyValueMap.interpolation);\n break;\n case 'Line':\n chart = nv.models.lineChart()\n .useInteractiveGuideline(propertyValueMap.tooltips)\n .interpolate(propertyValueMap.interpolation);\n break;\n case 'Area':\n chart = nv.models.stackedAreaChart()\n .x(d => d.x)\n .y(d => d.y)\n .clipEdge(true)\n .showControls(false)\n .style(propertyValueMap.areaviewtype)\n .useInteractiveGuideline(propertyValueMap.tooltips)\n .interpolate(propertyValueMap.interpolation);\n break;\n case 'Bar':\n barSpacing = getNumberValue(propertyValueMap.barspacing, getBarSpacingValue) || barSpacingMap.medium;\n chart = nv.models.multiBarHorizontalChart()\n .x(d => d.x)\n .y(d => d.y)\n .showControls(false)\n .stacked(propertyValueMap.viewtype === 'Stacked' ? true : false)\n .showValues(propertyValueMap.showvalues)\n .groupSpacing(barSpacing);\n break;\n case 'Pie':\n case 'Donut':\n labelConfig = getLabelValues(propertyValueMap.showlabels, propertyValueMap.showlabelsoutside, 'value');\n radius = getNumberValue(propertyValueMap.donutratio, getRadiusValue) || donutRatioMap.medium;\n chart = nv.models.pieChart()\n .x(d => d.x)\n .y(d => d.y)\n .showLabels(labelConfig.showlabels)\n .labelType(propertyValueMap.labeltype)\n .valueFormat(d3.format('%'))\n .title(propertyValueMap.centerlabel)\n .labelThreshold(propertyValueMap.labelthreshold || 0.01)\n .labelsOutside(labelConfig.showlabelsoutside);\n if (isDonutChart(widgetContext.type)) {\n chart.donut(true)\n .donutRatio(radius);\n }\n if (propertyValueMap.labeltype === 'key-value') {\n chart.labelType(d => d.data.x + ' ' + d.data.y);\n }\n break;\n case 'Bubble':\n chart = nv.models.scatterChart()\n .x(d => d.x)\n .y(d => d.y)\n .showDistX(propertyValueMap.showxdistance)\n .showDistY(propertyValueMap.showydistance);\n break;\n }\n\n if (xDomainValues) {\n xValue.min = xDomainValues.min.x || xDomainValues.min[0];\n xValue.max = xDomainValues.max.x || xDomainValues.max[0];\n // If the values on the x axis are string then min max values gives Infinity\n if (areMinMaxValuesValid(xValue)) {\n // Reducing the min value to 0.1 so the min value is not missed out\n xValue.min = getYScaleMinValue(xValue.min);\n chart.xDomain([xValue.min, xValue.max]);\n }\n }\n\n if (yDomainValues) {\n // Reducing the min value to 1 so the min value is not missed out\n yValue.min = yDomainValues.min.y || yDomainValues.min[1];\n yValue.max = yDomainValues.max.y || yDomainValues.max[1];\n // If the values on the y axis are string or invalid then min max values gives Infinity\n if (areMinMaxValuesValid(yValue)) {\n // Reducing the min value to 1 so the min value is not missed out\n yValue.min = getYScaleMinValue(yValue.min);\n chart.yDomain([yValue.min, yValue.max]);\n }\n }\n\n // Setting the legend type choosen by user or default it will be furious\n chart.legend.vers((propertyValueMap.legendtype && propertyValueMap.legendtype.toLowerCase()) || 'furious');\n\n if (!includes(chartTypes, widgetContext.type)) {\n chart = nv.models.multiBarChart()\n .x(d => d.x)\n .y(d => d.y);\n }\n\n\n if (isPieType(widgetContext.type)) {\n // In case of pie/donut chart formatting the values of it\n if (propertyValueMap.labeltype === 'percent') {\n chart.valueFormat(d3.format('%'));\n } else {\n chart.valueFormat(d => getNumberFormatedData(propertyValueMap.ynumberformat, d));\n }\n // Customizing the tooltips in case of the pie and donut when labelType is value\n customiseTooltip(chart, propertyValueMap, widgetContext);\n }\n else {\n chart.showXAxis(propertyValueMap.showxaxis)\n .showYAxis(propertyValueMap.showyaxis);\n chart.legendPosition(propertyValueMap.showlegend);\n\n // Setting the labels if they are specified explicitly or taking the axiskeys chosen\n xaxislabel = propertyValueMap.xaxislabel || prettifyLabels(widgetContext.xaxisdatakey) || 'x caption';\n yaxislabel = propertyValueMap.yaxislabel || prettifyLabels(widgetContext.yaxisdatakey) || 'y caption';\n\n // Checking if y axis has multiple values\n if (widgetContext.yaxisdatakey && widgetContext.yaxisdatakey.split(',').length > 1) {\n hasMultipleYValues = true;\n }\n // Customizing the tooltip to show yaxislabel, only if the y axis contains one value\n if (!hasMultipleYValues && !isBubbleChart(widgetContext.type)) {\n customiseTooltip(chart, propertyValueMap, widgetContext, yaxislabel);\n }\n\n // Adding the units to the captions if they are specified\n xaxislabel += propertyValueMap.xunits ? '(' + propertyValueMap.xunits + ')' : '';\n yaxislabel += propertyValueMap.yunits ? '(' + propertyValueMap.yunits + ')' : '';\n\n chart.xAxis\n .axisLabel(xaxislabel)\n .axisLabelDistance(propertyValueMap.xaxislabeldistance)\n .staggerLabels(propertyValueMap.staggerlabels);\n\n // If date format set format based date format\n if (propertyValueMap.xdateformat || (isPreview && !isBubbleChart(widgetContext.type))) {\n if (isLineTypeChart(widgetContext.type)) {\n chart.xAxis.tickFormat(d => {\n // get the actual value\n xAxisValue = isPreview ? dateList[d - 1] : widgetContext.xDataKeyArr[d];\n return getDateFormatedData(propertyValueMap.xdateformat, xAxisValue);\n });\n } else {\n chart.xAxis.tickFormat(d => getDateFormatedData(propertyValueMap.xdateformat, d));\n }\n } else if (propertyValueMap.xnumberformat) {\n chart.xAxis.tickFormat(d => getNumberFormatedData(propertyValueMap.xnumberformat, d));\n } else {\n if (isLineTypeChart(widgetContext.type)) {\n // get the actual value\n chart.xAxis.tickFormat(d => widgetContext.xDataKeyArr[d]);\n }\n }\n chart.yAxis\n .axisLabel(yaxislabel)\n .axisLabelDistance(propertyValueMap.yaxislabeldistance)\n .staggerLabels(propertyValueMap.staggerlabels)\n .tickFormat(d => getNumberFormatedData(propertyValueMap.ynumberformat, d));\n if (isBarChart(widgetContext.type)) {\n chart.valueFormat(d => getNumberFormatedData(propertyValueMap.ynumberformat, d));\n }\n }\n\n // Support for custom colors if user gives direct string of colors in text box\n if (isString(propertyValueMap.customcolors) && propertyValueMap.customcolors) {\n colors = split(propertyValueMap.customcolors, ',');\n }\n if (isArray(propertyValueMap.customcolors)) {\n colors = propertyValueMap.customcolors;\n }\n\n showLegend = isShowLegend(propertyValueMap.showlegend);\n chart.showLegend(showLegend)\n .margin({top: propertyValueMap.offsettop, right: propertyValueMap.offsetright, bottom: propertyValueMap.offsetbottom, left: propertyValueMap.offsetleft})\n .color(colors.length ? colors : themes[propertyValueMap.theme].colors);\n\n chart.tooltip.enabled(propertyValueMap.tooltips);\n widgetContext.message = propertyValueMap.nodatamessage || 'No data found';\n // setting the no data message\n chart.noData(widgetContext.message);\n\n if (isLineTypeChart(widgetContext.type) && widgetContext.highlightpoints) {\n chart.dispatch.on('stateChange', () => {\n setTimeout(() => postPlotChartProcess(widgetContext), 100);\n });\n }\n\n if (widgetContext.showlegend && (widgetContext.type === 'Donut' || widgetContext.type === 'Pie')) {\n if(widgetContext.showlegend === 'right') {\n chart.legendPosition('right');\n }\n }\n return chart;\n};\n\n// @ts-ignore\nexport const postPlotChartProcess = (widgetContext, isPreview?) => {\n const id = isPreview ? null : widgetContext.$id;\n // If user sets to highlight the data points and increase the thickness of the line\n if (isLineTypeChart(widgetContext.type)) {\n setLineThickness(id, widgetContext.linethickness);\n highlightPoints(id, widgetContext.highlightpoints);\n }\n // Modifying the legend position only when legend is shown\n // if (widgetContext.showlegend) {\n // modifyLegendPosition(widgetContext, widgetContext.showlegend, id);\n // }\n};\n\n// @ts-ignore\nexport const getDateList = () => dateList;\n\n","<div class=\"panel-heading\" *ngIf=\"title\">\n <h3 class=\"panel-title\">\n <div class=\"pull-left\"><i class=\"app-icon panel-icon {{iconclass}}\" [class.ng-hide]=\"!iconclass\"></i></div>\n <div class=\"heading\" [innerHTML]=\"title\"></div>\n <div class=\"description\" *ngIf=\"subheading\" [innerHTML]=\"subheading\"></div>\n </h3>\n</div>\n<div class=\"app-chart-inner\" [ngClass]=\"{'loading':isLoadInProgress, 'panel-body': title}\">\n <svg></svg>\n <div class=\"wm-content-info readonly-wrapper\" *ngIf=\"showContentLoadError && showNoDataMsg\">\n <p class=\"wm-message\" [title]=\"hintMsg\" [ngClass]=\"{'error': invalidConfig}\" [innerText]=\"errMsg\"></p>\n </div>\n <div wmSpinner show.bind=\"isLoadInProgress\" caption.bind=\"loadingdatamsg\"></div>\n</div>\n","import {\n AfterViewInit,\n OnDestroy,\n Component,\n HostBinding,\n Injector,\n ViewEncapsulation,\n Optional,\n Inject\n} from '@angular/core';\n\nimport {\n App,\n DataSource,\n getClonedObject,\n isDataSourceEqual,\n isEmptyObject,\n isNumberType,\n prettifyLabels,\n removeAttr,\n triggerFn,\n isMobileApp,\n noop\n} from '@wm/core';\nimport { APPLY_STYLES_TYPE, IRedrawableComponent, provideAsWidgetRef, StylableComponent, styler, } from '@wm/components/base';\n\nimport { registerProps } from './chart.props';\nimport { allShapes, getDateList, getSampleData, initChart, isAreaChart, isAxisDomainValid, isBarChart, isBubbleChart, isChartDataArray, isChartDataJSON, isLineTypeChart, isPieType, postPlotChartProcess } from './chart.utils';\nimport {\n concat, debounce, fill,\n first,\n forEach, forEachRight,\n get, groupBy, includes,\n intersection,\n isArray, isEmpty, isObject, keys,\n map, max,\n maxBy,\n minBy,\n orderBy,\n replace,\n split,\n uniq\n} from \"lodash-es\";\n\ndeclare const $;\n\ndeclare const d3, nv;\n\nconst WIDGET_CONFIG = {widgetType: 'wm-chart', hostClass: 'app-chart'};\n\nconst options = {\n 'Bubble' : ['bubblesize', 'shape']\n },\n NONE = 'none',\n advanceDataProps = ['aggregation', 'aggregationcolumn', 'groupby', 'orderby'],\n // XPaths to get actual data of data points in charts\n chartDataPointXpath = {\n 'Column' : 'rect.nv-bar',\n 'Bar' : 'g.nv-bar',\n 'Area' : '.nv-stackedarea .nv-point',\n 'Cumulative Line': '.nv-cumulativeLine .nv-scatterWrap path.nv-point',\n 'Line' : '.nv-lineChart .nv-scatterWrap path.nv-point',\n 'Pie' : '.nv-pieChart .nv-slice path',\n 'Donut' : '.nv-pieChart .nv-slice path',\n 'Bubble' : '.nv-scatterChart .nv-point-paths path'\n },\n // all properties of the chart\n allOptions = ['bubblesize', 'shape'],\n styleProps = {\n 'fontunit' : 'font-size',\n 'fontsize' : 'font-size',\n 'color' : 'fill',\n 'fontfamily' : 'font-family',\n 'fontweight' : 'font-weight',\n 'fontstyle' : 'font-style',\n 'textdecoration': 'text-decoration'\n },\n // Getting the relevant aggregation function based on the selected option\n aggregationFnMap = {\n 'average' : 'AVG',\n 'count' : 'COUNT',\n 'maximum' : 'MAX',\n 'minimum' : 'MIN',\n 'sum' : 'SUM'\n };\n\nconst getBooleanValue = val => {\n if (val === true || val === 'true') {\n return true;\n }\n if (val === false || val === 'false') {\n return false;\n }\n return val;\n};\n\n// returns orderby columns and their orders in two separate arrays\nconst getLodashOrderByFormat = orderby => {\n let columns;\n const orderByColumns = [],\n orders = [];\n\n forEach(split(orderby, ','), function (col) {\n columns = split(col, ':');\n orderByColumns.push(columns[0]);\n orders.push(columns[1]);\n });\n return {\n 'columns' : orderByColumns,\n 'orders' : orders\n };\n};\n\n// Replacing the '.' by the '$' because '.' is not supported in the alias names\nconst getValidAliasName = aliasName => aliasName ? aliasName.replace(/\\./g, '$') : null;\n\n// Applying the font related styles for the chart\nconst setTextStyle = (properties, id) => {\n const charttext = d3.select('#wmChart' + id + ' svg').selectAll('text');\n if (!charttext.empty()) {\n charttext.style(properties);\n }\n};\n\nconst angle = d => {\n const a = (d.startAngle + d.endAngle) * 90 / Math.PI - 90;\n return a > 90 ? a - 180 : a;\n};\n\n@Component({\n selector: 'div[wmChart]',\n templateUrl: './chart.component.html',\n styleUrls: ['../../../../../node_modules/@wavemaker/nvd3/build/nv.d3.min.css'],\n providers: [\n provideAsWidgetRef(ChartComponent)\n ],\n encapsulation: ViewEncapsulation.None\n})\nexport class ChartComponent extends StylableComponent implements AfterViewInit, OnDestroy, IRedrawableComponent {\n static initializeProps = registerProps();\n\n xaxisdatakey;\n yaxisdatakey;\n groupby;\n aggregation;\n aggregationcolumn;\n isVisuallyGrouped;\n orderby;\n iconclass = '';\n type: string;\n showContentLoadError;\n invalidConfig;\n errMsg;\n shape: string;\n datasource: any;\n fontsize: string;\n selecteditem: any;\n fontunit: string;\n offsettop: number;\n offsetleft: number;\n offsetright: number;\n offsetbottom: number;\n showlabels: any;\n theme: string;\n\n private $id;\n private scopedataset: any;\n private binddataset: any;\n private showlabelsoutside: any;\n private _resizeFn: any;\n private chart: any;\n private clearCanvas: boolean;\n public isLoadInProgress: boolean;\n private filterFields: boolean | any;\n private dataset: any;\n private axisoptions: any;\n private numericColumns: any;\n private nonPrimaryColumns: any = [];\n private variableInflight: any;\n private chartReady: boolean;\n private xDataKeyArr: any = [];\n private xAxisDataType: string;\n private bubblesize: any;\n public showNoDataMsg: any;\n private sampleData: any[];\n private chartData: any[] = [];\n private _processedData: any[] = [];\n private _subsciptions: any = [];\n\n @HostBinding('class.panel') title;\n\n isGroupByEnabled() {\n return !!(this.groupby && this.groupby !== NONE);\n }\n\n // Check if x and y axis that are chosen are valid to plot chart\n isValidAxis() {\n // Check if x axis and y axis are chosen and are not equal\n return this.binddataset ? (this.xaxisdatakey && this.yaxisdatakey) : true;\n }\n\n // Check if aggregation is chosen\n isAggregationEnabled() {\n return !!((this.isGroupByEnabled() && this.aggregation !== NONE && this.aggregationcolumn));\n }\n\n // Check if either groupby, aggregation or orderby is chosen\n isDataFilteringEnabled() {\n /*Query need to be triggered if any of the following cases satisfy\n * 1. Group By and aggregation both chosen\n * 2. Only Order By is chosen\n * */\n\n return this.isAggregationEnabled() || (!this.isVisuallyGrouped && this.orderby);\n }\n\n /*Charts like Line,Area,Cumulative Line does not support any other datatype\n other than integer unlike the column and bar.It is a nvd3 issue. Inorder to\n support that this is a fix*/\n getxAxisVal(dataObj, xKey, index) {\n const value = get(dataObj, xKey);\n // If x axis is other than number type then add indexes\n if (isLineTypeChart(this.type) && !isNumberType(this.xAxisDataType)) {\n // Verification to get the unique data keys\n this.xDataKeyArr.push(value);\n // Check if it is of type Date\n if (value instanceof Date) {\n return value;\n } else {\n return index;\n }\n }\n return value;\n }\n\n // Getting the min and max values among all the x values\n getXMinMaxValues(datum) {\n if (!datum) {\n return;\n }\n const xValues: any = {};\n /*\n compute the min x value\n eg: When data has objects\n input: [{x:1, y:2}, {x:2, y:3}, {x:3, y:4}]\n min x: 1\n eg: When data has arrays\n input: [[10, 20], [20, 30], [30, 40]];\n min x: 10\n */\n xValues.min = minBy(datum.values, dataObject => dataObject.x || dataObject[0]);\n /*\n compute the max x value\n eg: When data has objects\n input: [{x:1, y:2}, {x:2, y:3}, {x:3, y:4}]\n max x: 3\n eg: When data has arrays\n input: [[10, 20], [20, 30], [30, 40]];\n max x: 30\n */\n xValues.max = maxBy(datum.values, dataObject => dataObject.x || dataObject[0]);\n return xValues;\n }\n\n // Getting the min and max values among all the y values\n getYMinMaxValues(datum) {\n const yValues: any = {},\n minValues = [],\n maxValues = [];\n if (!datum) {\n return;\n }\n\n /*\n Getting the min and max y values among all the series of data\n compute the min y value\n eg: When data has objects\n input: [[{x:1, y:2}, {x:2, y:3}, {x:3, y:4}], [{x:2, y:3}, {x:3, y:4}, {x:4, y:5}]]\n min y values : '2'(among first set) & '3'(among second set)\n max y values : '4'(among first set) & '5'(among second set)\n\n eg: When data has arrays\n input: [[[10, 20], [20, 30], [30, 40]], [[20, 30], [30, 40], [40, 50]]]\n min y values : '20'(among first set) & '30'(among second set)\n max y values : '40'(among first set) & '50'(among second set)\n */\n\n forEach(datum, data => {\n minValues.push(minBy(data.values, function (dataObject) {\n return dataObject.y || dataObject[1];\n }));\n maxValues.push(maxBy(data.values, function (dataObject) {\n return dataObject.y || dataObject[1];\n }));\n });\n // Gets the least and highest values among all the min and max values of respective series of data\n yValues.min = minBy(minValues, dataObject => dataObject.y || dataObject[1]);\n yValues.max = maxBy(maxValues, dataObject => dataObject.y || dataObject[1]);\n return yValues;\n }\n\n // If the x-axis values are undefined, we return empty array else we return the values\n getValidData(values) {\n return (values.length === 1 && values[0] === undefined) ? [] : values;\n }\n\n // Returns the single data point based on the type of the data chart accepts\n valueFinder(dataObj, xKey, yKey, index?, shape?) {\n const xVal = this.getxAxisVal(dataObj, xKey, index),\n value = get(dataObj, yKey),\n yVal = parseFloat(value) || value,\n size = parseFloat(dataObj[this.bubblesize]) || 2;\n let dataPoint: any = {};\n\n if (isChartDataJSON(this.type)) {\n dataPoint.x = xVal;\n dataPoint.y = yVal;\n // only Bubble chart has the third dimension\n if (isBubbleChart(this.type)) {\n dataPoint.size = size;\n dataPoint.shape = shape || 'circle';\n }\n } else if (isChartDataArray(this.type)) {\n dataPoint = [xVal, yVal];\n }\n // Adding actual unwrapped data to chart data to use at the time of selected data point of chart event\n dataPoint._dataObj = dataObj;\n return dataPoint;\n }\n\n // Setting appropriate error messages\n setErrMsg(message) {\n if (this.showNoDataMsg) {\n this.showContentLoadError = true;\n this.invalidConfig = true;\n // TODO: Set the locale from the message\n this.errMsg = ''; // $rootScope.locale[message];\n }\n }\n\n processChartData() {\n this.sampleData = getSampleData(this);\n // scope variables used to keep the actual key values for x-axis\n this.xDataKeyArr = [];\n // Plotting the chart with sample data when the chart dataset is not bound\n if (!this.binddataset) {\n this.xDataKeyArr = getDateList();\n return this.sampleData;\n }\n\n if (!this.chartData || !this.chartData.length) {\n return [];\n }\n\n let datum = [],\n yAxisKey,\n shapes: any = [],\n values: any = [];\n const xAxisKey = this.xaxisdatakey,\n yAxisKeys = this.yaxisdatakey ? this.yaxisdatakey.split(',') : [],\n dataSet = this.chartData;\n\n if (isArray(dataSet)) {\n if (isPieType(this.type)) {\n yAxisKey = yAxisKeys[0];\n datum = map(dataSet, (dataObj, index) => {\n if (!isEmptyObject(dataSet[index])) {\n return this.valueFinder(dataSet[index], xAxisKey, yAxisKey);\n }\n });\n datum = this.getValidData(datum);\n } else {\n if (isBubbleChart(this.type)) {\n shapes = this.shape === 'random' ? allShapes : this.shape;\n }\n yAxisKeys.forEach((yAxisKey, series) => {\n values = map(dataSet, (dataObj, index) => {\n if (!isEmptyObject(dataSet[index])) {\n return this.valueFinder(dataSet[index], xAxisKey, yAxisKey, index, (isArray(shapes) && shapes[series]) || this.shape);\n }\n });\n values = this.getValidData(values);\n datum.push({\n values: values,\n key: prettifyLabels(yAxisKey)\n });\n });\n }\n }\n return datum;\n }\n\n setChartData(data) {\n if (data) {\n this._processedData = data;\n }\n }\n\n getChartData() {\n return this._processedData;\n }\n\n // constructing the grouped data based on the selection of orderby, x & y axis\n getVisuallyGroupedData(queryResponse, groupingColumn) {\n let groupData: any = {},\n groupValues: any = [],\n orderByDetails,\n maxLength;\n const chartData: any = [],\n _isAreaChart = isAreaChart(this.type),\n yAxisKey = first(split(this.yaxisdatakey, ','));\n this.xDataKeyArr = [];\n queryResponse = orderBy(queryResponse, split(this.groupby, ','));\n if (this.orderby) {\n orderByDetails = getLodashOrderByFormat(this.orderby);\n queryResponse = orderBy(queryResponse, orderByDetails.columns, orderByDetails.orders);\n }\n queryResponse = groupBy(queryResponse, groupingColumn);\n // In case of area chart all the series data should be of same length\n if (_isAreaChart) {\n maxLength = max(map(queryResponse, obj => obj.length));\n }\n forEach(queryResponse, (values, groupKey) => {\n groupValues = isAreaChart ? fill(new Array(maxLength), [0, 0]) : [];\n forEachRight(values, (value, index) => {\n groupValues[index] = this.valueFinder(value, this.xaxisdatakey, yAxisKey, index);\n });\n groupData = {\n key : groupKey,\n values : groupValues\n };\n chartData.push(groupData);\n });\n return chartData;\n }\n\n /*Decides whether the data should be visually grouped or not\n Visually grouped when a different column is choosen in the group by other than x and y axis and aggregation is not chosen*/\n getGroupingDetails() {\n if (this.isGroupByEnabled() && !this.isAggregationEnabled()) {\n let isVisuallyGrouped = false,\n visualGroupingColumn,\n groupingExpression,\n columns: any = [],\n groupingColumnIndex;\n const groupbyColumns = this.groupby && this.groupby !== NONE ? this.groupby.split(',') : [],\n yAxisKeys = this.yaxisdatakey ? this.yaxisdatakey.split(',') : [];\n\n if (groupbyColumns.length > 1) {\n /*Getting the group by column which is not selected either in x or y axis*/\n groupbyColumns.every((column, index) => {\n if (this.xaxisdatakey !== column && $.inArray(column, yAxisKeys) === -1) {\n isVisuallyGrouped = true;\n visualGroupingColumn = column;\n groupingColumnIndex = index;\n groupbyColumns.splice(groupingColumnIndex, 1);\n return false;\n }\n return true;\n });\n // Constructing the groupby expression\n if (visualGroupingColumn) {\n columns.push(visualGroupingColumn);\n }\n\n if (groupbyColumns.length) {\n columns = concat(columns, groupbyColumns);\n }\n }\n // If x and y axis are not included in aggregation need to be included in groupby\n if (this.xaxisdatakey !== this.aggregationcolumn) {\n columns.push(this.xaxisdatakey);\n }\n forEach(yAxisKeys, key => {\n if (key !== this.aggregationcolumn) {\n columns.push(key);\n }\n });\n groupingExpression = columns.join(',');\n // set isVisuallyGrouped flag in scope for later use\n this.isVisuallyGrouped = isVisuallyGrouped;\n\n return {\n expression: groupingExpression,\n isVisuallyGrouped: isVisuallyGrouped,\n visualGroupingColumn: visualGroupingColumn\n };\n }\n return {\n expression: '',\n isVisuallyGrouped: false,\n visualGroupingColumn: ''\n };\n }\n\n // Function to get the aggregated data after applying the aggregation & group by or order by operations.\n getAggregatedData(callback) {\n const variable: any = this.datasource,\n yAxisKeys = this.yaxisdatakey ? this.yaxisdatakey.split(',') : [],\n data: any = {};\n let sortExpr,\n columns: any = [],\n colAlias,\n orderByColumns,\n groupByFields: any = [];\n\n if (!variable) {\n return;\n }\n if (this.isGroupByEnabled()) {\n groupByFields = split(this.groupby, ',');\n }\n if (this.orderby) {\n sortExpr = replace(this.orderby, /:/g, ' ');\n columns = uniq(concat(columns, groupByFields, [this.aggregationcolumn]));\n orderByColumns = getLodashOrderByFormat(this.orderby).columns;\n // If the orderby column is chosen either in groupby or orderby then replace . with $ for that column\n forEach(intersection(columns, orderByColumns), col => {\n colAlias = getValidAliasName(col);\n // @ts-ignore\n sortExpr = replace(sortExpr, col, colAlias);\n });\n }\n if (this.isAggregationEnabled()) {\n // Send the group by in the aggregations api only if aggregation is also chosen\n data.groupByFields = groupByFields;\n data.aggregations = [\n {\n 'field': this.aggregationcolumn,\n 'type': aggregationFnMap[this.aggregation],\n 'alias': getValidAliasName(this.aggregationcolumn)\n }\n ];\n }\n // Execute the query.\n variable.execute('getAggregatedData', {\n 'aggregations' : data,\n 'sort' : sortExpr\n }).then(response => {\n // Transform the result into a format supported by the chart.\n const chartData: any = [],\n aggregationAlias: any = getValidAliasName(this.aggregationcolumn),\n xAxisAliasKey = getValidAliasName(this.xaxisdatakey),\n yAxisAliasKeys = [];\n\n yAxisKeys.forEach(yAxisKey => yAxisAliasKeys.push(getValidAliasName(yAxisKey)));\n\n forEach(response.body.content, (responseContent) => {\n const obj = {};\n // Set the response in the chartData based on 'aggregationColumn', 'xAxisDataKey' & 'yAxisDataKey'.\n if (this.isAggregationEnabled()) {\n obj[this.aggregationcolumn] = responseContent[aggregationAlias];\n obj[this.aggregationcolumn] = get(responseContent, aggregationAlias) || get(responseContent, this.aggregationcolumn);\n }\n\n obj[this.xaxisdatakey] = get(responseContent, xAxisAliasKey) || get(responseContent, this.xaxisdatakey);\n\n yAxisKeys.forEach((yAxisKey, index) => {\n obj[yAxisKey] = responseContent[yAxisAliasKeys[index]];\n obj[yAxisKey] = get(responseContent, yAxisAliasKeys[index]) || get(responseContent, yAxisKey);\n });\n\n chartData.push(obj);\n });\n\n this.chartData = chartData;\n\n triggerFn(callback);\n }, () => {\n this.chartData = [];\n this.setErrMsg('MESSAGE_ERROR_FETCH_DATA');\n triggerFn(callback);\n });\n }\n\n // This function sets maximum width for the labels that can be displayed.This will helpful when they are overlapping\n setLabelsMaxWidth() {\n let xTicks,\n tickWidth,\n maxLength,\n xDist,\n yDist,\n totalHeight,\n maxNoLabels,\n nthElement,\n labelsAvailableWidth,\n barWrapper,\n yAxisWrapper,\n svgWrapper;\n const fontsize = parseInt(this.fontsize, 10) || 12,\n isBarchart = isBarChart(this.type);\n // getting the x ticks in the chart\n xTicks = $('#wmChart' + this.$id + ' svg').find('g.nv-x').find('g.tick').find('text');\n\n // getting the distance between the two visible ticks associated with visible text\n xTicks.each(function () {\n const xTick = $(this);\n let xTransform,\n tickDist;\n if (xTick.text() && xTick.css('opacity') === '1') {\n xTransform = xTick.parent().attr('transform').split(',');\n xDist = parseFloat(xTransform[0].substr(10));\n yDist = parseFloat(xTransform[1] || '0');\n if (!isBarchart && xDist > 0) {\n tickDist = xDist;\n } else if (yDist > 0) {\n tickDist = yDist;\n }\n if (tickWidth) {\n tickWidth = tickDist - tickWidth;\n return false;\n }\n tickWidth = tickDist;\n return true;\n }\n });\n\n // In case of bar chart getting the available space for the labels to be displayed\n if (isBarchart) {\n barWrapper = $('#wmChart' + this.$id + ' svg>g.nv-wrap>g>g.nv-barsWrap')[0];\n yAxisWrapper = $('#wmChart' + this.$id + ' svg>g.nv-wrap>g>g.nv-y')[0];\n svgWrapper = $('#wmChart' + this.$id + ' svg')[0];\n // getting the total height of the chart\n totalHeight = barWrapper ? barWrapper.getBoundingClientRect().height : 0;\n // getting the labels available space\n labelsAvailableWidth = yAxisWrapper ? svgWrapper.getBoundingClientRect().width - yAxisWrapper.getBoundingClientRect().width : svgWrapper.getBoundingClientRect().width;\n // Setting the max length for the label\n maxLength = Math.round(labelsAvailableWidth / fontsize);\n // if available space for each label is less than the font-size\n // then limiting the labels to be displayed\n if (tickWidth < fontsize) {\n // calculate the maximum no of labels to be fitted\n maxNoLabels = totalHeight / fontsize;\n // showing only the nth element\n nthElement = Math.ceil(this.chartData.length / maxNoLabels);\n // showing up only some labels\n d3.select('#wmChart' + this.$id + ' svg').select('g.nv-x').selectAll('g.tick').select('text').each(function (text, i) {\n // hiding every non nth element\n if (i % nthElement !== 0) {\n d3.select(this).attr('opacity', 0);\n }\n });\n }\n } else {\n // Setting the max length for the label\n maxLength = Math.round(tickWidth / fontsize);\n }\n\n // maxLength should always be a positive number\n maxLength = Math.abs(maxLength);\n // Validating if every label exceeds the max length and if so limiting the length and adding ellipsis\n xTicks.each(function () {\n if (this.textContent.length > maxLength) {\n this.textContent = this.textContent.substr(0, maxLength) + '...';\n }\n });\n }\n\n // Returns the columns of that can be choosen in the x and y axis\n getDefaultColumns() {\n let type,\n stringColumn,\n i,\n temp;\n const defaultColumns = [],\n columns = this.datasource.execute(DataSource.Operation.GET_PROPERTIES_MAP) || [];\n\n for (i = 0; i < columns.length && defaultColumns.length <= 2; i += 1) {\n type = columns[i].type;\n if (!columns[i].isRelated && (isNumberType(type))) {\n defaultColumns.push(columns[i].fieldName);\n } else if (type === 'string' && !stringColumn) {\n stringColumn = columns[i].fieldName;\n }\n }\n // Other than bubble chart x: string type y: number type\n // Bubble chart x: number type y: number type\n if (stringColumn && defaultColumns.length > 0 && !isBubbleChart(this.type)) {\n temp = defaultColumns[0];\n defaultColumns[0] = stringColumn;\n defaultColumns[1] = temp;\n }\n\n return defaultColumns;\n }\n\n // Call user defined javascript function when user links it to click event of the widget.\n attachClickEvent() {\n let dataObj;\n d3.select('#wmChart' + this.$id + ' svg').selectAll(chartDataPointXpath[this.type]).style('pointer-events', 'all')\n .on('click', (event, data, index) => {\n switch (this.type) {\n case 'Column':\n case 'Bar':\n dataObj = data._dataObj;\n break;\n case 'Pie':\n case 'Donut':\n dataObj = data.data._dataObj;\n break;\n case 'Area':\n case 'Cumulative Line':\n case 'Line':\n dataObj = data[0]._dataObj;\n break;\n case 'Bubble':\n dataObj = data;\n break;\n }\n this.selecteditem = dataObj;\n this.invokeEventCallback('select', {\n $event: event,\n selectedChartItem: data,\n selectedItem: this.selecteditem\n });\n });\n\n }\n\n /* Returns Y Scale min value\n Ex: Input : 8.97\n Output : 8.87\n\n Input : 8\n Output : 7\n */\n\n postPlotProcess(chart) {\n let chartSvg,\n pieLabels,\n pieGroups,\n angleArray;\n const styleObj = {};\n const element = this.$element;\n\n postPlotChartProcess(this);\n\n if (!isPieType(this.type)) {\n this.setLabelsMaxWidth();\n } else if (!this.showlabelsoutside) {\n /** Nvd3 has a issue in rotating text. So we will use this as a temp fix.\n * If the issue is resolved there, we can remove this.*/\n /* If it is a donut chart, then rotate the text and position them*/\n chartSvg = d3.select('#wmChart' + this.$id + ' svg');\n pieLabels = chartSvg.select('.nv-pieLabels').selectAll('.nv-label');\n pieGroups = chartSvg.select('.nv-pie').selectAll('.nv-slice');\n angleArray = [];\n if (pieGroups && pieGroups.length) {\n pieGroups.each(function () {\n d3.select(this).attr('transform', function (d) {\n angleArray.push(angle(d));\n });\n });\n pieLabels.each(function (d, i) {\n const group = d3.select(this);\n $(group[0][0]).find('text').attr('transform', 'rotate(' + angleArray[i] + ')');\n });\n }\n }\n\n // prepare text style props object and set\n forEach(styleProps, (value, key) => {\n if (key === 'fontsize' || key === 'fontunit') {\n styleObj[value] = this.fontsize + this.fontunit;\n } else {\n styleObj[value] = this[key];\n }\n });\n setTextStyle(styleObj, this.$id);\n\n /*\n * allow window-resize functionality, for only-run mode as\n * updating chart is being handled by watchers of height & width in studio-mode\n * */\n triggerFn(this._resizeFn && this._resizeFn.clear);\n this._resizeFn = nv.utils.windowResize(() => {\n if (element[0].getBoundingClientRect().height) {\n chart.update();\n postPlotChartProcess(this);\n if (!isPieType(this.type)) {\n this.setLabelsMaxWidth();\n }\n } else {\n // TODO: get parents of accordion type\n /*let parent = element.closest('.app-accordion-panel, .tab-pane').isolateScope();\n if (parent) {\n parent.initialized = false;\n }*/\n }\n });\n }\n\n // prepares and configures the chart properties\n configureChart() {\n // Copy the data only in case of pie chart with default data\n // Reason : when multiple pie charts are bound to same data, first chart theme will be applied to all charts\n let xDomainValues;\n let yDomainValues;\n let chart;\n let beforeRenderVal;\n const yformatOptions: any = {};\n\n if (this._processedData.length > 0) {\n if (isAxisDomainValid(this, 'x')) {\n xDomainValues = this.binddataset ? this.getXMinMaxValues(this._processedData[0]) : { 'min' : {'x': 1}, 'max' : {'x' : 5}};\n }\n if (isAxisDomainValid(this, 'y')) {\n yDomainValues = this.binddataset ? this.getYMinMaxValues(this._processedData) : { 'min' : {'y' : 1}, 'max' : {'y' : 5}};\n }\n }\n\n if (isPieType(this.type) && (!this.binddataset || !this.scopedataset)) {\n this._processedData = getClonedObject(this.scopedataset || this._processedData);\n }\n\n // get the chart object\n chart = initChart(this, xDomainValues, yDomainValues, null, !this.binddataset);\n\n if (isArray(this._processedData)) {\n // WMS-19499: To remove chart X-axis old ticks when chart data loaded dynamically.\n const oldgTicks = $('#wmChart' + this.$id + ' svg').find('g.nv-x').find('g.tick');\n if (oldgTicks && oldgTicks.length) {\n oldgTicks.remove();\n }\n beforeRenderVal = this.invokeEventCallback('beforerender', { 'chartInstance' : chart});\n if (beforeRenderVal) {\n chart = beforeRenderVal;\n }\n this.chart = chart;\n // changing the default no data message\n d3.select('#wmChart' + this.$id + ' svg')\n .datum(this._processedData)\n .call(this.chart);\n this.postPlotProcess(chart);\n return chart;\n }\n }\n\n // Plotting the chart with set of the properties set to it\n plotChart() {\n const element = this.$element;\n // call user-transformed function\n this.chartData = (this.invokeEventCallback('transform')) || this.chartData;\n\n // Getting the order by data only in run mode. The order by applies for all the charts other than pie and donut charts\n if (this.isVisuallyGrouped && !isPieType(this.type)) {\n this._processedData = this.chartData;\n } else {\n this._processedData = this.processChartData();\n }\n // checking the parent container before plotting the chart\n if (!element[0].getBoundingClientRect().height) {\n return;\n }\n if (this.clearCanvas) {\n // empty svg to add-new chart\n element.find('svg').replaceWith('<svg></svg>');\n this.clearCanvas = false;\n }\n\n // In case of invalid axis show no data available message\n if (!this.isValidAxis()) {\n this._processedData = [];\n }\n nv.addGraph(() => this.configureChart(), () => {\n /*Bubble chart has an time out delay of 300ms in their implementation due to which we\n * won't be getting required data points on attaching events\n * hence delaying it 600ms*/\n setTimeout( () => {\n this.attachClickEvent();\n }, 600);\n });\n this.isLoadInProgress = false;\n }\n // TODO: Need way to figure out if the datasource is a live source\n get isLiveVariable() {\n // setting the flag for the live variable in the scope for the checks\n const variableObj = this.datasource;\n return variableObj && variableObj.category === 'wm.LiveVariable';\n }\n\n plotChartProxy() {\n this.showContentLoadError = false;\n this.invalidConfig = false;\n // Checking if x and y axis are chosen\n this.isLoadInProgress = true;\n const groupingDetails = this.getGroupingDetails();\n // If aggregation/group by/order by properties have been set, then get the aggregated data and plot the result in the chart.\n // TODO: datasource for live variable detection\n if (this.binddataset && this.isLiveVariable && (this.filterFields || this.isDataFilteringEnabled())) {\n this.getAggregatedData(() => this.plotChart());\n } else { // Else, simply plot the chart.\n // In case of live variable resetting the aggregated data to the normal dataset when the aggregation has been removed\n if (this.dataset && this.isLiveVariable) {\n this.chartData = this.dataset;\n if (this.isGroupByEnabled() && groupingDetails.isVisuallyGrouped) {\n this.chartData = this.getVisuallyGroupedData(this.chartData, groupingDetails.visualGroupingColumn);\n }\n\n }\n this.plotChart();\n }\n }\n\n // sets the default x and y axis options\n setDefaultAxisOptions() {\n const defaultColumns = this.getDefaultColumns();\n // If we get the valid default columns then assign them as the x and y axis\n // In case of service variable we may not get the valid columns because we cannot know the datatypes\n this.xaxisdatakey = defaultColumns[0] || null;\n this.yaxisdatakey = defaultColumns[1] || null;\n }\n\n getCutomizedOptions(prop, fields) {\n const groupByColumns = split(this.groupby, ','),\n aggColumns = split(this.aggregationcolumn, ',');\n if (!this.binddataset) {\n return fields;\n }\n if (!this.axisoptions) {\n this.axisoptions = fields;\n }\n let newOptions;\n switch (prop) {\n case 'xaxisdatakey':\n // If group by enabled, columns chosen in groupby will be populated in x axis options\n if (this.isGroupByEnabled()) {\n newOptions = groupByColumns;\n }\n break;\n case 'yaxisdatakey':\n // If aggregation by enabled, columns chosen in aggregation will be populated in y axis options\n if (this.isAggregationEnabled()) {\n newOptions = aggColumns;\n } else if (this.isLiveVariable) {\n // In case of live variable populating only numeric columns\n newOptions = this.numericColumns;\n }\n break;\n case 'groupby':\n // Filtering only non primary key columns\n if (this.isLiveVariable && this.nonPrimaryColumns && this.nonPrimaryColumns.length) {\n newOptions = this.nonPrimaryColumns;\n }\n break;\n case 'aggregationcolumn':\n // Set the 'aggregationColumn' to show all keys in case of aggregation function is count or to numeric keys in all other cases.\n if (this.isLiveVariable && this.isAggregationEnabled() && this.aggregation !== 'count') {\n newOptions = this.numericColumns;\n }\n break;\n case 'orderby':\n // Set the 'aggregationColumn' to show all keys in case of aggregation function is count or to numeric keys in all other cases.\n if (this.isLiveVariable && this.isAggregationEnabled()) {\n newOptions = uniq(concat(groupByColumns, aggColumns));\n }\n break;\n case 'bubblesize':\n if (this.numericColumns && this.numericColumns.length) {\n newOptions = this.numericColumns;\n }\n break;\n }\n\n return newOptions || fields || this.axisoptions;\n }\n\n // Function that iterates through all the columns and then fetching the numeric and non primary columns among them\n setNumericandNonPrimaryColumns() {\n let columns,\n type;\n const propertiesMap = this.datasource.execute(DataSource.Operation.GET_PROPERTIES_MAP);\n this.numericColumns = [];\n this.nonPrimaryColumns = [];\n // Fetching all the columns\n if (this.dataset && !isEmpty(propertiesMap)) {\n columns = []; // TODO: fetchPropertiesMapColumns(propertiesMap);\n }\n\n if (columns) {\n // Iterating through all the columns and fetching the numeric and non primary key columns\n forEach(Object.keys(columns), (key) => {\n type = columns[key].type;\n if (isNumberType(type)) {\n this.numericColumns.push(key);\n }\n // Hiding only table's primary key\n if (columns[key].isRelatedPk === 'true' || !columns[key].isPrimaryKey) {\n this.nonPrimaryColumns.push(key);\n }\n });\n this.numericColumns = this.numericColumns.sort();\n this.nonPrimaryColumns = this.nonPrimaryColumns.sort();\n }\n }\n\n // plot the chart\n handleDataSet(newVal) {\n this.errMsg = '';\n // Resetting the flag to false when the binding was removed\n if (!newVal && !this.binddataset) {\n this.isVisuallyGrouped = false;\n this.axisoptions = null;\n }\n\n // liveVariables contain data in 'data' property' of the variable\n this.chartData = this.isLiveVariable ? newVal || '' : (newVal && newVal.dataValue === '' && keys(newVal).length === 1) ? '' : newVal;\n\n // if the data returned is an object make it an array of object\n if (!isArray(this.chartData) && isObject(this.chartData)) {\n this.chartData = [this.chartData];\n }\n\n if (newVal && newVal.filterFields) {\n this.filterFields = newVal.filterFields;\n }\n\n // plotchart for only valid data and only after bound variable returns data\n if (this.chartData) {\n this._plotChartProxy();\n }\n }\n\n _plotChartProxy = debounce(this.plotChartProxy.bind(this), 100);\n\n // sets the center label for donut chart type\n setDonutCenterLabel(labelValue) {\n let chartSvg, pieGroups;\n chartSvg = d3.select('#wmChart' + this.$id + ' svg');\n\n pieGroups = chartSvg.select('.nv-wrap.nv-pie').select('.nv-pie');\n pieGroups.text('');\n pieGroups.append('text')\n .attr('dy', '.35em')\n .attr('text-anchor', 'middle')\n .attr('class', 'nv-pie-title')\n .text(labelValue)\n .each(function (d) {\n var d3text = d3.select(this),\n circ = d3.select(this.parentElement),\n totalWidth = Number(circ.node().getBoundingClientRect().width),\n // minus the ring width from total width\n availWidth = totalWidth - 30,\n textWidth = this.getComputedTextLength();\n d3text.attr(\"data-scale\", availWidth / textWidth);\n }).style(\"font-size\", function() {\n // 16 is the default font size to multiply with the scaled value and 24 is the maximum font size that can be applied\n var fontSize = 16 * d3.select(this).attr(\"data-scale\");\n return fontSize > 24 ? 24 : fontSize + \"px\";\n });\n }\n\n onPropertyChange(key, newVal, oldVal?) {\n super.onPropertyChange(key, newVal, oldVal);\n switch (key) {\n case 'dataset':\n this.handleDataSet(newVal);\n break;\n case 'centerlabel':\n if (this.chart) {\n this.chart.title(newVal);\n this.setDonutCenterLabel(newVal);\n }\n break;\n case 'type':\n // Based on the change in type deciding the default margins\n if (isPieType(this.type)) {\n this.offsettop = 20;\n this.offsetright = 0;\n this.offsetbottom = 0;\n this.offsetleft = 0;\n } else if (oldVal === 'Pie' || oldVal === 'Donut') {\n this.offsettop = 25;\n this.offsetright = 25;\n this.offsetbottom = 55;\n this.offsetleft = 75;\n }\n\n if (oldVal !== newVal) {\n this.clearCanvas = true;\n }\n // In studio mode, configure properties dependent on chart type\n this._plotChartProxy();\n break;\n default:\n // In RunMode, the plotchart method will not be called for all property change\n this._plotChartProxy();\n break;\n }\n if (includes(advanceDataProps, key)) {\n this._plotChartProxy();\n }\n }\n\n handleLoading(data) {\n const dataSource = this.datasource;\n if (dataSource && dataSource.execute(DataSource.Operation.IS_API_AWARE) && isDataSourceEqual(data.variable, dataSource)) {\n this.variableInflight = data.active;\n this.isLoadInProgress = data.active;\n }\n }\n\n hideTooltip() {\n d3.selectAll('.nvtooltip').style('opacity', 0);\n }\n\n onStyleChange(key, newVal, oldVal) {\n const styleObj = {};\n super.onStyleChange(key, newVal, oldVal);\n switch (key) {\n case 'fontsize':\n case 'fontunit':\n case 'color':\n case 'fontfamily':\n case 'fontweight':\n case 'fontstyle':\n case 'textdecoration':\n styleObj[styleProps[key]] = (key === 'fontsize' || key === 'fontunit') ? this.fontsize + this.fontunit : newVal;\n setTextStyle(styleObj, this.$id);\n break;\n }\n }\n\n constructor(inj: Injector, private app: App, @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any) {\n super(inj, WIDGET_CONFIG, explicitContext);\n styler(this.nativeElement, this, APPLY_STYLES_TYPE.CONTAINER, ['fontsize', 'fontunit', 'color', 'fontfamily', 'fontweight', 'fontstyle', 'textdecoration']);\n\n // generate unique id for the component\n this.$id = this.widgetId || Math.random();\n // remove title attribute as the element on hover shows you the hint through-out the element\n removeAttr(this.nativeElement, 'title');\n this.chartReady = false;\n this.binddataset = this.nativeElement.getAttribute('dataset.bind');\n // Show loading status based on the variable life cycle\n this._subsciptions.push(this.app.subscribe('toggle-variable-state', this.handleLoading.bind(this)));\n // Will hide tolltip of a chart in mobile when the user scrolls.\n this._subsciptions.push(this.app.subscribe('iscroll-start', () => {this.hideTooltip();}));\n }\n\n ngAfterViewInit() {\n super.ngAfterViewInit();\n // For old projects\n if (!includes(['outside', 'inside', 'hide'], this.showlabels)) {\n this.showlabels = getBooleanValue(this.showlabels);\n this.showlabelsoutside = getBooleanValue(this.showlabelsoutside);\n this.showlabels = this.showlabels ? (this.showlabelsoutside ? 'outside' : 'inside') : 'hide';\n }\n\n if (!this.theme) {\n // Default theme for pie/donut is Azure and for other it is Terrestrial\n this.theme = isPieType(this.type) ? 'Azure' : 'Terrestrial';\n }\n\n this.nativeElement.setAttribute('id', 'wmChart' + this.$id);\n // When there is not value binding, then plot the chart with sample data\n if (!this.binddataset && !this.nativeElement.getAttribute('scopedataset')) {\n this._plotChartProxy();\n }\n }\n\n ngOnDestroy() {\n // destroy all subscriptions to prevent memory leak.\n this.hideTooltip();\n this._subsciptions.forEach((subscription)=>{\n subscription();\n });\n super.ngOnDestroy();\n }\n redraw = this._plotChartProxy.bind(this);\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { WmComponentsModule } from '@wm/components/base';\nimport { BasicModule } from '@wm/components/basic';\n\nimport { ChartComponent } from './chart.component';\n\nconst components = [\n ChartComponent\n];\n\n@NgModule({\n imports: [\n BasicModule,\n CommonModule,\n WmComponentsModule\n ],\n declarations: [...components],\n exports: [...components]\n})\nexport class ChartModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}